flatbuffers 예제

플랫 버퍼 스키마 또는 json 파일의 파서는 일종의 재귀 파서입니다. 스택 오버플로 문제를 방지하기 위해 파서에는 재귀 깊이의 기본 제공 리미터가 있습니다. 스키마에 중첩된 선언 수 또는 중첩된 json-개체 수가 제한됩니다. 기본적으로 이 깊이 제한은 64로 설정됩니다. FLATBUFFERS_MAX_PARSING_DEPTH 정의를 사용하여 이 제한을 재정의할 수 있습니다. 이 정의는 테스트 목적 또는 포함된 응용 프로그램에 유용할 수 있습니다. 자세한 내용은 CMake 기반 프로젝트 빌드를 참조하십시오. 이 예에서 주인공인 주인공이 오크를 처치해야 하는 게임을 만들고 있다고 상상해 보십시오. FlatBuffers를 사용하여 이 몬스터 유형을 만드는 데 필요한 각 단계를 안내합니다. 위의 예제에서 볼 수 있듯이 버퍼의 모든 요소는 생성된 접근장치를 통해 액세스됩니다. 이는 모든 것이 모든 플랫폼에서 작은 엔디안 형식으로 저장되기 때문이며(접근자는 큰 엔디안 컴퓨터에서 스왑 작업을 수행함), 사물의 레이아웃은 일반적으로 사용자에게 알려지지 않았기 때문입니다.

Flatbuffers 플랫 버퍼문법 “문법”은 식별자, 가상 문자, 예약된 단어에 대해 ASCII 문자 집합을 사용합니다. 생성된 헤더와 함께 이진 버퍼를 사용하면 FlatBuffer 데이터의 오버헤드가 매우 낮습니다. 그러나 텍스트 형식을 사용하려는 경우(예: 소스 컨트롤과 더 잘 상호 작용하거나 사용자에게 데이터에 쉽게 액세스할 수 있도록 하려는 경우)가 있습니다. 웹 사이트의 사용자 세부 정보를 구성하는 데이터로 작업합니다. 그것은 사소한 예이지만 소개에 좋습니다. 다음은 스키마: Flatbuffers 라이브러리는 구성 및 컴파일 시간에 이러한 함수를 검색하려고 시도합니다: FlatBuffer 개체는 바이트 슬라이스에 직접 저장됩니다. 각 Flatbuffers 개체는 flatc 컴파일러로 만든 생성된 함수를 사용하여 생성됩니다. 이제 rust_flatbuffers_example라는 디렉토리가 있습니다.

현재 작업 디렉토리를 변경: 이제 이 정보를 사용하여 [플랫버퍼]를 텍스트로 인쇄할 수 있습니다. 이들은 모두 FlatBuffer 테이블이며, 그 오프셋은 이제 메모리에 저장됩니다. 따라서 이러한 오프셋을 포함하는 FlatBuffer 벡터를 만들 수 있습니다. native_type` “type”(구조체에서): 경우에 따라 지정된 구조체에 대해 보다 최적의 C++ 데이터 형식이 존재합니다. 예를 들어 다음 스키마: native_type 특성은 생성된 클래스의 사용량을 지정된 유형으로 대체합니다. 따라서 예제를 계속하면 생성된 코드는 |vector2 | 장소 | 벡2T | 생성된 모든 코드에 대해 마지막으로 화물 패키지가 제대로 구성되어 있는지 확인합니다. 화물이 자동으로 생성되는 예제 프로그램을 실행하여 이 작업을 수행합니다: 참고: C++에서 FlatBuffers를 사용하는 방법에 대한 자세한 예제는 자습서를 참조하십시오. 이러한 기능의 예는 test.cpp에서 테스트/유니온_벡터 및 UnionVectorTest를 참조하십시오. 이전 기사에서 는 이미 Flatbuffers를 설명했습니다.

열거형 다음에는 공용 구조화되어 있습니다. 이 예제의 공용 구조화는 하나의 테이블(Weapon)만 포함하므로 별로 유용하지 않습니다. 공용 구조체가 참조할 수 있도록 여러 테이블을 만들었다면 공용 구조체 장비에 더 많은 요소를 추가할 수 있습니다. 이 자습서에서는 FlatBuffers를 사용하는 방법에 대한 기본 예제를 제공합니다. 예를 들어 C++에서 FlatBuffer 바이너리 파일을 읽는 방법을 보여 주며 라이브러리와 생성된 코드를 포함하는 간단한 예제 응용 프로그램을 단계별로 설명합니다. 그런 다음 GetMonster()에 전달하는 char * 배열로 파일을 읽습니다. 이 예에서 몬스터에 추가한 마지막 두 가지는 장착된 유형과 장착된 조합 자체였습니다.