INNENTÜREN, TUNING DESIGN TÜREN aus Slowenien.


  • Ljubljana


    0038651 - 660 - 406

  • Ptuj


    0038651 - 316 - 130
    0038631 - 688 - 777

flatbuffers 예제

flatbuffers 예제

몬스터를 설명하는 JSON 파일이 있다고 가정해 봅시다. 이 예제에서는 파일 플랫 버퍼/샘플/monsterdata.json을 사용합니다. 스키마는 네임스페이스 선언으로 시작합니다. 이렇게 하면 생성된 코드에 대한 해당 패키지/네임스페이스가 결정됩니다. 이 예제에서는 MyGame 네임스페이스 안에 샘플 네임스페이스가 있습니다. 예를 들어 C++에서 FlatBuffer 바이너리 파일을 읽는 방법은 다음과 같습니다. 그런 다음 GetMonster()에 전달하는 char * 배열로 파일을 읽습니다. native_type 특성은 생성된 클래스의 사용량을 지정된 형식으로 바꿉습니다. 따라서 예제를 계속하면 생성된 코드는 |vector2 | 장소 | 벡2T | 생성된 모든 코드에 대해 native_type` “type”(구조체에서): 경우에 따라 지정된 구조체에 대해 보다 최적의 C++ 데이터 형식이 존재합니다. 예를 들어, 다음 스키마: 이전 문서에서 는 이미 Flatbuffers를 설명했습니다. 생성된 헤더와 함께 이진 버퍼를 사용하면 FlatBuffer 데이터의 오버헤드가 매우 낮습니다.

그러나 텍스트 형식을 사용하려는 경우(예: 소스 컨트롤과 더 잘 상호 작용하거나 사용자에게 데이터에 쉽게 액세스할 수 있도록 하려는 경우)가 있습니다. 이 예에서 몬스터에 추가한 마지막 두 가지는 장착된 유형과 장착된 조합 자체였습니다. FlatBuffer 개체는 바이트 슬라이스에 직접 저장됩니다. 각 Flatbuffers 개체는 flatc 컴파일러로 만든 생성된 함수를 사용하여 생성됩니다. 이제 rust_flatbuffers_example라는 디렉토리가 있습니다. 현재 작업 디렉토리를 변경: 테이블의 모든 변이 함수는 부울을 반환합니다. 필드가 설정되지 않았거나 기본값과 같을 경우에도 존재하지 않는 필드입니다. 예를 들어 위의 만들기 코드에서 mana 필드는 기본값인 150과 같기 때문에 버퍼에 저장되지 않았습니다.

이러한 데이터에 대한 해당 변이 메서드를 호출하려고 하면 false가 반환되고 값이 실제로 수정되지 않습니다! Flatbuffers 플랫 버퍼문법 “문법”은 식별자, 가상 문자, 예약된 단어에 대해 ASCII 문자 집합을 사용합니다. 예를 들어, 앞서 만든 두 무기(검과 도끼)를 살펴보겠습니다. 이들은 모두 FlatBuffer 테이블이며, 그 오프셋은 이제 메모리에 저장됩니다. 따라서 이러한 오프셋을 포함하는 FlatBuffer 벡터를 만들 수 있습니다.