flatbuffers c++ 예제

By | August 2, 2019

struct Vec2T : 플랫 버퍼::네이티브 테이블 { 부동 x; float y; }; 예를 들어, 앞서 만든 두 무기(검과 도끼)를 살펴보겠습니다. 이들은 모두 FlatBuffer 테이블이며, 그 오프셋은 이제 메모리에 저장됩니다. 따라서 이러한 오프셋을 포함하는 FlatBuffer 벡터를 만들 수 있습니다. 이 예에서 몬스터에 추가한 마지막 두 가지는 장착된 유형과 장착된 조합 자체였습니다. native_type` “type”(구조체에서): 경우에 따라 지정된 구조체에 대해 보다 최적의 C++ 데이터 형식이 존재합니다. 예를 들어 다음 스키마: C++ 라이브러리를 테스트하는 코드는 플랫버퍼/테스트에서 찾을 수 있습니다. 테스트 코드 자체는 test.cpp에 있습니다. FlatBuffers C++ 라이브러리의 코드는 플랫버퍼/포함/플랫버퍼에서 찾을 수 있습니다. FlatBuffers GitHub 페이지에서 라이브러리 코드를 찾아볼 수 있습니다. native_custom_alloc:”custom_allocator”(테이블 또는 구조체에서): 개체 기반 API를 사용할 때 플랫 버퍼의 압축을 풀 때 할당되는 모든 생성된 NativeTable은 “사용자 지정 할당자”를 사용합니다. 할당자는 native_custom_alloc로 정의된 테이블에 나타나는 std::vector에서도 사용됩니다. 예를 들어 개체 기반 API를 사용할 때 압축을 더 빠르게 풀기 위해 풀에서 할당을 제공하는 데 사용할 수 있습니다.

이 예에서 주인공인 주인공이 오크를 처치해야 하는 게임을 만들고 있다고 상상해 보십시오. FlatBuffers를 사용하여 이 몬스터 유형을 만드는 데 필요한 각 단계를 안내합니다. 플랫 버퍼의 내부 구현은 C-로캘(strtod() 또는 strtof(strtof)와 같은 함수에서 달라집니다. 라이브러리는 점을 기대합니다. 부동 소수의 소수 부분에서 정수 부분의 구분 기호로 기호를 다른 구분 기호(예: )는 호환성을 깨뜨리고 Flatbuffers 스키마 또는 json 파일을 구문 분석하는 동안 오류가 발생할 수 있습니다. Flatbuffers 플랫 버퍼문법 “문법”은 식별자, 가상 문자, 예약된 단어에 대해 ASCII 문자 집합을 사용합니다. 참고: C++에서 FlatBuffers를 사용하는 방법에 대한 자세한 예제는 자습서를 참조하십시오. 다음으로, 우리는 열거형 정의가 있습니다. 이 예제에서는 색상이라는 형식 바이트가 열거되어 있습니다. 이 열거형에는 빨간색, 녹색 및 파란색의 세 가지 값이 있습니다.

빨간색 = 0및 파란색 = 2를 지정하지만 녹색에 대한 명시적 값을 지정하지는 않습니다. 열거형의 동작은 지정되지 않은 경우 증분되므로 녹색은 1의 암시적 값을 받습니다. 구조체는 벡터에 인라인으로 저장되므로 구조체 의 벡터는 테이블과 다르게 직렬화됩니다. 예를 들어 위의 경로 필드에 대한 벡터를 만들려면 열거형 다음에 는 공용 구조체입니다. 이 예제의 공용 구조화는 하나의 테이블(Weapon)만 포함하므로 별로 유용하지 않습니다. 공용 구조체가 참조할 수 있도록 여러 테이블을 만들었다면 공용 구조체 장비에 더 많은 요소를 추가할 수 있습니다. 그러나 native_type은 플랫버퍼에 알려지지 않으므로 사용자는 직렬화 프로세스에서 다음과 같은 기능을 제공해야 합니다. FlatBuffers 또는 리플렉션 인코딩을 알 필요없이 미니 리플렉션 테이블을 기반으로 자신의 출력 / 기능을 작성할 수 있도록 편리한 방문자 / 이터레이터도 있습니다. 처음에 우리는 flatc을 얻을 수 있습니다 – FlatBuffers 컴파일러. Google의 플랫 버퍼 저장소에서 호스팅되는 소스 코드에서 빌드할 수 있습니다.

다운로드 / 복제할 수 있습니다. 오늘은 구글 / 플랫 버퍼, “메모리 효율적인 직렬화 라이브러리”를 보았다. 스키마를 작성했다고 가정하면 mygame.fbs (확장은 중요하지 않지만) 컴파일러 (예 : flatc -c mygame.fbs)를 사용하여 mygame_generated.h라는 C ++ 헤더를 생성했으므로 이제 헤더를 포함하여 프로그램에서 이 것을 사용할 수 있습니다. 앞에서 설명했듯이 이 헤더는 포함 경로에 있어야 하는 플랫버퍼/flatbuffers.h를 기반으로 합니다.

Category: Uncategorized