Merge pull request #71 from alainmarcel/alainmarcel-patch-1
Build flatbuffer as a submodule
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..fa78bd5
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "third_party/flatbuffers"]
+ path = third_party/flatbuffers
+ url = https://github.com/google/flatbuffers.git
diff --git a/.travis.yml b/.travis.yml
index e1ae0da..34a5fca 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -28,6 +28,7 @@
- sudo apt-get install libgoogle-perftools-dev
- sudo apt-get install python3 python3-dev
- eval "${MATRIX_EVAL}"
+ - git submodule update --init --recursive
install:
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 771e801..fafa1ea 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -197,6 +197,7 @@
add_executable(surelog ${surelog_SRC})
add_dependencies(surelog flatc)
add_dependencies(surelog antlr4_static)
+add_dependencies(surelog flatbuffers)
add_dependencies(surelog GenerateParser)
add_dependencies(surelog GenerateSerializer)
@@ -210,5 +211,5 @@
#)
target_link_libraries(
- surelog -L${PROJECT_SOURCE_DIR}/dist/ libantlr4-runtime.a dl util m rt pthread
+ surelog -L${PROJECT_SOURCE_DIR}/dist/ libantlr4-runtime.a -L${PROJECT_SOURCE_DIR}/build/third_party/flatbuffers libflatbuffers.a dl util m rt pthread
)
diff --git a/INSTALL.md b/INSTALL.md
index 74107fd..be04204 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -22,6 +22,8 @@
* Surelog Source code
* git clone https://github.com/alainmarcel/Surelog.git
+ * cd Surelog
+ * git submodule update --init --recursive
* Build
* make
diff --git a/Makefile b/Makefile
index f7ba901..8e2017f 100644
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,8 @@
release:
mkdir -p build/tests;
mkdir -p dist;
- cd build; cmake ../; make -j 4
- cd build; ../src/release.tcl "release tcmalloc"
+ cd build; cmake ../ -DCMAKE_BUILD_TYPE=Release; make -j 4
+ cd build; ../src/release.tcl release show_diff
cd build; ../tests/regression.tcl mt=0
test:
diff --git a/src/Cache/header_generated.h b/src/Cache/header_generated.h
index 596c8cf..9b9169e 100644
--- a/src/Cache/header_generated.h
+++ b/src/Cache/header_generated.h
@@ -18,7 +18,7 @@
struct TimeInfo;
struct Header FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum {
+ enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_M_SL_VERSION = 4,
VT_M_FLB_VERSION = 6,
VT_M_SL_DATE_COMPILED = 8,
@@ -42,16 +42,16 @@
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_SL_VERSION) &&
- verifier.Verify(m_sl_version()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_FLB_VERSION) &&
- verifier.Verify(m_flb_version()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_SL_DATE_COMPILED) &&
- verifier.Verify(m_sl_date_compiled()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_FILE_DATE_COMPILED) &&
- verifier.Verify(m_file_date_compiled()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_FILE) &&
- verifier.Verify(m_file()) &&
+ VerifyOffset(verifier, VT_M_SL_VERSION) &&
+ verifier.VerifyString(m_sl_version()) &&
+ VerifyOffset(verifier, VT_M_FLB_VERSION) &&
+ verifier.VerifyString(m_flb_version()) &&
+ VerifyOffset(verifier, VT_M_SL_DATE_COMPILED) &&
+ verifier.VerifyString(m_sl_date_compiled()) &&
+ VerifyOffset(verifier, VT_M_FILE_DATE_COMPILED) &&
+ verifier.VerifyString(m_file_date_compiled()) &&
+ VerifyOffset(verifier, VT_M_FILE) &&
+ verifier.VerifyString(m_file()) &&
verifier.EndTable();
}
};
@@ -74,13 +74,13 @@
void add_m_file(flatbuffers::Offset<flatbuffers::String> m_file) {
fbb_.AddOffset(Header::VT_M_FILE, m_file);
}
- HeaderBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+ explicit HeaderBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
HeaderBuilder &operator=(const HeaderBuilder &);
flatbuffers::Offset<Header> Finish() {
- const auto end = fbb_.EndTable(start_, 5);
+ const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<Header>(end);
return o;
}
@@ -109,30 +109,35 @@
const char *m_sl_date_compiled = nullptr,
const char *m_file_date_compiled = nullptr,
const char *m_file = nullptr) {
+ auto m_sl_version__ = m_sl_version ? _fbb.CreateString(m_sl_version) : 0;
+ auto m_flb_version__ = m_flb_version ? _fbb.CreateString(m_flb_version) : 0;
+ auto m_sl_date_compiled__ = m_sl_date_compiled ? _fbb.CreateString(m_sl_date_compiled) : 0;
+ auto m_file_date_compiled__ = m_file_date_compiled ? _fbb.CreateString(m_file_date_compiled) : 0;
+ auto m_file__ = m_file ? _fbb.CreateString(m_file) : 0;
return SURELOG::CACHE::CreateHeader(
_fbb,
- m_sl_version ? _fbb.CreateString(m_sl_version) : 0,
- m_flb_version ? _fbb.CreateString(m_flb_version) : 0,
- m_sl_date_compiled ? _fbb.CreateString(m_sl_date_compiled) : 0,
- m_file_date_compiled ? _fbb.CreateString(m_file_date_compiled) : 0,
- m_file ? _fbb.CreateString(m_file) : 0);
+ m_sl_version__,
+ m_flb_version__,
+ m_sl_date_compiled__,
+ m_file_date_compiled__,
+ m_file__);
}
struct Error FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum {
+ enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_M_LOCATIONS = 4,
VT_M_ERRORID = 6
};
- const flatbuffers::Vector<flatbuffers::Offset<Location>> *m_locations() const {
- return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<Location>> *>(VT_M_LOCATIONS);
+ const flatbuffers::Vector<flatbuffers::Offset<SURELOG::CACHE::Location>> *m_locations() const {
+ return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<SURELOG::CACHE::Location>> *>(VT_M_LOCATIONS);
}
uint32_t m_errorId() const {
return GetField<uint32_t>(VT_M_ERRORID, 0);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_LOCATIONS) &&
- verifier.Verify(m_locations()) &&
+ VerifyOffset(verifier, VT_M_LOCATIONS) &&
+ verifier.VerifyVector(m_locations()) &&
verifier.VerifyVectorOfTables(m_locations()) &&
VerifyField<uint32_t>(verifier, VT_M_ERRORID) &&
verifier.EndTable();
@@ -142,19 +147,19 @@
struct ErrorBuilder {
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
- void add_m_locations(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Location>>> m_locations) {
+ void add_m_locations(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<SURELOG::CACHE::Location>>> m_locations) {
fbb_.AddOffset(Error::VT_M_LOCATIONS, m_locations);
}
void add_m_errorId(uint32_t m_errorId) {
fbb_.AddElement<uint32_t>(Error::VT_M_ERRORID, m_errorId, 0);
}
- ErrorBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+ explicit ErrorBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
ErrorBuilder &operator=(const ErrorBuilder &);
flatbuffers::Offset<Error> Finish() {
- const auto end = fbb_.EndTable(start_, 2);
+ const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<Error>(end);
return o;
}
@@ -162,7 +167,7 @@
inline flatbuffers::Offset<Error> CreateError(
flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Location>>> m_locations = 0,
+ flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<SURELOG::CACHE::Location>>> m_locations = 0,
uint32_t m_errorId = 0) {
ErrorBuilder builder_(_fbb);
builder_.add_m_errorId(m_errorId);
@@ -172,16 +177,17 @@
inline flatbuffers::Offset<Error> CreateErrorDirect(
flatbuffers::FlatBufferBuilder &_fbb,
- const std::vector<flatbuffers::Offset<Location>> *m_locations = nullptr,
+ const std::vector<flatbuffers::Offset<SURELOG::CACHE::Location>> *m_locations = nullptr,
uint32_t m_errorId = 0) {
+ auto m_locations__ = m_locations ? _fbb.CreateVector<flatbuffers::Offset<SURELOG::CACHE::Location>>(*m_locations) : 0;
return SURELOG::CACHE::CreateError(
_fbb,
- m_locations ? _fbb.CreateVector<flatbuffers::Offset<Location>>(*m_locations) : 0,
+ m_locations__,
m_errorId);
}
struct Location FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum {
+ enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_M_FILEID = 4,
VT_M_LINE = 6,
VT_M_COLUMN = 8,
@@ -224,13 +230,13 @@
void add_m_object(uint64_t m_object) {
fbb_.AddElement<uint64_t>(Location::VT_M_OBJECT, m_object, 0);
}
- LocationBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+ explicit LocationBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
LocationBuilder &operator=(const LocationBuilder &);
flatbuffers::Offset<Location> Finish() {
- const auto end = fbb_.EndTable(start_, 4);
+ const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<Location>(end);
return o;
}
@@ -251,7 +257,7 @@
}
struct TimeInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum {
+ enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_M_TYPE = 4,
VT_M_FILEID = 6,
VT_M_LINE = 8,
@@ -318,13 +324,13 @@
void add_m_timePrecisionValue(double m_timePrecisionValue) {
fbb_.AddElement<double>(TimeInfo::VT_M_TIMEPRECISIONVALUE, m_timePrecisionValue, 0.0);
}
- TimeInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+ explicit TimeInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
TimeInfoBuilder &operator=(const TimeInfoBuilder &);
flatbuffers::Offset<TimeInfo> Finish() {
- const auto end = fbb_.EndTable(start_, 7);
+ const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<TimeInfo>(end);
return o;
}
diff --git a/src/Cache/parser_generated.h b/src/Cache/parser_generated.h
index 767195f..718684c 100644
--- a/src/Cache/parser_generated.h
+++ b/src/Cache/parser_generated.h
@@ -17,7 +17,7 @@
struct ParseCache;
-MANUALLY_ALIGNED_STRUCT(8) VObject FLATBUFFERS_FINAL_CLASS {
+FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(8) VObject FLATBUFFERS_FINAL_CLASS {
private:
uint64_t m_field1_;
uint64_t m_field2_;
@@ -25,10 +25,7 @@
public:
VObject() {
- memset(this, 0, sizeof(VObject));
- }
- VObject(const VObject &_o) {
- memcpy(this, &_o, sizeof(VObject));
+ memset(static_cast<void *>(this), 0, sizeof(VObject));
}
VObject(uint64_t _m_field1, uint64_t _m_field2, uint64_t _m_field3)
: m_field1_(flatbuffers::EndianScalar(_m_field1)),
@@ -45,10 +42,10 @@
return flatbuffers::EndianScalar(m_field3_);
}
};
-STRUCT_END(VObject, 24);
+FLATBUFFERS_STRUCT_END(VObject, 24);
struct DesignElement FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum {
+ enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_M_NAME = 4,
VT_M_FILEID = 6,
VT_M_TYPE = 8,
@@ -89,7 +86,7 @@
VerifyField<uint32_t>(verifier, VT_M_TYPE) &&
VerifyField<uint64_t>(verifier, VT_M_UNIQUEID) &&
VerifyField<uint32_t>(verifier, VT_M_LINE) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_TIMEINFO) &&
+ VerifyOffset(verifier, VT_M_TIMEINFO) &&
verifier.VerifyTable(m_timeInfo()) &&
VerifyField<uint64_t>(verifier, VT_M_PARENT) &&
VerifyField<uint32_t>(verifier, VT_M_NODE) &&
@@ -124,13 +121,13 @@
void add_m_node(uint32_t m_node) {
fbb_.AddElement<uint32_t>(DesignElement::VT_M_NODE, m_node, 0);
}
- DesignElementBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+ explicit DesignElementBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
DesignElementBuilder &operator=(const DesignElementBuilder &);
flatbuffers::Offset<DesignElement> Finish() {
- const auto end = fbb_.EndTable(start_, 8);
+ const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<DesignElement>(end);
return o;
}
@@ -159,7 +156,7 @@
}
struct ParseCache FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum {
+ enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_M_HEADER = 4,
VT_M_ERRORS = 6,
VT_M_SYMBOLS = 8,
@@ -175,27 +172,27 @@
const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *m_symbols() const {
return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_M_SYMBOLS);
}
- const flatbuffers::Vector<flatbuffers::Offset<DesignElement>> *m_elements() const {
- return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<DesignElement>> *>(VT_M_ELEMENTS);
+ const flatbuffers::Vector<flatbuffers::Offset<SURELOG::PARSECACHE::DesignElement>> *m_elements() const {
+ return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<SURELOG::PARSECACHE::DesignElement>> *>(VT_M_ELEMENTS);
}
- const flatbuffers::Vector<const VObject *> *m_objects() const {
- return GetPointer<const flatbuffers::Vector<const VObject *> *>(VT_M_OBJECTS);
+ const flatbuffers::Vector<const SURELOG::PARSECACHE::VObject *> *m_objects() const {
+ return GetPointer<const flatbuffers::Vector<const SURELOG::PARSECACHE::VObject *> *>(VT_M_OBJECTS);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_HEADER) &&
+ VerifyOffset(verifier, VT_M_HEADER) &&
verifier.VerifyTable(m_header()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_ERRORS) &&
- verifier.Verify(m_errors()) &&
+ VerifyOffset(verifier, VT_M_ERRORS) &&
+ verifier.VerifyVector(m_errors()) &&
verifier.VerifyVectorOfTables(m_errors()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_SYMBOLS) &&
- verifier.Verify(m_symbols()) &&
+ VerifyOffset(verifier, VT_M_SYMBOLS) &&
+ verifier.VerifyVector(m_symbols()) &&
verifier.VerifyVectorOfStrings(m_symbols()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_ELEMENTS) &&
- verifier.Verify(m_elements()) &&
+ VerifyOffset(verifier, VT_M_ELEMENTS) &&
+ verifier.VerifyVector(m_elements()) &&
verifier.VerifyVectorOfTables(m_elements()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_OBJECTS) &&
- verifier.Verify(m_objects()) &&
+ VerifyOffset(verifier, VT_M_OBJECTS) &&
+ verifier.VerifyVector(m_objects()) &&
verifier.EndTable();
}
};
@@ -212,19 +209,19 @@
void add_m_symbols(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> m_symbols) {
fbb_.AddOffset(ParseCache::VT_M_SYMBOLS, m_symbols);
}
- void add_m_elements(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<DesignElement>>> m_elements) {
+ void add_m_elements(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<SURELOG::PARSECACHE::DesignElement>>> m_elements) {
fbb_.AddOffset(ParseCache::VT_M_ELEMENTS, m_elements);
}
- void add_m_objects(flatbuffers::Offset<flatbuffers::Vector<const VObject *>> m_objects) {
+ void add_m_objects(flatbuffers::Offset<flatbuffers::Vector<const SURELOG::PARSECACHE::VObject *>> m_objects) {
fbb_.AddOffset(ParseCache::VT_M_OBJECTS, m_objects);
}
- ParseCacheBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+ explicit ParseCacheBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
ParseCacheBuilder &operator=(const ParseCacheBuilder &);
flatbuffers::Offset<ParseCache> Finish() {
- const auto end = fbb_.EndTable(start_, 5);
+ const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<ParseCache>(end);
return o;
}
@@ -235,8 +232,8 @@
flatbuffers::Offset<SURELOG::CACHE::Header> m_header = 0,
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<SURELOG::CACHE::Error>>> m_errors = 0,
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> m_symbols = 0,
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<DesignElement>>> m_elements = 0,
- flatbuffers::Offset<flatbuffers::Vector<const VObject *>> m_objects = 0) {
+ flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<SURELOG::PARSECACHE::DesignElement>>> m_elements = 0,
+ flatbuffers::Offset<flatbuffers::Vector<const SURELOG::PARSECACHE::VObject *>> m_objects = 0) {
ParseCacheBuilder builder_(_fbb);
builder_.add_m_objects(m_objects);
builder_.add_m_elements(m_elements);
@@ -251,21 +248,29 @@
flatbuffers::Offset<SURELOG::CACHE::Header> m_header = 0,
const std::vector<flatbuffers::Offset<SURELOG::CACHE::Error>> *m_errors = nullptr,
const std::vector<flatbuffers::Offset<flatbuffers::String>> *m_symbols = nullptr,
- const std::vector<flatbuffers::Offset<DesignElement>> *m_elements = nullptr,
- const std::vector<const VObject *> *m_objects = nullptr) {
+ const std::vector<flatbuffers::Offset<SURELOG::PARSECACHE::DesignElement>> *m_elements = nullptr,
+ const std::vector<SURELOG::PARSECACHE::VObject> *m_objects = nullptr) {
+ auto m_errors__ = m_errors ? _fbb.CreateVector<flatbuffers::Offset<SURELOG::CACHE::Error>>(*m_errors) : 0;
+ auto m_symbols__ = m_symbols ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*m_symbols) : 0;
+ auto m_elements__ = m_elements ? _fbb.CreateVector<flatbuffers::Offset<SURELOG::PARSECACHE::DesignElement>>(*m_elements) : 0;
+ auto m_objects__ = m_objects ? _fbb.CreateVectorOfStructs<SURELOG::PARSECACHE::VObject>(*m_objects) : 0;
return SURELOG::PARSECACHE::CreateParseCache(
_fbb,
m_header,
- m_errors ? _fbb.CreateVector<flatbuffers::Offset<SURELOG::CACHE::Error>>(*m_errors) : 0,
- m_symbols ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*m_symbols) : 0,
- m_elements ? _fbb.CreateVector<flatbuffers::Offset<DesignElement>>(*m_elements) : 0,
- m_objects ? _fbb.CreateVector<const VObject *>(*m_objects) : 0);
+ m_errors__,
+ m_symbols__,
+ m_elements__,
+ m_objects__);
}
inline const SURELOG::PARSECACHE::ParseCache *GetParseCache(const void *buf) {
return flatbuffers::GetRoot<SURELOG::PARSECACHE::ParseCache>(buf);
}
+inline const SURELOG::PARSECACHE::ParseCache *GetSizePrefixedParseCache(const void *buf) {
+ return flatbuffers::GetSizePrefixedRoot<SURELOG::PARSECACHE::ParseCache>(buf);
+}
+
inline const char *ParseCacheIdentifier() {
return "SLPA";
}
@@ -280,6 +285,11 @@
return verifier.VerifyBuffer<SURELOG::PARSECACHE::ParseCache>(ParseCacheIdentifier());
}
+inline bool VerifySizePrefixedParseCacheBuffer(
+ flatbuffers::Verifier &verifier) {
+ return verifier.VerifySizePrefixedBuffer<SURELOG::PARSECACHE::ParseCache>(ParseCacheIdentifier());
+}
+
inline const char *ParseCacheExtension() {
return "slpa";
}
@@ -290,6 +300,12 @@
fbb.Finish(root, ParseCacheIdentifier());
}
+inline void FinishSizePrefixedParseCacheBuffer(
+ flatbuffers::FlatBufferBuilder &fbb,
+ flatbuffers::Offset<SURELOG::PARSECACHE::ParseCache> root) {
+ fbb.FinishSizePrefixed(root, ParseCacheIdentifier());
+}
+
} // namespace PARSECACHE
} // namespace SURELOG
diff --git a/src/Cache/preproc_generated.h b/src/Cache/preproc_generated.h
index 642a082..bf000e7 100644
--- a/src/Cache/preproc_generated.h
+++ b/src/Cache/preproc_generated.h
@@ -22,8 +22,16 @@
MacroType_MAX = MacroType_WITH_ARGS
};
-inline const char **EnumNamesMacroType() {
- static const char *names[] = {
+inline const MacroType (&EnumValuesMacroType())[2] {
+ static const MacroType values[] = {
+ MacroType_NO_ARGS,
+ MacroType_WITH_ARGS
+ };
+ return values;
+}
+
+inline const char * const *EnumNamesMacroType() {
+ static const char * const names[3] = {
"NO_ARGS",
"WITH_ARGS",
nullptr
@@ -32,12 +40,13 @@
}
inline const char *EnumNameMacroType(MacroType e) {
- const size_t index = static_cast<int>(e);
+ if (e < MacroType_NO_ARGS || e > MacroType_WITH_ARGS) return "";
+ const size_t index = static_cast<size_t>(e);
return EnumNamesMacroType()[index];
}
struct Macro FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum {
+ enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_M_NAME = 4,
VT_M_TYPE = 6,
VT_M_LINE = 8,
@@ -48,8 +57,8 @@
const flatbuffers::String *m_name() const {
return GetPointer<const flatbuffers::String *>(VT_M_NAME);
}
- MacroType m_type() const {
- return static_cast<MacroType>(GetField<int8_t>(VT_M_TYPE, 0));
+ SURELOG::MACROCACHE::MacroType m_type() const {
+ return static_cast<SURELOG::MACROCACHE::MacroType>(GetField<int8_t>(VT_M_TYPE, 0));
}
uint32_t m_line() const {
return GetField<uint32_t>(VT_M_LINE, 0);
@@ -65,16 +74,16 @@
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_NAME) &&
- verifier.Verify(m_name()) &&
+ VerifyOffset(verifier, VT_M_NAME) &&
+ verifier.VerifyString(m_name()) &&
VerifyField<int8_t>(verifier, VT_M_TYPE) &&
VerifyField<uint32_t>(verifier, VT_M_LINE) &&
VerifyField<uint16_t>(verifier, VT_M_COLUMN) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_ARGUMENTS) &&
- verifier.Verify(m_arguments()) &&
+ VerifyOffset(verifier, VT_M_ARGUMENTS) &&
+ verifier.VerifyVector(m_arguments()) &&
verifier.VerifyVectorOfStrings(m_arguments()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_TOKENS) &&
- verifier.Verify(m_tokens()) &&
+ VerifyOffset(verifier, VT_M_TOKENS) &&
+ verifier.VerifyVector(m_tokens()) &&
verifier.VerifyVectorOfStrings(m_tokens()) &&
verifier.EndTable();
}
@@ -86,7 +95,7 @@
void add_m_name(flatbuffers::Offset<flatbuffers::String> m_name) {
fbb_.AddOffset(Macro::VT_M_NAME, m_name);
}
- void add_m_type(MacroType m_type) {
+ void add_m_type(SURELOG::MACROCACHE::MacroType m_type) {
fbb_.AddElement<int8_t>(Macro::VT_M_TYPE, static_cast<int8_t>(m_type), 0);
}
void add_m_line(uint32_t m_line) {
@@ -101,13 +110,13 @@
void add_m_tokens(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> m_tokens) {
fbb_.AddOffset(Macro::VT_M_TOKENS, m_tokens);
}
- MacroBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+ explicit MacroBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
MacroBuilder &operator=(const MacroBuilder &);
flatbuffers::Offset<Macro> Finish() {
- const auto end = fbb_.EndTable(start_, 6);
+ const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<Macro>(end);
return o;
}
@@ -116,7 +125,7 @@
inline flatbuffers::Offset<Macro> CreateMacro(
flatbuffers::FlatBufferBuilder &_fbb,
flatbuffers::Offset<flatbuffers::String> m_name = 0,
- MacroType m_type = MacroType_NO_ARGS,
+ SURELOG::MACROCACHE::MacroType m_type = SURELOG::MACROCACHE::MacroType_NO_ARGS,
uint32_t m_line = 0,
uint16_t m_column = 0,
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> m_arguments = 0,
@@ -134,23 +143,26 @@
inline flatbuffers::Offset<Macro> CreateMacroDirect(
flatbuffers::FlatBufferBuilder &_fbb,
const char *m_name = nullptr,
- MacroType m_type = MacroType_NO_ARGS,
+ SURELOG::MACROCACHE::MacroType m_type = SURELOG::MACROCACHE::MacroType_NO_ARGS,
uint32_t m_line = 0,
uint16_t m_column = 0,
const std::vector<flatbuffers::Offset<flatbuffers::String>> *m_arguments = nullptr,
const std::vector<flatbuffers::Offset<flatbuffers::String>> *m_tokens = nullptr) {
+ auto m_name__ = m_name ? _fbb.CreateString(m_name) : 0;
+ auto m_arguments__ = m_arguments ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*m_arguments) : 0;
+ auto m_tokens__ = m_tokens ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*m_tokens) : 0;
return SURELOG::MACROCACHE::CreateMacro(
_fbb,
- m_name ? _fbb.CreateString(m_name) : 0,
+ m_name__,
m_type,
m_line,
m_column,
- m_arguments ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*m_arguments) : 0,
- m_tokens ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*m_tokens) : 0);
+ m_arguments__,
+ m_tokens__);
}
struct PPCache FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum {
+ enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_M_HEADER = 4,
VT_M_MACROS = 6,
VT_M_INCLUDES = 8,
@@ -164,8 +176,8 @@
const SURELOG::CACHE::Header *m_header() const {
return GetPointer<const SURELOG::CACHE::Header *>(VT_M_HEADER);
}
- const flatbuffers::Vector<flatbuffers::Offset<Macro>> *m_macros() const {
- return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<Macro>> *>(VT_M_MACROS);
+ const flatbuffers::Vector<flatbuffers::Offset<SURELOG::MACROCACHE::Macro>> *m_macros() const {
+ return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<SURELOG::MACROCACHE::Macro>> *>(VT_M_MACROS);
}
const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *m_includes() const {
return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_M_INCLUDES);
@@ -190,30 +202,30 @@
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_HEADER) &&
+ VerifyOffset(verifier, VT_M_HEADER) &&
verifier.VerifyTable(m_header()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_MACROS) &&
- verifier.Verify(m_macros()) &&
+ VerifyOffset(verifier, VT_M_MACROS) &&
+ verifier.VerifyVector(m_macros()) &&
verifier.VerifyVectorOfTables(m_macros()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_INCLUDES) &&
- verifier.Verify(m_includes()) &&
+ VerifyOffset(verifier, VT_M_INCLUDES) &&
+ verifier.VerifyVector(m_includes()) &&
verifier.VerifyVectorOfStrings(m_includes()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_BODY) &&
- verifier.Verify(m_body()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_ERRORS) &&
- verifier.Verify(m_errors()) &&
+ VerifyOffset(verifier, VT_M_BODY) &&
+ verifier.VerifyString(m_body()) &&
+ VerifyOffset(verifier, VT_M_ERRORS) &&
+ verifier.VerifyVector(m_errors()) &&
verifier.VerifyVectorOfTables(m_errors()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_SYMBOLS) &&
- verifier.Verify(m_symbols()) &&
+ VerifyOffset(verifier, VT_M_SYMBOLS) &&
+ verifier.VerifyVector(m_symbols()) &&
verifier.VerifyVectorOfStrings(m_symbols()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_CMD_INCLUDE_PATHS) &&
- verifier.Verify(m_cmd_include_paths()) &&
+ VerifyOffset(verifier, VT_M_CMD_INCLUDE_PATHS) &&
+ verifier.VerifyVector(m_cmd_include_paths()) &&
verifier.VerifyVectorOfStrings(m_cmd_include_paths()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_CMD_DEFINE_OPTIONS) &&
- verifier.Verify(m_cmd_define_options()) &&
+ VerifyOffset(verifier, VT_M_CMD_DEFINE_OPTIONS) &&
+ verifier.VerifyVector(m_cmd_define_options()) &&
verifier.VerifyVectorOfStrings(m_cmd_define_options()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_TIMEINFO) &&
- verifier.Verify(m_timeInfo()) &&
+ VerifyOffset(verifier, VT_M_TIMEINFO) &&
+ verifier.VerifyVector(m_timeInfo()) &&
verifier.VerifyVectorOfTables(m_timeInfo()) &&
verifier.EndTable();
}
@@ -225,7 +237,7 @@
void add_m_header(flatbuffers::Offset<SURELOG::CACHE::Header> m_header) {
fbb_.AddOffset(PPCache::VT_M_HEADER, m_header);
}
- void add_m_macros(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Macro>>> m_macros) {
+ void add_m_macros(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<SURELOG::MACROCACHE::Macro>>> m_macros) {
fbb_.AddOffset(PPCache::VT_M_MACROS, m_macros);
}
void add_m_includes(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> m_includes) {
@@ -249,13 +261,13 @@
void add_m_timeInfo(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<SURELOG::CACHE::TimeInfo>>> m_timeInfo) {
fbb_.AddOffset(PPCache::VT_M_TIMEINFO, m_timeInfo);
}
- PPCacheBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+ explicit PPCacheBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
PPCacheBuilder &operator=(const PPCacheBuilder &);
flatbuffers::Offset<PPCache> Finish() {
- const auto end = fbb_.EndTable(start_, 9);
+ const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<PPCache>(end);
return o;
}
@@ -264,7 +276,7 @@
inline flatbuffers::Offset<PPCache> CreatePPCache(
flatbuffers::FlatBufferBuilder &_fbb,
flatbuffers::Offset<SURELOG::CACHE::Header> m_header = 0,
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Macro>>> m_macros = 0,
+ flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<SURELOG::MACROCACHE::Macro>>> m_macros = 0,
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> m_includes = 0,
flatbuffers::Offset<flatbuffers::String> m_body = 0,
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<SURELOG::CACHE::Error>>> m_errors = 0,
@@ -288,7 +300,7 @@
inline flatbuffers::Offset<PPCache> CreatePPCacheDirect(
flatbuffers::FlatBufferBuilder &_fbb,
flatbuffers::Offset<SURELOG::CACHE::Header> m_header = 0,
- const std::vector<flatbuffers::Offset<Macro>> *m_macros = nullptr,
+ const std::vector<flatbuffers::Offset<SURELOG::MACROCACHE::Macro>> *m_macros = nullptr,
const std::vector<flatbuffers::Offset<flatbuffers::String>> *m_includes = nullptr,
const char *m_body = nullptr,
const std::vector<flatbuffers::Offset<SURELOG::CACHE::Error>> *m_errors = nullptr,
@@ -296,23 +308,35 @@
const std::vector<flatbuffers::Offset<flatbuffers::String>> *m_cmd_include_paths = nullptr,
const std::vector<flatbuffers::Offset<flatbuffers::String>> *m_cmd_define_options = nullptr,
const std::vector<flatbuffers::Offset<SURELOG::CACHE::TimeInfo>> *m_timeInfo = nullptr) {
+ auto m_macros__ = m_macros ? _fbb.CreateVector<flatbuffers::Offset<SURELOG::MACROCACHE::Macro>>(*m_macros) : 0;
+ auto m_includes__ = m_includes ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*m_includes) : 0;
+ auto m_body__ = m_body ? _fbb.CreateString(m_body) : 0;
+ auto m_errors__ = m_errors ? _fbb.CreateVector<flatbuffers::Offset<SURELOG::CACHE::Error>>(*m_errors) : 0;
+ auto m_symbols__ = m_symbols ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*m_symbols) : 0;
+ auto m_cmd_include_paths__ = m_cmd_include_paths ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*m_cmd_include_paths) : 0;
+ auto m_cmd_define_options__ = m_cmd_define_options ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*m_cmd_define_options) : 0;
+ auto m_timeInfo__ = m_timeInfo ? _fbb.CreateVector<flatbuffers::Offset<SURELOG::CACHE::TimeInfo>>(*m_timeInfo) : 0;
return SURELOG::MACROCACHE::CreatePPCache(
_fbb,
m_header,
- m_macros ? _fbb.CreateVector<flatbuffers::Offset<Macro>>(*m_macros) : 0,
- m_includes ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*m_includes) : 0,
- m_body ? _fbb.CreateString(m_body) : 0,
- m_errors ? _fbb.CreateVector<flatbuffers::Offset<SURELOG::CACHE::Error>>(*m_errors) : 0,
- m_symbols ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*m_symbols) : 0,
- m_cmd_include_paths ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*m_cmd_include_paths) : 0,
- m_cmd_define_options ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*m_cmd_define_options) : 0,
- m_timeInfo ? _fbb.CreateVector<flatbuffers::Offset<SURELOG::CACHE::TimeInfo>>(*m_timeInfo) : 0);
+ m_macros__,
+ m_includes__,
+ m_body__,
+ m_errors__,
+ m_symbols__,
+ m_cmd_include_paths__,
+ m_cmd_define_options__,
+ m_timeInfo__);
}
inline const SURELOG::MACROCACHE::PPCache *GetPPCache(const void *buf) {
return flatbuffers::GetRoot<SURELOG::MACROCACHE::PPCache>(buf);
}
+inline const SURELOG::MACROCACHE::PPCache *GetSizePrefixedPPCache(const void *buf) {
+ return flatbuffers::GetSizePrefixedRoot<SURELOG::MACROCACHE::PPCache>(buf);
+}
+
inline const char *PPCacheIdentifier() {
return "SLPP";
}
@@ -327,6 +351,11 @@
return verifier.VerifyBuffer<SURELOG::MACROCACHE::PPCache>(PPCacheIdentifier());
}
+inline bool VerifySizePrefixedPPCacheBuffer(
+ flatbuffers::Verifier &verifier) {
+ return verifier.VerifySizePrefixedBuffer<SURELOG::MACROCACHE::PPCache>(PPCacheIdentifier());
+}
+
inline const char *PPCacheExtension() {
return "slpp";
}
@@ -337,6 +366,12 @@
fbb.Finish(root, PPCacheIdentifier());
}
+inline void FinishSizePrefixedPPCacheBuffer(
+ flatbuffers::FlatBufferBuilder &fbb,
+ flatbuffers::Offset<SURELOG::MACROCACHE::PPCache> root) {
+ fbb.FinishSizePrefixed(root, PPCacheIdentifier());
+}
+
} // namespace MACROCACHE
} // namespace SURELOG
diff --git a/src/Cache/python_api_generated.h b/src/Cache/python_api_generated.h
index 383084a..a52e0c3 100644
--- a/src/Cache/python_api_generated.h
+++ b/src/Cache/python_api_generated.h
@@ -14,7 +14,7 @@
struct PythonAPICache;
struct PythonAPICache FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum {
+ enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_M_HEADER = 4,
VT_M_PYTHON_SCRIPT_FILE = 6,
VT_M_ERRORS = 8,
@@ -34,15 +34,15 @@
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_HEADER) &&
+ VerifyOffset(verifier, VT_M_HEADER) &&
verifier.VerifyTable(m_header()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_PYTHON_SCRIPT_FILE) &&
- verifier.Verify(m_python_script_file()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_ERRORS) &&
- verifier.Verify(m_errors()) &&
+ VerifyOffset(verifier, VT_M_PYTHON_SCRIPT_FILE) &&
+ verifier.VerifyString(m_python_script_file()) &&
+ VerifyOffset(verifier, VT_M_ERRORS) &&
+ verifier.VerifyVector(m_errors()) &&
verifier.VerifyVectorOfTables(m_errors()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_M_SYMBOLS) &&
- verifier.Verify(m_symbols()) &&
+ VerifyOffset(verifier, VT_M_SYMBOLS) &&
+ verifier.VerifyVector(m_symbols()) &&
verifier.VerifyVectorOfStrings(m_symbols()) &&
verifier.EndTable();
}
@@ -63,13 +63,13 @@
void add_m_symbols(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> m_symbols) {
fbb_.AddOffset(PythonAPICache::VT_M_SYMBOLS, m_symbols);
}
- PythonAPICacheBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+ explicit PythonAPICacheBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
PythonAPICacheBuilder &operator=(const PythonAPICacheBuilder &);
flatbuffers::Offset<PythonAPICache> Finish() {
- const auto end = fbb_.EndTable(start_, 4);
+ const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<PythonAPICache>(end);
return o;
}
@@ -95,18 +95,25 @@
const char *m_python_script_file = nullptr,
const std::vector<flatbuffers::Offset<SURELOG::CACHE::Error>> *m_errors = nullptr,
const std::vector<flatbuffers::Offset<flatbuffers::String>> *m_symbols = nullptr) {
+ auto m_python_script_file__ = m_python_script_file ? _fbb.CreateString(m_python_script_file) : 0;
+ auto m_errors__ = m_errors ? _fbb.CreateVector<flatbuffers::Offset<SURELOG::CACHE::Error>>(*m_errors) : 0;
+ auto m_symbols__ = m_symbols ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*m_symbols) : 0;
return SURELOG::PYTHONAPICACHE::CreatePythonAPICache(
_fbb,
m_header,
- m_python_script_file ? _fbb.CreateString(m_python_script_file) : 0,
- m_errors ? _fbb.CreateVector<flatbuffers::Offset<SURELOG::CACHE::Error>>(*m_errors) : 0,
- m_symbols ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*m_symbols) : 0);
+ m_python_script_file__,
+ m_errors__,
+ m_symbols__);
}
inline const SURELOG::PYTHONAPICACHE::PythonAPICache *GetPythonAPICache(const void *buf) {
return flatbuffers::GetRoot<SURELOG::PYTHONAPICACHE::PythonAPICache>(buf);
}
+inline const SURELOG::PYTHONAPICACHE::PythonAPICache *GetSizePrefixedPythonAPICache(const void *buf) {
+ return flatbuffers::GetSizePrefixedRoot<SURELOG::PYTHONAPICACHE::PythonAPICache>(buf);
+}
+
inline const char *PythonAPICacheIdentifier() {
return "SLPY";
}
@@ -121,6 +128,11 @@
return verifier.VerifyBuffer<SURELOG::PYTHONAPICACHE::PythonAPICache>(PythonAPICacheIdentifier());
}
+inline bool VerifySizePrefixedPythonAPICacheBuffer(
+ flatbuffers::Verifier &verifier) {
+ return verifier.VerifySizePrefixedBuffer<SURELOG::PYTHONAPICACHE::PythonAPICache>(PythonAPICacheIdentifier());
+}
+
inline const char *PythonAPICacheExtension() {
return "slpy";
}
@@ -131,6 +143,12 @@
fbb.Finish(root, PythonAPICacheIdentifier());
}
+inline void FinishSizePrefixedPythonAPICacheBuffer(
+ flatbuffers::FlatBufferBuilder &fbb,
+ flatbuffers::Offset<SURELOG::PYTHONAPICACHE::PythonAPICache> root) {
+ fbb.FinishSizePrefixed(root, PythonAPICacheIdentifier());
+}
+
} // namespace PYTHONAPICACHE
} // namespace SURELOG
diff --git a/third_party/flatbuffers b/third_party/flatbuffers
new file mode 160000
index 0000000..6beb9f4
--- /dev/null
+++ b/third_party/flatbuffers
@@ -0,0 +1 @@
+Subproject commit 6beb9f49cb44095c4c17be43f13906c6eb09d7c7
diff --git a/third_party/flatbuffers/CMake/BuildFlatBuffers.cmake b/third_party/flatbuffers/CMake/BuildFlatBuffers.cmake
deleted file mode 100644
index 42f78de..0000000
--- a/third_party/flatbuffers/CMake/BuildFlatBuffers.cmake
+++ /dev/null
@@ -1,148 +0,0 @@
-# Copyright 2015 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# General function to create FlatBuffer build rules for the given list of
-# schemas.
-#
-# flatbuffers_schemas: A list of flatbuffer schema files to process.
-#
-# schema_include_dirs: A list of schema file include directories, which will be
-# passed to flatc via the -I parameter.
-#
-# custom_target_name: The generated files will be added as dependencies for a
-# new custom target with this name. You should add that target as a dependency
-# for your main target to ensure these files are built. You can also retrieve
-# various properties from this target, such as GENERATED_INCLUDES_DIR,
-# BINARY_SCHEMAS_DIR, and COPY_TEXT_SCHEMAS_DIR.
-#
-# additional_dependencies: A list of additional dependencies that you'd like
-# all generated files to depend on. Pass in a blank string if you have none.
-#
-# generated_includes_dir: Where to generate the C++ header files for these
-# schemas. The generated includes directory will automatically be added to
-# CMake's include directories, and will be where generated header files are
-# placed. This parameter is optional; pass in empty string if you don't want to
-# generate include files for these schemas.
-#
-# binary_schemas_dir: If you specify an optional binary schema directory, binary
-# schemas will be generated for these schemas as well, and placed into the given
-# directory.
-#
-# copy_text_schemas_dir: If you want all text schemas (including schemas from
-# all schema include directories) copied into a directory (for example, if you
-# need them within your project to build JSON files), you can specify that
-# folder here. All text schemas will be copied to that folder.
-#
-# IMPORTANT: Make sure you quote all list arguments you pass to this function!
-# Otherwise CMake will only pass in the first element.
-# Example: build_flatbuffers("${fb_files}" "${include_dirs}" target_name ...)
-function(build_flatbuffers flatbuffers_schemas
- schema_include_dirs
- custom_target_name
- additional_dependencies
- generated_includes_dir
- binary_schemas_dir
- copy_text_schemas_dir)
-
- # Test if including from FindFlatBuffers
- if(FLATBUFFERS_FLATC_EXECUTABLE)
- set(FLATC_TARGET "")
- set(FLATC ${FLATBUFFERS_FLATC_EXECUTABLE})
- else()
- set(FLATC_TARGET flatc)
- set(FLATC flatc)
- endif()
- set(FLATC_SCHEMA_ARGS --gen-mutable)
- if(FLATBUFFERS_FLATC_SCHEMA_EXTRA_ARGS)
- set(FLATC_SCHEMA_ARGS
- ${FLATBUFFERS_FLATC_SCHEMA_EXTRA_ARGS}
- ${FLATC_SCHEMA_ARGS}
- )
- endif()
-
- set(schema_glob "*.fbs")
- # Generate the include files parameters.
- set(include_params "")
- set(all_generated_files "")
- foreach (include_dir ${schema_include_dirs})
- set(include_params -I ${include_dir} ${include_params})
- if (NOT ${copy_text_schemas_dir} STREQUAL "")
- # Copy text schemas from dependent folders.
- file(GLOB_RECURSE dependent_schemas ${include_dir}/${schema_glob})
- foreach (dependent_schema ${dependent_schemas})
- file(COPY ${dependent_schema} DESTINATION ${copy_text_schemas_dir})
- endforeach()
- endif()
- endforeach()
-
- foreach(schema ${flatbuffers_schemas})
- get_filename_component(filename ${schema} NAME_WE)
- # For each schema, do the things we requested.
- if (NOT ${generated_includes_dir} STREQUAL "")
- set(generated_include ${generated_includes_dir}/${filename}_generated.h)
- add_custom_command(
- OUTPUT ${generated_include}
- COMMAND ${FLATC} ${FLATC_SCHEMA_ARGS}
- -o ${generated_includes_dir}
- ${include_params}
- -c ${schema}
- DEPENDS ${FLATC_TARGET} ${schema} ${additional_dependencies})
- list(APPEND all_generated_files ${generated_include})
- endif()
-
- if (NOT ${binary_schemas_dir} STREQUAL "")
- set(binary_schema ${binary_schemas_dir}/${filename}.bfbs)
- add_custom_command(
- OUTPUT ${binary_schema}
- COMMAND ${FLATC} -b --schema
- -o ${binary_schemas_dir}
- ${include_params}
- ${schema}
- DEPENDS ${FLATC_TARGET} ${schema} ${additional_dependencies})
- list(APPEND all_generated_files ${binary_schema})
- endif()
-
- if (NOT ${copy_text_schemas_dir} STREQUAL "")
- file(COPY ${schema} DESTINATION ${copy_text_schemas_dir})
- endif()
- endforeach()
-
- # Create a custom target that depends on all the generated files.
- # This is the target that you can depend on to trigger all these
- # to be built.
- add_custom_target(${custom_target_name}
- DEPENDS ${all_generated_files} ${additional_dependencies})
-
- # Register the include directory we are using.
- if (NOT ${generated_includes_dir} STREQUAL "")
- include_directories(${generated_includes_dir})
- set_property(TARGET ${custom_target_name}
- PROPERTY GENERATED_INCLUDES_DIR
- ${generated_includes_dir})
- endif()
-
- # Register the binary schemas dir we are using.
- if (NOT ${binary_schemas_dir} STREQUAL "")
- set_property(TARGET ${custom_target_name}
- PROPERTY BINARY_SCHEMAS_DIR
- ${binary_schemas_dir})
- endif()
-
- # Register the text schema copy dir we are using.
- if (NOT ${copy_text_schemas_dir} STREQUAL "")
- set_property(TARGET ${custom_target_name}
- PROPERTY COPY_TEXT_SCHEMAS_DIR
- ${copy_text_schemas_dir})
- endif()
-endfunction()
diff --git a/third_party/flatbuffers/CMake/FindFlatBuffers.cmake b/third_party/flatbuffers/CMake/FindFlatBuffers.cmake
deleted file mode 100644
index 675ea88..0000000
--- a/third_party/flatbuffers/CMake/FindFlatBuffers.cmake
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright 2014 Stefan.Eilemann@epfl.ch
-# Copyright 2014 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Find the flatbuffers schema compiler
-#
-# Output Variables:
-# * FLATBUFFERS_FLATC_EXECUTABLE the flatc compiler executable
-# * FLATBUFFERS_FOUND
-#
-# Provides:
-# * FLATBUFFERS_GENERATE_C_HEADERS(Name <files>) creates the C++ headers
-# for the given flatbuffer schema files.
-# Returns the header files in ${Name}_OUTPUTS
-
-set(FLATBUFFERS_CMAKE_DIR ${CMAKE_CURRENT_LIST_DIR})
-
-find_program(FLATBUFFERS_FLATC_EXECUTABLE NAMES flatc)
-find_path(FLATBUFFERS_INCLUDE_DIR NAMES flatbuffers/flatbuffers.h)
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(flatbuffers
- DEFAULT_MSG FLATBUFFERS_FLATC_EXECUTABLE FLATBUFFERS_INCLUDE_DIR)
-
-if(FLATBUFFERS_FOUND)
- function(FLATBUFFERS_GENERATE_C_HEADERS Name)
- set(FLATC_OUTPUTS)
- foreach(FILE ${ARGN})
- get_filename_component(FLATC_OUTPUT ${FILE} NAME_WE)
- set(FLATC_OUTPUT
- "${CMAKE_CURRENT_BINARY_DIR}/${FLATC_OUTPUT}_generated.h")
- list(APPEND FLATC_OUTPUTS ${FLATC_OUTPUT})
-
- add_custom_command(OUTPUT ${FLATC_OUTPUT}
- COMMAND ${FLATBUFFERS_FLATC_EXECUTABLE}
- ARGS -c -o "${CMAKE_CURRENT_BINARY_DIR}/" ${FILE}
- COMMENT "Building C++ header for ${FILE}"
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
- endforeach()
- set(${Name}_OUTPUTS ${FLATC_OUTPUTS} PARENT_SCOPE)
- endfunction()
-
- set(FLATBUFFERS_INCLUDE_DIRS ${FLATBUFFERS_INCLUDE_DIR})
- include_directories(${CMAKE_BINARY_DIR})
-else()
- set(FLATBUFFERS_INCLUDE_DIR)
-endif()
-
-include("${FLATBUFFERS_CMAKE_DIR}/BuildFlatBuffers.cmake")
\ No newline at end of file
diff --git a/third_party/flatbuffers/CMake/PackageDebian.cmake b/third_party/flatbuffers/CMake/PackageDebian.cmake
deleted file mode 100644
index ebe8931..0000000
--- a/third_party/flatbuffers/CMake/PackageDebian.cmake
+++ /dev/null
@@ -1,57 +0,0 @@
-# ------------------- Debianization ---------------------
-if (UNIX)
-
- # Set build environment
- SET(CPACK_GENERATOR "TGZ;DEB")
- SET(CPACK_SOURCE_TGZ "ON")
-
- # Common package information
- SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
- "FlatBuffers is an efficient cross platform serialization library for C++, with support for Java, C# and Go. It was created at Google specifically for game development and other performance-critical applications.")
- SET(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/google/flatbuffers")
- SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Vitaly Isaev <vitalyisaev2@gmail.com>")
-
- # Derive package version from git
- EXECUTE_PROCESS(
- COMMAND date +%Y%m%d
- OUTPUT_VARIABLE DATE
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- EXECUTE_PROCESS(
- COMMAND git describe
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
- OUTPUT_VARIABLE GIT_DESCRIBE_DIRTY
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- string(REGEX REPLACE "^v([0-9]+)\\..*" "\\1" VERSION_MAJOR "${GIT_DESCRIBE_DIRTY}")
- string(REGEX REPLACE "^v[0-9]+\\.([0-9]+).*" "\\1" VERSION_MINOR "${GIT_DESCRIBE_DIRTY}")
- string(REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" VERSION_PATCH "${GIT_DESCRIBE_DIRTY}")
- string(REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.[0-9]+\\-([0-9]+).*" "\\1" VERSION_COMMIT "${GIT_DESCRIBE_DIRTY}")
- SET(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR})
- SET(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR})
- SET(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH})
- SET(CPACK_PACKAGE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}-${VERSION_COMMIT}")
- SET(CPACK_DEBIAN_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}")
-
- # Derive architecture
- IF(NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE)
- FIND_PROGRAM(DPKG_CMD dpkg)
- IF(NOT DPKG_CMD)
- MESSAGE(STATUS "Can not find dpkg in your path, default to i386.")
- SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE i386)
- ENDIF(NOT DPKG_CMD)
- EXECUTE_PROCESS(COMMAND "${DPKG_CMD}" --print-architecture
- OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- ENDIF(NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE)
-
- # Package name
- SET(CPACK_DEBIAN_PACKAGE_NAME "flatbuffers")
- SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE.txt)
- SET(CPACK_PACKAGE_FILE_NAME
- "${CPACK_DEBIAN_PACKAGE_NAME}_${CPACK_DEBIAN_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
-
-endif(UNIX)
-
-INCLUDE(CPack)
diff --git a/third_party/flatbuffers/CMakeFiles/3.5.1/CMakeCCompiler.cmake b/third_party/flatbuffers/CMakeFiles/3.5.1/CMakeCCompiler.cmake
deleted file mode 100644
index f40522e..0000000
--- a/third_party/flatbuffers/CMakeFiles/3.5.1/CMakeCCompiler.cmake
+++ /dev/null
@@ -1,67 +0,0 @@
-set(CMAKE_C_COMPILER "/usr/bin/cc")
-set(CMAKE_C_COMPILER_ARG1 "")
-set(CMAKE_C_COMPILER_ID "GNU")
-set(CMAKE_C_COMPILER_VERSION "5.4.0")
-set(CMAKE_C_COMPILER_WRAPPER "")
-set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
-set(CMAKE_C_COMPILE_FEATURES "c_function_prototypes;c_restrict;c_variadic_macros;c_static_assert")
-set(CMAKE_C90_COMPILE_FEATURES "c_function_prototypes")
-set(CMAKE_C99_COMPILE_FEATURES "c_restrict;c_variadic_macros")
-set(CMAKE_C11_COMPILE_FEATURES "c_static_assert")
-
-set(CMAKE_C_PLATFORM_ID "Linux")
-set(CMAKE_C_SIMULATE_ID "")
-set(CMAKE_C_SIMULATE_VERSION "")
-
-set(CMAKE_AR "/usr/bin/ar")
-set(CMAKE_RANLIB "/usr/bin/ranlib")
-set(CMAKE_LINKER "/usr/bin/ld")
-set(CMAKE_COMPILER_IS_GNUCC 1)
-set(CMAKE_C_COMPILER_LOADED 1)
-set(CMAKE_C_COMPILER_WORKS TRUE)
-set(CMAKE_C_ABI_COMPILED TRUE)
-set(CMAKE_COMPILER_IS_MINGW )
-set(CMAKE_COMPILER_IS_CYGWIN )
-if(CMAKE_COMPILER_IS_CYGWIN)
- set(CYGWIN 1)
- set(UNIX 1)
-endif()
-
-set(CMAKE_C_COMPILER_ENV_VAR "CC")
-
-if(CMAKE_COMPILER_IS_MINGW)
- set(MINGW 1)
-endif()
-set(CMAKE_C_COMPILER_ID_RUN 1)
-set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
-set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
-set(CMAKE_C_LINKER_PREFERENCE 10)
-
-# Save compiler ABI information.
-set(CMAKE_C_SIZEOF_DATA_PTR "8")
-set(CMAKE_C_COMPILER_ABI "ELF")
-set(CMAKE_C_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
-
-if(CMAKE_C_SIZEOF_DATA_PTR)
- set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
-endif()
-
-if(CMAKE_C_COMPILER_ABI)
- set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
-endif()
-
-if(CMAKE_C_LIBRARY_ARCHITECTURE)
- set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
-endif()
-
-set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
-if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
- set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
-endif()
-
-
-
-
-set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "c")
-set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/5;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib")
-set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/third_party/flatbuffers/CMakeFiles/3.5.1/CMakeCXXCompiler.cmake b/third_party/flatbuffers/CMakeFiles/3.5.1/CMakeCXXCompiler.cmake
deleted file mode 100644
index 013ee92..0000000
--- a/third_party/flatbuffers/CMakeFiles/3.5.1/CMakeCXXCompiler.cmake
+++ /dev/null
@@ -1,68 +0,0 @@
-set(CMAKE_CXX_COMPILER "/usr/bin/c++")
-set(CMAKE_CXX_COMPILER_ARG1 "")
-set(CMAKE_CXX_COMPILER_ID "GNU")
-set(CMAKE_CXX_COMPILER_VERSION "5.4.0")
-set(CMAKE_CXX_COMPILER_WRAPPER "")
-set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "98")
-set(CMAKE_CXX_COMPILE_FEATURES "cxx_template_template_parameters;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates")
-set(CMAKE_CXX98_COMPILE_FEATURES "cxx_template_template_parameters")
-set(CMAKE_CXX11_COMPILE_FEATURES "cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates")
-set(CMAKE_CXX14_COMPILE_FEATURES "cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates")
-
-set(CMAKE_CXX_PLATFORM_ID "Linux")
-set(CMAKE_CXX_SIMULATE_ID "")
-set(CMAKE_CXX_SIMULATE_VERSION "")
-
-set(CMAKE_AR "/usr/bin/ar")
-set(CMAKE_RANLIB "/usr/bin/ranlib")
-set(CMAKE_LINKER "/usr/bin/ld")
-set(CMAKE_COMPILER_IS_GNUCXX 1)
-set(CMAKE_CXX_COMPILER_LOADED 1)
-set(CMAKE_CXX_COMPILER_WORKS TRUE)
-set(CMAKE_CXX_ABI_COMPILED TRUE)
-set(CMAKE_COMPILER_IS_MINGW )
-set(CMAKE_COMPILER_IS_CYGWIN )
-if(CMAKE_COMPILER_IS_CYGWIN)
- set(CYGWIN 1)
- set(UNIX 1)
-endif()
-
-set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
-
-if(CMAKE_COMPILER_IS_MINGW)
- set(MINGW 1)
-endif()
-set(CMAKE_CXX_COMPILER_ID_RUN 1)
-set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
-set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;mm;CPP)
-set(CMAKE_CXX_LINKER_PREFERENCE 30)
-set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
-
-# Save compiler ABI information.
-set(CMAKE_CXX_SIZEOF_DATA_PTR "8")
-set(CMAKE_CXX_COMPILER_ABI "ELF")
-set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
-
-if(CMAKE_CXX_SIZEOF_DATA_PTR)
- set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
-endif()
-
-if(CMAKE_CXX_COMPILER_ABI)
- set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
-endif()
-
-if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
- set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
-endif()
-
-set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "")
-if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX)
- set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}")
-endif()
-
-
-
-
-set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;c")
-set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/5;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib")
-set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/third_party/flatbuffers/CMakeFiles/3.5.1/CMakeDetermineCompilerABI_C.bin b/third_party/flatbuffers/CMakeFiles/3.5.1/CMakeDetermineCompilerABI_C.bin
deleted file mode 100755
index c87e38c..0000000
--- a/third_party/flatbuffers/CMakeFiles/3.5.1/CMakeDetermineCompilerABI_C.bin
+++ /dev/null
Binary files differ
diff --git a/third_party/flatbuffers/CMakeFiles/3.5.1/CMakeDetermineCompilerABI_CXX.bin b/third_party/flatbuffers/CMakeFiles/3.5.1/CMakeDetermineCompilerABI_CXX.bin
deleted file mode 100755
index fa40640..0000000
--- a/third_party/flatbuffers/CMakeFiles/3.5.1/CMakeDetermineCompilerABI_CXX.bin
+++ /dev/null
Binary files differ
diff --git a/third_party/flatbuffers/CMakeFiles/3.5.1/CMakeSystem.cmake b/third_party/flatbuffers/CMakeFiles/3.5.1/CMakeSystem.cmake
deleted file mode 100644
index 60ce33f..0000000
--- a/third_party/flatbuffers/CMakeFiles/3.5.1/CMakeSystem.cmake
+++ /dev/null
@@ -1,15 +0,0 @@
-set(CMAKE_HOST_SYSTEM "Linux-4.4.0-72-generic")
-set(CMAKE_HOST_SYSTEM_NAME "Linux")
-set(CMAKE_HOST_SYSTEM_VERSION "4.4.0-72-generic")
-set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
-
-
-
-set(CMAKE_SYSTEM "Linux-4.4.0-72-generic")
-set(CMAKE_SYSTEM_NAME "Linux")
-set(CMAKE_SYSTEM_VERSION "4.4.0-72-generic")
-set(CMAKE_SYSTEM_PROCESSOR "x86_64")
-
-set(CMAKE_CROSSCOMPILING "FALSE")
-
-set(CMAKE_SYSTEM_LOADED 1)
diff --git a/third_party/flatbuffers/CMakeFiles/3.5.1/CompilerIdC/CMakeCCompilerId.c b/third_party/flatbuffers/CMakeFiles/3.5.1/CompilerIdC/CMakeCCompilerId.c
deleted file mode 100644
index 570a15e..0000000
--- a/third_party/flatbuffers/CMakeFiles/3.5.1/CompilerIdC/CMakeCCompilerId.c
+++ /dev/null
@@ -1,544 +0,0 @@
-#ifdef __cplusplus
-# error "A C++ compiler has been selected for C."
-#endif
-
-#if defined(__18CXX)
-# define ID_VOID_MAIN
-#endif
-
-
-/* Version number components: V=Version, R=Revision, P=Patch
- Version date components: YYYY=Year, MM=Month, DD=Day */
-
-#if defined(__INTEL_COMPILER) || defined(__ICC)
-# define COMPILER_ID "Intel"
-# if defined(_MSC_VER)
-# define SIMULATE_ID "MSVC"
-# endif
- /* __INTEL_COMPILER = VRP */
-# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
-# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
-# if defined(__INTEL_COMPILER_UPDATE)
-# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
-# else
-# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10)
-# endif
-# if defined(__INTEL_COMPILER_BUILD_DATE)
- /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
-# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
-# endif
-# if defined(_MSC_VER)
- /* _MSC_VER = VVRR */
-# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
-# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
-# endif
-
-#elif defined(__PATHCC__)
-# define COMPILER_ID "PathScale"
-# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
-# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
-# if defined(__PATHCC_PATCHLEVEL__)
-# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
-# endif
-
-#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
-# define COMPILER_ID "Embarcadero"
-# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
-# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
-# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF)
-
-#elif defined(__BORLANDC__)
-# define COMPILER_ID "Borland"
- /* __BORLANDC__ = 0xVRR */
-# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
-# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
-
-#elif defined(__WATCOMC__) && __WATCOMC__ < 1200
-# define COMPILER_ID "Watcom"
- /* __WATCOMC__ = VVRR */
-# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
-# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
-# if (__WATCOMC__ % 10) > 0
-# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
-# endif
-
-#elif defined(__WATCOMC__)
-# define COMPILER_ID "OpenWatcom"
- /* __WATCOMC__ = VVRP + 1100 */
-# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
-# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
-# if (__WATCOMC__ % 10) > 0
-# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
-# endif
-
-#elif defined(__SUNPRO_C)
-# define COMPILER_ID "SunPro"
-# if __SUNPRO_C >= 0x5100
- /* __SUNPRO_C = 0xVRRP */
-# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12)
-# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF)
-# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF)
-# else
- /* __SUNPRO_CC = 0xVRP */
-# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8)
-# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF)
-# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF)
-# endif
-
-#elif defined(__HP_cc)
-# define COMPILER_ID "HP"
- /* __HP_cc = VVRRPP */
-# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000)
-# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100)
-# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100)
-
-#elif defined(__DECC)
-# define COMPILER_ID "Compaq"
- /* __DECC_VER = VVRRTPPPP */
-# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000)
-# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100)
-# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000)
-
-#elif defined(__IBMC__) && defined(__COMPILER_VER__)
-# define COMPILER_ID "zOS"
- /* __IBMC__ = VRP */
-# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
-# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
-# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
-
-#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800
-# define COMPILER_ID "XL"
- /* __IBMC__ = VRP */
-# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
-# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
-# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
-
-#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800
-# define COMPILER_ID "VisualAge"
- /* __IBMC__ = VRP */
-# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
-# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
-# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
-
-#elif defined(__PGI)
-# define COMPILER_ID "PGI"
-# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
-# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
-# if defined(__PGIC_PATCHLEVEL__)
-# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
-# endif
-
-#elif defined(_CRAYC)
-# define COMPILER_ID "Cray"
-# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
-# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
-
-#elif defined(__TI_COMPILER_VERSION__)
-# define COMPILER_ID "TI"
- /* __TI_COMPILER_VERSION__ = VVVRRRPPP */
-# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
-# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000)
-# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000)
-
-#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version)
-# define COMPILER_ID "Fujitsu"
-
-#elif defined(__TINYC__)
-# define COMPILER_ID "TinyCC"
-
-#elif defined(__SCO_VERSION__)
-# define COMPILER_ID "SCO"
-
-#elif defined(__clang__) && defined(__apple_build_version__)
-# define COMPILER_ID "AppleClang"
-# if defined(_MSC_VER)
-# define SIMULATE_ID "MSVC"
-# endif
-# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
-# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
-# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
-# if defined(_MSC_VER)
- /* _MSC_VER = VVRR */
-# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
-# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
-# endif
-# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
-
-#elif defined(__clang__)
-# define COMPILER_ID "Clang"
-# if defined(_MSC_VER)
-# define SIMULATE_ID "MSVC"
-# endif
-# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
-# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
-# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
-# if defined(_MSC_VER)
- /* _MSC_VER = VVRR */
-# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
-# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
-# endif
-
-#elif defined(__GNUC__)
-# define COMPILER_ID "GNU"
-# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
-# if defined(__GNUC_MINOR__)
-# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
-# endif
-# if defined(__GNUC_PATCHLEVEL__)
-# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
-# endif
-
-#elif defined(_MSC_VER)
-# define COMPILER_ID "MSVC"
- /* _MSC_VER = VVRR */
-# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
-# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
-# if defined(_MSC_FULL_VER)
-# if _MSC_VER >= 1400
- /* _MSC_FULL_VER = VVRRPPPPP */
-# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
-# else
- /* _MSC_FULL_VER = VVRRPPPP */
-# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
-# endif
-# endif
-# if defined(_MSC_BUILD)
-# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
-# endif
-
-#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
-# define COMPILER_ID "ADSP"
-#if defined(__VISUALDSPVERSION__)
- /* __VISUALDSPVERSION__ = 0xVVRRPP00 */
-# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)
-# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)
-# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF)
-#endif
-
-#elif defined(__IAR_SYSTEMS_ICC__ ) || defined(__IAR_SYSTEMS_ICC)
-# define COMPILER_ID "IAR"
-
-#elif defined(__ARMCC_VERSION)
-# define COMPILER_ID "ARMCC"
-#if __ARMCC_VERSION >= 1000000
- /* __ARMCC_VERSION = VRRPPPP */
- # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000)
- # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100)
- # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
-#else
- /* __ARMCC_VERSION = VRPPPP */
- # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000)
- # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10)
- # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
-#endif
-
-
-#elif defined(SDCC)
-# define COMPILER_ID "SDCC"
- /* SDCC = VRP */
-# define COMPILER_VERSION_MAJOR DEC(SDCC/100)
-# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10)
-# define COMPILER_VERSION_PATCH DEC(SDCC % 10)
-
-#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
-# define COMPILER_ID "MIPSpro"
-# if defined(_SGI_COMPILER_VERSION)
- /* _SGI_COMPILER_VERSION = VRP */
-# define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100)
-# define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10)
-# define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION % 10)
-# else
- /* _COMPILER_VERSION = VRP */
-# define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100)
-# define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10)
-# define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION % 10)
-# endif
-
-
-/* These compilers are either not known or too old to define an
- identification macro. Try to identify the platform and guess that
- it is the native compiler. */
-#elif defined(__sgi)
-# define COMPILER_ID "MIPSpro"
-
-#elif defined(__hpux) || defined(__hpua)
-# define COMPILER_ID "HP"
-
-#else /* unknown compiler */
-# define COMPILER_ID ""
-#endif
-
-/* Construct the string literal in pieces to prevent the source from
- getting matched. Store it in a pointer rather than an array
- because some compilers will just produce instructions to fill the
- array rather than assigning a pointer to a static array. */
-char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
-#ifdef SIMULATE_ID
-char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
-#endif
-
-#ifdef __QNXNTO__
-char const* qnxnto = "INFO" ":" "qnxnto[]";
-#endif
-
-#if defined(__CRAYXE) || defined(__CRAYXC)
-char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
-#endif
-
-#define STRINGIFY_HELPER(X) #X
-#define STRINGIFY(X) STRINGIFY_HELPER(X)
-
-/* Identify known platforms by name. */
-#if defined(__linux) || defined(__linux__) || defined(linux)
-# define PLATFORM_ID "Linux"
-
-#elif defined(__CYGWIN__)
-# define PLATFORM_ID "Cygwin"
-
-#elif defined(__MINGW32__)
-# define PLATFORM_ID "MinGW"
-
-#elif defined(__APPLE__)
-# define PLATFORM_ID "Darwin"
-
-#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
-# define PLATFORM_ID "Windows"
-
-#elif defined(__FreeBSD__) || defined(__FreeBSD)
-# define PLATFORM_ID "FreeBSD"
-
-#elif defined(__NetBSD__) || defined(__NetBSD)
-# define PLATFORM_ID "NetBSD"
-
-#elif defined(__OpenBSD__) || defined(__OPENBSD)
-# define PLATFORM_ID "OpenBSD"
-
-#elif defined(__sun) || defined(sun)
-# define PLATFORM_ID "SunOS"
-
-#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
-# define PLATFORM_ID "AIX"
-
-#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
-# define PLATFORM_ID "IRIX"
-
-#elif defined(__hpux) || defined(__hpux__)
-# define PLATFORM_ID "HP-UX"
-
-#elif defined(__HAIKU__)
-# define PLATFORM_ID "Haiku"
-
-#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
-# define PLATFORM_ID "BeOS"
-
-#elif defined(__QNX__) || defined(__QNXNTO__)
-# define PLATFORM_ID "QNX"
-
-#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
-# define PLATFORM_ID "Tru64"
-
-#elif defined(__riscos) || defined(__riscos__)
-# define PLATFORM_ID "RISCos"
-
-#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
-# define PLATFORM_ID "SINIX"
-
-#elif defined(__UNIX_SV__)
-# define PLATFORM_ID "UNIX_SV"
-
-#elif defined(__bsdos__)
-# define PLATFORM_ID "BSDOS"
-
-#elif defined(_MPRAS) || defined(MPRAS)
-# define PLATFORM_ID "MP-RAS"
-
-#elif defined(__osf) || defined(__osf__)
-# define PLATFORM_ID "OSF1"
-
-#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
-# define PLATFORM_ID "SCO_SV"
-
-#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
-# define PLATFORM_ID "ULTRIX"
-
-#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
-# define PLATFORM_ID "Xenix"
-
-#elif defined(__WATCOMC__)
-# if defined(__LINUX__)
-# define PLATFORM_ID "Linux"
-
-# elif defined(__DOS__)
-# define PLATFORM_ID "DOS"
-
-# elif defined(__OS2__)
-# define PLATFORM_ID "OS2"
-
-# elif defined(__WINDOWS__)
-# define PLATFORM_ID "Windows3x"
-
-# else /* unknown platform */
-# define PLATFORM_ID ""
-# endif
-
-#else /* unknown platform */
-# define PLATFORM_ID ""
-
-#endif
-
-/* For windows compilers MSVC and Intel we can determine
- the architecture of the compiler being used. This is because
- the compilers do not have flags that can change the architecture,
- but rather depend on which compiler is being used
-*/
-#if defined(_WIN32) && defined(_MSC_VER)
-# if defined(_M_IA64)
-# define ARCHITECTURE_ID "IA64"
-
-# elif defined(_M_X64) || defined(_M_AMD64)
-# define ARCHITECTURE_ID "x64"
-
-# elif defined(_M_IX86)
-# define ARCHITECTURE_ID "X86"
-
-# elif defined(_M_ARM)
-# if _M_ARM == 4
-# define ARCHITECTURE_ID "ARMV4I"
-# elif _M_ARM == 5
-# define ARCHITECTURE_ID "ARMV5I"
-# else
-# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
-# endif
-
-# elif defined(_M_MIPS)
-# define ARCHITECTURE_ID "MIPS"
-
-# elif defined(_M_SH)
-# define ARCHITECTURE_ID "SHx"
-
-# else /* unknown architecture */
-# define ARCHITECTURE_ID ""
-# endif
-
-#elif defined(__WATCOMC__)
-# if defined(_M_I86)
-# define ARCHITECTURE_ID "I86"
-
-# elif defined(_M_IX86)
-# define ARCHITECTURE_ID "X86"
-
-# else /* unknown architecture */
-# define ARCHITECTURE_ID ""
-# endif
-
-#else
-# define ARCHITECTURE_ID ""
-#endif
-
-/* Convert integer to decimal digit literals. */
-#define DEC(n) \
- ('0' + (((n) / 10000000)%10)), \
- ('0' + (((n) / 1000000)%10)), \
- ('0' + (((n) / 100000)%10)), \
- ('0' + (((n) / 10000)%10)), \
- ('0' + (((n) / 1000)%10)), \
- ('0' + (((n) / 100)%10)), \
- ('0' + (((n) / 10)%10)), \
- ('0' + ((n) % 10))
-
-/* Convert integer to hex digit literals. */
-#define HEX(n) \
- ('0' + ((n)>>28 & 0xF)), \
- ('0' + ((n)>>24 & 0xF)), \
- ('0' + ((n)>>20 & 0xF)), \
- ('0' + ((n)>>16 & 0xF)), \
- ('0' + ((n)>>12 & 0xF)), \
- ('0' + ((n)>>8 & 0xF)), \
- ('0' + ((n)>>4 & 0xF)), \
- ('0' + ((n) & 0xF))
-
-/* Construct a string literal encoding the version number components. */
-#ifdef COMPILER_VERSION_MAJOR
-char const info_version[] = {
- 'I', 'N', 'F', 'O', ':',
- 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
- COMPILER_VERSION_MAJOR,
-# ifdef COMPILER_VERSION_MINOR
- '.', COMPILER_VERSION_MINOR,
-# ifdef COMPILER_VERSION_PATCH
- '.', COMPILER_VERSION_PATCH,
-# ifdef COMPILER_VERSION_TWEAK
- '.', COMPILER_VERSION_TWEAK,
-# endif
-# endif
-# endif
- ']','\0'};
-#endif
-
-/* Construct a string literal encoding the version number components. */
-#ifdef SIMULATE_VERSION_MAJOR
-char const info_simulate_version[] = {
- 'I', 'N', 'F', 'O', ':',
- 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
- SIMULATE_VERSION_MAJOR,
-# ifdef SIMULATE_VERSION_MINOR
- '.', SIMULATE_VERSION_MINOR,
-# ifdef SIMULATE_VERSION_PATCH
- '.', SIMULATE_VERSION_PATCH,
-# ifdef SIMULATE_VERSION_TWEAK
- '.', SIMULATE_VERSION_TWEAK,
-# endif
-# endif
-# endif
- ']','\0'};
-#endif
-
-/* Construct the string literal in pieces to prevent the source from
- getting matched. Store it in a pointer rather than an array
- because some compilers will just produce instructions to fill the
- array rather than assigning a pointer to a static array. */
-char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
-char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
-
-
-
-
-const char* info_language_dialect_default = "INFO" ":" "dialect_default["
-#if !defined(__STDC_VERSION__)
- "90"
-#elif __STDC_VERSION__ >= 201000L
- "11"
-#elif __STDC_VERSION__ >= 199901L
- "99"
-#else
-#endif
-"]";
-
-/*--------------------------------------------------------------------------*/
-
-#ifdef ID_VOID_MAIN
-void main() {}
-#else
-int main(int argc, char* argv[])
-{
- int require = 0;
- require += info_compiler[argc];
- require += info_platform[argc];
- require += info_arch[argc];
-#ifdef COMPILER_VERSION_MAJOR
- require += info_version[argc];
-#endif
-#ifdef SIMULATE_ID
- require += info_simulate[argc];
-#endif
-#ifdef SIMULATE_VERSION_MAJOR
- require += info_simulate_version[argc];
-#endif
-#if defined(__CRAYXE) || defined(__CRAYXC)
- require += info_cray[argc];
-#endif
- require += info_language_dialect_default[argc];
- (void)argv;
- return require;
-}
-#endif
diff --git a/third_party/flatbuffers/CMakeFiles/3.5.1/CompilerIdCXX/CMakeCXXCompilerId.cpp b/third_party/flatbuffers/CMakeFiles/3.5.1/CompilerIdCXX/CMakeCXXCompilerId.cpp
deleted file mode 100644
index e6d8536..0000000
--- a/third_party/flatbuffers/CMakeFiles/3.5.1/CompilerIdCXX/CMakeCXXCompilerId.cpp
+++ /dev/null
@@ -1,533 +0,0 @@
-/* This source file must have a .cpp extension so that all C++ compilers
- recognize the extension without flags. Borland does not know .cxx for
- example. */
-#ifndef __cplusplus
-# error "A C compiler has been selected for C++."
-#endif
-
-
-/* Version number components: V=Version, R=Revision, P=Patch
- Version date components: YYYY=Year, MM=Month, DD=Day */
-
-#if defined(__COMO__)
-# define COMPILER_ID "Comeau"
- /* __COMO_VERSION__ = VRR */
-# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100)
-# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100)
-
-#elif defined(__INTEL_COMPILER) || defined(__ICC)
-# define COMPILER_ID "Intel"
-# if defined(_MSC_VER)
-# define SIMULATE_ID "MSVC"
-# endif
- /* __INTEL_COMPILER = VRP */
-# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
-# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
-# if defined(__INTEL_COMPILER_UPDATE)
-# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
-# else
-# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10)
-# endif
-# if defined(__INTEL_COMPILER_BUILD_DATE)
- /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
-# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
-# endif
-# if defined(_MSC_VER)
- /* _MSC_VER = VVRR */
-# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
-# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
-# endif
-
-#elif defined(__PATHCC__)
-# define COMPILER_ID "PathScale"
-# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
-# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
-# if defined(__PATHCC_PATCHLEVEL__)
-# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
-# endif
-
-#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
-# define COMPILER_ID "Embarcadero"
-# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
-# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
-# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF)
-
-#elif defined(__BORLANDC__)
-# define COMPILER_ID "Borland"
- /* __BORLANDC__ = 0xVRR */
-# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
-# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
-
-#elif defined(__WATCOMC__) && __WATCOMC__ < 1200
-# define COMPILER_ID "Watcom"
- /* __WATCOMC__ = VVRR */
-# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
-# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
-# if (__WATCOMC__ % 10) > 0
-# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
-# endif
-
-#elif defined(__WATCOMC__)
-# define COMPILER_ID "OpenWatcom"
- /* __WATCOMC__ = VVRP + 1100 */
-# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
-# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
-# if (__WATCOMC__ % 10) > 0
-# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
-# endif
-
-#elif defined(__SUNPRO_CC)
-# define COMPILER_ID "SunPro"
-# if __SUNPRO_CC >= 0x5100
- /* __SUNPRO_CC = 0xVRRP */
-# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12)
-# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF)
-# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF)
-# else
- /* __SUNPRO_CC = 0xVRP */
-# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8)
-# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF)
-# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF)
-# endif
-
-#elif defined(__HP_aCC)
-# define COMPILER_ID "HP"
- /* __HP_aCC = VVRRPP */
-# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000)
-# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100)
-# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100)
-
-#elif defined(__DECCXX)
-# define COMPILER_ID "Compaq"
- /* __DECCXX_VER = VVRRTPPPP */
-# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000)
-# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100)
-# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000)
-
-#elif defined(__IBMCPP__) && defined(__COMPILER_VER__)
-# define COMPILER_ID "zOS"
- /* __IBMCPP__ = VRP */
-# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
-# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
-# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
-
-#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800
-# define COMPILER_ID "XL"
- /* __IBMCPP__ = VRP */
-# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
-# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
-# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
-
-#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800
-# define COMPILER_ID "VisualAge"
- /* __IBMCPP__ = VRP */
-# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
-# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
-# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
-
-#elif defined(__PGI)
-# define COMPILER_ID "PGI"
-# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
-# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
-# if defined(__PGIC_PATCHLEVEL__)
-# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
-# endif
-
-#elif defined(_CRAYC)
-# define COMPILER_ID "Cray"
-# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
-# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
-
-#elif defined(__TI_COMPILER_VERSION__)
-# define COMPILER_ID "TI"
- /* __TI_COMPILER_VERSION__ = VVVRRRPPP */
-# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
-# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000)
-# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000)
-
-#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version)
-# define COMPILER_ID "Fujitsu"
-
-#elif defined(__SCO_VERSION__)
-# define COMPILER_ID "SCO"
-
-#elif defined(__clang__) && defined(__apple_build_version__)
-# define COMPILER_ID "AppleClang"
-# if defined(_MSC_VER)
-# define SIMULATE_ID "MSVC"
-# endif
-# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
-# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
-# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
-# if defined(_MSC_VER)
- /* _MSC_VER = VVRR */
-# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
-# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
-# endif
-# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
-
-#elif defined(__clang__)
-# define COMPILER_ID "Clang"
-# if defined(_MSC_VER)
-# define SIMULATE_ID "MSVC"
-# endif
-# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
-# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
-# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
-# if defined(_MSC_VER)
- /* _MSC_VER = VVRR */
-# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
-# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
-# endif
-
-#elif defined(__GNUC__)
-# define COMPILER_ID "GNU"
-# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
-# if defined(__GNUC_MINOR__)
-# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
-# endif
-# if defined(__GNUC_PATCHLEVEL__)
-# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
-# endif
-
-#elif defined(_MSC_VER)
-# define COMPILER_ID "MSVC"
- /* _MSC_VER = VVRR */
-# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
-# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
-# if defined(_MSC_FULL_VER)
-# if _MSC_VER >= 1400
- /* _MSC_FULL_VER = VVRRPPPPP */
-# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
-# else
- /* _MSC_FULL_VER = VVRRPPPP */
-# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
-# endif
-# endif
-# if defined(_MSC_BUILD)
-# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
-# endif
-
-#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
-# define COMPILER_ID "ADSP"
-#if defined(__VISUALDSPVERSION__)
- /* __VISUALDSPVERSION__ = 0xVVRRPP00 */
-# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)
-# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)
-# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF)
-#endif
-
-#elif defined(__IAR_SYSTEMS_ICC__ ) || defined(__IAR_SYSTEMS_ICC)
-# define COMPILER_ID "IAR"
-
-#elif defined(__ARMCC_VERSION)
-# define COMPILER_ID "ARMCC"
-#if __ARMCC_VERSION >= 1000000
- /* __ARMCC_VERSION = VRRPPPP */
- # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000)
- # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100)
- # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
-#else
- /* __ARMCC_VERSION = VRPPPP */
- # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000)
- # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10)
- # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
-#endif
-
-
-#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
-# define COMPILER_ID "MIPSpro"
-# if defined(_SGI_COMPILER_VERSION)
- /* _SGI_COMPILER_VERSION = VRP */
-# define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100)
-# define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10)
-# define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION % 10)
-# else
- /* _COMPILER_VERSION = VRP */
-# define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100)
-# define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10)
-# define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION % 10)
-# endif
-
-
-/* These compilers are either not known or too old to define an
- identification macro. Try to identify the platform and guess that
- it is the native compiler. */
-#elif defined(__sgi)
-# define COMPILER_ID "MIPSpro"
-
-#elif defined(__hpux) || defined(__hpua)
-# define COMPILER_ID "HP"
-
-#else /* unknown compiler */
-# define COMPILER_ID ""
-#endif
-
-/* Construct the string literal in pieces to prevent the source from
- getting matched. Store it in a pointer rather than an array
- because some compilers will just produce instructions to fill the
- array rather than assigning a pointer to a static array. */
-char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
-#ifdef SIMULATE_ID
-char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
-#endif
-
-#ifdef __QNXNTO__
-char const* qnxnto = "INFO" ":" "qnxnto[]";
-#endif
-
-#if defined(__CRAYXE) || defined(__CRAYXC)
-char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
-#endif
-
-#define STRINGIFY_HELPER(X) #X
-#define STRINGIFY(X) STRINGIFY_HELPER(X)
-
-/* Identify known platforms by name. */
-#if defined(__linux) || defined(__linux__) || defined(linux)
-# define PLATFORM_ID "Linux"
-
-#elif defined(__CYGWIN__)
-# define PLATFORM_ID "Cygwin"
-
-#elif defined(__MINGW32__)
-# define PLATFORM_ID "MinGW"
-
-#elif defined(__APPLE__)
-# define PLATFORM_ID "Darwin"
-
-#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
-# define PLATFORM_ID "Windows"
-
-#elif defined(__FreeBSD__) || defined(__FreeBSD)
-# define PLATFORM_ID "FreeBSD"
-
-#elif defined(__NetBSD__) || defined(__NetBSD)
-# define PLATFORM_ID "NetBSD"
-
-#elif defined(__OpenBSD__) || defined(__OPENBSD)
-# define PLATFORM_ID "OpenBSD"
-
-#elif defined(__sun) || defined(sun)
-# define PLATFORM_ID "SunOS"
-
-#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
-# define PLATFORM_ID "AIX"
-
-#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
-# define PLATFORM_ID "IRIX"
-
-#elif defined(__hpux) || defined(__hpux__)
-# define PLATFORM_ID "HP-UX"
-
-#elif defined(__HAIKU__)
-# define PLATFORM_ID "Haiku"
-
-#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
-# define PLATFORM_ID "BeOS"
-
-#elif defined(__QNX__) || defined(__QNXNTO__)
-# define PLATFORM_ID "QNX"
-
-#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
-# define PLATFORM_ID "Tru64"
-
-#elif defined(__riscos) || defined(__riscos__)
-# define PLATFORM_ID "RISCos"
-
-#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
-# define PLATFORM_ID "SINIX"
-
-#elif defined(__UNIX_SV__)
-# define PLATFORM_ID "UNIX_SV"
-
-#elif defined(__bsdos__)
-# define PLATFORM_ID "BSDOS"
-
-#elif defined(_MPRAS) || defined(MPRAS)
-# define PLATFORM_ID "MP-RAS"
-
-#elif defined(__osf) || defined(__osf__)
-# define PLATFORM_ID "OSF1"
-
-#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
-# define PLATFORM_ID "SCO_SV"
-
-#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
-# define PLATFORM_ID "ULTRIX"
-
-#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
-# define PLATFORM_ID "Xenix"
-
-#elif defined(__WATCOMC__)
-# if defined(__LINUX__)
-# define PLATFORM_ID "Linux"
-
-# elif defined(__DOS__)
-# define PLATFORM_ID "DOS"
-
-# elif defined(__OS2__)
-# define PLATFORM_ID "OS2"
-
-# elif defined(__WINDOWS__)
-# define PLATFORM_ID "Windows3x"
-
-# else /* unknown platform */
-# define PLATFORM_ID ""
-# endif
-
-#else /* unknown platform */
-# define PLATFORM_ID ""
-
-#endif
-
-/* For windows compilers MSVC and Intel we can determine
- the architecture of the compiler being used. This is because
- the compilers do not have flags that can change the architecture,
- but rather depend on which compiler is being used
-*/
-#if defined(_WIN32) && defined(_MSC_VER)
-# if defined(_M_IA64)
-# define ARCHITECTURE_ID "IA64"
-
-# elif defined(_M_X64) || defined(_M_AMD64)
-# define ARCHITECTURE_ID "x64"
-
-# elif defined(_M_IX86)
-# define ARCHITECTURE_ID "X86"
-
-# elif defined(_M_ARM)
-# if _M_ARM == 4
-# define ARCHITECTURE_ID "ARMV4I"
-# elif _M_ARM == 5
-# define ARCHITECTURE_ID "ARMV5I"
-# else
-# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
-# endif
-
-# elif defined(_M_MIPS)
-# define ARCHITECTURE_ID "MIPS"
-
-# elif defined(_M_SH)
-# define ARCHITECTURE_ID "SHx"
-
-# else /* unknown architecture */
-# define ARCHITECTURE_ID ""
-# endif
-
-#elif defined(__WATCOMC__)
-# if defined(_M_I86)
-# define ARCHITECTURE_ID "I86"
-
-# elif defined(_M_IX86)
-# define ARCHITECTURE_ID "X86"
-
-# else /* unknown architecture */
-# define ARCHITECTURE_ID ""
-# endif
-
-#else
-# define ARCHITECTURE_ID ""
-#endif
-
-/* Convert integer to decimal digit literals. */
-#define DEC(n) \
- ('0' + (((n) / 10000000)%10)), \
- ('0' + (((n) / 1000000)%10)), \
- ('0' + (((n) / 100000)%10)), \
- ('0' + (((n) / 10000)%10)), \
- ('0' + (((n) / 1000)%10)), \
- ('0' + (((n) / 100)%10)), \
- ('0' + (((n) / 10)%10)), \
- ('0' + ((n) % 10))
-
-/* Convert integer to hex digit literals. */
-#define HEX(n) \
- ('0' + ((n)>>28 & 0xF)), \
- ('0' + ((n)>>24 & 0xF)), \
- ('0' + ((n)>>20 & 0xF)), \
- ('0' + ((n)>>16 & 0xF)), \
- ('0' + ((n)>>12 & 0xF)), \
- ('0' + ((n)>>8 & 0xF)), \
- ('0' + ((n)>>4 & 0xF)), \
- ('0' + ((n) & 0xF))
-
-/* Construct a string literal encoding the version number components. */
-#ifdef COMPILER_VERSION_MAJOR
-char const info_version[] = {
- 'I', 'N', 'F', 'O', ':',
- 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
- COMPILER_VERSION_MAJOR,
-# ifdef COMPILER_VERSION_MINOR
- '.', COMPILER_VERSION_MINOR,
-# ifdef COMPILER_VERSION_PATCH
- '.', COMPILER_VERSION_PATCH,
-# ifdef COMPILER_VERSION_TWEAK
- '.', COMPILER_VERSION_TWEAK,
-# endif
-# endif
-# endif
- ']','\0'};
-#endif
-
-/* Construct a string literal encoding the version number components. */
-#ifdef SIMULATE_VERSION_MAJOR
-char const info_simulate_version[] = {
- 'I', 'N', 'F', 'O', ':',
- 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
- SIMULATE_VERSION_MAJOR,
-# ifdef SIMULATE_VERSION_MINOR
- '.', SIMULATE_VERSION_MINOR,
-# ifdef SIMULATE_VERSION_PATCH
- '.', SIMULATE_VERSION_PATCH,
-# ifdef SIMULATE_VERSION_TWEAK
- '.', SIMULATE_VERSION_TWEAK,
-# endif
-# endif
-# endif
- ']','\0'};
-#endif
-
-/* Construct the string literal in pieces to prevent the source from
- getting matched. Store it in a pointer rather than an array
- because some compilers will just produce instructions to fill the
- array rather than assigning a pointer to a static array. */
-char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
-char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
-
-
-
-
-const char* info_language_dialect_default = "INFO" ":" "dialect_default["
-#if __cplusplus >= 201402L
- "14"
-#elif __cplusplus >= 201103L
- "11"
-#else
- "98"
-#endif
-"]";
-
-/*--------------------------------------------------------------------------*/
-
-int main(int argc, char* argv[])
-{
- int require = 0;
- require += info_compiler[argc];
- require += info_platform[argc];
-#ifdef COMPILER_VERSION_MAJOR
- require += info_version[argc];
-#endif
-#ifdef SIMULATE_ID
- require += info_simulate[argc];
-#endif
-#ifdef SIMULATE_VERSION_MAJOR
- require += info_simulate_version[argc];
-#endif
-#if defined(__CRAYXE) || defined(__CRAYXC)
- require += info_cray[argc];
-#endif
- require += info_language_dialect_default[argc];
- (void)argv;
- return require;
-}
diff --git a/third_party/flatbuffers/CMakeFiles/CMakeDirectoryInformation.cmake b/third_party/flatbuffers/CMakeFiles/CMakeDirectoryInformation.cmake
deleted file mode 100644
index 7c5eeea..0000000
--- a/third_party/flatbuffers/CMakeFiles/CMakeDirectoryInformation.cmake
+++ /dev/null
@@ -1,16 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-# Relative path conversion top directories.
-set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/alain/flatbuffers")
-set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/alain/flatbuffers")
-
-# Force unix paths in dependencies.
-set(CMAKE_FORCE_UNIX_PATHS 1)
-
-
-# The C and CXX include file regular expressions for this directory.
-set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$")
-set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$")
-set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN})
-set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN})
diff --git a/third_party/flatbuffers/CMakeFiles/CMakeOutput.log b/third_party/flatbuffers/CMakeFiles/CMakeOutput.log
deleted file mode 100644
index c7192f0..0000000
--- a/third_party/flatbuffers/CMakeFiles/CMakeOutput.log
+++ /dev/null
@@ -1,554 +0,0 @@
-The system is: Linux - 4.4.0-72-generic - x86_64
-Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded.
-Compiler: /usr/bin/cc
-Build flags:
-Id flags:
-
-The output was:
-0
-
-
-Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out"
-
-The C compiler identification is GNU, found in "/home/alain/flatbuffers/CMakeFiles/3.5.1/CompilerIdC/a.out"
-
-Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded.
-Compiler: /usr/bin/c++
-Build flags:
-Id flags:
-
-The output was:
-0
-
-
-Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out"
-
-The CXX compiler identification is GNU, found in "/home/alain/flatbuffers/CMakeFiles/3.5.1/CompilerIdCXX/a.out"
-
-Determining if the C compiler works passed with the following output:
-Change Dir: /home/alain/flatbuffers/CMakeFiles/CMakeTmp
-
-Run Build Command:"/usr/bin/make" "cmTC_01020/fast"
-/usr/bin/make -f CMakeFiles/cmTC_01020.dir/build.make CMakeFiles/cmTC_01020.dir/build
-make[1]: Entering directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp'
-Building C object CMakeFiles/cmTC_01020.dir/testCCompiler.c.o
-/usr/bin/cc -o CMakeFiles/cmTC_01020.dir/testCCompiler.c.o -c /home/alain/flatbuffers/CMakeFiles/CMakeTmp/testCCompiler.c
-Linking C executable cmTC_01020
-/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_01020.dir/link.txt --verbose=1
-/usr/bin/cc CMakeFiles/cmTC_01020.dir/testCCompiler.c.o -o cmTC_01020 -rdynamic
-make[1]: Leaving directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp'
-
-
-Detecting C compiler ABI info compiled with the following output:
-Change Dir: /home/alain/flatbuffers/CMakeFiles/CMakeTmp
-
-Run Build Command:"/usr/bin/make" "cmTC_f07e3/fast"
-/usr/bin/make -f CMakeFiles/cmTC_f07e3.dir/build.make CMakeFiles/cmTC_f07e3.dir/build
-make[1]: Entering directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp'
-Building C object CMakeFiles/cmTC_f07e3.dir/CMakeCCompilerABI.c.o
-/usr/bin/cc -o CMakeFiles/cmTC_f07e3.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.5/Modules/CMakeCCompilerABI.c
-Linking C executable cmTC_f07e3
-/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_f07e3.dir/link.txt --verbose=1
-/usr/bin/cc -v CMakeFiles/cmTC_f07e3.dir/CMakeCCompilerABI.c.o -o cmTC_f07e3 -rdynamic
-Using built-in specs.
-COLLECT_GCC=/usr/bin/cc
-COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper
-Target: x86_64-linux-gnu
-Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.4' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
-Thread model: posix
-gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)
-COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/
-LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../:/lib/:/usr/lib/
-COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_f07e3' '-rdynamic' '-mtune=generic' '-march=x86-64'
- /usr/lib/gcc/x86_64-linux-gnu/5/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/5/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper -plugin-opt=-fresolution=/tmp/ccpJXzxC.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o cmTC_f07e3 /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/5/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/5/../../.. CMakeFiles/cmTC_f07e3.dir/CMakeCCompilerABI.c.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/5/crtend.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o
-make[1]: Leaving directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp'
-
-
-Parsed C implicit link information from above output:
- link line regex: [^( *|.*[/\])(ld|([^/\]+-)?ld|collect2)[^/\]*( |$)]
- ignore line: [Change Dir: /home/alain/flatbuffers/CMakeFiles/CMakeTmp]
- ignore line: []
- ignore line: [Run Build Command:"/usr/bin/make" "cmTC_f07e3/fast"]
- ignore line: [/usr/bin/make -f CMakeFiles/cmTC_f07e3.dir/build.make CMakeFiles/cmTC_f07e3.dir/build]
- ignore line: [make[1]: Entering directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp']
- ignore line: [Building C object CMakeFiles/cmTC_f07e3.dir/CMakeCCompilerABI.c.o]
- ignore line: [/usr/bin/cc -o CMakeFiles/cmTC_f07e3.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.5/Modules/CMakeCCompilerABI.c]
- ignore line: [Linking C executable cmTC_f07e3]
- ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_f07e3.dir/link.txt --verbose=1]
- ignore line: [/usr/bin/cc -v CMakeFiles/cmTC_f07e3.dir/CMakeCCompilerABI.c.o -o cmTC_f07e3 -rdynamic ]
- ignore line: [Using built-in specs.]
- ignore line: [COLLECT_GCC=/usr/bin/cc]
- ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper]
- ignore line: [Target: x86_64-linux-gnu]
- ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.4' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu]
- ignore line: [Thread model: posix]
- ignore line: [gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ]
- ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/]
- ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../:/lib/:/usr/lib/]
- ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_f07e3' '-rdynamic' '-mtune=generic' '-march=x86-64']
- link line: [ /usr/lib/gcc/x86_64-linux-gnu/5/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/5/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper -plugin-opt=-fresolution=/tmp/ccpJXzxC.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o cmTC_f07e3 /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/5/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/5/../../.. CMakeFiles/cmTC_f07e3.dir/CMakeCCompilerABI.c.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/5/crtend.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o]
- arg [/usr/lib/gcc/x86_64-linux-gnu/5/collect2] ==> ignore
- arg [-plugin] ==> ignore
- arg [/usr/lib/gcc/x86_64-linux-gnu/5/liblto_plugin.so] ==> ignore
- arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper] ==> ignore
- arg [-plugin-opt=-fresolution=/tmp/ccpJXzxC.res] ==> ignore
- arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
- arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
- arg [-plugin-opt=-pass-through=-lc] ==> ignore
- arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
- arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
- arg [--sysroot=/] ==> ignore
- arg [--build-id] ==> ignore
- arg [--eh-frame-hdr] ==> ignore
- arg [-m] ==> ignore
- arg [elf_x86_64] ==> ignore
- arg [--hash-style=gnu] ==> ignore
- arg [--as-needed] ==> ignore
- arg [-export-dynamic] ==> ignore
- arg [-dynamic-linker] ==> ignore
- arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
- arg [-zrelro] ==> ignore
- arg [-o] ==> ignore
- arg [cmTC_f07e3] ==> ignore
- arg [/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o] ==> ignore
- arg [/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o] ==> ignore
- arg [/usr/lib/gcc/x86_64-linux-gnu/5/crtbegin.o] ==> ignore
- arg [-L/usr/lib/gcc/x86_64-linux-gnu/5] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/5]
- arg [-L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu]
- arg [-L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib]
- arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu]
- arg [-L/lib/../lib] ==> dir [/lib/../lib]
- arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu]
- arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib]
- arg [-L/usr/lib/gcc/x86_64-linux-gnu/5/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../..]
- arg [CMakeFiles/cmTC_f07e3.dir/CMakeCCompilerABI.c.o] ==> ignore
- arg [-lgcc] ==> lib [gcc]
- arg [--as-needed] ==> ignore
- arg [-lgcc_s] ==> lib [gcc_s]
- arg [--no-as-needed] ==> ignore
- arg [-lc] ==> lib [c]
- arg [-lgcc] ==> lib [gcc]
- arg [--as-needed] ==> ignore
- arg [-lgcc_s] ==> lib [gcc_s]
- arg [--no-as-needed] ==> ignore
- arg [/usr/lib/gcc/x86_64-linux-gnu/5/crtend.o] ==> ignore
- arg [/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o] ==> ignore
- remove lib [gcc]
- remove lib [gcc_s]
- remove lib [gcc]
- remove lib [gcc_s]
- collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/5] ==> [/usr/lib/gcc/x86_64-linux-gnu/5]
- collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
- collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib] ==> [/usr/lib]
- collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu]
- collapse library dir [/lib/../lib] ==> [/lib]
- collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
- collapse library dir [/usr/lib/../lib] ==> [/usr/lib]
- collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../..] ==> [/usr/lib]
- implicit libs: [c]
- implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/5;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib]
- implicit fwks: []
-
-
-
-
-Detecting C [-std=c11] compiler features compiled with the following output:
-Change Dir: /home/alain/flatbuffers/CMakeFiles/CMakeTmp
-
-Run Build Command:"/usr/bin/make" "cmTC_268e5/fast"
-/usr/bin/make -f CMakeFiles/cmTC_268e5.dir/build.make CMakeFiles/cmTC_268e5.dir/build
-make[1]: Entering directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp'
-Building C object CMakeFiles/cmTC_268e5.dir/feature_tests.c.o
-/usr/bin/cc -std=c11 -o CMakeFiles/cmTC_268e5.dir/feature_tests.c.o -c /home/alain/flatbuffers/CMakeFiles/feature_tests.c
-Linking C executable cmTC_268e5
-/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_268e5.dir/link.txt --verbose=1
-/usr/bin/cc CMakeFiles/cmTC_268e5.dir/feature_tests.c.o -o cmTC_268e5 -rdynamic
-make[1]: Leaving directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp'
-
-
- Feature record: C_FEATURE:1c_function_prototypes
- Feature record: C_FEATURE:1c_restrict
- Feature record: C_FEATURE:1c_static_assert
- Feature record: C_FEATURE:1c_variadic_macros
-
-
-Detecting C [-std=c99] compiler features compiled with the following output:
-Change Dir: /home/alain/flatbuffers/CMakeFiles/CMakeTmp
-
-Run Build Command:"/usr/bin/make" "cmTC_f08a0/fast"
-/usr/bin/make -f CMakeFiles/cmTC_f08a0.dir/build.make CMakeFiles/cmTC_f08a0.dir/build
-make[1]: Entering directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp'
-Building C object CMakeFiles/cmTC_f08a0.dir/feature_tests.c.o
-/usr/bin/cc -std=c99 -o CMakeFiles/cmTC_f08a0.dir/feature_tests.c.o -c /home/alain/flatbuffers/CMakeFiles/feature_tests.c
-Linking C executable cmTC_f08a0
-/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_f08a0.dir/link.txt --verbose=1
-/usr/bin/cc CMakeFiles/cmTC_f08a0.dir/feature_tests.c.o -o cmTC_f08a0 -rdynamic
-make[1]: Leaving directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp'
-
-
- Feature record: C_FEATURE:1c_function_prototypes
- Feature record: C_FEATURE:1c_restrict
- Feature record: C_FEATURE:0c_static_assert
- Feature record: C_FEATURE:1c_variadic_macros
-
-
-Detecting C [-std=c90] compiler features compiled with the following output:
-Change Dir: /home/alain/flatbuffers/CMakeFiles/CMakeTmp
-
-Run Build Command:"/usr/bin/make" "cmTC_de240/fast"
-/usr/bin/make -f CMakeFiles/cmTC_de240.dir/build.make CMakeFiles/cmTC_de240.dir/build
-make[1]: Entering directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp'
-Building C object CMakeFiles/cmTC_de240.dir/feature_tests.c.o
-/usr/bin/cc -std=c90 -o CMakeFiles/cmTC_de240.dir/feature_tests.c.o -c /home/alain/flatbuffers/CMakeFiles/feature_tests.c
-Linking C executable cmTC_de240
-/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_de240.dir/link.txt --verbose=1
-/usr/bin/cc CMakeFiles/cmTC_de240.dir/feature_tests.c.o -o cmTC_de240 -rdynamic
-make[1]: Leaving directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp'
-
-
- Feature record: C_FEATURE:1c_function_prototypes
- Feature record: C_FEATURE:0c_restrict
- Feature record: C_FEATURE:0c_static_assert
- Feature record: C_FEATURE:0c_variadic_macros
-Determining if the CXX compiler works passed with the following output:
-Change Dir: /home/alain/flatbuffers/CMakeFiles/CMakeTmp
-
-Run Build Command:"/usr/bin/make" "cmTC_09f2d/fast"
-/usr/bin/make -f CMakeFiles/cmTC_09f2d.dir/build.make CMakeFiles/cmTC_09f2d.dir/build
-make[1]: Entering directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp'
-Building CXX object CMakeFiles/cmTC_09f2d.dir/testCXXCompiler.cxx.o
-/usr/bin/c++ -o CMakeFiles/cmTC_09f2d.dir/testCXXCompiler.cxx.o -c /home/alain/flatbuffers/CMakeFiles/CMakeTmp/testCXXCompiler.cxx
-Linking CXX executable cmTC_09f2d
-/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_09f2d.dir/link.txt --verbose=1
-/usr/bin/c++ CMakeFiles/cmTC_09f2d.dir/testCXXCompiler.cxx.o -o cmTC_09f2d -rdynamic
-make[1]: Leaving directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp'
-
-
-Detecting CXX compiler ABI info compiled with the following output:
-Change Dir: /home/alain/flatbuffers/CMakeFiles/CMakeTmp
-
-Run Build Command:"/usr/bin/make" "cmTC_58731/fast"
-/usr/bin/make -f CMakeFiles/cmTC_58731.dir/build.make CMakeFiles/cmTC_58731.dir/build
-make[1]: Entering directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp'
-Building CXX object CMakeFiles/cmTC_58731.dir/CMakeCXXCompilerABI.cpp.o
-/usr/bin/c++ -o CMakeFiles/cmTC_58731.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.5/Modules/CMakeCXXCompilerABI.cpp
-Linking CXX executable cmTC_58731
-/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_58731.dir/link.txt --verbose=1
-/usr/bin/c++ -v CMakeFiles/cmTC_58731.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_58731 -rdynamic
-Using built-in specs.
-COLLECT_GCC=/usr/bin/c++
-COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper
-Target: x86_64-linux-gnu
-Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.4' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
-Thread model: posix
-gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)
-COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/
-LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../:/lib/:/usr/lib/
-COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_58731' '-rdynamic' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
- /usr/lib/gcc/x86_64-linux-gnu/5/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/5/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper -plugin-opt=-fresolution=/tmp/ccADydt5.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o cmTC_58731 /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/5/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/5/../../.. CMakeFiles/cmTC_58731.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/5/crtend.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o
-make[1]: Leaving directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp'
-
-
-Parsed CXX implicit link information from above output:
- link line regex: [^( *|.*[/\])(ld|([^/\]+-)?ld|collect2)[^/\]*( |$)]
- ignore line: [Change Dir: /home/alain/flatbuffers/CMakeFiles/CMakeTmp]
- ignore line: []
- ignore line: [Run Build Command:"/usr/bin/make" "cmTC_58731/fast"]
- ignore line: [/usr/bin/make -f CMakeFiles/cmTC_58731.dir/build.make CMakeFiles/cmTC_58731.dir/build]
- ignore line: [make[1]: Entering directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp']
- ignore line: [Building CXX object CMakeFiles/cmTC_58731.dir/CMakeCXXCompilerABI.cpp.o]
- ignore line: [/usr/bin/c++ -o CMakeFiles/cmTC_58731.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.5/Modules/CMakeCXXCompilerABI.cpp]
- ignore line: [Linking CXX executable cmTC_58731]
- ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_58731.dir/link.txt --verbose=1]
- ignore line: [/usr/bin/c++ -v CMakeFiles/cmTC_58731.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_58731 -rdynamic ]
- ignore line: [Using built-in specs.]
- ignore line: [COLLECT_GCC=/usr/bin/c++]
- ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper]
- ignore line: [Target: x86_64-linux-gnu]
- ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.4' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu]
- ignore line: [Thread model: posix]
- ignore line: [gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ]
- ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/]
- ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../:/lib/:/usr/lib/]
- ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_58731' '-rdynamic' '-shared-libgcc' '-mtune=generic' '-march=x86-64']
- link line: [ /usr/lib/gcc/x86_64-linux-gnu/5/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/5/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper -plugin-opt=-fresolution=/tmp/ccADydt5.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o cmTC_58731 /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/5/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/5/../../.. CMakeFiles/cmTC_58731.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/5/crtend.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o]
- arg [/usr/lib/gcc/x86_64-linux-gnu/5/collect2] ==> ignore
- arg [-plugin] ==> ignore
- arg [/usr/lib/gcc/x86_64-linux-gnu/5/liblto_plugin.so] ==> ignore
- arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper] ==> ignore
- arg [-plugin-opt=-fresolution=/tmp/ccADydt5.res] ==> ignore
- arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
- arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
- arg [-plugin-opt=-pass-through=-lc] ==> ignore
- arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
- arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
- arg [--sysroot=/] ==> ignore
- arg [--build-id] ==> ignore
- arg [--eh-frame-hdr] ==> ignore
- arg [-m] ==> ignore
- arg [elf_x86_64] ==> ignore
- arg [--hash-style=gnu] ==> ignore
- arg [--as-needed] ==> ignore
- arg [-export-dynamic] ==> ignore
- arg [-dynamic-linker] ==> ignore
- arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
- arg [-zrelro] ==> ignore
- arg [-o] ==> ignore
- arg [cmTC_58731] ==> ignore
- arg [/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o] ==> ignore
- arg [/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o] ==> ignore
- arg [/usr/lib/gcc/x86_64-linux-gnu/5/crtbegin.o] ==> ignore
- arg [-L/usr/lib/gcc/x86_64-linux-gnu/5] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/5]
- arg [-L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu]
- arg [-L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib]
- arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu]
- arg [-L/lib/../lib] ==> dir [/lib/../lib]
- arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu]
- arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib]
- arg [-L/usr/lib/gcc/x86_64-linux-gnu/5/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../..]
- arg [CMakeFiles/cmTC_58731.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore
- arg [-lstdc++] ==> lib [stdc++]
- arg [-lm] ==> lib [m]
- arg [-lgcc_s] ==> lib [gcc_s]
- arg [-lgcc] ==> lib [gcc]
- arg [-lc] ==> lib [c]
- arg [-lgcc_s] ==> lib [gcc_s]
- arg [-lgcc] ==> lib [gcc]
- arg [/usr/lib/gcc/x86_64-linux-gnu/5/crtend.o] ==> ignore
- arg [/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o] ==> ignore
- remove lib [gcc_s]
- remove lib [gcc]
- remove lib [gcc_s]
- remove lib [gcc]
- collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/5] ==> [/usr/lib/gcc/x86_64-linux-gnu/5]
- collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
- collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib] ==> [/usr/lib]
- collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu]
- collapse library dir [/lib/../lib] ==> [/lib]
- collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
- collapse library dir [/usr/lib/../lib] ==> [/usr/lib]
- collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../..] ==> [/usr/lib]
- implicit libs: [stdc++;m;c]
- implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/5;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib]
- implicit fwks: []
-
-
-
-
-Detecting CXX [-std=c++14] compiler features compiled with the following output:
-Change Dir: /home/alain/flatbuffers/CMakeFiles/CMakeTmp
-
-Run Build Command:"/usr/bin/make" "cmTC_9439e/fast"
-/usr/bin/make -f CMakeFiles/cmTC_9439e.dir/build.make CMakeFiles/cmTC_9439e.dir/build
-make[1]: Entering directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp'
-Building CXX object CMakeFiles/cmTC_9439e.dir/feature_tests.cxx.o
-/usr/bin/c++ -std=c++14 -o CMakeFiles/cmTC_9439e.dir/feature_tests.cxx.o -c /home/alain/flatbuffers/CMakeFiles/feature_tests.cxx
-Linking CXX executable cmTC_9439e
-/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_9439e.dir/link.txt --verbose=1
-/usr/bin/c++ CMakeFiles/cmTC_9439e.dir/feature_tests.cxx.o -o cmTC_9439e -rdynamic
-make[1]: Leaving directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp'
-
-
- Feature record: CXX_FEATURE:1cxx_aggregate_default_initializers
- Feature record: CXX_FEATURE:1cxx_alias_templates
- Feature record: CXX_FEATURE:1cxx_alignas
- Feature record: CXX_FEATURE:1cxx_alignof
- Feature record: CXX_FEATURE:1cxx_attributes
- Feature record: CXX_FEATURE:1cxx_attribute_deprecated
- Feature record: CXX_FEATURE:1cxx_auto_type
- Feature record: CXX_FEATURE:1cxx_binary_literals
- Feature record: CXX_FEATURE:1cxx_constexpr
- Feature record: CXX_FEATURE:1cxx_contextual_conversions
- Feature record: CXX_FEATURE:1cxx_decltype
- Feature record: CXX_FEATURE:1cxx_decltype_auto
- Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types
- Feature record: CXX_FEATURE:1cxx_default_function_template_args
- Feature record: CXX_FEATURE:1cxx_defaulted_functions
- Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers
- Feature record: CXX_FEATURE:1cxx_delegating_constructors
- Feature record: CXX_FEATURE:1cxx_deleted_functions
- Feature record: CXX_FEATURE:1cxx_digit_separators
- Feature record: CXX_FEATURE:1cxx_enum_forward_declarations
- Feature record: CXX_FEATURE:1cxx_explicit_conversions
- Feature record: CXX_FEATURE:1cxx_extended_friend_declarations
- Feature record: CXX_FEATURE:1cxx_extern_templates
- Feature record: CXX_FEATURE:1cxx_final
- Feature record: CXX_FEATURE:1cxx_func_identifier
- Feature record: CXX_FEATURE:1cxx_generalized_initializers
- Feature record: CXX_FEATURE:1cxx_generic_lambdas
- Feature record: CXX_FEATURE:1cxx_inheriting_constructors
- Feature record: CXX_FEATURE:1cxx_inline_namespaces
- Feature record: CXX_FEATURE:1cxx_lambdas
- Feature record: CXX_FEATURE:1cxx_lambda_init_captures
- Feature record: CXX_FEATURE:1cxx_local_type_template_args
- Feature record: CXX_FEATURE:1cxx_long_long_type
- Feature record: CXX_FEATURE:1cxx_noexcept
- Feature record: CXX_FEATURE:1cxx_nonstatic_member_init
- Feature record: CXX_FEATURE:1cxx_nullptr
- Feature record: CXX_FEATURE:1cxx_override
- Feature record: CXX_FEATURE:1cxx_range_for
- Feature record: CXX_FEATURE:1cxx_raw_string_literals
- Feature record: CXX_FEATURE:1cxx_reference_qualified_functions
- Feature record: CXX_FEATURE:1cxx_relaxed_constexpr
- Feature record: CXX_FEATURE:1cxx_return_type_deduction
- Feature record: CXX_FEATURE:1cxx_right_angle_brackets
- Feature record: CXX_FEATURE:1cxx_rvalue_references
- Feature record: CXX_FEATURE:1cxx_sizeof_member
- Feature record: CXX_FEATURE:1cxx_static_assert
- Feature record: CXX_FEATURE:1cxx_strong_enums
- Feature record: CXX_FEATURE:1cxx_template_template_parameters
- Feature record: CXX_FEATURE:1cxx_thread_local
- Feature record: CXX_FEATURE:1cxx_trailing_return_types
- Feature record: CXX_FEATURE:1cxx_unicode_literals
- Feature record: CXX_FEATURE:1cxx_uniform_initialization
- Feature record: CXX_FEATURE:1cxx_unrestricted_unions
- Feature record: CXX_FEATURE:1cxx_user_literals
- Feature record: CXX_FEATURE:1cxx_variable_templates
- Feature record: CXX_FEATURE:1cxx_variadic_macros
- Feature record: CXX_FEATURE:1cxx_variadic_templates
-
-
-Detecting CXX [-std=c++11] compiler features compiled with the following output:
-Change Dir: /home/alain/flatbuffers/CMakeFiles/CMakeTmp
-
-Run Build Command:"/usr/bin/make" "cmTC_9b133/fast"
-/usr/bin/make -f CMakeFiles/cmTC_9b133.dir/build.make CMakeFiles/cmTC_9b133.dir/build
-make[1]: Entering directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp'
-Building CXX object CMakeFiles/cmTC_9b133.dir/feature_tests.cxx.o
-/usr/bin/c++ -std=c++11 -o CMakeFiles/cmTC_9b133.dir/feature_tests.cxx.o -c /home/alain/flatbuffers/CMakeFiles/feature_tests.cxx
-Linking CXX executable cmTC_9b133
-/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_9b133.dir/link.txt --verbose=1
-/usr/bin/c++ CMakeFiles/cmTC_9b133.dir/feature_tests.cxx.o -o cmTC_9b133 -rdynamic
-make[1]: Leaving directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp'
-
-
- Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers
- Feature record: CXX_FEATURE:1cxx_alias_templates
- Feature record: CXX_FEATURE:1cxx_alignas
- Feature record: CXX_FEATURE:1cxx_alignof
- Feature record: CXX_FEATURE:1cxx_attributes
- Feature record: CXX_FEATURE:0cxx_attribute_deprecated
- Feature record: CXX_FEATURE:1cxx_auto_type
- Feature record: CXX_FEATURE:0cxx_binary_literals
- Feature record: CXX_FEATURE:1cxx_constexpr
- Feature record: CXX_FEATURE:0cxx_contextual_conversions
- Feature record: CXX_FEATURE:1cxx_decltype
- Feature record: CXX_FEATURE:0cxx_decltype_auto
- Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types
- Feature record: CXX_FEATURE:1cxx_default_function_template_args
- Feature record: CXX_FEATURE:1cxx_defaulted_functions
- Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers
- Feature record: CXX_FEATURE:1cxx_delegating_constructors
- Feature record: CXX_FEATURE:1cxx_deleted_functions
- Feature record: CXX_FEATURE:0cxx_digit_separators
- Feature record: CXX_FEATURE:1cxx_enum_forward_declarations
- Feature record: CXX_FEATURE:1cxx_explicit_conversions
- Feature record: CXX_FEATURE:1cxx_extended_friend_declarations
- Feature record: CXX_FEATURE:1cxx_extern_templates
- Feature record: CXX_FEATURE:1cxx_final
- Feature record: CXX_FEATURE:1cxx_func_identifier
- Feature record: CXX_FEATURE:1cxx_generalized_initializers
- Feature record: CXX_FEATURE:0cxx_generic_lambdas
- Feature record: CXX_FEATURE:1cxx_inheriting_constructors
- Feature record: CXX_FEATURE:1cxx_inline_namespaces
- Feature record: CXX_FEATURE:1cxx_lambdas
- Feature record: CXX_FEATURE:0cxx_lambda_init_captures
- Feature record: CXX_FEATURE:1cxx_local_type_template_args
- Feature record: CXX_FEATURE:1cxx_long_long_type
- Feature record: CXX_FEATURE:1cxx_noexcept
- Feature record: CXX_FEATURE:1cxx_nonstatic_member_init
- Feature record: CXX_FEATURE:1cxx_nullptr
- Feature record: CXX_FEATURE:1cxx_override
- Feature record: CXX_FEATURE:1cxx_range_for
- Feature record: CXX_FEATURE:1cxx_raw_string_literals
- Feature record: CXX_FEATURE:1cxx_reference_qualified_functions
- Feature record: CXX_FEATURE:0cxx_relaxed_constexpr
- Feature record: CXX_FEATURE:0cxx_return_type_deduction
- Feature record: CXX_FEATURE:1cxx_right_angle_brackets
- Feature record: CXX_FEATURE:1cxx_rvalue_references
- Feature record: CXX_FEATURE:1cxx_sizeof_member
- Feature record: CXX_FEATURE:1cxx_static_assert
- Feature record: CXX_FEATURE:1cxx_strong_enums
- Feature record: CXX_FEATURE:1cxx_template_template_parameters
- Feature record: CXX_FEATURE:1cxx_thread_local
- Feature record: CXX_FEATURE:1cxx_trailing_return_types
- Feature record: CXX_FEATURE:1cxx_unicode_literals
- Feature record: CXX_FEATURE:1cxx_uniform_initialization
- Feature record: CXX_FEATURE:1cxx_unrestricted_unions
- Feature record: CXX_FEATURE:1cxx_user_literals
- Feature record: CXX_FEATURE:0cxx_variable_templates
- Feature record: CXX_FEATURE:1cxx_variadic_macros
- Feature record: CXX_FEATURE:1cxx_variadic_templates
-
-
-Detecting CXX [-std=c++98] compiler features compiled with the following output:
-Change Dir: /home/alain/flatbuffers/CMakeFiles/CMakeTmp
-
-Run Build Command:"/usr/bin/make" "cmTC_767fe/fast"
-/usr/bin/make -f CMakeFiles/cmTC_767fe.dir/build.make CMakeFiles/cmTC_767fe.dir/build
-make[1]: Entering directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp'
-Building CXX object CMakeFiles/cmTC_767fe.dir/feature_tests.cxx.o
-/usr/bin/c++ -std=c++98 -o CMakeFiles/cmTC_767fe.dir/feature_tests.cxx.o -c /home/alain/flatbuffers/CMakeFiles/feature_tests.cxx
-Linking CXX executable cmTC_767fe
-/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_767fe.dir/link.txt --verbose=1
-/usr/bin/c++ CMakeFiles/cmTC_767fe.dir/feature_tests.cxx.o -o cmTC_767fe -rdynamic
-make[1]: Leaving directory '/home/alain/flatbuffers/CMakeFiles/CMakeTmp'
-
-
- Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers
- Feature record: CXX_FEATURE:0cxx_alias_templates
- Feature record: CXX_FEATURE:0cxx_alignas
- Feature record: CXX_FEATURE:0cxx_alignof
- Feature record: CXX_FEATURE:0cxx_attributes
- Feature record: CXX_FEATURE:0cxx_attribute_deprecated
- Feature record: CXX_FEATURE:0cxx_auto_type
- Feature record: CXX_FEATURE:0cxx_binary_literals
- Feature record: CXX_FEATURE:0cxx_constexpr
- Feature record: CXX_FEATURE:0cxx_contextual_conversions
- Feature record: CXX_FEATURE:0cxx_decltype
- Feature record: CXX_FEATURE:0cxx_decltype_auto
- Feature record: CXX_FEATURE:0cxx_decltype_incomplete_return_types
- Feature record: CXX_FEATURE:0cxx_default_function_template_args
- Feature record: CXX_FEATURE:0cxx_defaulted_functions
- Feature record: CXX_FEATURE:0cxx_defaulted_move_initializers
- Feature record: CXX_FEATURE:0cxx_delegating_constructors
- Feature record: CXX_FEATURE:0cxx_deleted_functions
- Feature record: CXX_FEATURE:0cxx_digit_separators
- Feature record: CXX_FEATURE:0cxx_enum_forward_declarations
- Feature record: CXX_FEATURE:0cxx_explicit_conversions
- Feature record: CXX_FEATURE:0cxx_extended_friend_declarations
- Feature record: CXX_FEATURE:0cxx_extern_templates
- Feature record: CXX_FEATURE:0cxx_final
- Feature record: CXX_FEATURE:0cxx_func_identifier
- Feature record: CXX_FEATURE:0cxx_generalized_initializers
- Feature record: CXX_FEATURE:0cxx_generic_lambdas
- Feature record: CXX_FEATURE:0cxx_inheriting_constructors
- Feature record: CXX_FEATURE:0cxx_inline_namespaces
- Feature record: CXX_FEATURE:0cxx_lambdas
- Feature record: CXX_FEATURE:0cxx_lambda_init_captures
- Feature record: CXX_FEATURE:0cxx_local_type_template_args
- Feature record: CXX_FEATURE:0cxx_long_long_type
- Feature record: CXX_FEATURE:0cxx_noexcept
- Feature record: CXX_FEATURE:0cxx_nonstatic_member_init
- Feature record: CXX_FEATURE:0cxx_nullptr
- Feature record: CXX_FEATURE:0cxx_override
- Feature record: CXX_FEATURE:0cxx_range_for
- Feature record: CXX_FEATURE:0cxx_raw_string_literals
- Feature record: CXX_FEATURE:0cxx_reference_qualified_functions
- Feature record: CXX_FEATURE:0cxx_relaxed_constexpr
- Feature record: CXX_FEATURE:0cxx_return_type_deduction
- Feature record: CXX_FEATURE:0cxx_right_angle_brackets
- Feature record: CXX_FEATURE:0cxx_rvalue_references
- Feature record: CXX_FEATURE:0cxx_sizeof_member
- Feature record: CXX_FEATURE:0cxx_static_assert
- Feature record: CXX_FEATURE:0cxx_strong_enums
- Feature record: CXX_FEATURE:1cxx_template_template_parameters
- Feature record: CXX_FEATURE:0cxx_thread_local
- Feature record: CXX_FEATURE:0cxx_trailing_return_types
- Feature record: CXX_FEATURE:0cxx_unicode_literals
- Feature record: CXX_FEATURE:0cxx_uniform_initialization
- Feature record: CXX_FEATURE:0cxx_unrestricted_unions
- Feature record: CXX_FEATURE:0cxx_user_literals
- Feature record: CXX_FEATURE:0cxx_variable_templates
- Feature record: CXX_FEATURE:0cxx_variadic_macros
- Feature record: CXX_FEATURE:0cxx_variadic_templates
diff --git a/third_party/flatbuffers/CMakeFiles/CMakeRuleHashes.txt b/third_party/flatbuffers/CMakeFiles/CMakeRuleHashes.txt
deleted file mode 100644
index 38f186f..0000000
--- a/third_party/flatbuffers/CMakeFiles/CMakeRuleHashes.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# Hashes of file build rules.
-245267531140c1e4cbb6844a7544380e samples/monster_generated.h
-58bc14d032700fdc5864bd7e359f5a07 tests/monster_test_generated.h
diff --git a/third_party/flatbuffers/CMakeFiles/Makefile.cmake b/third_party/flatbuffers/CMakeFiles/Makefile.cmake
deleted file mode 100644
index 8c40da2..0000000
--- a/third_party/flatbuffers/CMakeFiles/Makefile.cmake
+++ /dev/null
@@ -1,121 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-# The generator used is:
-set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles")
-
-# The top level Makefile was generated from the following files:
-set(CMAKE_MAKEFILE_DEPENDS
- "CMakeCache.txt"
- "CMake/BuildFlatBuffers.cmake"
- "CMakeFiles/3.5.1/CMakeCCompiler.cmake"
- "CMakeFiles/3.5.1/CMakeCXXCompiler.cmake"
- "CMakeFiles/3.5.1/CMakeSystem.cmake"
- "CMakeFiles/feature_tests.c"
- "CMakeFiles/feature_tests.cxx"
- "CMakeLists.txt"
- "/usr/share/cmake-3.5/Modules/CMakeCCompiler.cmake.in"
- "/usr/share/cmake-3.5/Modules/CMakeCCompilerABI.c"
- "/usr/share/cmake-3.5/Modules/CMakeCInformation.cmake"
- "/usr/share/cmake-3.5/Modules/CMakeCXXCompiler.cmake.in"
- "/usr/share/cmake-3.5/Modules/CMakeCXXCompilerABI.cpp"
- "/usr/share/cmake-3.5/Modules/CMakeCXXInformation.cmake"
- "/usr/share/cmake-3.5/Modules/CMakeCommonLanguageInclude.cmake"
- "/usr/share/cmake-3.5/Modules/CMakeCompilerIdDetection.cmake"
- "/usr/share/cmake-3.5/Modules/CMakeDetermineCCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/CMakeDetermineCXXCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/CMakeDetermineCompileFeatures.cmake"
- "/usr/share/cmake-3.5/Modules/CMakeDetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/CMakeDetermineCompilerABI.cmake"
- "/usr/share/cmake-3.5/Modules/CMakeDetermineCompilerId.cmake"
- "/usr/share/cmake-3.5/Modules/CMakeDetermineSystem.cmake"
- "/usr/share/cmake-3.5/Modules/CMakeFindBinUtils.cmake"
- "/usr/share/cmake-3.5/Modules/CMakeGenericSystem.cmake"
- "/usr/share/cmake-3.5/Modules/CMakeLanguageInformation.cmake"
- "/usr/share/cmake-3.5/Modules/CMakeParseArguments.cmake"
- "/usr/share/cmake-3.5/Modules/CMakeParseImplicitLinkInfo.cmake"
- "/usr/share/cmake-3.5/Modules/CMakeSystem.cmake.in"
- "/usr/share/cmake-3.5/Modules/CMakeSystemSpecificInformation.cmake"
- "/usr/share/cmake-3.5/Modules/CMakeSystemSpecificInitialize.cmake"
- "/usr/share/cmake-3.5/Modules/CMakeTestCCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/CMakeTestCXXCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/CMakeTestCompilerCommon.cmake"
- "/usr/share/cmake-3.5/Modules/CMakeUnixFindMake.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/ADSP-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/ARMCC-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/AppleClang-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/Borland-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/Clang-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/Clang-DetermineCompilerInternal.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/Compaq-C-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/Cray-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/Embarcadero-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/Fujitsu-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/GHS-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/GNU-C-FeatureTests.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/GNU-C.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/GNU-CXX-FeatureTests.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/GNU-CXX.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/GNU-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/GNU.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/HP-C-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/HP-CXX-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/IAR-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/Intel-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/MIPSpro-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/MSVC-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/PGI-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/PathScale-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/SCO-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/SDCC-C-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/SunPro-C-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/TI-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/Watcom-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/XL-C-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/XL-CXX-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/zOS-C-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake"
- "/usr/share/cmake-3.5/Modules/Internal/FeatureTesting.cmake"
- "/usr/share/cmake-3.5/Modules/MultiArchCross.cmake"
- "/usr/share/cmake-3.5/Modules/Platform/Linux-CXX.cmake"
- "/usr/share/cmake-3.5/Modules/Platform/Linux-GNU-C.cmake"
- "/usr/share/cmake-3.5/Modules/Platform/Linux-GNU-CXX.cmake"
- "/usr/share/cmake-3.5/Modules/Platform/Linux-GNU.cmake"
- "/usr/share/cmake-3.5/Modules/Platform/Linux.cmake"
- "/usr/share/cmake-3.5/Modules/Platform/UnixPaths.cmake"
- )
-
-# The corresponding makefile is:
-set(CMAKE_MAKEFILE_OUTPUTS
- "Makefile"
- "CMakeFiles/cmake.check_cache"
- )
-
-# Byproducts of CMake generate step:
-set(CMAKE_MAKEFILE_PRODUCTS
- "CMakeFiles/3.5.1/CMakeSystem.cmake"
- "CMakeFiles/3.5.1/CMakeCCompiler.cmake"
- "CMakeFiles/3.5.1/CMakeCXXCompiler.cmake"
- "CMakeFiles/3.5.1/CMakeCCompiler.cmake"
- "CMakeFiles/3.5.1/CMakeCXXCompiler.cmake"
- "CMakeFiles/CMakeDirectoryInformation.cmake"
- )
-
-# Dependency information for all targets:
-set(CMAKE_DEPEND_INFO_FILES
- "CMakeFiles/flattests.dir/DependInfo.cmake"
- "CMakeFiles/flatc.dir/DependInfo.cmake"
- "CMakeFiles/flatbuffers.dir/DependInfo.cmake"
- "CMakeFiles/flatsamplebinary.dir/DependInfo.cmake"
- "CMakeFiles/flathash.dir/DependInfo.cmake"
- "CMakeFiles/flatsampletext.dir/DependInfo.cmake"
- )
diff --git a/third_party/flatbuffers/CMakeFiles/Makefile2 b/third_party/flatbuffers/CMakeFiles/Makefile2
deleted file mode 100644
index 940fcfc..0000000
--- a/third_party/flatbuffers/CMakeFiles/Makefile2
+++ /dev/null
@@ -1,293 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-# Default target executed when no arguments are given to make.
-default_target: all
-
-.PHONY : default_target
-
-# The main recursive all target
-all:
-
-.PHONY : all
-
-# The main recursive preinstall target
-preinstall:
-
-.PHONY : preinstall
-
-#=============================================================================
-# Special targets provided by cmake.
-
-# Disable implicit rules so canonical targets will work.
-.SUFFIXES:
-
-
-# Remove some rules from gmake that .SUFFIXES does not remove.
-SUFFIXES =
-
-.SUFFIXES: .hpux_make_needs_suffix_list
-
-
-# Suppress display of executed commands.
-$(VERBOSE).SILENT:
-
-
-# A target that is always out of date.
-cmake_force:
-
-.PHONY : cmake_force
-
-#=============================================================================
-# Set environment variables for the build.
-
-# The shell in which to execute make rules.
-SHELL = /bin/sh
-
-# The CMake executable.
-CMAKE_COMMAND = /usr/bin/cmake
-
-# The command to remove a file.
-RM = /usr/bin/cmake -E remove -f
-
-# Escaping for special characters.
-EQUALS = =
-
-# The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /home/alain/flatbuffers
-
-# The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /home/alain/flatbuffers
-
-#=============================================================================
-# Target rules for target CMakeFiles/flattests.dir
-
-# All Build rule for target.
-CMakeFiles/flattests.dir/all: CMakeFiles/flatc.dir/all
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/depend
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/build
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=38,39,40,41,42,43,44,45,46 "Built target flattests"
-.PHONY : CMakeFiles/flattests.dir/all
-
-# Include target in all.
-all: CMakeFiles/flattests.dir/all
-
-.PHONY : all
-
-# Build rule for subdir invocation for target.
-CMakeFiles/flattests.dir/rule: cmake_check_build_system
- $(CMAKE_COMMAND) -E cmake_progress_start /home/alain/flatbuffers/CMakeFiles 27
- $(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/flattests.dir/all
- $(CMAKE_COMMAND) -E cmake_progress_start /home/alain/flatbuffers/CMakeFiles 0
-.PHONY : CMakeFiles/flattests.dir/rule
-
-# Convenience name for target.
-flattests: CMakeFiles/flattests.dir/rule
-
-.PHONY : flattests
-
-# clean rule for target.
-CMakeFiles/flattests.dir/clean:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/clean
-.PHONY : CMakeFiles/flattests.dir/clean
-
-# clean rule for target.
-clean: CMakeFiles/flattests.dir/clean
-
-.PHONY : clean
-
-#=============================================================================
-# Target rules for target CMakeFiles/flatc.dir
-
-# All Build rule for target.
-CMakeFiles/flatc.dir/all:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/depend
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/build
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24 "Built target flatc"
-.PHONY : CMakeFiles/flatc.dir/all
-
-# Include target in all.
-all: CMakeFiles/flatc.dir/all
-
-.PHONY : all
-
-# Build rule for subdir invocation for target.
-CMakeFiles/flatc.dir/rule: cmake_check_build_system
- $(CMAKE_COMMAND) -E cmake_progress_start /home/alain/flatbuffers/CMakeFiles 18
- $(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/flatc.dir/all
- $(CMAKE_COMMAND) -E cmake_progress_start /home/alain/flatbuffers/CMakeFiles 0
-.PHONY : CMakeFiles/flatc.dir/rule
-
-# Convenience name for target.
-flatc: CMakeFiles/flatc.dir/rule
-
-.PHONY : flatc
-
-# clean rule for target.
-CMakeFiles/flatc.dir/clean:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/clean
-.PHONY : CMakeFiles/flatc.dir/clean
-
-# clean rule for target.
-clean: CMakeFiles/flatc.dir/clean
-
-.PHONY : clean
-
-#=============================================================================
-# Target rules for target CMakeFiles/flatbuffers.dir
-
-# All Build rule for target.
-CMakeFiles/flatbuffers.dir/all:
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/depend
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/build
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=1,2,3,4,5,6 "Built target flatbuffers"
-.PHONY : CMakeFiles/flatbuffers.dir/all
-
-# Include target in all.
-all: CMakeFiles/flatbuffers.dir/all
-
-.PHONY : all
-
-# Build rule for subdir invocation for target.
-CMakeFiles/flatbuffers.dir/rule: cmake_check_build_system
- $(CMAKE_COMMAND) -E cmake_progress_start /home/alain/flatbuffers/CMakeFiles 6
- $(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/flatbuffers.dir/all
- $(CMAKE_COMMAND) -E cmake_progress_start /home/alain/flatbuffers/CMakeFiles 0
-.PHONY : CMakeFiles/flatbuffers.dir/rule
-
-# Convenience name for target.
-flatbuffers: CMakeFiles/flatbuffers.dir/rule
-
-.PHONY : flatbuffers
-
-# clean rule for target.
-CMakeFiles/flatbuffers.dir/clean:
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/clean
-.PHONY : CMakeFiles/flatbuffers.dir/clean
-
-# clean rule for target.
-clean: CMakeFiles/flatbuffers.dir/clean
-
-.PHONY : clean
-
-#=============================================================================
-# Target rules for target CMakeFiles/flatsamplebinary.dir
-
-# All Build rule for target.
-CMakeFiles/flatsamplebinary.dir/all: CMakeFiles/flatc.dir/all
- $(MAKE) -f CMakeFiles/flatsamplebinary.dir/build.make CMakeFiles/flatsamplebinary.dir/depend
- $(MAKE) -f CMakeFiles/flatsamplebinary.dir/build.make CMakeFiles/flatsamplebinary.dir/build
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=27,28,29 "Built target flatsamplebinary"
-.PHONY : CMakeFiles/flatsamplebinary.dir/all
-
-# Include target in all.
-all: CMakeFiles/flatsamplebinary.dir/all
-
-.PHONY : all
-
-# Build rule for subdir invocation for target.
-CMakeFiles/flatsamplebinary.dir/rule: cmake_check_build_system
- $(CMAKE_COMMAND) -E cmake_progress_start /home/alain/flatbuffers/CMakeFiles 21
- $(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/flatsamplebinary.dir/all
- $(CMAKE_COMMAND) -E cmake_progress_start /home/alain/flatbuffers/CMakeFiles 0
-.PHONY : CMakeFiles/flatsamplebinary.dir/rule
-
-# Convenience name for target.
-flatsamplebinary: CMakeFiles/flatsamplebinary.dir/rule
-
-.PHONY : flatsamplebinary
-
-# clean rule for target.
-CMakeFiles/flatsamplebinary.dir/clean:
- $(MAKE) -f CMakeFiles/flatsamplebinary.dir/build.make CMakeFiles/flatsamplebinary.dir/clean
-.PHONY : CMakeFiles/flatsamplebinary.dir/clean
-
-# clean rule for target.
-clean: CMakeFiles/flatsamplebinary.dir/clean
-
-.PHONY : clean
-
-#=============================================================================
-# Target rules for target CMakeFiles/flathash.dir
-
-# All Build rule for target.
-CMakeFiles/flathash.dir/all:
- $(MAKE) -f CMakeFiles/flathash.dir/build.make CMakeFiles/flathash.dir/depend
- $(MAKE) -f CMakeFiles/flathash.dir/build.make CMakeFiles/flathash.dir/build
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=25,26 "Built target flathash"
-.PHONY : CMakeFiles/flathash.dir/all
-
-# Include target in all.
-all: CMakeFiles/flathash.dir/all
-
-.PHONY : all
-
-# Build rule for subdir invocation for target.
-CMakeFiles/flathash.dir/rule: cmake_check_build_system
- $(CMAKE_COMMAND) -E cmake_progress_start /home/alain/flatbuffers/CMakeFiles 2
- $(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/flathash.dir/all
- $(CMAKE_COMMAND) -E cmake_progress_start /home/alain/flatbuffers/CMakeFiles 0
-.PHONY : CMakeFiles/flathash.dir/rule
-
-# Convenience name for target.
-flathash: CMakeFiles/flathash.dir/rule
-
-.PHONY : flathash
-
-# clean rule for target.
-CMakeFiles/flathash.dir/clean:
- $(MAKE) -f CMakeFiles/flathash.dir/build.make CMakeFiles/flathash.dir/clean
-.PHONY : CMakeFiles/flathash.dir/clean
-
-# clean rule for target.
-clean: CMakeFiles/flathash.dir/clean
-
-.PHONY : clean
-
-#=============================================================================
-# Target rules for target CMakeFiles/flatsampletext.dir
-
-# All Build rule for target.
-CMakeFiles/flatsampletext.dir/all: CMakeFiles/flatc.dir/all
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/depend
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/build
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=30,31,32,33,34,35,36,37 "Built target flatsampletext"
-.PHONY : CMakeFiles/flatsampletext.dir/all
-
-# Include target in all.
-all: CMakeFiles/flatsampletext.dir/all
-
-.PHONY : all
-
-# Build rule for subdir invocation for target.
-CMakeFiles/flatsampletext.dir/rule: cmake_check_build_system
- $(CMAKE_COMMAND) -E cmake_progress_start /home/alain/flatbuffers/CMakeFiles 26
- $(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/flatsampletext.dir/all
- $(CMAKE_COMMAND) -E cmake_progress_start /home/alain/flatbuffers/CMakeFiles 0
-.PHONY : CMakeFiles/flatsampletext.dir/rule
-
-# Convenience name for target.
-flatsampletext: CMakeFiles/flatsampletext.dir/rule
-
-.PHONY : flatsampletext
-
-# clean rule for target.
-CMakeFiles/flatsampletext.dir/clean:
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/clean
-.PHONY : CMakeFiles/flatsampletext.dir/clean
-
-# clean rule for target.
-clean: CMakeFiles/flatsampletext.dir/clean
-
-.PHONY : clean
-
-#=============================================================================
-# Special targets to cleanup operation of make.
-
-# Special rule to run CMake to check the build system integrity.
-# No rule that depends on this can have commands that come from listfiles
-# because they might be regenerated.
-cmake_check_build_system:
- $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
-.PHONY : cmake_check_build_system
-
diff --git a/third_party/flatbuffers/CMakeFiles/TargetDirectories.txt b/third_party/flatbuffers/CMakeFiles/TargetDirectories.txt
deleted file mode 100644
index a72639e..0000000
--- a/third_party/flatbuffers/CMakeFiles/TargetDirectories.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-/home/alain/flatbuffers/CMakeFiles/rebuild_cache.dir
-/home/alain/flatbuffers/CMakeFiles/install.dir
-/home/alain/flatbuffers/CMakeFiles/flattests.dir
-/home/alain/flatbuffers/CMakeFiles/flatc.dir
-/home/alain/flatbuffers/CMakeFiles/list_install_components.dir
-/home/alain/flatbuffers/CMakeFiles/install/strip.dir
-/home/alain/flatbuffers/CMakeFiles/install/local.dir
-/home/alain/flatbuffers/CMakeFiles/flatbuffers.dir
-/home/alain/flatbuffers/CMakeFiles/flatsamplebinary.dir
-/home/alain/flatbuffers/CMakeFiles/flathash.dir
-/home/alain/flatbuffers/CMakeFiles/flatsampletext.dir
-/home/alain/flatbuffers/CMakeFiles/test.dir
-/home/alain/flatbuffers/CMakeFiles/edit_cache.dir
diff --git a/third_party/flatbuffers/CMakeFiles/cmake.check_cache b/third_party/flatbuffers/CMakeFiles/cmake.check_cache
deleted file mode 100644
index 3dccd73..0000000
--- a/third_party/flatbuffers/CMakeFiles/cmake.check_cache
+++ /dev/null
@@ -1 +0,0 @@
-# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/third_party/flatbuffers/CMakeFiles/feature_tests.bin b/third_party/flatbuffers/CMakeFiles/feature_tests.bin
deleted file mode 100755
index 4c5b364..0000000
--- a/third_party/flatbuffers/CMakeFiles/feature_tests.bin
+++ /dev/null
Binary files differ
diff --git a/third_party/flatbuffers/CMakeFiles/feature_tests.c b/third_party/flatbuffers/CMakeFiles/feature_tests.c
deleted file mode 100644
index 6590dde..0000000
--- a/third_party/flatbuffers/CMakeFiles/feature_tests.c
+++ /dev/null
@@ -1,34 +0,0 @@
-
- const char features[] = {"\n"
-"C_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404
-"1"
-#else
-"0"
-#endif
-"c_function_prototypes\n"
-"C_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-"1"
-#else
-"0"
-#endif
-"c_restrict\n"
-"C_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201000L
-"1"
-#else
-"0"
-#endif
-"c_static_assert\n"
-"C_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-"1"
-#else
-"0"
-#endif
-"c_variadic_macros\n"
-
-};
-
-int main(int argc, char** argv) { (void)argv; return features[argc]; }
diff --git a/third_party/flatbuffers/CMakeFiles/feature_tests.cxx b/third_party/flatbuffers/CMakeFiles/feature_tests.cxx
deleted file mode 100644
index b93418c..0000000
--- a/third_party/flatbuffers/CMakeFiles/feature_tests.cxx
+++ /dev/null
@@ -1,405 +0,0 @@
-
- const char features[] = {"\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L
-"1"
-#else
-"0"
-#endif
-"cxx_aggregate_default_initializers\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_alias_templates\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_alignas\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_alignof\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_attributes\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_attribute_deprecated\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_auto_type\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_binary_literals\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_constexpr\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_contextual_conversions\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_decltype\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_decltype_auto\n"
-"CXX_FEATURE:"
-#if ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40801) && __cplusplus >= 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_decltype_incomplete_return_types\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_default_function_template_args\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_defaulted_functions\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_defaulted_move_initializers\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_delegating_constructors\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_deleted_functions\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_digit_separators\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_enum_forward_declarations\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_explicit_conversions\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_extended_friend_declarations\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_extern_templates\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_final\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_func_identifier\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_generalized_initializers\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_generic_lambdas\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_inheriting_constructors\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_inline_namespaces\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_lambdas\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_lambda_init_captures\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_local_type_template_args\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_long_long_type\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_noexcept\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_nonstatic_member_init\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_nullptr\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_override\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_range_for\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_raw_string_literals\n"
-"CXX_FEATURE:"
-#if ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40801) && __cplusplus >= 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_reference_qualified_functions\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L
-"1"
-#else
-"0"
-#endif
-"cxx_relaxed_constexpr\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_return_type_deduction\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_right_angle_brackets\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_rvalue_references\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_sizeof_member\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_static_assert\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_strong_enums\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && __cplusplus
-"1"
-#else
-"0"
-#endif
-"cxx_template_template_parameters\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_thread_local\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_trailing_return_types\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_unicode_literals\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_uniform_initialization\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_unrestricted_unions\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
-"1"
-#else
-"0"
-#endif
-"cxx_user_literals\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L
-"1"
-#else
-"0"
-#endif
-"cxx_variable_templates\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_variadic_macros\n"
-"CXX_FEATURE:"
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
-"1"
-#else
-"0"
-#endif
-"cxx_variadic_templates\n"
-
-};
-
-int main(int argc, char** argv) { (void)argv; return features[argc]; }
diff --git a/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/CXX.includecache b/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/CXX.includecache
deleted file mode 100644
index ba96c23..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/CXX.includecache
+++ /dev/null
@@ -1,146 +0,0 @@
-#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">])
-
-#IncludeRegexScan: ^.*$
-
-#IncludeRegexComplain: ^$
-
-#IncludeRegexTransform:
-
-/home/alain/flatbuffers/src/code_generators.cpp
-flatbuffers/code_generators.h
-/home/alain/flatbuffers/src/flatbuffers/code_generators.h
-assert.h
--
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-
-/home/alain/flatbuffers/src/idl_gen_text.cpp
-flatbuffers/flatbuffers.h
-/home/alain/flatbuffers/src/flatbuffers/flatbuffers.h
-flatbuffers/idl.h
-/home/alain/flatbuffers/src/flatbuffers/idl.h
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-
-/home/alain/flatbuffers/src/idl_parser.cpp
-algorithm
--
-list
--
-math.h
--
-flatbuffers/idl.h
-/home/alain/flatbuffers/src/flatbuffers/idl.h
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-
-/home/alain/flatbuffers/src/reflection.cpp
-flatbuffers/reflection.h
-/home/alain/flatbuffers/src/flatbuffers/reflection.h
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-
-/home/alain/flatbuffers/src/util.cpp
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-
-include/flatbuffers/code_generators.h
-map
--
-sstream
--
-flatbuffers/idl.h
-include/flatbuffers/flatbuffers/idl.h
-
-include/flatbuffers/flatbuffers.h
-assert.h
--
-cstdint
--
-cstddef
--
-cstdlib
--
-cstring
--
-string
--
-utility
--
-utility.h
--
-type_traits
--
-vector
--
-set
--
-algorithm
--
-memory
--
-functional
--
-
-include/flatbuffers/hash.h
-cstdint
--
-cstring
--
-flatbuffers/flatbuffers.h
-include/flatbuffers/flatbuffers/flatbuffers.h
-
-include/flatbuffers/idl.h
-map
--
-stack
--
-memory
--
-functional
--
-flatbuffers/flatbuffers.h
-include/flatbuffers/flatbuffers/flatbuffers.h
-flatbuffers/hash.h
-include/flatbuffers/flatbuffers/hash.h
-flatbuffers/reflection.h
-include/flatbuffers/flatbuffers/reflection.h
-
-include/flatbuffers/reflection.h
-flatbuffers/reflection_generated.h
-include/flatbuffers/flatbuffers/reflection_generated.h
-
-include/flatbuffers/reflection_generated.h
-flatbuffers/flatbuffers.h
-include/flatbuffers/flatbuffers/flatbuffers.h
-
-include/flatbuffers/util.h
-fstream
--
-iomanip
--
-string
--
-sstream
--
-stdint.h
--
-stdlib.h
--
-assert.h
--
-windows.h
--
-winbase.h
--
-direct.h
--
-limits.h
--
-sys/types.h
--
-sys/stat.h
--
-flatbuffers/flatbuffers.h
-include/flatbuffers/flatbuffers/flatbuffers.h
-
diff --git a/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/DependInfo.cmake b/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/DependInfo.cmake
deleted file mode 100644
index 1561d48..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/DependInfo.cmake
+++ /dev/null
@@ -1,28 +0,0 @@
-# The set of languages for which implicit dependencies are needed:
-set(CMAKE_DEPENDS_LANGUAGES
- "CXX"
- )
-# The set of files for implicit dependencies of each language:
-set(CMAKE_DEPENDS_CHECK_CXX
- "/home/alain/flatbuffers/src/code_generators.cpp" "/home/alain/flatbuffers/CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o"
- "/home/alain/flatbuffers/src/idl_gen_text.cpp" "/home/alain/flatbuffers/CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o"
- "/home/alain/flatbuffers/src/idl_parser.cpp" "/home/alain/flatbuffers/CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o"
- "/home/alain/flatbuffers/src/reflection.cpp" "/home/alain/flatbuffers/CMakeFiles/flatbuffers.dir/src/reflection.cpp.o"
- "/home/alain/flatbuffers/src/util.cpp" "/home/alain/flatbuffers/CMakeFiles/flatbuffers.dir/src/util.cpp.o"
- )
-set(CMAKE_CXX_COMPILER_ID "GNU")
-
-# The include file search paths:
-set(CMAKE_CXX_TARGET_INCLUDE_PATH
- "include"
- "grpc"
- "tests"
- "samples"
- )
-
-# Targets to which this target links.
-set(CMAKE_TARGET_LINKED_INFO_FILES
- )
-
-# Fortran module output directory.
-set(CMAKE_Fortran_TARGET_MODULE_DIR "")
diff --git a/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/build.make b/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/build.make
deleted file mode 100644
index a98c2a1..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/build.make
+++ /dev/null
@@ -1,222 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-# Delete rule output on recipe failure.
-.DELETE_ON_ERROR:
-
-
-#=============================================================================
-# Special targets provided by cmake.
-
-# Disable implicit rules so canonical targets will work.
-.SUFFIXES:
-
-
-# Remove some rules from gmake that .SUFFIXES does not remove.
-SUFFIXES =
-
-.SUFFIXES: .hpux_make_needs_suffix_list
-
-
-# Suppress display of executed commands.
-$(VERBOSE).SILENT:
-
-
-# A target that is always out of date.
-cmake_force:
-
-.PHONY : cmake_force
-
-#=============================================================================
-# Set environment variables for the build.
-
-# The shell in which to execute make rules.
-SHELL = /bin/sh
-
-# The CMake executable.
-CMAKE_COMMAND = /usr/bin/cmake
-
-# The command to remove a file.
-RM = /usr/bin/cmake -E remove -f
-
-# Escaping for special characters.
-EQUALS = =
-
-# The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /home/alain/flatbuffers
-
-# The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /home/alain/flatbuffers
-
-# Include any dependencies generated for this target.
-include CMakeFiles/flatbuffers.dir/depend.make
-
-# Include the progress variables for this target.
-include CMakeFiles/flatbuffers.dir/progress.make
-
-# Include the compile flags for this target's objects.
-include CMakeFiles/flatbuffers.dir/flags.make
-
-CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o: CMakeFiles/flatbuffers.dir/flags.make
-CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o: src/code_generators.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o -c /home/alain/flatbuffers/src/code_generators.cpp
-
-CMakeFiles/flatbuffers.dir/src/code_generators.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatbuffers.dir/src/code_generators.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/code_generators.cpp > CMakeFiles/flatbuffers.dir/src/code_generators.cpp.i
-
-CMakeFiles/flatbuffers.dir/src/code_generators.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatbuffers.dir/src/code_generators.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/code_generators.cpp -o CMakeFiles/flatbuffers.dir/src/code_generators.cpp.s
-
-CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o.requires
-
-CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o.provides: CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o.provides.build
-.PHONY : CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o.provides
-
-CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o.provides.build: CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o
-
-
-CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o: CMakeFiles/flatbuffers.dir/flags.make
-CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o: src/idl_parser.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o -c /home/alain/flatbuffers/src/idl_parser.cpp
-
-CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/idl_parser.cpp > CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.i
-
-CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/idl_parser.cpp -o CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.s
-
-CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o.requires
-
-CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o.provides: CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o.provides.build
-.PHONY : CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o.provides
-
-CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o.provides.build: CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o
-
-
-CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o: CMakeFiles/flatbuffers.dir/flags.make
-CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o: src/idl_gen_text.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o -c /home/alain/flatbuffers/src/idl_gen_text.cpp
-
-CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/idl_gen_text.cpp > CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.i
-
-CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/idl_gen_text.cpp -o CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.s
-
-CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o.requires
-
-CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o.provides: CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o.provides.build
-.PHONY : CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o.provides
-
-CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o.provides.build: CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o
-
-
-CMakeFiles/flatbuffers.dir/src/reflection.cpp.o: CMakeFiles/flatbuffers.dir/flags.make
-CMakeFiles/flatbuffers.dir/src/reflection.cpp.o: src/reflection.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object CMakeFiles/flatbuffers.dir/src/reflection.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatbuffers.dir/src/reflection.cpp.o -c /home/alain/flatbuffers/src/reflection.cpp
-
-CMakeFiles/flatbuffers.dir/src/reflection.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatbuffers.dir/src/reflection.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/reflection.cpp > CMakeFiles/flatbuffers.dir/src/reflection.cpp.i
-
-CMakeFiles/flatbuffers.dir/src/reflection.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatbuffers.dir/src/reflection.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/reflection.cpp -o CMakeFiles/flatbuffers.dir/src/reflection.cpp.s
-
-CMakeFiles/flatbuffers.dir/src/reflection.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatbuffers.dir/src/reflection.cpp.o.requires
-
-CMakeFiles/flatbuffers.dir/src/reflection.cpp.o.provides: CMakeFiles/flatbuffers.dir/src/reflection.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/src/reflection.cpp.o.provides.build
-.PHONY : CMakeFiles/flatbuffers.dir/src/reflection.cpp.o.provides
-
-CMakeFiles/flatbuffers.dir/src/reflection.cpp.o.provides.build: CMakeFiles/flatbuffers.dir/src/reflection.cpp.o
-
-
-CMakeFiles/flatbuffers.dir/src/util.cpp.o: CMakeFiles/flatbuffers.dir/flags.make
-CMakeFiles/flatbuffers.dir/src/util.cpp.o: src/util.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building CXX object CMakeFiles/flatbuffers.dir/src/util.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatbuffers.dir/src/util.cpp.o -c /home/alain/flatbuffers/src/util.cpp
-
-CMakeFiles/flatbuffers.dir/src/util.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatbuffers.dir/src/util.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/util.cpp > CMakeFiles/flatbuffers.dir/src/util.cpp.i
-
-CMakeFiles/flatbuffers.dir/src/util.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatbuffers.dir/src/util.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/util.cpp -o CMakeFiles/flatbuffers.dir/src/util.cpp.s
-
-CMakeFiles/flatbuffers.dir/src/util.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatbuffers.dir/src/util.cpp.o.requires
-
-CMakeFiles/flatbuffers.dir/src/util.cpp.o.provides: CMakeFiles/flatbuffers.dir/src/util.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/src/util.cpp.o.provides.build
-.PHONY : CMakeFiles/flatbuffers.dir/src/util.cpp.o.provides
-
-CMakeFiles/flatbuffers.dir/src/util.cpp.o.provides.build: CMakeFiles/flatbuffers.dir/src/util.cpp.o
-
-
-# Object files for target flatbuffers
-flatbuffers_OBJECTS = \
-"CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o" \
-"CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o" \
-"CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o" \
-"CMakeFiles/flatbuffers.dir/src/reflection.cpp.o" \
-"CMakeFiles/flatbuffers.dir/src/util.cpp.o"
-
-# External object files for target flatbuffers
-flatbuffers_EXTERNAL_OBJECTS =
-
-libflatbuffers.a: CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o
-libflatbuffers.a: CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o
-libflatbuffers.a: CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o
-libflatbuffers.a: CMakeFiles/flatbuffers.dir/src/reflection.cpp.o
-libflatbuffers.a: CMakeFiles/flatbuffers.dir/src/util.cpp.o
-libflatbuffers.a: CMakeFiles/flatbuffers.dir/build.make
-libflatbuffers.a: CMakeFiles/flatbuffers.dir/link.txt
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Linking CXX static library libflatbuffers.a"
- $(CMAKE_COMMAND) -P CMakeFiles/flatbuffers.dir/cmake_clean_target.cmake
- $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/flatbuffers.dir/link.txt --verbose=$(VERBOSE)
-
-# Rule to build all files generated by this target.
-CMakeFiles/flatbuffers.dir/build: libflatbuffers.a
-
-.PHONY : CMakeFiles/flatbuffers.dir/build
-
-CMakeFiles/flatbuffers.dir/requires: CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o.requires
-CMakeFiles/flatbuffers.dir/requires: CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o.requires
-CMakeFiles/flatbuffers.dir/requires: CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o.requires
-CMakeFiles/flatbuffers.dir/requires: CMakeFiles/flatbuffers.dir/src/reflection.cpp.o.requires
-CMakeFiles/flatbuffers.dir/requires: CMakeFiles/flatbuffers.dir/src/util.cpp.o.requires
-
-.PHONY : CMakeFiles/flatbuffers.dir/requires
-
-CMakeFiles/flatbuffers.dir/clean:
- $(CMAKE_COMMAND) -P CMakeFiles/flatbuffers.dir/cmake_clean.cmake
-.PHONY : CMakeFiles/flatbuffers.dir/clean
-
-CMakeFiles/flatbuffers.dir/depend:
- cd /home/alain/flatbuffers && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/alain/flatbuffers /home/alain/flatbuffers /home/alain/flatbuffers /home/alain/flatbuffers /home/alain/flatbuffers/CMakeFiles/flatbuffers.dir/DependInfo.cmake --color=$(COLOR)
-.PHONY : CMakeFiles/flatbuffers.dir/depend
-
diff --git a/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/cmake_clean.cmake b/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/cmake_clean.cmake
deleted file mode 100644
index 82bc6d3..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/cmake_clean.cmake
+++ /dev/null
@@ -1,14 +0,0 @@
-file(REMOVE_RECURSE
- "CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o"
- "CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o"
- "CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o"
- "CMakeFiles/flatbuffers.dir/src/reflection.cpp.o"
- "CMakeFiles/flatbuffers.dir/src/util.cpp.o"
- "libflatbuffers.pdb"
- "libflatbuffers.a"
-)
-
-# Per-language clean rules from dependency scanning.
-foreach(lang CXX)
- include(CMakeFiles/flatbuffers.dir/cmake_clean_${lang}.cmake OPTIONAL)
-endforeach()
diff --git a/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/cmake_clean_target.cmake b/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/cmake_clean_target.cmake
deleted file mode 100644
index dc1f66a..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/cmake_clean_target.cmake
+++ /dev/null
@@ -1,3 +0,0 @@
-file(REMOVE_RECURSE
- "libflatbuffers.a"
-)
diff --git a/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/depend.internal b/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/depend.internal
deleted file mode 100644
index a6e31a9..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/depend.internal
+++ /dev/null
@@ -1,38 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o
- /home/alain/flatbuffers/src/code_generators.cpp
- include/flatbuffers/code_generators.h
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o
- /home/alain/flatbuffers/src/idl_gen_text.cpp
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o
- /home/alain/flatbuffers/src/idl_parser.cpp
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatbuffers.dir/src/reflection.cpp.o
- /home/alain/flatbuffers/src/reflection.cpp
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatbuffers.dir/src/util.cpp.o
- /home/alain/flatbuffers/src/util.cpp
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/util.h
diff --git a/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/depend.make b/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/depend.make
deleted file mode 100644
index 4e6687a..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/depend.make
+++ /dev/null
@@ -1,38 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o: src/code_generators.cpp
-CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o: include/flatbuffers/code_generators.h
-CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o: src/idl_gen_text.cpp
-CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o: src/idl_parser.cpp
-CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatbuffers.dir/src/reflection.cpp.o: src/reflection.cpp
-CMakeFiles/flatbuffers.dir/src/reflection.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatbuffers.dir/src/reflection.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatbuffers.dir/src/reflection.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatbuffers.dir/src/reflection.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatbuffers.dir/src/util.cpp.o: src/util.cpp
-CMakeFiles/flatbuffers.dir/src/util.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatbuffers.dir/src/util.cpp.o: include/flatbuffers/util.h
-
diff --git a/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/flags.make b/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/flags.make
deleted file mode 100644
index 6fddb3a..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/flags.make
+++ /dev/null
@@ -1,10 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-# compile CXX with /usr/bin/c++
-CXX_FLAGS = -std=c++0x -Wall -pedantic -Werror -Wextra -Werror=shadow -fsigned-char
-
-CXX_DEFINES =
-
-CXX_INCLUDES = -I/home/alain/flatbuffers/include -I/home/alain/flatbuffers/grpc -I/home/alain/flatbuffers/tests -I/home/alain/flatbuffers/samples
-
diff --git a/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/link.txt b/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/link.txt
deleted file mode 100644
index d8000a6..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/link.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-/usr/bin/ar qc libflatbuffers.a CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o CMakeFiles/flatbuffers.dir/src/reflection.cpp.o CMakeFiles/flatbuffers.dir/src/util.cpp.o
-/usr/bin/ranlib libflatbuffers.a
diff --git a/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/progress.make b/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/progress.make
deleted file mode 100644
index daba7fa..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatbuffers.dir/progress.make
+++ /dev/null
@@ -1,7 +0,0 @@
-CMAKE_PROGRESS_1 = 1
-CMAKE_PROGRESS_2 = 2
-CMAKE_PROGRESS_3 = 3
-CMAKE_PROGRESS_4 = 4
-CMAKE_PROGRESS_5 = 5
-CMAKE_PROGRESS_6 = 6
-
diff --git a/third_party/flatbuffers/CMakeFiles/flatc.dir/CXX.includecache b/third_party/flatbuffers/CMakeFiles/flatc.dir/CXX.includecache
deleted file mode 100644
index eef92cd..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatc.dir/CXX.includecache
+++ /dev/null
@@ -1,316 +0,0 @@
-#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">])
-
-#IncludeRegexScan: ^.*$
-
-#IncludeRegexComplain: ^$
-
-#IncludeRegexTransform:
-
-/home/alain/flatbuffers/grpc/src/compiler/cpp_generator.cc
-map
--
-src/compiler/cpp_generator.h
-/home/alain/flatbuffers/grpc/src/compiler/src/compiler/cpp_generator.h
-sstream
--
-
-/home/alain/flatbuffers/grpc/src/compiler/go_generator.cc
-map
--
-cctype
--
-sstream
--
-src/compiler/go_generator.h
-/home/alain/flatbuffers/grpc/src/compiler/src/compiler/go_generator.h
-
-/home/alain/flatbuffers/src/code_generators.cpp
-flatbuffers/code_generators.h
-/home/alain/flatbuffers/src/flatbuffers/code_generators.h
-assert.h
--
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-
-/home/alain/flatbuffers/src/flatc.cpp
-flatbuffers/flatc.h
-/home/alain/flatbuffers/src/flatbuffers/flatc.h
-
-/home/alain/flatbuffers/src/flatc_main.cpp
-flatbuffers/flatc.h
-/home/alain/flatbuffers/src/flatbuffers/flatc.h
-
-/home/alain/flatbuffers/src/idl_gen_cpp.cpp
-flatbuffers/flatbuffers.h
-/home/alain/flatbuffers/src/flatbuffers/flatbuffers.h
-flatbuffers/idl.h
-/home/alain/flatbuffers/src/flatbuffers/idl.h
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-flatbuffers/code_generators.h
-/home/alain/flatbuffers/src/flatbuffers/code_generators.h
-
-/home/alain/flatbuffers/src/idl_gen_fbs.cpp
-flatbuffers/flatbuffers.h
-/home/alain/flatbuffers/src/flatbuffers/flatbuffers.h
-flatbuffers/idl.h
-/home/alain/flatbuffers/src/flatbuffers/idl.h
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-flatbuffers/code_generators.h
-/home/alain/flatbuffers/src/flatbuffers/code_generators.h
-
-/home/alain/flatbuffers/src/idl_gen_general.cpp
-flatbuffers/flatbuffers.h
-/home/alain/flatbuffers/src/flatbuffers/flatbuffers.h
-flatbuffers/idl.h
-/home/alain/flatbuffers/src/flatbuffers/idl.h
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-flatbuffers/code_generators.h
-/home/alain/flatbuffers/src/flatbuffers/code_generators.h
-algorithm
--
-
-/home/alain/flatbuffers/src/idl_gen_go.cpp
-string
--
-sstream
--
-flatbuffers/flatbuffers.h
-/home/alain/flatbuffers/src/flatbuffers/flatbuffers.h
-flatbuffers/idl.h
-/home/alain/flatbuffers/src/flatbuffers/idl.h
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-flatbuffers/code_generators.h
-/home/alain/flatbuffers/src/flatbuffers/code_generators.h
-direct.h
--
-sys/stat.h
--
-
-/home/alain/flatbuffers/src/idl_gen_grpc.cpp
-flatbuffers/flatbuffers.h
-/home/alain/flatbuffers/src/flatbuffers/flatbuffers.h
-flatbuffers/idl.h
-/home/alain/flatbuffers/src/flatbuffers/idl.h
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-flatbuffers/code_generators.h
-/home/alain/flatbuffers/src/flatbuffers/code_generators.h
-src/compiler/cpp_generator.h
-/home/alain/flatbuffers/src/src/compiler/cpp_generator.h
-src/compiler/go_generator.h
-/home/alain/flatbuffers/src/src/compiler/go_generator.h
-
-/home/alain/flatbuffers/src/idl_gen_js.cpp
-unordered_set
--
-unordered_map
--
-cassert
--
-flatbuffers/flatbuffers.h
-/home/alain/flatbuffers/src/flatbuffers/flatbuffers.h
-flatbuffers/idl.h
-/home/alain/flatbuffers/src/flatbuffers/idl.h
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-flatbuffers/code_generators.h
-/home/alain/flatbuffers/src/flatbuffers/code_generators.h
-
-/home/alain/flatbuffers/src/idl_gen_php.cpp
-string
--
-flatbuffers/flatbuffers.h
-/home/alain/flatbuffers/src/flatbuffers/flatbuffers.h
-flatbuffers/idl.h
-/home/alain/flatbuffers/src/flatbuffers/idl.h
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-flatbuffers/code_generators.h
-/home/alain/flatbuffers/src/flatbuffers/code_generators.h
-
-/home/alain/flatbuffers/src/idl_gen_python.cpp
-string
--
-flatbuffers/flatbuffers.h
-/home/alain/flatbuffers/src/flatbuffers/flatbuffers.h
-flatbuffers/idl.h
-/home/alain/flatbuffers/src/flatbuffers/idl.h
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-flatbuffers/code_generators.h
-/home/alain/flatbuffers/src/flatbuffers/code_generators.h
-
-/home/alain/flatbuffers/src/idl_gen_text.cpp
-flatbuffers/flatbuffers.h
-/home/alain/flatbuffers/src/flatbuffers/flatbuffers.h
-flatbuffers/idl.h
-/home/alain/flatbuffers/src/flatbuffers/idl.h
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-
-/home/alain/flatbuffers/src/idl_parser.cpp
-algorithm
--
-list
--
-math.h
--
-flatbuffers/idl.h
-/home/alain/flatbuffers/src/flatbuffers/idl.h
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-
-/home/alain/flatbuffers/src/reflection.cpp
-flatbuffers/reflection.h
-/home/alain/flatbuffers/src/flatbuffers/reflection.h
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-
-/home/alain/flatbuffers/src/util.cpp
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-
-grpc/src/compiler/cpp_generator.h
-memory
--
-vector
--
-src/compiler/schema_interface.h
-grpc/src/compiler/src/compiler/schema_interface.h
-
-grpc/src/compiler/go_generator.h
-memory
--
-vector
--
-src/compiler/schema_interface.h
-grpc/src/compiler/src/compiler/schema_interface.h
-
-grpc/src/compiler/schema_interface.h
-map
--
-memory
--
-vector
--
-string
--
-
-include/flatbuffers/code_generators.h
-map
--
-sstream
--
-flatbuffers/idl.h
-include/flatbuffers/flatbuffers/idl.h
-
-include/flatbuffers/flatbuffers.h
-assert.h
--
-cstdint
--
-cstddef
--
-cstdlib
--
-cstring
--
-string
--
-utility
--
-utility.h
--
-type_traits
--
-vector
--
-set
--
-algorithm
--
-memory
--
-functional
--
-
-include/flatbuffers/flatc.h
-flatbuffers/flatbuffers.h
-include/flatbuffers/flatbuffers/flatbuffers.h
-flatbuffers/idl.h
-include/flatbuffers/flatbuffers/idl.h
-flatbuffers/util.h
-include/flatbuffers/flatbuffers/util.h
-functional
--
-limits
--
-string
--
-
-include/flatbuffers/hash.h
-cstdint
--
-cstring
--
-flatbuffers/flatbuffers.h
-include/flatbuffers/flatbuffers/flatbuffers.h
-
-include/flatbuffers/idl.h
-map
--
-stack
--
-memory
--
-functional
--
-flatbuffers/flatbuffers.h
-include/flatbuffers/flatbuffers/flatbuffers.h
-flatbuffers/hash.h
-include/flatbuffers/flatbuffers/hash.h
-flatbuffers/reflection.h
-include/flatbuffers/flatbuffers/reflection.h
-
-include/flatbuffers/reflection.h
-flatbuffers/reflection_generated.h
-include/flatbuffers/flatbuffers/reflection_generated.h
-
-include/flatbuffers/reflection_generated.h
-flatbuffers/flatbuffers.h
-include/flatbuffers/flatbuffers/flatbuffers.h
-
-include/flatbuffers/util.h
-fstream
--
-iomanip
--
-string
--
-sstream
--
-stdint.h
--
-stdlib.h
--
-assert.h
--
-windows.h
--
-winbase.h
--
-direct.h
--
-limits.h
--
-sys/types.h
--
-sys/stat.h
--
-flatbuffers/flatbuffers.h
-include/flatbuffers/flatbuffers/flatbuffers.h
-
diff --git a/third_party/flatbuffers/CMakeFiles/flatc.dir/DependInfo.cmake b/third_party/flatbuffers/CMakeFiles/flatc.dir/DependInfo.cmake
deleted file mode 100644
index 72846b0..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatc.dir/DependInfo.cmake
+++ /dev/null
@@ -1,40 +0,0 @@
-# The set of languages for which implicit dependencies are needed:
-set(CMAKE_DEPENDS_LANGUAGES
- "CXX"
- )
-# The set of files for implicit dependencies of each language:
-set(CMAKE_DEPENDS_CHECK_CXX
- "/home/alain/flatbuffers/grpc/src/compiler/cpp_generator.cc" "/home/alain/flatbuffers/CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o"
- "/home/alain/flatbuffers/grpc/src/compiler/go_generator.cc" "/home/alain/flatbuffers/CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o"
- "/home/alain/flatbuffers/src/code_generators.cpp" "/home/alain/flatbuffers/CMakeFiles/flatc.dir/src/code_generators.cpp.o"
- "/home/alain/flatbuffers/src/flatc.cpp" "/home/alain/flatbuffers/CMakeFiles/flatc.dir/src/flatc.cpp.o"
- "/home/alain/flatbuffers/src/flatc_main.cpp" "/home/alain/flatbuffers/CMakeFiles/flatc.dir/src/flatc_main.cpp.o"
- "/home/alain/flatbuffers/src/idl_gen_cpp.cpp" "/home/alain/flatbuffers/CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o"
- "/home/alain/flatbuffers/src/idl_gen_fbs.cpp" "/home/alain/flatbuffers/CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o"
- "/home/alain/flatbuffers/src/idl_gen_general.cpp" "/home/alain/flatbuffers/CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o"
- "/home/alain/flatbuffers/src/idl_gen_go.cpp" "/home/alain/flatbuffers/CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o"
- "/home/alain/flatbuffers/src/idl_gen_grpc.cpp" "/home/alain/flatbuffers/CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o"
- "/home/alain/flatbuffers/src/idl_gen_js.cpp" "/home/alain/flatbuffers/CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o"
- "/home/alain/flatbuffers/src/idl_gen_php.cpp" "/home/alain/flatbuffers/CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o"
- "/home/alain/flatbuffers/src/idl_gen_python.cpp" "/home/alain/flatbuffers/CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o"
- "/home/alain/flatbuffers/src/idl_gen_text.cpp" "/home/alain/flatbuffers/CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o"
- "/home/alain/flatbuffers/src/idl_parser.cpp" "/home/alain/flatbuffers/CMakeFiles/flatc.dir/src/idl_parser.cpp.o"
- "/home/alain/flatbuffers/src/reflection.cpp" "/home/alain/flatbuffers/CMakeFiles/flatc.dir/src/reflection.cpp.o"
- "/home/alain/flatbuffers/src/util.cpp" "/home/alain/flatbuffers/CMakeFiles/flatc.dir/src/util.cpp.o"
- )
-set(CMAKE_CXX_COMPILER_ID "GNU")
-
-# The include file search paths:
-set(CMAKE_CXX_TARGET_INCLUDE_PATH
- "include"
- "grpc"
- "tests"
- "samples"
- )
-
-# Targets to which this target links.
-set(CMAKE_TARGET_LINKED_INFO_FILES
- )
-
-# Fortran module output directory.
-set(CMAKE_Fortran_TARGET_MODULE_DIR "")
diff --git a/third_party/flatbuffers/CMakeFiles/flatc.dir/build.make b/third_party/flatbuffers/CMakeFiles/flatc.dir/build.make
deleted file mode 100644
index 39d3f8c..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatc.dir/build.make
+++ /dev/null
@@ -1,545 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-# Delete rule output on recipe failure.
-.DELETE_ON_ERROR:
-
-
-#=============================================================================
-# Special targets provided by cmake.
-
-# Disable implicit rules so canonical targets will work.
-.SUFFIXES:
-
-
-# Remove some rules from gmake that .SUFFIXES does not remove.
-SUFFIXES =
-
-.SUFFIXES: .hpux_make_needs_suffix_list
-
-
-# Suppress display of executed commands.
-$(VERBOSE).SILENT:
-
-
-# A target that is always out of date.
-cmake_force:
-
-.PHONY : cmake_force
-
-#=============================================================================
-# Set environment variables for the build.
-
-# The shell in which to execute make rules.
-SHELL = /bin/sh
-
-# The CMake executable.
-CMAKE_COMMAND = /usr/bin/cmake
-
-# The command to remove a file.
-RM = /usr/bin/cmake -E remove -f
-
-# Escaping for special characters.
-EQUALS = =
-
-# The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /home/alain/flatbuffers
-
-# The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /home/alain/flatbuffers
-
-# Include any dependencies generated for this target.
-include CMakeFiles/flatc.dir/depend.make
-
-# Include the progress variables for this target.
-include CMakeFiles/flatc.dir/progress.make
-
-# Include the compile flags for this target's objects.
-include CMakeFiles/flatc.dir/flags.make
-
-CMakeFiles/flatc.dir/src/code_generators.cpp.o: CMakeFiles/flatc.dir/flags.make
-CMakeFiles/flatc.dir/src/code_generators.cpp.o: src/code_generators.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object CMakeFiles/flatc.dir/src/code_generators.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatc.dir/src/code_generators.cpp.o -c /home/alain/flatbuffers/src/code_generators.cpp
-
-CMakeFiles/flatc.dir/src/code_generators.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatc.dir/src/code_generators.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/code_generators.cpp > CMakeFiles/flatc.dir/src/code_generators.cpp.i
-
-CMakeFiles/flatc.dir/src/code_generators.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatc.dir/src/code_generators.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/code_generators.cpp -o CMakeFiles/flatc.dir/src/code_generators.cpp.s
-
-CMakeFiles/flatc.dir/src/code_generators.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatc.dir/src/code_generators.cpp.o.requires
-
-CMakeFiles/flatc.dir/src/code_generators.cpp.o.provides: CMakeFiles/flatc.dir/src/code_generators.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/code_generators.cpp.o.provides.build
-.PHONY : CMakeFiles/flatc.dir/src/code_generators.cpp.o.provides
-
-CMakeFiles/flatc.dir/src/code_generators.cpp.o.provides.build: CMakeFiles/flatc.dir/src/code_generators.cpp.o
-
-
-CMakeFiles/flatc.dir/src/idl_parser.cpp.o: CMakeFiles/flatc.dir/flags.make
-CMakeFiles/flatc.dir/src/idl_parser.cpp.o: src/idl_parser.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object CMakeFiles/flatc.dir/src/idl_parser.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatc.dir/src/idl_parser.cpp.o -c /home/alain/flatbuffers/src/idl_parser.cpp
-
-CMakeFiles/flatc.dir/src/idl_parser.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatc.dir/src/idl_parser.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/idl_parser.cpp > CMakeFiles/flatc.dir/src/idl_parser.cpp.i
-
-CMakeFiles/flatc.dir/src/idl_parser.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatc.dir/src/idl_parser.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/idl_parser.cpp -o CMakeFiles/flatc.dir/src/idl_parser.cpp.s
-
-CMakeFiles/flatc.dir/src/idl_parser.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatc.dir/src/idl_parser.cpp.o.requires
-
-CMakeFiles/flatc.dir/src/idl_parser.cpp.o.provides: CMakeFiles/flatc.dir/src/idl_parser.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_parser.cpp.o.provides.build
-.PHONY : CMakeFiles/flatc.dir/src/idl_parser.cpp.o.provides
-
-CMakeFiles/flatc.dir/src/idl_parser.cpp.o.provides.build: CMakeFiles/flatc.dir/src/idl_parser.cpp.o
-
-
-CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o: CMakeFiles/flatc.dir/flags.make
-CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o: src/idl_gen_text.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o -c /home/alain/flatbuffers/src/idl_gen_text.cpp
-
-CMakeFiles/flatc.dir/src/idl_gen_text.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatc.dir/src/idl_gen_text.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/idl_gen_text.cpp > CMakeFiles/flatc.dir/src/idl_gen_text.cpp.i
-
-CMakeFiles/flatc.dir/src/idl_gen_text.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatc.dir/src/idl_gen_text.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/idl_gen_text.cpp -o CMakeFiles/flatc.dir/src/idl_gen_text.cpp.s
-
-CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o.requires
-
-CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o.provides: CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o.provides.build
-.PHONY : CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o.provides
-
-CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o.provides.build: CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o
-
-
-CMakeFiles/flatc.dir/src/reflection.cpp.o: CMakeFiles/flatc.dir/flags.make
-CMakeFiles/flatc.dir/src/reflection.cpp.o: src/reflection.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object CMakeFiles/flatc.dir/src/reflection.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatc.dir/src/reflection.cpp.o -c /home/alain/flatbuffers/src/reflection.cpp
-
-CMakeFiles/flatc.dir/src/reflection.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatc.dir/src/reflection.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/reflection.cpp > CMakeFiles/flatc.dir/src/reflection.cpp.i
-
-CMakeFiles/flatc.dir/src/reflection.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatc.dir/src/reflection.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/reflection.cpp -o CMakeFiles/flatc.dir/src/reflection.cpp.s
-
-CMakeFiles/flatc.dir/src/reflection.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatc.dir/src/reflection.cpp.o.requires
-
-CMakeFiles/flatc.dir/src/reflection.cpp.o.provides: CMakeFiles/flatc.dir/src/reflection.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/reflection.cpp.o.provides.build
-.PHONY : CMakeFiles/flatc.dir/src/reflection.cpp.o.provides
-
-CMakeFiles/flatc.dir/src/reflection.cpp.o.provides.build: CMakeFiles/flatc.dir/src/reflection.cpp.o
-
-
-CMakeFiles/flatc.dir/src/util.cpp.o: CMakeFiles/flatc.dir/flags.make
-CMakeFiles/flatc.dir/src/util.cpp.o: src/util.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building CXX object CMakeFiles/flatc.dir/src/util.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatc.dir/src/util.cpp.o -c /home/alain/flatbuffers/src/util.cpp
-
-CMakeFiles/flatc.dir/src/util.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatc.dir/src/util.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/util.cpp > CMakeFiles/flatc.dir/src/util.cpp.i
-
-CMakeFiles/flatc.dir/src/util.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatc.dir/src/util.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/util.cpp -o CMakeFiles/flatc.dir/src/util.cpp.s
-
-CMakeFiles/flatc.dir/src/util.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatc.dir/src/util.cpp.o.requires
-
-CMakeFiles/flatc.dir/src/util.cpp.o.provides: CMakeFiles/flatc.dir/src/util.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/util.cpp.o.provides.build
-.PHONY : CMakeFiles/flatc.dir/src/util.cpp.o.provides
-
-CMakeFiles/flatc.dir/src/util.cpp.o.provides.build: CMakeFiles/flatc.dir/src/util.cpp.o
-
-
-CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o: CMakeFiles/flatc.dir/flags.make
-CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o: src/idl_gen_cpp.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building CXX object CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o -c /home/alain/flatbuffers/src/idl_gen_cpp.cpp
-
-CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/idl_gen_cpp.cpp > CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.i
-
-CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/idl_gen_cpp.cpp -o CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.s
-
-CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o.requires
-
-CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o.provides: CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o.provides.build
-.PHONY : CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o.provides
-
-CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o.provides.build: CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o
-
-
-CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o: CMakeFiles/flatc.dir/flags.make
-CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o: src/idl_gen_general.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building CXX object CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o -c /home/alain/flatbuffers/src/idl_gen_general.cpp
-
-CMakeFiles/flatc.dir/src/idl_gen_general.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatc.dir/src/idl_gen_general.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/idl_gen_general.cpp > CMakeFiles/flatc.dir/src/idl_gen_general.cpp.i
-
-CMakeFiles/flatc.dir/src/idl_gen_general.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatc.dir/src/idl_gen_general.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/idl_gen_general.cpp -o CMakeFiles/flatc.dir/src/idl_gen_general.cpp.s
-
-CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o.requires
-
-CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o.provides: CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o.provides.build
-.PHONY : CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o.provides
-
-CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o.provides.build: CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o
-
-
-CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o: CMakeFiles/flatc.dir/flags.make
-CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o: src/idl_gen_go.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building CXX object CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o -c /home/alain/flatbuffers/src/idl_gen_go.cpp
-
-CMakeFiles/flatc.dir/src/idl_gen_go.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatc.dir/src/idl_gen_go.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/idl_gen_go.cpp > CMakeFiles/flatc.dir/src/idl_gen_go.cpp.i
-
-CMakeFiles/flatc.dir/src/idl_gen_go.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatc.dir/src/idl_gen_go.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/idl_gen_go.cpp -o CMakeFiles/flatc.dir/src/idl_gen_go.cpp.s
-
-CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o.requires
-
-CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o.provides: CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o.provides.build
-.PHONY : CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o.provides
-
-CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o.provides.build: CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o
-
-
-CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o: CMakeFiles/flatc.dir/flags.make
-CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o: src/idl_gen_js.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Building CXX object CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o -c /home/alain/flatbuffers/src/idl_gen_js.cpp
-
-CMakeFiles/flatc.dir/src/idl_gen_js.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatc.dir/src/idl_gen_js.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/idl_gen_js.cpp > CMakeFiles/flatc.dir/src/idl_gen_js.cpp.i
-
-CMakeFiles/flatc.dir/src/idl_gen_js.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatc.dir/src/idl_gen_js.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/idl_gen_js.cpp -o CMakeFiles/flatc.dir/src/idl_gen_js.cpp.s
-
-CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o.requires
-
-CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o.provides: CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o.provides.build
-.PHONY : CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o.provides
-
-CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o.provides.build: CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o
-
-
-CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o: CMakeFiles/flatc.dir/flags.make
-CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o: src/idl_gen_php.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_10) "Building CXX object CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o -c /home/alain/flatbuffers/src/idl_gen_php.cpp
-
-CMakeFiles/flatc.dir/src/idl_gen_php.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatc.dir/src/idl_gen_php.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/idl_gen_php.cpp > CMakeFiles/flatc.dir/src/idl_gen_php.cpp.i
-
-CMakeFiles/flatc.dir/src/idl_gen_php.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatc.dir/src/idl_gen_php.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/idl_gen_php.cpp -o CMakeFiles/flatc.dir/src/idl_gen_php.cpp.s
-
-CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o.requires
-
-CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o.provides: CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o.provides.build
-.PHONY : CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o.provides
-
-CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o.provides.build: CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o
-
-
-CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o: CMakeFiles/flatc.dir/flags.make
-CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o: src/idl_gen_python.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_11) "Building CXX object CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o -c /home/alain/flatbuffers/src/idl_gen_python.cpp
-
-CMakeFiles/flatc.dir/src/idl_gen_python.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatc.dir/src/idl_gen_python.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/idl_gen_python.cpp > CMakeFiles/flatc.dir/src/idl_gen_python.cpp.i
-
-CMakeFiles/flatc.dir/src/idl_gen_python.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatc.dir/src/idl_gen_python.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/idl_gen_python.cpp -o CMakeFiles/flatc.dir/src/idl_gen_python.cpp.s
-
-CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o.requires
-
-CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o.provides: CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o.provides.build
-.PHONY : CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o.provides
-
-CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o.provides.build: CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o
-
-
-CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o: CMakeFiles/flatc.dir/flags.make
-CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o: src/idl_gen_fbs.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_12) "Building CXX object CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o -c /home/alain/flatbuffers/src/idl_gen_fbs.cpp
-
-CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/idl_gen_fbs.cpp > CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.i
-
-CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/idl_gen_fbs.cpp -o CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.s
-
-CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o.requires
-
-CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o.provides: CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o.provides.build
-.PHONY : CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o.provides
-
-CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o.provides.build: CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o
-
-
-CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o: CMakeFiles/flatc.dir/flags.make
-CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o: src/idl_gen_grpc.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_13) "Building CXX object CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o -c /home/alain/flatbuffers/src/idl_gen_grpc.cpp
-
-CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/idl_gen_grpc.cpp > CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.i
-
-CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/idl_gen_grpc.cpp -o CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.s
-
-CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o.requires
-
-CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o.provides: CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o.provides.build
-.PHONY : CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o.provides
-
-CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o.provides.build: CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o
-
-
-CMakeFiles/flatc.dir/src/flatc.cpp.o: CMakeFiles/flatc.dir/flags.make
-CMakeFiles/flatc.dir/src/flatc.cpp.o: src/flatc.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_14) "Building CXX object CMakeFiles/flatc.dir/src/flatc.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatc.dir/src/flatc.cpp.o -c /home/alain/flatbuffers/src/flatc.cpp
-
-CMakeFiles/flatc.dir/src/flatc.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatc.dir/src/flatc.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/flatc.cpp > CMakeFiles/flatc.dir/src/flatc.cpp.i
-
-CMakeFiles/flatc.dir/src/flatc.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatc.dir/src/flatc.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/flatc.cpp -o CMakeFiles/flatc.dir/src/flatc.cpp.s
-
-CMakeFiles/flatc.dir/src/flatc.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatc.dir/src/flatc.cpp.o.requires
-
-CMakeFiles/flatc.dir/src/flatc.cpp.o.provides: CMakeFiles/flatc.dir/src/flatc.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/flatc.cpp.o.provides.build
-.PHONY : CMakeFiles/flatc.dir/src/flatc.cpp.o.provides
-
-CMakeFiles/flatc.dir/src/flatc.cpp.o.provides.build: CMakeFiles/flatc.dir/src/flatc.cpp.o
-
-
-CMakeFiles/flatc.dir/src/flatc_main.cpp.o: CMakeFiles/flatc.dir/flags.make
-CMakeFiles/flatc.dir/src/flatc_main.cpp.o: src/flatc_main.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_15) "Building CXX object CMakeFiles/flatc.dir/src/flatc_main.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatc.dir/src/flatc_main.cpp.o -c /home/alain/flatbuffers/src/flatc_main.cpp
-
-CMakeFiles/flatc.dir/src/flatc_main.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatc.dir/src/flatc_main.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/flatc_main.cpp > CMakeFiles/flatc.dir/src/flatc_main.cpp.i
-
-CMakeFiles/flatc.dir/src/flatc_main.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatc.dir/src/flatc_main.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/flatc_main.cpp -o CMakeFiles/flatc.dir/src/flatc_main.cpp.s
-
-CMakeFiles/flatc.dir/src/flatc_main.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatc.dir/src/flatc_main.cpp.o.requires
-
-CMakeFiles/flatc.dir/src/flatc_main.cpp.o.provides: CMakeFiles/flatc.dir/src/flatc_main.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/flatc_main.cpp.o.provides.build
-.PHONY : CMakeFiles/flatc.dir/src/flatc_main.cpp.o.provides
-
-CMakeFiles/flatc.dir/src/flatc_main.cpp.o.provides.build: CMakeFiles/flatc.dir/src/flatc_main.cpp.o
-
-
-CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o: CMakeFiles/flatc.dir/flags.make
-CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o: grpc/src/compiler/cpp_generator.cc
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_16) "Building CXX object CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o -c /home/alain/flatbuffers/grpc/src/compiler/cpp_generator.cc
-
-CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/grpc/src/compiler/cpp_generator.cc > CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.i
-
-CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/grpc/src/compiler/cpp_generator.cc -o CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.s
-
-CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o.requires:
-
-.PHONY : CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o.requires
-
-CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o.provides: CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o.requires
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o.provides.build
-.PHONY : CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o.provides
-
-CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o.provides.build: CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o
-
-
-CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o: CMakeFiles/flatc.dir/flags.make
-CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o: grpc/src/compiler/go_generator.cc
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_17) "Building CXX object CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o -c /home/alain/flatbuffers/grpc/src/compiler/go_generator.cc
-
-CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/grpc/src/compiler/go_generator.cc > CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.i
-
-CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/grpc/src/compiler/go_generator.cc -o CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.s
-
-CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o.requires:
-
-.PHONY : CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o.requires
-
-CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o.provides: CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o.requires
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o.provides.build
-.PHONY : CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o.provides
-
-CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o.provides.build: CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o
-
-
-# Object files for target flatc
-flatc_OBJECTS = \
-"CMakeFiles/flatc.dir/src/code_generators.cpp.o" \
-"CMakeFiles/flatc.dir/src/idl_parser.cpp.o" \
-"CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o" \
-"CMakeFiles/flatc.dir/src/reflection.cpp.o" \
-"CMakeFiles/flatc.dir/src/util.cpp.o" \
-"CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o" \
-"CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o" \
-"CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o" \
-"CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o" \
-"CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o" \
-"CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o" \
-"CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o" \
-"CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o" \
-"CMakeFiles/flatc.dir/src/flatc.cpp.o" \
-"CMakeFiles/flatc.dir/src/flatc_main.cpp.o" \
-"CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o" \
-"CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o"
-
-# External object files for target flatc
-flatc_EXTERNAL_OBJECTS =
-
-flatc: CMakeFiles/flatc.dir/src/code_generators.cpp.o
-flatc: CMakeFiles/flatc.dir/src/idl_parser.cpp.o
-flatc: CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o
-flatc: CMakeFiles/flatc.dir/src/reflection.cpp.o
-flatc: CMakeFiles/flatc.dir/src/util.cpp.o
-flatc: CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o
-flatc: CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o
-flatc: CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o
-flatc: CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o
-flatc: CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o
-flatc: CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o
-flatc: CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o
-flatc: CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o
-flatc: CMakeFiles/flatc.dir/src/flatc.cpp.o
-flatc: CMakeFiles/flatc.dir/src/flatc_main.cpp.o
-flatc: CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o
-flatc: CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o
-flatc: CMakeFiles/flatc.dir/build.make
-flatc: CMakeFiles/flatc.dir/link.txt
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_18) "Linking CXX executable flatc"
- $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/flatc.dir/link.txt --verbose=$(VERBOSE)
-
-# Rule to build all files generated by this target.
-CMakeFiles/flatc.dir/build: flatc
-
-.PHONY : CMakeFiles/flatc.dir/build
-
-CMakeFiles/flatc.dir/requires: CMakeFiles/flatc.dir/src/code_generators.cpp.o.requires
-CMakeFiles/flatc.dir/requires: CMakeFiles/flatc.dir/src/idl_parser.cpp.o.requires
-CMakeFiles/flatc.dir/requires: CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o.requires
-CMakeFiles/flatc.dir/requires: CMakeFiles/flatc.dir/src/reflection.cpp.o.requires
-CMakeFiles/flatc.dir/requires: CMakeFiles/flatc.dir/src/util.cpp.o.requires
-CMakeFiles/flatc.dir/requires: CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o.requires
-CMakeFiles/flatc.dir/requires: CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o.requires
-CMakeFiles/flatc.dir/requires: CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o.requires
-CMakeFiles/flatc.dir/requires: CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o.requires
-CMakeFiles/flatc.dir/requires: CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o.requires
-CMakeFiles/flatc.dir/requires: CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o.requires
-CMakeFiles/flatc.dir/requires: CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o.requires
-CMakeFiles/flatc.dir/requires: CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o.requires
-CMakeFiles/flatc.dir/requires: CMakeFiles/flatc.dir/src/flatc.cpp.o.requires
-CMakeFiles/flatc.dir/requires: CMakeFiles/flatc.dir/src/flatc_main.cpp.o.requires
-CMakeFiles/flatc.dir/requires: CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o.requires
-CMakeFiles/flatc.dir/requires: CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o.requires
-
-.PHONY : CMakeFiles/flatc.dir/requires
-
-CMakeFiles/flatc.dir/clean:
- $(CMAKE_COMMAND) -P CMakeFiles/flatc.dir/cmake_clean.cmake
-.PHONY : CMakeFiles/flatc.dir/clean
-
-CMakeFiles/flatc.dir/depend:
- cd /home/alain/flatbuffers && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/alain/flatbuffers /home/alain/flatbuffers /home/alain/flatbuffers /home/alain/flatbuffers /home/alain/flatbuffers/CMakeFiles/flatc.dir/DependInfo.cmake --color=$(COLOR)
-.PHONY : CMakeFiles/flatc.dir/depend
-
diff --git a/third_party/flatbuffers/CMakeFiles/flatc.dir/cmake_clean.cmake b/third_party/flatbuffers/CMakeFiles/flatc.dir/cmake_clean.cmake
deleted file mode 100644
index 8bae0d8..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatc.dir/cmake_clean.cmake
+++ /dev/null
@@ -1,26 +0,0 @@
-file(REMOVE_RECURSE
- "CMakeFiles/flatc.dir/src/code_generators.cpp.o"
- "CMakeFiles/flatc.dir/src/idl_parser.cpp.o"
- "CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o"
- "CMakeFiles/flatc.dir/src/reflection.cpp.o"
- "CMakeFiles/flatc.dir/src/util.cpp.o"
- "CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o"
- "CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o"
- "CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o"
- "CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o"
- "CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o"
- "CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o"
- "CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o"
- "CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o"
- "CMakeFiles/flatc.dir/src/flatc.cpp.o"
- "CMakeFiles/flatc.dir/src/flatc_main.cpp.o"
- "CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o"
- "CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o"
- "flatc.pdb"
- "flatc"
-)
-
-# Per-language clean rules from dependency scanning.
-foreach(lang CXX)
- include(CMakeFiles/flatc.dir/cmake_clean_${lang}.cmake OPTIONAL)
-endforeach()
diff --git a/third_party/flatbuffers/CMakeFiles/flatc.dir/depend.internal b/third_party/flatbuffers/CMakeFiles/flatc.dir/depend.internal
deleted file mode 100644
index 1ffab00..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatc.dir/depend.internal
+++ /dev/null
@@ -1,139 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o
- /home/alain/flatbuffers/grpc/src/compiler/cpp_generator.cc
- grpc/src/compiler/cpp_generator.h
- grpc/src/compiler/schema_interface.h
-CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o
- /home/alain/flatbuffers/grpc/src/compiler/go_generator.cc
- grpc/src/compiler/go_generator.h
- grpc/src/compiler/schema_interface.h
-CMakeFiles/flatc.dir/src/code_generators.cpp.o
- /home/alain/flatbuffers/src/code_generators.cpp
- include/flatbuffers/code_generators.h
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatc.dir/src/flatc.cpp.o
- /home/alain/flatbuffers/src/flatc.cpp
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/flatc.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatc.dir/src/flatc_main.cpp.o
- /home/alain/flatbuffers/src/flatc_main.cpp
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/flatc.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o
- /home/alain/flatbuffers/src/idl_gen_cpp.cpp
- include/flatbuffers/code_generators.h
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o
- /home/alain/flatbuffers/src/idl_gen_fbs.cpp
- include/flatbuffers/code_generators.h
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o
- /home/alain/flatbuffers/src/idl_gen_general.cpp
- include/flatbuffers/code_generators.h
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o
- /home/alain/flatbuffers/src/idl_gen_go.cpp
- include/flatbuffers/code_generators.h
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o
- /home/alain/flatbuffers/src/idl_gen_grpc.cpp
- grpc/src/compiler/cpp_generator.h
- grpc/src/compiler/go_generator.h
- grpc/src/compiler/schema_interface.h
- include/flatbuffers/code_generators.h
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o
- /home/alain/flatbuffers/src/idl_gen_js.cpp
- include/flatbuffers/code_generators.h
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o
- /home/alain/flatbuffers/src/idl_gen_php.cpp
- include/flatbuffers/code_generators.h
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o
- /home/alain/flatbuffers/src/idl_gen_python.cpp
- include/flatbuffers/code_generators.h
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o
- /home/alain/flatbuffers/src/idl_gen_text.cpp
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatc.dir/src/idl_parser.cpp.o
- /home/alain/flatbuffers/src/idl_parser.cpp
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatc.dir/src/reflection.cpp.o
- /home/alain/flatbuffers/src/reflection.cpp
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatc.dir/src/util.cpp.o
- /home/alain/flatbuffers/src/util.cpp
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/util.h
diff --git a/third_party/flatbuffers/CMakeFiles/flatc.dir/depend.make b/third_party/flatbuffers/CMakeFiles/flatc.dir/depend.make
deleted file mode 100644
index 157b490..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatc.dir/depend.make
+++ /dev/null
@@ -1,139 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o: grpc/src/compiler/cpp_generator.cc
-CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o: grpc/src/compiler/cpp_generator.h
-CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o: grpc/src/compiler/schema_interface.h
-
-CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o: grpc/src/compiler/go_generator.cc
-CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o: grpc/src/compiler/go_generator.h
-CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o: grpc/src/compiler/schema_interface.h
-
-CMakeFiles/flatc.dir/src/code_generators.cpp.o: src/code_generators.cpp
-CMakeFiles/flatc.dir/src/code_generators.cpp.o: include/flatbuffers/code_generators.h
-CMakeFiles/flatc.dir/src/code_generators.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatc.dir/src/code_generators.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flatc.dir/src/code_generators.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flatc.dir/src/code_generators.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatc.dir/src/code_generators.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatc.dir/src/code_generators.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatc.dir/src/flatc.cpp.o: src/flatc.cpp
-CMakeFiles/flatc.dir/src/flatc.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatc.dir/src/flatc.cpp.o: include/flatbuffers/flatc.h
-CMakeFiles/flatc.dir/src/flatc.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flatc.dir/src/flatc.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flatc.dir/src/flatc.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatc.dir/src/flatc.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatc.dir/src/flatc.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatc.dir/src/flatc_main.cpp.o: src/flatc_main.cpp
-CMakeFiles/flatc.dir/src/flatc_main.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatc.dir/src/flatc_main.cpp.o: include/flatbuffers/flatc.h
-CMakeFiles/flatc.dir/src/flatc_main.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flatc.dir/src/flatc_main.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flatc.dir/src/flatc_main.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatc.dir/src/flatc_main.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatc.dir/src/flatc_main.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o: src/idl_gen_cpp.cpp
-CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o: include/flatbuffers/code_generators.h
-CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o: src/idl_gen_fbs.cpp
-CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o: include/flatbuffers/code_generators.h
-CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o: src/idl_gen_general.cpp
-CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o: include/flatbuffers/code_generators.h
-CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o: src/idl_gen_go.cpp
-CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o: include/flatbuffers/code_generators.h
-CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o: src/idl_gen_grpc.cpp
-CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o: grpc/src/compiler/cpp_generator.h
-CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o: grpc/src/compiler/go_generator.h
-CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o: grpc/src/compiler/schema_interface.h
-CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o: include/flatbuffers/code_generators.h
-CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o: src/idl_gen_js.cpp
-CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o: include/flatbuffers/code_generators.h
-CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o: src/idl_gen_php.cpp
-CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o: include/flatbuffers/code_generators.h
-CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o: src/idl_gen_python.cpp
-CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o: include/flatbuffers/code_generators.h
-CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o: src/idl_gen_text.cpp
-CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatc.dir/src/idl_parser.cpp.o: src/idl_parser.cpp
-CMakeFiles/flatc.dir/src/idl_parser.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatc.dir/src/idl_parser.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flatc.dir/src/idl_parser.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flatc.dir/src/idl_parser.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatc.dir/src/idl_parser.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatc.dir/src/idl_parser.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatc.dir/src/reflection.cpp.o: src/reflection.cpp
-CMakeFiles/flatc.dir/src/reflection.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatc.dir/src/reflection.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatc.dir/src/reflection.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatc.dir/src/reflection.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatc.dir/src/util.cpp.o: src/util.cpp
-CMakeFiles/flatc.dir/src/util.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatc.dir/src/util.cpp.o: include/flatbuffers/util.h
-
diff --git a/third_party/flatbuffers/CMakeFiles/flatc.dir/flags.make b/third_party/flatbuffers/CMakeFiles/flatc.dir/flags.make
deleted file mode 100644
index 6fddb3a..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatc.dir/flags.make
+++ /dev/null
@@ -1,10 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-# compile CXX with /usr/bin/c++
-CXX_FLAGS = -std=c++0x -Wall -pedantic -Werror -Wextra -Werror=shadow -fsigned-char
-
-CXX_DEFINES =
-
-CXX_INCLUDES = -I/home/alain/flatbuffers/include -I/home/alain/flatbuffers/grpc -I/home/alain/flatbuffers/tests -I/home/alain/flatbuffers/samples
-
diff --git a/third_party/flatbuffers/CMakeFiles/flatc.dir/link.txt b/third_party/flatbuffers/CMakeFiles/flatc.dir/link.txt
deleted file mode 100644
index 44501a3..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatc.dir/link.txt
+++ /dev/null
@@ -1 +0,0 @@
-/usr/bin/c++ -std=c++0x -Wall -pedantic -Werror -Wextra -Werror=shadow -fsigned-char CMakeFiles/flatc.dir/src/code_generators.cpp.o CMakeFiles/flatc.dir/src/idl_parser.cpp.o CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o CMakeFiles/flatc.dir/src/reflection.cpp.o CMakeFiles/flatc.dir/src/util.cpp.o CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o CMakeFiles/flatc.dir/src/flatc.cpp.o CMakeFiles/flatc.dir/src/flatc_main.cpp.o CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o -o flatc -rdynamic
diff --git a/third_party/flatbuffers/CMakeFiles/flatc.dir/progress.make b/third_party/flatbuffers/CMakeFiles/flatc.dir/progress.make
deleted file mode 100644
index 47ef266..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatc.dir/progress.make
+++ /dev/null
@@ -1,19 +0,0 @@
-CMAKE_PROGRESS_1 = 7
-CMAKE_PROGRESS_2 = 8
-CMAKE_PROGRESS_3 = 9
-CMAKE_PROGRESS_4 = 10
-CMAKE_PROGRESS_5 = 11
-CMAKE_PROGRESS_6 = 12
-CMAKE_PROGRESS_7 = 13
-CMAKE_PROGRESS_8 = 14
-CMAKE_PROGRESS_9 = 15
-CMAKE_PROGRESS_10 = 16
-CMAKE_PROGRESS_11 = 17
-CMAKE_PROGRESS_12 = 18
-CMAKE_PROGRESS_13 = 19
-CMAKE_PROGRESS_14 = 20
-CMAKE_PROGRESS_15 = 21
-CMAKE_PROGRESS_16 = 22
-CMAKE_PROGRESS_17 = 23
-CMAKE_PROGRESS_18 = 24
-
diff --git a/third_party/flatbuffers/CMakeFiles/flathash.dir/CXX.includecache b/third_party/flatbuffers/CMakeFiles/flathash.dir/CXX.includecache
deleted file mode 100644
index 0136ce9..0000000
--- a/third_party/flatbuffers/CMakeFiles/flathash.dir/CXX.includecache
+++ /dev/null
@@ -1,58 +0,0 @@
-#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">])
-
-#IncludeRegexScan: ^.*$
-
-#IncludeRegexComplain: ^$
-
-#IncludeRegexTransform:
-
-/home/alain/flatbuffers/src/flathash.cpp
-iostream
--
-sstream
--
-string
--
-flatbuffers/hash.h
-/home/alain/flatbuffers/src/flatbuffers/hash.h
-stdio.h
--
-
-include/flatbuffers/flatbuffers.h
-assert.h
--
-cstdint
--
-cstddef
--
-cstdlib
--
-cstring
--
-string
--
-utility
--
-utility.h
--
-type_traits
--
-vector
--
-set
--
-algorithm
--
-memory
--
-functional
--
-
-include/flatbuffers/hash.h
-cstdint
--
-cstring
--
-flatbuffers/flatbuffers.h
-include/flatbuffers/flatbuffers/flatbuffers.h
-
diff --git a/third_party/flatbuffers/CMakeFiles/flathash.dir/DependInfo.cmake b/third_party/flatbuffers/CMakeFiles/flathash.dir/DependInfo.cmake
deleted file mode 100644
index e4553be..0000000
--- a/third_party/flatbuffers/CMakeFiles/flathash.dir/DependInfo.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-# The set of languages for which implicit dependencies are needed:
-set(CMAKE_DEPENDS_LANGUAGES
- "CXX"
- )
-# The set of files for implicit dependencies of each language:
-set(CMAKE_DEPENDS_CHECK_CXX
- "/home/alain/flatbuffers/src/flathash.cpp" "/home/alain/flatbuffers/CMakeFiles/flathash.dir/src/flathash.cpp.o"
- )
-set(CMAKE_CXX_COMPILER_ID "GNU")
-
-# The include file search paths:
-set(CMAKE_CXX_TARGET_INCLUDE_PATH
- "include"
- "grpc"
- "tests"
- "samples"
- )
-
-# Targets to which this target links.
-set(CMAKE_TARGET_LINKED_INFO_FILES
- )
-
-# Fortran module output directory.
-set(CMAKE_Fortran_TARGET_MODULE_DIR "")
diff --git a/third_party/flatbuffers/CMakeFiles/flathash.dir/build.make b/third_party/flatbuffers/CMakeFiles/flathash.dir/build.make
deleted file mode 100644
index a76bbfb..0000000
--- a/third_party/flatbuffers/CMakeFiles/flathash.dir/build.make
+++ /dev/null
@@ -1,113 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-# Delete rule output on recipe failure.
-.DELETE_ON_ERROR:
-
-
-#=============================================================================
-# Special targets provided by cmake.
-
-# Disable implicit rules so canonical targets will work.
-.SUFFIXES:
-
-
-# Remove some rules from gmake that .SUFFIXES does not remove.
-SUFFIXES =
-
-.SUFFIXES: .hpux_make_needs_suffix_list
-
-
-# Suppress display of executed commands.
-$(VERBOSE).SILENT:
-
-
-# A target that is always out of date.
-cmake_force:
-
-.PHONY : cmake_force
-
-#=============================================================================
-# Set environment variables for the build.
-
-# The shell in which to execute make rules.
-SHELL = /bin/sh
-
-# The CMake executable.
-CMAKE_COMMAND = /usr/bin/cmake
-
-# The command to remove a file.
-RM = /usr/bin/cmake -E remove -f
-
-# Escaping for special characters.
-EQUALS = =
-
-# The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /home/alain/flatbuffers
-
-# The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /home/alain/flatbuffers
-
-# Include any dependencies generated for this target.
-include CMakeFiles/flathash.dir/depend.make
-
-# Include the progress variables for this target.
-include CMakeFiles/flathash.dir/progress.make
-
-# Include the compile flags for this target's objects.
-include CMakeFiles/flathash.dir/flags.make
-
-CMakeFiles/flathash.dir/src/flathash.cpp.o: CMakeFiles/flathash.dir/flags.make
-CMakeFiles/flathash.dir/src/flathash.cpp.o: src/flathash.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object CMakeFiles/flathash.dir/src/flathash.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flathash.dir/src/flathash.cpp.o -c /home/alain/flatbuffers/src/flathash.cpp
-
-CMakeFiles/flathash.dir/src/flathash.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flathash.dir/src/flathash.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/flathash.cpp > CMakeFiles/flathash.dir/src/flathash.cpp.i
-
-CMakeFiles/flathash.dir/src/flathash.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flathash.dir/src/flathash.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/flathash.cpp -o CMakeFiles/flathash.dir/src/flathash.cpp.s
-
-CMakeFiles/flathash.dir/src/flathash.cpp.o.requires:
-
-.PHONY : CMakeFiles/flathash.dir/src/flathash.cpp.o.requires
-
-CMakeFiles/flathash.dir/src/flathash.cpp.o.provides: CMakeFiles/flathash.dir/src/flathash.cpp.o.requires
- $(MAKE) -f CMakeFiles/flathash.dir/build.make CMakeFiles/flathash.dir/src/flathash.cpp.o.provides.build
-.PHONY : CMakeFiles/flathash.dir/src/flathash.cpp.o.provides
-
-CMakeFiles/flathash.dir/src/flathash.cpp.o.provides.build: CMakeFiles/flathash.dir/src/flathash.cpp.o
-
-
-# Object files for target flathash
-flathash_OBJECTS = \
-"CMakeFiles/flathash.dir/src/flathash.cpp.o"
-
-# External object files for target flathash
-flathash_EXTERNAL_OBJECTS =
-
-flathash: CMakeFiles/flathash.dir/src/flathash.cpp.o
-flathash: CMakeFiles/flathash.dir/build.make
-flathash: CMakeFiles/flathash.dir/link.txt
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking CXX executable flathash"
- $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/flathash.dir/link.txt --verbose=$(VERBOSE)
-
-# Rule to build all files generated by this target.
-CMakeFiles/flathash.dir/build: flathash
-
-.PHONY : CMakeFiles/flathash.dir/build
-
-CMakeFiles/flathash.dir/requires: CMakeFiles/flathash.dir/src/flathash.cpp.o.requires
-
-.PHONY : CMakeFiles/flathash.dir/requires
-
-CMakeFiles/flathash.dir/clean:
- $(CMAKE_COMMAND) -P CMakeFiles/flathash.dir/cmake_clean.cmake
-.PHONY : CMakeFiles/flathash.dir/clean
-
-CMakeFiles/flathash.dir/depend:
- cd /home/alain/flatbuffers && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/alain/flatbuffers /home/alain/flatbuffers /home/alain/flatbuffers /home/alain/flatbuffers /home/alain/flatbuffers/CMakeFiles/flathash.dir/DependInfo.cmake --color=$(COLOR)
-.PHONY : CMakeFiles/flathash.dir/depend
-
diff --git a/third_party/flatbuffers/CMakeFiles/flathash.dir/cmake_clean.cmake b/third_party/flatbuffers/CMakeFiles/flathash.dir/cmake_clean.cmake
deleted file mode 100644
index d0f3575..0000000
--- a/third_party/flatbuffers/CMakeFiles/flathash.dir/cmake_clean.cmake
+++ /dev/null
@@ -1,10 +0,0 @@
-file(REMOVE_RECURSE
- "CMakeFiles/flathash.dir/src/flathash.cpp.o"
- "flathash.pdb"
- "flathash"
-)
-
-# Per-language clean rules from dependency scanning.
-foreach(lang CXX)
- include(CMakeFiles/flathash.dir/cmake_clean_${lang}.cmake OPTIONAL)
-endforeach()
diff --git a/third_party/flatbuffers/CMakeFiles/flathash.dir/depend.internal b/third_party/flatbuffers/CMakeFiles/flathash.dir/depend.internal
deleted file mode 100644
index 1d1d1fc..0000000
--- a/third_party/flatbuffers/CMakeFiles/flathash.dir/depend.internal
+++ /dev/null
@@ -1,7 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-CMakeFiles/flathash.dir/src/flathash.cpp.o
- /home/alain/flatbuffers/src/flathash.cpp
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
diff --git a/third_party/flatbuffers/CMakeFiles/flathash.dir/depend.make b/third_party/flatbuffers/CMakeFiles/flathash.dir/depend.make
deleted file mode 100644
index 9d33014..0000000
--- a/third_party/flatbuffers/CMakeFiles/flathash.dir/depend.make
+++ /dev/null
@@ -1,7 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-CMakeFiles/flathash.dir/src/flathash.cpp.o: src/flathash.cpp
-CMakeFiles/flathash.dir/src/flathash.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flathash.dir/src/flathash.cpp.o: include/flatbuffers/hash.h
-
diff --git a/third_party/flatbuffers/CMakeFiles/flathash.dir/flags.make b/third_party/flatbuffers/CMakeFiles/flathash.dir/flags.make
deleted file mode 100644
index 6fddb3a..0000000
--- a/third_party/flatbuffers/CMakeFiles/flathash.dir/flags.make
+++ /dev/null
@@ -1,10 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-# compile CXX with /usr/bin/c++
-CXX_FLAGS = -std=c++0x -Wall -pedantic -Werror -Wextra -Werror=shadow -fsigned-char
-
-CXX_DEFINES =
-
-CXX_INCLUDES = -I/home/alain/flatbuffers/include -I/home/alain/flatbuffers/grpc -I/home/alain/flatbuffers/tests -I/home/alain/flatbuffers/samples
-
diff --git a/third_party/flatbuffers/CMakeFiles/flathash.dir/link.txt b/third_party/flatbuffers/CMakeFiles/flathash.dir/link.txt
deleted file mode 100644
index 33d528f..0000000
--- a/third_party/flatbuffers/CMakeFiles/flathash.dir/link.txt
+++ /dev/null
@@ -1 +0,0 @@
-/usr/bin/c++ -std=c++0x -Wall -pedantic -Werror -Wextra -Werror=shadow -fsigned-char CMakeFiles/flathash.dir/src/flathash.cpp.o -o flathash -rdynamic
diff --git a/third_party/flatbuffers/CMakeFiles/flathash.dir/progress.make b/third_party/flatbuffers/CMakeFiles/flathash.dir/progress.make
deleted file mode 100644
index 9fd0bf5..0000000
--- a/third_party/flatbuffers/CMakeFiles/flathash.dir/progress.make
+++ /dev/null
@@ -1,3 +0,0 @@
-CMAKE_PROGRESS_1 = 25
-CMAKE_PROGRESS_2 = 26
-
diff --git a/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/CXX.includecache b/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/CXX.includecache
deleted file mode 100644
index 7e2a58c..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/CXX.includecache
+++ /dev/null
@@ -1,46 +0,0 @@
-#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">])
-
-#IncludeRegexScan: ^.*$
-
-#IncludeRegexComplain: ^$
-
-#IncludeRegexTransform:
-
-/home/alain/flatbuffers/samples/monster_generated.h
-flatbuffers/flatbuffers.h
-/home/alain/flatbuffers/samples/flatbuffers/flatbuffers.h
-
-/home/alain/flatbuffers/samples/sample_binary.cpp
-monster_generated.h
-/home/alain/flatbuffers/samples/monster_generated.h
-
-include/flatbuffers/flatbuffers.h
-assert.h
--
-cstdint
--
-cstddef
--
-cstdlib
--
-cstring
--
-string
--
-utility
--
-utility.h
--
-type_traits
--
-vector
--
-set
--
-algorithm
--
-memory
--
-functional
--
-
diff --git a/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/DependInfo.cmake b/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/DependInfo.cmake
deleted file mode 100644
index 7e9a1cf..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/DependInfo.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-# The set of languages for which implicit dependencies are needed:
-set(CMAKE_DEPENDS_LANGUAGES
- "CXX"
- )
-# The set of files for implicit dependencies of each language:
-set(CMAKE_DEPENDS_CHECK_CXX
- "/home/alain/flatbuffers/samples/sample_binary.cpp" "/home/alain/flatbuffers/CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o"
- )
-set(CMAKE_CXX_COMPILER_ID "GNU")
-
-# The include file search paths:
-set(CMAKE_CXX_TARGET_INCLUDE_PATH
- "include"
- "grpc"
- "tests"
- "samples"
- )
-
-# Targets to which this target links.
-set(CMAKE_TARGET_LINKED_INFO_FILES
- )
-
-# Fortran module output directory.
-set(CMAKE_Fortran_TARGET_MODULE_DIR "")
diff --git a/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/build.make b/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/build.make
deleted file mode 100644
index ebb08c6..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/build.make
+++ /dev/null
@@ -1,117 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-# Delete rule output on recipe failure.
-.DELETE_ON_ERROR:
-
-
-#=============================================================================
-# Special targets provided by cmake.
-
-# Disable implicit rules so canonical targets will work.
-.SUFFIXES:
-
-
-# Remove some rules from gmake that .SUFFIXES does not remove.
-SUFFIXES =
-
-.SUFFIXES: .hpux_make_needs_suffix_list
-
-
-# Suppress display of executed commands.
-$(VERBOSE).SILENT:
-
-
-# A target that is always out of date.
-cmake_force:
-
-.PHONY : cmake_force
-
-#=============================================================================
-# Set environment variables for the build.
-
-# The shell in which to execute make rules.
-SHELL = /bin/sh
-
-# The CMake executable.
-CMAKE_COMMAND = /usr/bin/cmake
-
-# The command to remove a file.
-RM = /usr/bin/cmake -E remove -f
-
-# Escaping for special characters.
-EQUALS = =
-
-# The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /home/alain/flatbuffers
-
-# The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /home/alain/flatbuffers
-
-# Include any dependencies generated for this target.
-include CMakeFiles/flatsamplebinary.dir/depend.make
-
-# Include the progress variables for this target.
-include CMakeFiles/flatsamplebinary.dir/progress.make
-
-# Include the compile flags for this target's objects.
-include CMakeFiles/flatsamplebinary.dir/flags.make
-
-samples/monster_generated.h: flatc
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Generating samples/monster_generated.h"
- ./flatc -c --no-includes --gen-mutable --gen-object-api -o samples /home/alain/flatbuffers/samples/monster.fbs
-
-CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o: CMakeFiles/flatsamplebinary.dir/flags.make
-CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o: samples/sample_binary.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o -c /home/alain/flatbuffers/samples/sample_binary.cpp
-
-CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/samples/sample_binary.cpp > CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.i
-
-CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/samples/sample_binary.cpp -o CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.s
-
-CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o.requires
-
-CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o.provides: CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatsamplebinary.dir/build.make CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o.provides.build
-.PHONY : CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o.provides
-
-CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o.provides.build: CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o
-
-
-# Object files for target flatsamplebinary
-flatsamplebinary_OBJECTS = \
-"CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o"
-
-# External object files for target flatsamplebinary
-flatsamplebinary_EXTERNAL_OBJECTS =
-
-flatsamplebinary: CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o
-flatsamplebinary: CMakeFiles/flatsamplebinary.dir/build.make
-flatsamplebinary: CMakeFiles/flatsamplebinary.dir/link.txt
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Linking CXX executable flatsamplebinary"
- $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/flatsamplebinary.dir/link.txt --verbose=$(VERBOSE)
-
-# Rule to build all files generated by this target.
-CMakeFiles/flatsamplebinary.dir/build: flatsamplebinary
-
-.PHONY : CMakeFiles/flatsamplebinary.dir/build
-
-CMakeFiles/flatsamplebinary.dir/requires: CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o.requires
-
-.PHONY : CMakeFiles/flatsamplebinary.dir/requires
-
-CMakeFiles/flatsamplebinary.dir/clean:
- $(CMAKE_COMMAND) -P CMakeFiles/flatsamplebinary.dir/cmake_clean.cmake
-.PHONY : CMakeFiles/flatsamplebinary.dir/clean
-
-CMakeFiles/flatsamplebinary.dir/depend: samples/monster_generated.h
- cd /home/alain/flatbuffers && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/alain/flatbuffers /home/alain/flatbuffers /home/alain/flatbuffers /home/alain/flatbuffers /home/alain/flatbuffers/CMakeFiles/flatsamplebinary.dir/DependInfo.cmake --color=$(COLOR)
-.PHONY : CMakeFiles/flatsamplebinary.dir/depend
-
diff --git a/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/cmake_clean.cmake b/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/cmake_clean.cmake
deleted file mode 100644
index b1d09e4..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/cmake_clean.cmake
+++ /dev/null
@@ -1,11 +0,0 @@
-file(REMOVE_RECURSE
- "samples/monster_generated.h"
- "CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o"
- "flatsamplebinary.pdb"
- "flatsamplebinary"
-)
-
-# Per-language clean rules from dependency scanning.
-foreach(lang CXX)
- include(CMakeFiles/flatsamplebinary.dir/cmake_clean_${lang}.cmake OPTIONAL)
-endforeach()
diff --git a/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/depend.internal b/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/depend.internal
deleted file mode 100644
index d13bbad..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/depend.internal
+++ /dev/null
@@ -1,7 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o
- /home/alain/flatbuffers/samples/monster_generated.h
- /home/alain/flatbuffers/samples/sample_binary.cpp
- include/flatbuffers/flatbuffers.h
diff --git a/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/depend.make b/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/depend.make
deleted file mode 100644
index 4717048..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/depend.make
+++ /dev/null
@@ -1,7 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o: samples/monster_generated.h
-CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o: samples/sample_binary.cpp
-CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o: include/flatbuffers/flatbuffers.h
-
diff --git a/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/flags.make b/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/flags.make
deleted file mode 100644
index 6fddb3a..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/flags.make
+++ /dev/null
@@ -1,10 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-# compile CXX with /usr/bin/c++
-CXX_FLAGS = -std=c++0x -Wall -pedantic -Werror -Wextra -Werror=shadow -fsigned-char
-
-CXX_DEFINES =
-
-CXX_INCLUDES = -I/home/alain/flatbuffers/include -I/home/alain/flatbuffers/grpc -I/home/alain/flatbuffers/tests -I/home/alain/flatbuffers/samples
-
diff --git a/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/link.txt b/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/link.txt
deleted file mode 100644
index 3fa33a2..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/link.txt
+++ /dev/null
@@ -1 +0,0 @@
-/usr/bin/c++ -std=c++0x -Wall -pedantic -Werror -Wextra -Werror=shadow -fsigned-char CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o -o flatsamplebinary -rdynamic
diff --git a/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/progress.make b/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/progress.make
deleted file mode 100644
index 3a30df4..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatsamplebinary.dir/progress.make
+++ /dev/null
@@ -1,4 +0,0 @@
-CMAKE_PROGRESS_1 = 27
-CMAKE_PROGRESS_2 = 28
-CMAKE_PROGRESS_3 = 29
-
diff --git a/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/CXX.includecache b/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/CXX.includecache
deleted file mode 100644
index 1d4bd2d..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/CXX.includecache
+++ /dev/null
@@ -1,158 +0,0 @@
-#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">])
-
-#IncludeRegexScan: ^.*$
-
-#IncludeRegexComplain: ^$
-
-#IncludeRegexTransform:
-
-/home/alain/flatbuffers/samples/monster_generated.h
-flatbuffers/flatbuffers.h
-/home/alain/flatbuffers/samples/flatbuffers/flatbuffers.h
-
-/home/alain/flatbuffers/samples/sample_text.cpp
-flatbuffers/idl.h
-/home/alain/flatbuffers/samples/flatbuffers/idl.h
-flatbuffers/util.h
-/home/alain/flatbuffers/samples/flatbuffers/util.h
-monster_generated.h
-/home/alain/flatbuffers/samples/monster_generated.h
-
-/home/alain/flatbuffers/src/code_generators.cpp
-flatbuffers/code_generators.h
-/home/alain/flatbuffers/src/flatbuffers/code_generators.h
-assert.h
--
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-
-/home/alain/flatbuffers/src/idl_gen_text.cpp
-flatbuffers/flatbuffers.h
-/home/alain/flatbuffers/src/flatbuffers/flatbuffers.h
-flatbuffers/idl.h
-/home/alain/flatbuffers/src/flatbuffers/idl.h
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-
-/home/alain/flatbuffers/src/idl_parser.cpp
-algorithm
--
-list
--
-math.h
--
-flatbuffers/idl.h
-/home/alain/flatbuffers/src/flatbuffers/idl.h
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-
-/home/alain/flatbuffers/src/reflection.cpp
-flatbuffers/reflection.h
-/home/alain/flatbuffers/src/flatbuffers/reflection.h
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-
-/home/alain/flatbuffers/src/util.cpp
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-
-include/flatbuffers/code_generators.h
-map
--
-sstream
--
-flatbuffers/idl.h
-include/flatbuffers/flatbuffers/idl.h
-
-include/flatbuffers/flatbuffers.h
-assert.h
--
-cstdint
--
-cstddef
--
-cstdlib
--
-cstring
--
-string
--
-utility
--
-utility.h
--
-type_traits
--
-vector
--
-set
--
-algorithm
--
-memory
--
-functional
--
-
-include/flatbuffers/hash.h
-cstdint
--
-cstring
--
-flatbuffers/flatbuffers.h
-include/flatbuffers/flatbuffers/flatbuffers.h
-
-include/flatbuffers/idl.h
-map
--
-stack
--
-memory
--
-functional
--
-flatbuffers/flatbuffers.h
-include/flatbuffers/flatbuffers/flatbuffers.h
-flatbuffers/hash.h
-include/flatbuffers/flatbuffers/hash.h
-flatbuffers/reflection.h
-include/flatbuffers/flatbuffers/reflection.h
-
-include/flatbuffers/reflection.h
-flatbuffers/reflection_generated.h
-include/flatbuffers/flatbuffers/reflection_generated.h
-
-include/flatbuffers/reflection_generated.h
-flatbuffers/flatbuffers.h
-include/flatbuffers/flatbuffers/flatbuffers.h
-
-include/flatbuffers/util.h
-fstream
--
-iomanip
--
-string
--
-sstream
--
-stdint.h
--
-stdlib.h
--
-assert.h
--
-windows.h
--
-winbase.h
--
-direct.h
--
-limits.h
--
-sys/types.h
--
-sys/stat.h
--
-flatbuffers/flatbuffers.h
-include/flatbuffers/flatbuffers/flatbuffers.h
-
diff --git a/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/DependInfo.cmake b/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/DependInfo.cmake
deleted file mode 100644
index 8e79318..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/DependInfo.cmake
+++ /dev/null
@@ -1,29 +0,0 @@
-# The set of languages for which implicit dependencies are needed:
-set(CMAKE_DEPENDS_LANGUAGES
- "CXX"
- )
-# The set of files for implicit dependencies of each language:
-set(CMAKE_DEPENDS_CHECK_CXX
- "/home/alain/flatbuffers/samples/sample_text.cpp" "/home/alain/flatbuffers/CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o"
- "/home/alain/flatbuffers/src/code_generators.cpp" "/home/alain/flatbuffers/CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o"
- "/home/alain/flatbuffers/src/idl_gen_text.cpp" "/home/alain/flatbuffers/CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o"
- "/home/alain/flatbuffers/src/idl_parser.cpp" "/home/alain/flatbuffers/CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o"
- "/home/alain/flatbuffers/src/reflection.cpp" "/home/alain/flatbuffers/CMakeFiles/flatsampletext.dir/src/reflection.cpp.o"
- "/home/alain/flatbuffers/src/util.cpp" "/home/alain/flatbuffers/CMakeFiles/flatsampletext.dir/src/util.cpp.o"
- )
-set(CMAKE_CXX_COMPILER_ID "GNU")
-
-# The include file search paths:
-set(CMAKE_CXX_TARGET_INCLUDE_PATH
- "include"
- "grpc"
- "tests"
- "samples"
- )
-
-# Targets to which this target links.
-set(CMAKE_TARGET_LINKED_INFO_FILES
- )
-
-# Fortran module output directory.
-set(CMAKE_Fortran_TARGET_MODULE_DIR "")
diff --git a/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/build.make b/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/build.make
deleted file mode 100644
index caf6cd8..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/build.make
+++ /dev/null
@@ -1,252 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-# Delete rule output on recipe failure.
-.DELETE_ON_ERROR:
-
-
-#=============================================================================
-# Special targets provided by cmake.
-
-# Disable implicit rules so canonical targets will work.
-.SUFFIXES:
-
-
-# Remove some rules from gmake that .SUFFIXES does not remove.
-SUFFIXES =
-
-.SUFFIXES: .hpux_make_needs_suffix_list
-
-
-# Suppress display of executed commands.
-$(VERBOSE).SILENT:
-
-
-# A target that is always out of date.
-cmake_force:
-
-.PHONY : cmake_force
-
-#=============================================================================
-# Set environment variables for the build.
-
-# The shell in which to execute make rules.
-SHELL = /bin/sh
-
-# The CMake executable.
-CMAKE_COMMAND = /usr/bin/cmake
-
-# The command to remove a file.
-RM = /usr/bin/cmake -E remove -f
-
-# Escaping for special characters.
-EQUALS = =
-
-# The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /home/alain/flatbuffers
-
-# The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /home/alain/flatbuffers
-
-# Include any dependencies generated for this target.
-include CMakeFiles/flatsampletext.dir/depend.make
-
-# Include the progress variables for this target.
-include CMakeFiles/flatsampletext.dir/progress.make
-
-# Include the compile flags for this target's objects.
-include CMakeFiles/flatsampletext.dir/flags.make
-
-samples/monster_generated.h: flatc
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Generating samples/monster_generated.h"
- ./flatc -c --no-includes --gen-mutable --gen-object-api -o samples /home/alain/flatbuffers/samples/monster.fbs
-
-CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o: CMakeFiles/flatsampletext.dir/flags.make
-CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o: src/code_generators.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o -c /home/alain/flatbuffers/src/code_generators.cpp
-
-CMakeFiles/flatsampletext.dir/src/code_generators.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatsampletext.dir/src/code_generators.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/code_generators.cpp > CMakeFiles/flatsampletext.dir/src/code_generators.cpp.i
-
-CMakeFiles/flatsampletext.dir/src/code_generators.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatsampletext.dir/src/code_generators.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/code_generators.cpp -o CMakeFiles/flatsampletext.dir/src/code_generators.cpp.s
-
-CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o.requires
-
-CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o.provides: CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o.provides.build
-.PHONY : CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o.provides
-
-CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o.provides.build: CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o
-
-
-CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o: CMakeFiles/flatsampletext.dir/flags.make
-CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o: src/idl_parser.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o -c /home/alain/flatbuffers/src/idl_parser.cpp
-
-CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/idl_parser.cpp > CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.i
-
-CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/idl_parser.cpp -o CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.s
-
-CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o.requires
-
-CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o.provides: CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o.provides.build
-.PHONY : CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o.provides
-
-CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o.provides.build: CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o
-
-
-CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o: CMakeFiles/flatsampletext.dir/flags.make
-CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o: src/idl_gen_text.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o -c /home/alain/flatbuffers/src/idl_gen_text.cpp
-
-CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/idl_gen_text.cpp > CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.i
-
-CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/idl_gen_text.cpp -o CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.s
-
-CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o.requires
-
-CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o.provides: CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o.provides.build
-.PHONY : CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o.provides
-
-CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o.provides.build: CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o
-
-
-CMakeFiles/flatsampletext.dir/src/reflection.cpp.o: CMakeFiles/flatsampletext.dir/flags.make
-CMakeFiles/flatsampletext.dir/src/reflection.cpp.o: src/reflection.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building CXX object CMakeFiles/flatsampletext.dir/src/reflection.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatsampletext.dir/src/reflection.cpp.o -c /home/alain/flatbuffers/src/reflection.cpp
-
-CMakeFiles/flatsampletext.dir/src/reflection.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatsampletext.dir/src/reflection.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/reflection.cpp > CMakeFiles/flatsampletext.dir/src/reflection.cpp.i
-
-CMakeFiles/flatsampletext.dir/src/reflection.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatsampletext.dir/src/reflection.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/reflection.cpp -o CMakeFiles/flatsampletext.dir/src/reflection.cpp.s
-
-CMakeFiles/flatsampletext.dir/src/reflection.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatsampletext.dir/src/reflection.cpp.o.requires
-
-CMakeFiles/flatsampletext.dir/src/reflection.cpp.o.provides: CMakeFiles/flatsampletext.dir/src/reflection.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/src/reflection.cpp.o.provides.build
-.PHONY : CMakeFiles/flatsampletext.dir/src/reflection.cpp.o.provides
-
-CMakeFiles/flatsampletext.dir/src/reflection.cpp.o.provides.build: CMakeFiles/flatsampletext.dir/src/reflection.cpp.o
-
-
-CMakeFiles/flatsampletext.dir/src/util.cpp.o: CMakeFiles/flatsampletext.dir/flags.make
-CMakeFiles/flatsampletext.dir/src/util.cpp.o: src/util.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building CXX object CMakeFiles/flatsampletext.dir/src/util.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatsampletext.dir/src/util.cpp.o -c /home/alain/flatbuffers/src/util.cpp
-
-CMakeFiles/flatsampletext.dir/src/util.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatsampletext.dir/src/util.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/util.cpp > CMakeFiles/flatsampletext.dir/src/util.cpp.i
-
-CMakeFiles/flatsampletext.dir/src/util.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatsampletext.dir/src/util.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/util.cpp -o CMakeFiles/flatsampletext.dir/src/util.cpp.s
-
-CMakeFiles/flatsampletext.dir/src/util.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatsampletext.dir/src/util.cpp.o.requires
-
-CMakeFiles/flatsampletext.dir/src/util.cpp.o.provides: CMakeFiles/flatsampletext.dir/src/util.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/src/util.cpp.o.provides.build
-.PHONY : CMakeFiles/flatsampletext.dir/src/util.cpp.o.provides
-
-CMakeFiles/flatsampletext.dir/src/util.cpp.o.provides.build: CMakeFiles/flatsampletext.dir/src/util.cpp.o
-
-
-CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o: CMakeFiles/flatsampletext.dir/flags.make
-CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o: samples/sample_text.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building CXX object CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o -c /home/alain/flatbuffers/samples/sample_text.cpp
-
-CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/samples/sample_text.cpp > CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.i
-
-CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/samples/sample_text.cpp -o CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.s
-
-CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o.requires:
-
-.PHONY : CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o.requires
-
-CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o.provides: CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o.requires
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o.provides.build
-.PHONY : CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o.provides
-
-CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o.provides.build: CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o
-
-
-# Object files for target flatsampletext
-flatsampletext_OBJECTS = \
-"CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o" \
-"CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o" \
-"CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o" \
-"CMakeFiles/flatsampletext.dir/src/reflection.cpp.o" \
-"CMakeFiles/flatsampletext.dir/src/util.cpp.o" \
-"CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o"
-
-# External object files for target flatsampletext
-flatsampletext_EXTERNAL_OBJECTS =
-
-flatsampletext: CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o
-flatsampletext: CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o
-flatsampletext: CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o
-flatsampletext: CMakeFiles/flatsampletext.dir/src/reflection.cpp.o
-flatsampletext: CMakeFiles/flatsampletext.dir/src/util.cpp.o
-flatsampletext: CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o
-flatsampletext: CMakeFiles/flatsampletext.dir/build.make
-flatsampletext: CMakeFiles/flatsampletext.dir/link.txt
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Linking CXX executable flatsampletext"
- $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/flatsampletext.dir/link.txt --verbose=$(VERBOSE)
-
-# Rule to build all files generated by this target.
-CMakeFiles/flatsampletext.dir/build: flatsampletext
-
-.PHONY : CMakeFiles/flatsampletext.dir/build
-
-CMakeFiles/flatsampletext.dir/requires: CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o.requires
-CMakeFiles/flatsampletext.dir/requires: CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o.requires
-CMakeFiles/flatsampletext.dir/requires: CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o.requires
-CMakeFiles/flatsampletext.dir/requires: CMakeFiles/flatsampletext.dir/src/reflection.cpp.o.requires
-CMakeFiles/flatsampletext.dir/requires: CMakeFiles/flatsampletext.dir/src/util.cpp.o.requires
-CMakeFiles/flatsampletext.dir/requires: CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o.requires
-
-.PHONY : CMakeFiles/flatsampletext.dir/requires
-
-CMakeFiles/flatsampletext.dir/clean:
- $(CMAKE_COMMAND) -P CMakeFiles/flatsampletext.dir/cmake_clean.cmake
-.PHONY : CMakeFiles/flatsampletext.dir/clean
-
-CMakeFiles/flatsampletext.dir/depend: samples/monster_generated.h
- cd /home/alain/flatbuffers && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/alain/flatbuffers /home/alain/flatbuffers /home/alain/flatbuffers /home/alain/flatbuffers /home/alain/flatbuffers/CMakeFiles/flatsampletext.dir/DependInfo.cmake --color=$(COLOR)
-.PHONY : CMakeFiles/flatsampletext.dir/depend
-
diff --git a/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/cmake_clean.cmake b/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/cmake_clean.cmake
deleted file mode 100644
index e763e61..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/cmake_clean.cmake
+++ /dev/null
@@ -1,16 +0,0 @@
-file(REMOVE_RECURSE
- "samples/monster_generated.h"
- "CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o"
- "CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o"
- "CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o"
- "CMakeFiles/flatsampletext.dir/src/reflection.cpp.o"
- "CMakeFiles/flatsampletext.dir/src/util.cpp.o"
- "CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o"
- "flatsampletext.pdb"
- "flatsampletext"
-)
-
-# Per-language clean rules from dependency scanning.
-foreach(lang CXX)
- include(CMakeFiles/flatsampletext.dir/cmake_clean_${lang}.cmake OPTIONAL)
-endforeach()
diff --git a/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/depend.internal b/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/depend.internal
deleted file mode 100644
index 8fd7cf9..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/depend.internal
+++ /dev/null
@@ -1,47 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o
- /home/alain/flatbuffers/samples/monster_generated.h
- /home/alain/flatbuffers/samples/sample_text.cpp
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o
- /home/alain/flatbuffers/src/code_generators.cpp
- include/flatbuffers/code_generators.h
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o
- /home/alain/flatbuffers/src/idl_gen_text.cpp
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o
- /home/alain/flatbuffers/src/idl_parser.cpp
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatsampletext.dir/src/reflection.cpp.o
- /home/alain/flatbuffers/src/reflection.cpp
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flatsampletext.dir/src/util.cpp.o
- /home/alain/flatbuffers/src/util.cpp
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/util.h
diff --git a/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/depend.make b/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/depend.make
deleted file mode 100644
index 5002df4..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/depend.make
+++ /dev/null
@@ -1,47 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o: samples/monster_generated.h
-CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o: samples/sample_text.cpp
-CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o: src/code_generators.cpp
-CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o: include/flatbuffers/code_generators.h
-CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o: src/idl_gen_text.cpp
-CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o: src/idl_parser.cpp
-CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatsampletext.dir/src/reflection.cpp.o: src/reflection.cpp
-CMakeFiles/flatsampletext.dir/src/reflection.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatsampletext.dir/src/reflection.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flatsampletext.dir/src/reflection.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flatsampletext.dir/src/reflection.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flatsampletext.dir/src/util.cpp.o: src/util.cpp
-CMakeFiles/flatsampletext.dir/src/util.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flatsampletext.dir/src/util.cpp.o: include/flatbuffers/util.h
-
diff --git a/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/flags.make b/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/flags.make
deleted file mode 100644
index 6fddb3a..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/flags.make
+++ /dev/null
@@ -1,10 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-# compile CXX with /usr/bin/c++
-CXX_FLAGS = -std=c++0x -Wall -pedantic -Werror -Wextra -Werror=shadow -fsigned-char
-
-CXX_DEFINES =
-
-CXX_INCLUDES = -I/home/alain/flatbuffers/include -I/home/alain/flatbuffers/grpc -I/home/alain/flatbuffers/tests -I/home/alain/flatbuffers/samples
-
diff --git a/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/link.txt b/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/link.txt
deleted file mode 100644
index 535e01a..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/link.txt
+++ /dev/null
@@ -1 +0,0 @@
-/usr/bin/c++ -std=c++0x -Wall -pedantic -Werror -Wextra -Werror=shadow -fsigned-char CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o CMakeFiles/flatsampletext.dir/src/reflection.cpp.o CMakeFiles/flatsampletext.dir/src/util.cpp.o CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o -o flatsampletext -rdynamic
diff --git a/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/progress.make b/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/progress.make
deleted file mode 100644
index 7218115..0000000
--- a/third_party/flatbuffers/CMakeFiles/flatsampletext.dir/progress.make
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_PROGRESS_1 = 30
-CMAKE_PROGRESS_2 = 31
-CMAKE_PROGRESS_3 = 32
-CMAKE_PROGRESS_4 = 33
-CMAKE_PROGRESS_5 = 34
-CMAKE_PROGRESS_6 = 35
-CMAKE_PROGRESS_7 = 36
-CMAKE_PROGRESS_8 = 37
-
diff --git a/third_party/flatbuffers/CMakeFiles/flattests.dir/CXX.includecache b/third_party/flatbuffers/CMakeFiles/flattests.dir/CXX.includecache
deleted file mode 100644
index 35de61e..0000000
--- a/third_party/flatbuffers/CMakeFiles/flattests.dir/CXX.includecache
+++ /dev/null
@@ -1,206 +0,0 @@
-#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">])
-
-#IncludeRegexScan: ^.*$
-
-#IncludeRegexComplain: ^$
-
-#IncludeRegexTransform:
-
-/home/alain/flatbuffers/src/code_generators.cpp
-flatbuffers/code_generators.h
-/home/alain/flatbuffers/src/flatbuffers/code_generators.h
-assert.h
--
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-
-/home/alain/flatbuffers/src/idl_gen_fbs.cpp
-flatbuffers/flatbuffers.h
-/home/alain/flatbuffers/src/flatbuffers/flatbuffers.h
-flatbuffers/idl.h
-/home/alain/flatbuffers/src/flatbuffers/idl.h
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-flatbuffers/code_generators.h
-/home/alain/flatbuffers/src/flatbuffers/code_generators.h
-
-/home/alain/flatbuffers/src/idl_gen_text.cpp
-flatbuffers/flatbuffers.h
-/home/alain/flatbuffers/src/flatbuffers/flatbuffers.h
-flatbuffers/idl.h
-/home/alain/flatbuffers/src/flatbuffers/idl.h
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-
-/home/alain/flatbuffers/src/idl_parser.cpp
-algorithm
--
-list
--
-math.h
--
-flatbuffers/idl.h
-/home/alain/flatbuffers/src/flatbuffers/idl.h
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-
-/home/alain/flatbuffers/src/reflection.cpp
-flatbuffers/reflection.h
-/home/alain/flatbuffers/src/flatbuffers/reflection.h
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-
-/home/alain/flatbuffers/src/util.cpp
-flatbuffers/util.h
-/home/alain/flatbuffers/src/flatbuffers/util.h
-
-/home/alain/flatbuffers/tests/monster_test_generated.h
-flatbuffers/flatbuffers.h
-/home/alain/flatbuffers/tests/flatbuffers/flatbuffers.h
-
-/home/alain/flatbuffers/tests/namespace_test/namespace_test1_generated.h
-flatbuffers/flatbuffers.h
-/home/alain/flatbuffers/tests/namespace_test/flatbuffers/flatbuffers.h
-
-/home/alain/flatbuffers/tests/namespace_test/namespace_test2_generated.h
-flatbuffers/flatbuffers.h
-/home/alain/flatbuffers/tests/namespace_test/flatbuffers/flatbuffers.h
-namespace_test1_generated.h
-/home/alain/flatbuffers/tests/namespace_test/namespace_test1_generated.h
-
-/home/alain/flatbuffers/tests/test.cpp
-flatbuffers/flatbuffers.h
-/home/alain/flatbuffers/tests/flatbuffers/flatbuffers.h
-flatbuffers/idl.h
-/home/alain/flatbuffers/tests/flatbuffers/idl.h
-flatbuffers/util.h
-/home/alain/flatbuffers/tests/flatbuffers/util.h
-monster_test_generated.h
-/home/alain/flatbuffers/tests/monster_test_generated.h
-namespace_test/namespace_test1_generated.h
-/home/alain/flatbuffers/tests/namespace_test/namespace_test1_generated.h
-namespace_test/namespace_test2_generated.h
-/home/alain/flatbuffers/tests/namespace_test/namespace_test2_generated.h
-union_vector/union_vector_generated.h
-/home/alain/flatbuffers/tests/union_vector/union_vector_generated.h
-random
--
-flatbuffers/flexbuffers.h
-/home/alain/flatbuffers/tests/flatbuffers/flexbuffers.h
-android/log.h
--
-
-/home/alain/flatbuffers/tests/union_vector/union_vector_generated.h
-flatbuffers/flatbuffers.h
-/home/alain/flatbuffers/tests/union_vector/flatbuffers/flatbuffers.h
-
-include/flatbuffers/code_generators.h
-map
--
-sstream
--
-flatbuffers/idl.h
-include/flatbuffers/flatbuffers/idl.h
-
-include/flatbuffers/flatbuffers.h
-assert.h
--
-cstdint
--
-cstddef
--
-cstdlib
--
-cstring
--
-string
--
-utility
--
-utility.h
--
-type_traits
--
-vector
--
-set
--
-algorithm
--
-memory
--
-functional
--
-
-include/flatbuffers/flexbuffers.h
-map
--
-flatbuffers/flatbuffers.h
-include/flatbuffers/flatbuffers/flatbuffers.h
-flatbuffers/util.h
-include/flatbuffers/flatbuffers/util.h
-intrin.h
--
-
-include/flatbuffers/hash.h
-cstdint
--
-cstring
--
-flatbuffers/flatbuffers.h
-include/flatbuffers/flatbuffers/flatbuffers.h
-
-include/flatbuffers/idl.h
-map
--
-stack
--
-memory
--
-functional
--
-flatbuffers/flatbuffers.h
-include/flatbuffers/flatbuffers/flatbuffers.h
-flatbuffers/hash.h
-include/flatbuffers/flatbuffers/hash.h
-flatbuffers/reflection.h
-include/flatbuffers/flatbuffers/reflection.h
-
-include/flatbuffers/reflection.h
-flatbuffers/reflection_generated.h
-include/flatbuffers/flatbuffers/reflection_generated.h
-
-include/flatbuffers/reflection_generated.h
-flatbuffers/flatbuffers.h
-include/flatbuffers/flatbuffers/flatbuffers.h
-
-include/flatbuffers/util.h
-fstream
--
-iomanip
--
-string
--
-sstream
--
-stdint.h
--
-stdlib.h
--
-assert.h
--
-windows.h
--
-winbase.h
--
-direct.h
--
-limits.h
--
-sys/types.h
--
-sys/stat.h
--
-flatbuffers/flatbuffers.h
-include/flatbuffers/flatbuffers/flatbuffers.h
-
diff --git a/third_party/flatbuffers/CMakeFiles/flattests.dir/DependInfo.cmake b/third_party/flatbuffers/CMakeFiles/flattests.dir/DependInfo.cmake
deleted file mode 100644
index b3dbb5f..0000000
--- a/third_party/flatbuffers/CMakeFiles/flattests.dir/DependInfo.cmake
+++ /dev/null
@@ -1,36 +0,0 @@
-# The set of languages for which implicit dependencies are needed:
-set(CMAKE_DEPENDS_LANGUAGES
- "CXX"
- )
-# The set of files for implicit dependencies of each language:
-set(CMAKE_DEPENDS_CHECK_CXX
- "/home/alain/flatbuffers/src/code_generators.cpp" "/home/alain/flatbuffers/CMakeFiles/flattests.dir/src/code_generators.cpp.o"
- "/home/alain/flatbuffers/src/idl_gen_fbs.cpp" "/home/alain/flatbuffers/CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o"
- "/home/alain/flatbuffers/src/idl_gen_text.cpp" "/home/alain/flatbuffers/CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o"
- "/home/alain/flatbuffers/src/idl_parser.cpp" "/home/alain/flatbuffers/CMakeFiles/flattests.dir/src/idl_parser.cpp.o"
- "/home/alain/flatbuffers/src/reflection.cpp" "/home/alain/flatbuffers/CMakeFiles/flattests.dir/src/reflection.cpp.o"
- "/home/alain/flatbuffers/src/util.cpp" "/home/alain/flatbuffers/CMakeFiles/flattests.dir/src/util.cpp.o"
- "/home/alain/flatbuffers/tests/test.cpp" "/home/alain/flatbuffers/CMakeFiles/flattests.dir/tests/test.cpp.o"
- )
-set(CMAKE_CXX_COMPILER_ID "GNU")
-
-# Preprocessor definitions for this target.
-set(CMAKE_TARGET_DEFINITIONS_CXX
- "FLATBUFFERS_DEBUG_VERIFICATION_FAILURE=1"
- "FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE"
- )
-
-# The include file search paths:
-set(CMAKE_CXX_TARGET_INCLUDE_PATH
- "include"
- "grpc"
- "tests"
- "samples"
- )
-
-# Targets to which this target links.
-set(CMAKE_TARGET_LINKED_INFO_FILES
- )
-
-# Fortran module output directory.
-set(CMAKE_Fortran_TARGET_MODULE_DIR "")
diff --git a/third_party/flatbuffers/CMakeFiles/flattests.dir/build.make b/third_party/flatbuffers/CMakeFiles/flattests.dir/build.make
deleted file mode 100644
index db2d56e..0000000
--- a/third_party/flatbuffers/CMakeFiles/flattests.dir/build.make
+++ /dev/null
@@ -1,279 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-# Delete rule output on recipe failure.
-.DELETE_ON_ERROR:
-
-
-#=============================================================================
-# Special targets provided by cmake.
-
-# Disable implicit rules so canonical targets will work.
-.SUFFIXES:
-
-
-# Remove some rules from gmake that .SUFFIXES does not remove.
-SUFFIXES =
-
-.SUFFIXES: .hpux_make_needs_suffix_list
-
-
-# Suppress display of executed commands.
-$(VERBOSE).SILENT:
-
-
-# A target that is always out of date.
-cmake_force:
-
-.PHONY : cmake_force
-
-#=============================================================================
-# Set environment variables for the build.
-
-# The shell in which to execute make rules.
-SHELL = /bin/sh
-
-# The CMake executable.
-CMAKE_COMMAND = /usr/bin/cmake
-
-# The command to remove a file.
-RM = /usr/bin/cmake -E remove -f
-
-# Escaping for special characters.
-EQUALS = =
-
-# The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /home/alain/flatbuffers
-
-# The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /home/alain/flatbuffers
-
-# Include any dependencies generated for this target.
-include CMakeFiles/flattests.dir/depend.make
-
-# Include the progress variables for this target.
-include CMakeFiles/flattests.dir/progress.make
-
-# Include the compile flags for this target's objects.
-include CMakeFiles/flattests.dir/flags.make
-
-tests/monster_test_generated.h: flatc
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Generating tests/monster_test_generated.h"
- ./flatc -c --no-includes --gen-mutable --gen-object-api -o tests /home/alain/flatbuffers/tests/monster_test.fbs
-
-CMakeFiles/flattests.dir/src/code_generators.cpp.o: CMakeFiles/flattests.dir/flags.make
-CMakeFiles/flattests.dir/src/code_generators.cpp.o: src/code_generators.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object CMakeFiles/flattests.dir/src/code_generators.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flattests.dir/src/code_generators.cpp.o -c /home/alain/flatbuffers/src/code_generators.cpp
-
-CMakeFiles/flattests.dir/src/code_generators.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flattests.dir/src/code_generators.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/code_generators.cpp > CMakeFiles/flattests.dir/src/code_generators.cpp.i
-
-CMakeFiles/flattests.dir/src/code_generators.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flattests.dir/src/code_generators.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/code_generators.cpp -o CMakeFiles/flattests.dir/src/code_generators.cpp.s
-
-CMakeFiles/flattests.dir/src/code_generators.cpp.o.requires:
-
-.PHONY : CMakeFiles/flattests.dir/src/code_generators.cpp.o.requires
-
-CMakeFiles/flattests.dir/src/code_generators.cpp.o.provides: CMakeFiles/flattests.dir/src/code_generators.cpp.o.requires
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/code_generators.cpp.o.provides.build
-.PHONY : CMakeFiles/flattests.dir/src/code_generators.cpp.o.provides
-
-CMakeFiles/flattests.dir/src/code_generators.cpp.o.provides.build: CMakeFiles/flattests.dir/src/code_generators.cpp.o
-
-
-CMakeFiles/flattests.dir/src/idl_parser.cpp.o: CMakeFiles/flattests.dir/flags.make
-CMakeFiles/flattests.dir/src/idl_parser.cpp.o: src/idl_parser.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object CMakeFiles/flattests.dir/src/idl_parser.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flattests.dir/src/idl_parser.cpp.o -c /home/alain/flatbuffers/src/idl_parser.cpp
-
-CMakeFiles/flattests.dir/src/idl_parser.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flattests.dir/src/idl_parser.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/idl_parser.cpp > CMakeFiles/flattests.dir/src/idl_parser.cpp.i
-
-CMakeFiles/flattests.dir/src/idl_parser.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flattests.dir/src/idl_parser.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/idl_parser.cpp -o CMakeFiles/flattests.dir/src/idl_parser.cpp.s
-
-CMakeFiles/flattests.dir/src/idl_parser.cpp.o.requires:
-
-.PHONY : CMakeFiles/flattests.dir/src/idl_parser.cpp.o.requires
-
-CMakeFiles/flattests.dir/src/idl_parser.cpp.o.provides: CMakeFiles/flattests.dir/src/idl_parser.cpp.o.requires
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/idl_parser.cpp.o.provides.build
-.PHONY : CMakeFiles/flattests.dir/src/idl_parser.cpp.o.provides
-
-CMakeFiles/flattests.dir/src/idl_parser.cpp.o.provides.build: CMakeFiles/flattests.dir/src/idl_parser.cpp.o
-
-
-CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o: CMakeFiles/flattests.dir/flags.make
-CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o: src/idl_gen_text.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o -c /home/alain/flatbuffers/src/idl_gen_text.cpp
-
-CMakeFiles/flattests.dir/src/idl_gen_text.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flattests.dir/src/idl_gen_text.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/idl_gen_text.cpp > CMakeFiles/flattests.dir/src/idl_gen_text.cpp.i
-
-CMakeFiles/flattests.dir/src/idl_gen_text.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flattests.dir/src/idl_gen_text.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/idl_gen_text.cpp -o CMakeFiles/flattests.dir/src/idl_gen_text.cpp.s
-
-CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o.requires:
-
-.PHONY : CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o.requires
-
-CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o.provides: CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o.requires
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o.provides.build
-.PHONY : CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o.provides
-
-CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o.provides.build: CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o
-
-
-CMakeFiles/flattests.dir/src/reflection.cpp.o: CMakeFiles/flattests.dir/flags.make
-CMakeFiles/flattests.dir/src/reflection.cpp.o: src/reflection.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building CXX object CMakeFiles/flattests.dir/src/reflection.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flattests.dir/src/reflection.cpp.o -c /home/alain/flatbuffers/src/reflection.cpp
-
-CMakeFiles/flattests.dir/src/reflection.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flattests.dir/src/reflection.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/reflection.cpp > CMakeFiles/flattests.dir/src/reflection.cpp.i
-
-CMakeFiles/flattests.dir/src/reflection.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flattests.dir/src/reflection.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/reflection.cpp -o CMakeFiles/flattests.dir/src/reflection.cpp.s
-
-CMakeFiles/flattests.dir/src/reflection.cpp.o.requires:
-
-.PHONY : CMakeFiles/flattests.dir/src/reflection.cpp.o.requires
-
-CMakeFiles/flattests.dir/src/reflection.cpp.o.provides: CMakeFiles/flattests.dir/src/reflection.cpp.o.requires
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/reflection.cpp.o.provides.build
-.PHONY : CMakeFiles/flattests.dir/src/reflection.cpp.o.provides
-
-CMakeFiles/flattests.dir/src/reflection.cpp.o.provides.build: CMakeFiles/flattests.dir/src/reflection.cpp.o
-
-
-CMakeFiles/flattests.dir/src/util.cpp.o: CMakeFiles/flattests.dir/flags.make
-CMakeFiles/flattests.dir/src/util.cpp.o: src/util.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building CXX object CMakeFiles/flattests.dir/src/util.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flattests.dir/src/util.cpp.o -c /home/alain/flatbuffers/src/util.cpp
-
-CMakeFiles/flattests.dir/src/util.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flattests.dir/src/util.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/util.cpp > CMakeFiles/flattests.dir/src/util.cpp.i
-
-CMakeFiles/flattests.dir/src/util.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flattests.dir/src/util.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/util.cpp -o CMakeFiles/flattests.dir/src/util.cpp.s
-
-CMakeFiles/flattests.dir/src/util.cpp.o.requires:
-
-.PHONY : CMakeFiles/flattests.dir/src/util.cpp.o.requires
-
-CMakeFiles/flattests.dir/src/util.cpp.o.provides: CMakeFiles/flattests.dir/src/util.cpp.o.requires
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/util.cpp.o.provides.build
-.PHONY : CMakeFiles/flattests.dir/src/util.cpp.o.provides
-
-CMakeFiles/flattests.dir/src/util.cpp.o.provides.build: CMakeFiles/flattests.dir/src/util.cpp.o
-
-
-CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o: CMakeFiles/flattests.dir/flags.make
-CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o: src/idl_gen_fbs.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building CXX object CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o -c /home/alain/flatbuffers/src/idl_gen_fbs.cpp
-
-CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/src/idl_gen_fbs.cpp > CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.i
-
-CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/src/idl_gen_fbs.cpp -o CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.s
-
-CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o.requires:
-
-.PHONY : CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o.requires
-
-CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o.provides: CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o.requires
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o.provides.build
-.PHONY : CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o.provides
-
-CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o.provides.build: CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o
-
-
-CMakeFiles/flattests.dir/tests/test.cpp.o: CMakeFiles/flattests.dir/flags.make
-CMakeFiles/flattests.dir/tests/test.cpp.o: tests/test.cpp
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building CXX object CMakeFiles/flattests.dir/tests/test.cpp.o"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/flattests.dir/tests/test.cpp.o -c /home/alain/flatbuffers/tests/test.cpp
-
-CMakeFiles/flattests.dir/tests/test.cpp.i: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/flattests.dir/tests/test.cpp.i"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/alain/flatbuffers/tests/test.cpp > CMakeFiles/flattests.dir/tests/test.cpp.i
-
-CMakeFiles/flattests.dir/tests/test.cpp.s: cmake_force
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/flattests.dir/tests/test.cpp.s"
- /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/alain/flatbuffers/tests/test.cpp -o CMakeFiles/flattests.dir/tests/test.cpp.s
-
-CMakeFiles/flattests.dir/tests/test.cpp.o.requires:
-
-.PHONY : CMakeFiles/flattests.dir/tests/test.cpp.o.requires
-
-CMakeFiles/flattests.dir/tests/test.cpp.o.provides: CMakeFiles/flattests.dir/tests/test.cpp.o.requires
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/tests/test.cpp.o.provides.build
-.PHONY : CMakeFiles/flattests.dir/tests/test.cpp.o.provides
-
-CMakeFiles/flattests.dir/tests/test.cpp.o.provides.build: CMakeFiles/flattests.dir/tests/test.cpp.o
-
-
-# Object files for target flattests
-flattests_OBJECTS = \
-"CMakeFiles/flattests.dir/src/code_generators.cpp.o" \
-"CMakeFiles/flattests.dir/src/idl_parser.cpp.o" \
-"CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o" \
-"CMakeFiles/flattests.dir/src/reflection.cpp.o" \
-"CMakeFiles/flattests.dir/src/util.cpp.o" \
-"CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o" \
-"CMakeFiles/flattests.dir/tests/test.cpp.o"
-
-# External object files for target flattests
-flattests_EXTERNAL_OBJECTS =
-
-flattests: CMakeFiles/flattests.dir/src/code_generators.cpp.o
-flattests: CMakeFiles/flattests.dir/src/idl_parser.cpp.o
-flattests: CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o
-flattests: CMakeFiles/flattests.dir/src/reflection.cpp.o
-flattests: CMakeFiles/flattests.dir/src/util.cpp.o
-flattests: CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o
-flattests: CMakeFiles/flattests.dir/tests/test.cpp.o
-flattests: CMakeFiles/flattests.dir/build.make
-flattests: CMakeFiles/flattests.dir/link.txt
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/alain/flatbuffers/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Linking CXX executable flattests"
- $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/flattests.dir/link.txt --verbose=$(VERBOSE)
-
-# Rule to build all files generated by this target.
-CMakeFiles/flattests.dir/build: flattests
-
-.PHONY : CMakeFiles/flattests.dir/build
-
-CMakeFiles/flattests.dir/requires: CMakeFiles/flattests.dir/src/code_generators.cpp.o.requires
-CMakeFiles/flattests.dir/requires: CMakeFiles/flattests.dir/src/idl_parser.cpp.o.requires
-CMakeFiles/flattests.dir/requires: CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o.requires
-CMakeFiles/flattests.dir/requires: CMakeFiles/flattests.dir/src/reflection.cpp.o.requires
-CMakeFiles/flattests.dir/requires: CMakeFiles/flattests.dir/src/util.cpp.o.requires
-CMakeFiles/flattests.dir/requires: CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o.requires
-CMakeFiles/flattests.dir/requires: CMakeFiles/flattests.dir/tests/test.cpp.o.requires
-
-.PHONY : CMakeFiles/flattests.dir/requires
-
-CMakeFiles/flattests.dir/clean:
- $(CMAKE_COMMAND) -P CMakeFiles/flattests.dir/cmake_clean.cmake
-.PHONY : CMakeFiles/flattests.dir/clean
-
-CMakeFiles/flattests.dir/depend: tests/monster_test_generated.h
- cd /home/alain/flatbuffers && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/alain/flatbuffers /home/alain/flatbuffers /home/alain/flatbuffers /home/alain/flatbuffers /home/alain/flatbuffers/CMakeFiles/flattests.dir/DependInfo.cmake --color=$(COLOR)
-.PHONY : CMakeFiles/flattests.dir/depend
-
diff --git a/third_party/flatbuffers/CMakeFiles/flattests.dir/cmake_clean.cmake b/third_party/flatbuffers/CMakeFiles/flattests.dir/cmake_clean.cmake
deleted file mode 100644
index 46f8d97..0000000
--- a/third_party/flatbuffers/CMakeFiles/flattests.dir/cmake_clean.cmake
+++ /dev/null
@@ -1,17 +0,0 @@
-file(REMOVE_RECURSE
- "tests/monster_test_generated.h"
- "CMakeFiles/flattests.dir/src/code_generators.cpp.o"
- "CMakeFiles/flattests.dir/src/idl_parser.cpp.o"
- "CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o"
- "CMakeFiles/flattests.dir/src/reflection.cpp.o"
- "CMakeFiles/flattests.dir/src/util.cpp.o"
- "CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o"
- "CMakeFiles/flattests.dir/tests/test.cpp.o"
- "flattests.pdb"
- "flattests"
-)
-
-# Per-language clean rules from dependency scanning.
-foreach(lang CXX)
- include(CMakeFiles/flattests.dir/cmake_clean_${lang}.cmake OPTIONAL)
-endforeach()
diff --git a/third_party/flatbuffers/CMakeFiles/flattests.dir/depend.internal b/third_party/flatbuffers/CMakeFiles/flattests.dir/depend.internal
deleted file mode 100644
index 8329ea0..0000000
--- a/third_party/flatbuffers/CMakeFiles/flattests.dir/depend.internal
+++ /dev/null
@@ -1,60 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-CMakeFiles/flattests.dir/src/code_generators.cpp.o
- /home/alain/flatbuffers/src/code_generators.cpp
- include/flatbuffers/code_generators.h
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o
- /home/alain/flatbuffers/src/idl_gen_fbs.cpp
- include/flatbuffers/code_generators.h
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o
- /home/alain/flatbuffers/src/idl_gen_text.cpp
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flattests.dir/src/idl_parser.cpp.o
- /home/alain/flatbuffers/src/idl_parser.cpp
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flattests.dir/src/reflection.cpp.o
- /home/alain/flatbuffers/src/reflection.cpp
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
-CMakeFiles/flattests.dir/src/util.cpp.o
- /home/alain/flatbuffers/src/util.cpp
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/util.h
-CMakeFiles/flattests.dir/tests/test.cpp.o
- /home/alain/flatbuffers/tests/monster_test_generated.h
- /home/alain/flatbuffers/tests/namespace_test/namespace_test1_generated.h
- /home/alain/flatbuffers/tests/namespace_test/namespace_test2_generated.h
- /home/alain/flatbuffers/tests/test.cpp
- /home/alain/flatbuffers/tests/union_vector/union_vector_generated.h
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/flexbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/util.h
diff --git a/third_party/flatbuffers/CMakeFiles/flattests.dir/depend.make b/third_party/flatbuffers/CMakeFiles/flattests.dir/depend.make
deleted file mode 100644
index 41f54fc..0000000
--- a/third_party/flatbuffers/CMakeFiles/flattests.dir/depend.make
+++ /dev/null
@@ -1,60 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-CMakeFiles/flattests.dir/src/code_generators.cpp.o: src/code_generators.cpp
-CMakeFiles/flattests.dir/src/code_generators.cpp.o: include/flatbuffers/code_generators.h
-CMakeFiles/flattests.dir/src/code_generators.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flattests.dir/src/code_generators.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flattests.dir/src/code_generators.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flattests.dir/src/code_generators.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flattests.dir/src/code_generators.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flattests.dir/src/code_generators.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o: src/idl_gen_fbs.cpp
-CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o: include/flatbuffers/code_generators.h
-CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o: src/idl_gen_text.cpp
-CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flattests.dir/src/idl_parser.cpp.o: src/idl_parser.cpp
-CMakeFiles/flattests.dir/src/idl_parser.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flattests.dir/src/idl_parser.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flattests.dir/src/idl_parser.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flattests.dir/src/idl_parser.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flattests.dir/src/idl_parser.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flattests.dir/src/idl_parser.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flattests.dir/src/reflection.cpp.o: src/reflection.cpp
-CMakeFiles/flattests.dir/src/reflection.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flattests.dir/src/reflection.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flattests.dir/src/reflection.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flattests.dir/src/reflection.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flattests.dir/src/util.cpp.o: src/util.cpp
-CMakeFiles/flattests.dir/src/util.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flattests.dir/src/util.cpp.o: include/flatbuffers/util.h
-
-CMakeFiles/flattests.dir/tests/test.cpp.o: tests/monster_test_generated.h
-CMakeFiles/flattests.dir/tests/test.cpp.o: tests/namespace_test/namespace_test1_generated.h
-CMakeFiles/flattests.dir/tests/test.cpp.o: tests/namespace_test/namespace_test2_generated.h
-CMakeFiles/flattests.dir/tests/test.cpp.o: tests/test.cpp
-CMakeFiles/flattests.dir/tests/test.cpp.o: tests/union_vector/union_vector_generated.h
-CMakeFiles/flattests.dir/tests/test.cpp.o: include/flatbuffers/flatbuffers.h
-CMakeFiles/flattests.dir/tests/test.cpp.o: include/flatbuffers/flexbuffers.h
-CMakeFiles/flattests.dir/tests/test.cpp.o: include/flatbuffers/hash.h
-CMakeFiles/flattests.dir/tests/test.cpp.o: include/flatbuffers/idl.h
-CMakeFiles/flattests.dir/tests/test.cpp.o: include/flatbuffers/reflection.h
-CMakeFiles/flattests.dir/tests/test.cpp.o: include/flatbuffers/reflection_generated.h
-CMakeFiles/flattests.dir/tests/test.cpp.o: include/flatbuffers/util.h
-
diff --git a/third_party/flatbuffers/CMakeFiles/flattests.dir/flags.make b/third_party/flatbuffers/CMakeFiles/flattests.dir/flags.make
deleted file mode 100644
index c56d648..0000000
--- a/third_party/flatbuffers/CMakeFiles/flattests.dir/flags.make
+++ /dev/null
@@ -1,10 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-# compile CXX with /usr/bin/c++
-CXX_FLAGS = -std=c++0x -Wall -pedantic -Werror -Wextra -Werror=shadow -fsigned-char
-
-CXX_DEFINES = -DFLATBUFFERS_DEBUG_VERIFICATION_FAILURE=1 -DFLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE
-
-CXX_INCLUDES = -I/home/alain/flatbuffers/include -I/home/alain/flatbuffers/grpc -I/home/alain/flatbuffers/tests -I/home/alain/flatbuffers/samples
-
diff --git a/third_party/flatbuffers/CMakeFiles/flattests.dir/link.txt b/third_party/flatbuffers/CMakeFiles/flattests.dir/link.txt
deleted file mode 100644
index 1b6d013..0000000
--- a/third_party/flatbuffers/CMakeFiles/flattests.dir/link.txt
+++ /dev/null
@@ -1 +0,0 @@
-/usr/bin/c++ -std=c++0x -Wall -pedantic -Werror -Wextra -Werror=shadow -fsigned-char CMakeFiles/flattests.dir/src/code_generators.cpp.o CMakeFiles/flattests.dir/src/idl_parser.cpp.o CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o CMakeFiles/flattests.dir/src/reflection.cpp.o CMakeFiles/flattests.dir/src/util.cpp.o CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o CMakeFiles/flattests.dir/tests/test.cpp.o -o flattests -rdynamic
diff --git a/third_party/flatbuffers/CMakeFiles/flattests.dir/progress.make b/third_party/flatbuffers/CMakeFiles/flattests.dir/progress.make
deleted file mode 100644
index b1d90db..0000000
--- a/third_party/flatbuffers/CMakeFiles/flattests.dir/progress.make
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_PROGRESS_1 = 38
-CMAKE_PROGRESS_2 = 39
-CMAKE_PROGRESS_3 = 40
-CMAKE_PROGRESS_4 = 41
-CMAKE_PROGRESS_5 = 42
-CMAKE_PROGRESS_6 = 43
-CMAKE_PROGRESS_7 = 44
-CMAKE_PROGRESS_8 = 45
-CMAKE_PROGRESS_9 = 46
-
diff --git a/third_party/flatbuffers/CMakeFiles/progress.marks b/third_party/flatbuffers/CMakeFiles/progress.marks
deleted file mode 100644
index 9e5feb5..0000000
--- a/third_party/flatbuffers/CMakeFiles/progress.marks
+++ /dev/null
@@ -1 +0,0 @@
-46
diff --git a/third_party/flatbuffers/CMakeLists.txt b/third_party/flatbuffers/CMakeLists.txt
deleted file mode 100644
index 5d3c44d..0000000
--- a/third_party/flatbuffers/CMakeLists.txt
+++ /dev/null
@@ -1,254 +0,0 @@
-cmake_minimum_required(VERSION 2.8)
-
-project(FlatBuffers)
-
-# NOTE: Code coverage only works on Linux & OSX.
-option(FLATBUFFERS_CODE_COVERAGE "Enable the code coverage build option." OFF)
-option(FLATBUFFERS_BUILD_TESTS "Enable the build of tests and samples." ON)
-option(FLATBUFFERS_INSTALL "Enable the installation of targets." ON)
-option(FLATBUFFERS_BUILD_FLATLIB "Enable the build of the flatbuffers library"
- ON)
-option(FLATBUFFERS_BUILD_FLATC "Enable the build of the flatbuffers compiler"
- ON)
-option(FLATBUFFERS_BUILD_FLATHASH "Enable the build of flathash" ON)
-option(FLATBUFFERS_BUILD_GRPCTEST "Enable the build of grpctest" OFF)
-option(FLATBUFFERS_BUILD_SHAREDLIB
- "Enable the build of the flatbuffers shared library"
- OFF)
-
-if(NOT FLATBUFFERS_BUILD_FLATC AND FLATBUFFERS_BUILD_TESTS)
- message(WARNING
- "Cannot build tests without building the compiler. Tests will be disabled.")
- set(FLATBUFFERS_BUILD_TESTS OFF)
-endif()
-
-set(FlatBuffers_Library_SRCS
- include/flatbuffers/code_generators.h
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/hash.h
- include/flatbuffers/idl.h
- include/flatbuffers/util.h
- include/flatbuffers/reflection.h
- include/flatbuffers/reflection_generated.h
- include/flatbuffers/flexbuffers.h
- src/code_generators.cpp
- src/idl_parser.cpp
- src/idl_gen_text.cpp
- src/reflection.cpp
- src/util.cpp
-)
-
-set(FlatBuffers_Compiler_SRCS
- ${FlatBuffers_Library_SRCS}
- src/idl_gen_cpp.cpp
- src/idl_gen_general.cpp
- src/idl_gen_go.cpp
- src/idl_gen_js.cpp
- src/idl_gen_php.cpp
- src/idl_gen_python.cpp
- src/idl_gen_fbs.cpp
- src/idl_gen_grpc.cpp
- src/flatc.cpp
- src/flatc_main.cpp
- grpc/src/compiler/schema_interface.h
- grpc/src/compiler/cpp_generator.h
- grpc/src/compiler/cpp_generator.cc
- grpc/src/compiler/go_generator.h
- grpc/src/compiler/go_generator.cc
-)
-
-set(FlatHash_SRCS
- include/flatbuffers/hash.h
- src/flathash.cpp
-)
-
-set(FlatBuffers_Tests_SRCS
- ${FlatBuffers_Library_SRCS}
- src/idl_gen_fbs.cpp
- tests/test.cpp
- # file generate by running compiler on tests/monster_test.fbs
- ${CMAKE_CURRENT_BINARY_DIR}/tests/monster_test_generated.h
-)
-
-set(FlatBuffers_Sample_Binary_SRCS
- include/flatbuffers/flatbuffers.h
- samples/sample_binary.cpp
- # file generated by running compiler on samples/monster.fbs
- ${CMAKE_CURRENT_BINARY_DIR}/samples/monster_generated.h
-)
-
-set(FlatBuffers_Sample_Text_SRCS
- ${FlatBuffers_Library_SRCS}
- samples/sample_text.cpp
- # file generated by running compiler on samples/monster.fbs
- ${CMAKE_CURRENT_BINARY_DIR}/samples/monster_generated.h
-)
-
-set(FlatBuffers_GRPCTest_SRCS
- include/flatbuffers/flatbuffers.h
- include/flatbuffers/grpc.h
- tests/monster_test.grpc.fb.h
- tests/monster_test.grpc.fb.cc
- grpc/tests/grpctest.cpp
- # file generated by running compiler on samples/monster.fbs
- ${CMAKE_CURRENT_BINARY_DIR}/samples/monster_generated.h
-)
-
-# source_group(Compiler FILES ${FlatBuffers_Compiler_SRCS})
-# source_group(Tests FILES ${FlatBuffers_Tests_SRCS})
-
-if(EXISTS "${CMAKE_TOOLCHAIN_FILE}")
- # do not apply any global settings if the toolchain
- # is being configured externally
-elseif(APPLE)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Werror -Wextra")
-elseif(CMAKE_COMPILER_IS_GNUCXX)
- if(CYGWIN)
- set(CMAKE_CXX_FLAGS
- "${CMAKE_CXX_FLAGS} -std=gnu++11")
- else(CYGWIN)
- set(CMAKE_CXX_FLAGS
- "${CMAKE_CXX_FLAGS} -std=c++0x")
- endif(CYGWIN)
- set(CMAKE_CXX_FLAGS
- "${CMAKE_CXX_FLAGS} -Wall -pedantic -Wextra -Werror=shadow")
- if (GCC_VERSION VERSION_GREATER 4.4)
- set(CMAKE_CXX_FLAGS
- "${CMAKE_CXX_FLAGS} -Wunused-result -Werror=unused-result \
- -Wunused-parameter -Werror=unused-parameter")
- endif()
-
- # Certain platforms such as ARM do not use signed chars by default
- # which causes issues with certain bounds checks.
- set(CMAKE_CXX_FLAGS
- "${CMAKE_CXX_FLAGS} -fsigned-char")
-
-elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
- set(CMAKE_CXX_FLAGS
- "${CMAKE_CXX_FLAGS} -std=c++0x -Wall -pedantic \
- -Wextra")
- if(NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
- set(CMAKE_CXX_FLAGS
- "${CMAKE_CXX_FLAGS} -stdlib=libc++")
- endif()
- if(NOT ("${CMAKE_SYSTEM_NAME}" MATCHES "FreeBSD" OR
- "${CMAKE_SYSTEM_NAME}" MATCHES "Linux"))
- set(CMAKE_EXE_LINKER_FLAGS
- "${CMAKE_EXE_LINKER_FLAGS} -lc++abi")
- endif()
-
- # Certain platforms such as ARM do not use signed chars by default
- # which causes issues with certain bounds checks.
- set(CMAKE_CXX_FLAGS
- "${CMAKE_CXX_FLAGS} -fsigned-char")
-
-elseif(MSVC)
- # Visual Studio pedantic build settings
- # warning C4512: assignment operator could not be generated
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /WX /wd4512")
-endif()
-
-if(FLATBUFFERS_CODE_COVERAGE)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fprofile-arcs -ftest-coverage")
- set(CMAKE_EXE_LINKER_FLAGS
- "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage")
-endif()
-
-if(BIICODE)
- include(biicode/cmake/biicode.cmake)
- return()
-endif()
-
-include_directories(include)
-include_directories(grpc)
-
-if(FLATBUFFERS_BUILD_FLATLIB)
-add_library(flatbuffers STATIC ${FlatBuffers_Library_SRCS})
-endif()
-
-if(FLATBUFFERS_BUILD_FLATC)
- add_executable(flatc ${FlatBuffers_Compiler_SRCS})
- if(NOT FLATBUFFERS_FLATC_EXECUTABLE)
- set(FLATBUFFERS_FLATC_EXECUTABLE $<TARGET_FILE:flatc>)
- endif()
-endif()
-
-if(FLATBUFFERS_BUILD_FLATHASH)
- add_executable(flathash ${FlatHash_SRCS})
-endif()
-
-if(FLATBUFFERS_BUILD_SHAREDLIB)
- add_library(flatbuffers_shared SHARED ${FlatBuffers_Library_SRCS})
- set_target_properties(flatbuffers_shared PROPERTIES OUTPUT_NAME flatbuffers)
-endif()
-
-function(compile_flatbuffers_schema_to_cpp SRC_FBS)
- get_filename_component(SRC_FBS_DIR ${SRC_FBS} PATH)
- string(REGEX REPLACE "\\.fbs$" "_generated.h" GEN_HEADER ${SRC_FBS})
- add_custom_command(
- OUTPUT ${GEN_HEADER}
- COMMAND "${FLATBUFFERS_FLATC_EXECUTABLE}" -c --no-includes --gen-mutable
- --gen-object-api -o "${SRC_FBS_DIR}"
- "${CMAKE_CURRENT_SOURCE_DIR}/${SRC_FBS}"
- DEPENDS flatc)
-endfunction()
-
-function(compile_flatbuffers_schema_to_binary SRC_FBS)
- get_filename_component(SRC_FBS_DIR ${SRC_FBS} PATH)
- string(REGEX REPLACE "\\.fbs$" ".bfbs" GEN_BINARY_SCHEMA ${SRC_FBS})
- add_custom_command(
- OUTPUT ${GEN_BINARY_SCHEMA}
- COMMAND "${FLATBUFFERS_FLATC_EXECUTABLE}" -b --schema -o "${SRC_FBS_DIR}"
- "${CMAKE_CURRENT_SOURCE_DIR}/${SRC_FBS}"
- DEPENDS flatc)
-endfunction()
-
-if(FLATBUFFERS_BUILD_TESTS)
- compile_flatbuffers_schema_to_cpp(tests/monster_test.fbs)
- include_directories(${CMAKE_CURRENT_BINARY_DIR}/tests)
- add_executable(flattests ${FlatBuffers_Tests_SRCS})
- set_property(TARGET flattests
- PROPERTY COMPILE_DEFINITIONS FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE
- FLATBUFFERS_DEBUG_VERIFICATION_FAILURE=1)
-
- compile_flatbuffers_schema_to_cpp(samples/monster.fbs)
- include_directories(${CMAKE_CURRENT_BINARY_DIR}/samples)
- add_executable(flatsamplebinary ${FlatBuffers_Sample_Binary_SRCS})
- add_executable(flatsampletext ${FlatBuffers_Sample_Text_SRCS})
-endif()
-
-if(FLATBUFFERS_BUILD_GRPCTEST)
- if(CMAKE_COMPILER_IS_GNUCXX)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-parameter")
- endif()
- add_executable(grpctest ${FlatBuffers_GRPCTest_SRCS})
- target_link_libraries(grpctest grpc++_unsecure grpc pthread dl)
-endif()
-
-if(FLATBUFFERS_INSTALL)
- install(DIRECTORY include/flatbuffers DESTINATION include)
- if(FLATBUFFERS_BUILD_FLATLIB)
- install(TARGETS flatbuffers DESTINATION lib)
- endif()
- if(FLATBUFFERS_BUILD_FLATC)
- install(TARGETS flatc DESTINATION bin)
- endif()
- if(FLATBUFFERS_BUILD_SHAREDLIB)
- install(TARGETS flatbuffers_shared DESTINATION lib)
- endif()
-endif()
-
-if(FLATBUFFERS_BUILD_TESTS)
- enable_testing()
-
- file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/tests" DESTINATION
- "${CMAKE_CURRENT_BINARY_DIR}")
- add_test(NAME flattests COMMAND flattests)
-endif()
-
-include(CMake/BuildFlatBuffers.cmake)
-
-if(FLATBUFFERS_PACKAGE_DEBIAN)
- include(CMake/PackageDebian.cmake)
-endif()
diff --git a/third_party/flatbuffers/CONTRIBUTING.md b/third_party/flatbuffers/CONTRIBUTING.md
deleted file mode 100644
index 17428ad..0000000
--- a/third_party/flatbuffers/CONTRIBUTING.md
+++ /dev/null
@@ -1,42 +0,0 @@
-Contributing {#contributing}
-============
-
-Want to contribute? Great! First, read this page (including the small print at
-the end).
-
-# Before you contribute
-Before we can use your code, you must sign the
-[Google Individual Contributor License Agreement](https://developers.google.com/open-source/cla/individual?csw=1)
-(CLA), which you can do online. The CLA is necessary mainly because you own the
-copyright to your changes, even after your contribution becomes part of our
-codebase, so we need your permission to use and distribute your code. We also
-need to be sure of various other things—for instance that you'll tell us if you
-know that your code infringes on other people's patents. You don't have to sign
-the CLA until after you've submitted your code for review and a member has
-approved it, but you must do it before we can put your code into our codebase.
-Before you start working on a larger contribution, you should get in touch with
-us first through the issue tracker with your idea so that we can help out and
-possibly guide you. Coordinating up front makes it much easier to avoid
-frustration later on.
-
-# Code reviews
-All submissions, including submissions by project members, require review. We
-use Github pull requests for this purpose.
-
-Some tips for good pull requests:
-* Use our code
- [style guide](https://google.github.io/styleguide/cppguide.html).
- When in doubt, try to stay true to the existing code of the project.
-* Write a descriptive commit message. What problem are you solving and what
- are the consequences? Where and what did you test? Some good tips:
- [here](http://robots.thoughtbot.com/5-useful-tips-for-a-better-commit-message)
- and [here](https://www.kernel.org/doc/Documentation/SubmittingPatches).
-* If your PR consists of multiple commits which are successive improvements /
- fixes to your first commit, consider squashing them into a single commit
- (`git rebase -i`) such that your PR is a single commit on top of the current
- HEAD. This make reviewing the code so much easier, and our history more
- readable.
-
-# The small print
-Contributions made by corporations are covered by a different agreement than
-the one above, the Software Grant and Corporate Contributor License Agreement.
diff --git a/third_party/flatbuffers/CTestTestfile.cmake b/third_party/flatbuffers/CTestTestfile.cmake
deleted file mode 100644
index c4fd7aa..0000000
--- a/third_party/flatbuffers/CTestTestfile.cmake
+++ /dev/null
@@ -1,7 +0,0 @@
-# CMake generated Testfile for
-# Source directory: /home/alain/flatbuffers
-# Build directory: /home/alain/flatbuffers
-#
-# This file includes the relevant testing commands required for
-# testing this directory and lists subdirectories to be tested as well.
-add_test(flattests "/home/alain/flatbuffers/flattests")
diff --git a/third_party/flatbuffers/LICENSE.txt b/third_party/flatbuffers/LICENSE.txt
deleted file mode 100644
index a4c5efd..0000000
--- a/third_party/flatbuffers/LICENSE.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright 2014 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/third_party/flatbuffers/Makefile b/third_party/flatbuffers/Makefile
deleted file mode 100644
index b472e1f..0000000
--- a/third_party/flatbuffers/Makefile
+++ /dev/null
@@ -1,956 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.5
-
-# Default target executed when no arguments are given to make.
-default_target: all
-
-.PHONY : default_target
-
-# Allow only one "make -f Makefile2" at a time, but pass parallelism.
-.NOTPARALLEL:
-
-
-#=============================================================================
-# Special targets provided by cmake.
-
-# Disable implicit rules so canonical targets will work.
-.SUFFIXES:
-
-
-# Remove some rules from gmake that .SUFFIXES does not remove.
-SUFFIXES =
-
-.SUFFIXES: .hpux_make_needs_suffix_list
-
-
-# Suppress display of executed commands.
-$(VERBOSE).SILENT:
-
-
-# A target that is always out of date.
-cmake_force:
-
-.PHONY : cmake_force
-
-#=============================================================================
-# Set environment variables for the build.
-
-# The shell in which to execute make rules.
-SHELL = /bin/sh
-
-# The CMake executable.
-CMAKE_COMMAND = /usr/bin/cmake
-
-# The command to remove a file.
-RM = /usr/bin/cmake -E remove -f
-
-# Escaping for special characters.
-EQUALS = =
-
-# The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /home/alain/flatbuffers
-
-# The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /home/alain/flatbuffers
-
-#=============================================================================
-# Targets provided globally by CMake.
-
-# Special rule for the target rebuild_cache
-rebuild_cache:
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
- /usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
-.PHONY : rebuild_cache
-
-# Special rule for the target rebuild_cache
-rebuild_cache/fast: rebuild_cache
-
-.PHONY : rebuild_cache/fast
-
-# Special rule for the target install
-install: preinstall
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
- /usr/bin/cmake -P cmake_install.cmake
-.PHONY : install
-
-# Special rule for the target install
-install/fast: preinstall/fast
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
- /usr/bin/cmake -P cmake_install.cmake
-.PHONY : install/fast
-
-# Special rule for the target list_install_components
-list_install_components:
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\""
-.PHONY : list_install_components
-
-# Special rule for the target list_install_components
-list_install_components/fast: list_install_components
-
-.PHONY : list_install_components/fast
-
-# Special rule for the target install/strip
-install/strip: preinstall
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..."
- /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
-.PHONY : install/strip
-
-# Special rule for the target install/strip
-install/strip/fast: install/strip
-
-.PHONY : install/strip/fast
-
-# Special rule for the target install/local
-install/local: preinstall
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..."
- /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
-.PHONY : install/local
-
-# Special rule for the target install/local
-install/local/fast: install/local
-
-.PHONY : install/local/fast
-
-# Special rule for the target test
-test:
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..."
- /usr/bin/ctest --force-new-ctest-process $(ARGS)
-.PHONY : test
-
-# Special rule for the target test
-test/fast: test
-
-.PHONY : test/fast
-
-# Special rule for the target edit_cache
-edit_cache:
- @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..."
- /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
-.PHONY : edit_cache
-
-# Special rule for the target edit_cache
-edit_cache/fast: edit_cache
-
-.PHONY : edit_cache/fast
-
-# The main all target
-all: cmake_check_build_system
- $(CMAKE_COMMAND) -E cmake_progress_start /home/alain/flatbuffers/CMakeFiles /home/alain/flatbuffers/CMakeFiles/progress.marks
- $(MAKE) -f CMakeFiles/Makefile2 all
- $(CMAKE_COMMAND) -E cmake_progress_start /home/alain/flatbuffers/CMakeFiles 0
-.PHONY : all
-
-# The main clean target
-clean:
- $(MAKE) -f CMakeFiles/Makefile2 clean
-.PHONY : clean
-
-# The main clean target
-clean/fast: clean
-
-.PHONY : clean/fast
-
-# Prepare targets for installation.
-preinstall: all
- $(MAKE) -f CMakeFiles/Makefile2 preinstall
-.PHONY : preinstall
-
-# Prepare targets for installation.
-preinstall/fast:
- $(MAKE) -f CMakeFiles/Makefile2 preinstall
-.PHONY : preinstall/fast
-
-# clear depends
-depend:
- $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
-.PHONY : depend
-
-#=============================================================================
-# Target rules for targets named flattests
-
-# Build rule for target.
-flattests: cmake_check_build_system
- $(MAKE) -f CMakeFiles/Makefile2 flattests
-.PHONY : flattests
-
-# fast build rule for target.
-flattests/fast:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/build
-.PHONY : flattests/fast
-
-#=============================================================================
-# Target rules for targets named flatc
-
-# Build rule for target.
-flatc: cmake_check_build_system
- $(MAKE) -f CMakeFiles/Makefile2 flatc
-.PHONY : flatc
-
-# fast build rule for target.
-flatc/fast:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/build
-.PHONY : flatc/fast
-
-#=============================================================================
-# Target rules for targets named flatbuffers
-
-# Build rule for target.
-flatbuffers: cmake_check_build_system
- $(MAKE) -f CMakeFiles/Makefile2 flatbuffers
-.PHONY : flatbuffers
-
-# fast build rule for target.
-flatbuffers/fast:
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/build
-.PHONY : flatbuffers/fast
-
-#=============================================================================
-# Target rules for targets named flatsamplebinary
-
-# Build rule for target.
-flatsamplebinary: cmake_check_build_system
- $(MAKE) -f CMakeFiles/Makefile2 flatsamplebinary
-.PHONY : flatsamplebinary
-
-# fast build rule for target.
-flatsamplebinary/fast:
- $(MAKE) -f CMakeFiles/flatsamplebinary.dir/build.make CMakeFiles/flatsamplebinary.dir/build
-.PHONY : flatsamplebinary/fast
-
-#=============================================================================
-# Target rules for targets named flathash
-
-# Build rule for target.
-flathash: cmake_check_build_system
- $(MAKE) -f CMakeFiles/Makefile2 flathash
-.PHONY : flathash
-
-# fast build rule for target.
-flathash/fast:
- $(MAKE) -f CMakeFiles/flathash.dir/build.make CMakeFiles/flathash.dir/build
-.PHONY : flathash/fast
-
-#=============================================================================
-# Target rules for targets named flatsampletext
-
-# Build rule for target.
-flatsampletext: cmake_check_build_system
- $(MAKE) -f CMakeFiles/Makefile2 flatsampletext
-.PHONY : flatsampletext
-
-# fast build rule for target.
-flatsampletext/fast:
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/build
-.PHONY : flatsampletext/fast
-
-grpc/src/compiler/cpp_generator.o: grpc/src/compiler/cpp_generator.cc.o
-
-.PHONY : grpc/src/compiler/cpp_generator.o
-
-# target to build an object file
-grpc/src/compiler/cpp_generator.cc.o:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.o
-.PHONY : grpc/src/compiler/cpp_generator.cc.o
-
-grpc/src/compiler/cpp_generator.i: grpc/src/compiler/cpp_generator.cc.i
-
-.PHONY : grpc/src/compiler/cpp_generator.i
-
-# target to preprocess a source file
-grpc/src/compiler/cpp_generator.cc.i:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.i
-.PHONY : grpc/src/compiler/cpp_generator.cc.i
-
-grpc/src/compiler/cpp_generator.s: grpc/src/compiler/cpp_generator.cc.s
-
-.PHONY : grpc/src/compiler/cpp_generator.s
-
-# target to generate assembly for a file
-grpc/src/compiler/cpp_generator.cc.s:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/grpc/src/compiler/cpp_generator.cc.s
-.PHONY : grpc/src/compiler/cpp_generator.cc.s
-
-grpc/src/compiler/go_generator.o: grpc/src/compiler/go_generator.cc.o
-
-.PHONY : grpc/src/compiler/go_generator.o
-
-# target to build an object file
-grpc/src/compiler/go_generator.cc.o:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.o
-.PHONY : grpc/src/compiler/go_generator.cc.o
-
-grpc/src/compiler/go_generator.i: grpc/src/compiler/go_generator.cc.i
-
-.PHONY : grpc/src/compiler/go_generator.i
-
-# target to preprocess a source file
-grpc/src/compiler/go_generator.cc.i:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.i
-.PHONY : grpc/src/compiler/go_generator.cc.i
-
-grpc/src/compiler/go_generator.s: grpc/src/compiler/go_generator.cc.s
-
-.PHONY : grpc/src/compiler/go_generator.s
-
-# target to generate assembly for a file
-grpc/src/compiler/go_generator.cc.s:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/grpc/src/compiler/go_generator.cc.s
-.PHONY : grpc/src/compiler/go_generator.cc.s
-
-samples/sample_binary.o: samples/sample_binary.cpp.o
-
-.PHONY : samples/sample_binary.o
-
-# target to build an object file
-samples/sample_binary.cpp.o:
- $(MAKE) -f CMakeFiles/flatsamplebinary.dir/build.make CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.o
-.PHONY : samples/sample_binary.cpp.o
-
-samples/sample_binary.i: samples/sample_binary.cpp.i
-
-.PHONY : samples/sample_binary.i
-
-# target to preprocess a source file
-samples/sample_binary.cpp.i:
- $(MAKE) -f CMakeFiles/flatsamplebinary.dir/build.make CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.i
-.PHONY : samples/sample_binary.cpp.i
-
-samples/sample_binary.s: samples/sample_binary.cpp.s
-
-.PHONY : samples/sample_binary.s
-
-# target to generate assembly for a file
-samples/sample_binary.cpp.s:
- $(MAKE) -f CMakeFiles/flatsamplebinary.dir/build.make CMakeFiles/flatsamplebinary.dir/samples/sample_binary.cpp.s
-.PHONY : samples/sample_binary.cpp.s
-
-samples/sample_text.o: samples/sample_text.cpp.o
-
-.PHONY : samples/sample_text.o
-
-# target to build an object file
-samples/sample_text.cpp.o:
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.o
-.PHONY : samples/sample_text.cpp.o
-
-samples/sample_text.i: samples/sample_text.cpp.i
-
-.PHONY : samples/sample_text.i
-
-# target to preprocess a source file
-samples/sample_text.cpp.i:
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.i
-.PHONY : samples/sample_text.cpp.i
-
-samples/sample_text.s: samples/sample_text.cpp.s
-
-.PHONY : samples/sample_text.s
-
-# target to generate assembly for a file
-samples/sample_text.cpp.s:
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/samples/sample_text.cpp.s
-.PHONY : samples/sample_text.cpp.s
-
-src/code_generators.o: src/code_generators.cpp.o
-
-.PHONY : src/code_generators.o
-
-# target to build an object file
-src/code_generators.cpp.o:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/code_generators.cpp.o
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/code_generators.cpp.o
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/src/code_generators.cpp.o
-.PHONY : src/code_generators.cpp.o
-
-src/code_generators.i: src/code_generators.cpp.i
-
-.PHONY : src/code_generators.i
-
-# target to preprocess a source file
-src/code_generators.cpp.i:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/code_generators.cpp.i
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/code_generators.cpp.i
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/src/code_generators.cpp.i
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/src/code_generators.cpp.i
-.PHONY : src/code_generators.cpp.i
-
-src/code_generators.s: src/code_generators.cpp.s
-
-.PHONY : src/code_generators.s
-
-# target to generate assembly for a file
-src/code_generators.cpp.s:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/code_generators.cpp.s
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/code_generators.cpp.s
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/src/code_generators.cpp.s
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/src/code_generators.cpp.s
-.PHONY : src/code_generators.cpp.s
-
-src/flatc.o: src/flatc.cpp.o
-
-.PHONY : src/flatc.o
-
-# target to build an object file
-src/flatc.cpp.o:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/flatc.cpp.o
-.PHONY : src/flatc.cpp.o
-
-src/flatc.i: src/flatc.cpp.i
-
-.PHONY : src/flatc.i
-
-# target to preprocess a source file
-src/flatc.cpp.i:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/flatc.cpp.i
-.PHONY : src/flatc.cpp.i
-
-src/flatc.s: src/flatc.cpp.s
-
-.PHONY : src/flatc.s
-
-# target to generate assembly for a file
-src/flatc.cpp.s:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/flatc.cpp.s
-.PHONY : src/flatc.cpp.s
-
-src/flatc_main.o: src/flatc_main.cpp.o
-
-.PHONY : src/flatc_main.o
-
-# target to build an object file
-src/flatc_main.cpp.o:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/flatc_main.cpp.o
-.PHONY : src/flatc_main.cpp.o
-
-src/flatc_main.i: src/flatc_main.cpp.i
-
-.PHONY : src/flatc_main.i
-
-# target to preprocess a source file
-src/flatc_main.cpp.i:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/flatc_main.cpp.i
-.PHONY : src/flatc_main.cpp.i
-
-src/flatc_main.s: src/flatc_main.cpp.s
-
-.PHONY : src/flatc_main.s
-
-# target to generate assembly for a file
-src/flatc_main.cpp.s:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/flatc_main.cpp.s
-.PHONY : src/flatc_main.cpp.s
-
-src/flathash.o: src/flathash.cpp.o
-
-.PHONY : src/flathash.o
-
-# target to build an object file
-src/flathash.cpp.o:
- $(MAKE) -f CMakeFiles/flathash.dir/build.make CMakeFiles/flathash.dir/src/flathash.cpp.o
-.PHONY : src/flathash.cpp.o
-
-src/flathash.i: src/flathash.cpp.i
-
-.PHONY : src/flathash.i
-
-# target to preprocess a source file
-src/flathash.cpp.i:
- $(MAKE) -f CMakeFiles/flathash.dir/build.make CMakeFiles/flathash.dir/src/flathash.cpp.i
-.PHONY : src/flathash.cpp.i
-
-src/flathash.s: src/flathash.cpp.s
-
-.PHONY : src/flathash.s
-
-# target to generate assembly for a file
-src/flathash.cpp.s:
- $(MAKE) -f CMakeFiles/flathash.dir/build.make CMakeFiles/flathash.dir/src/flathash.cpp.s
-.PHONY : src/flathash.cpp.s
-
-src/idl_gen_cpp.o: src/idl_gen_cpp.cpp.o
-
-.PHONY : src/idl_gen_cpp.o
-
-# target to build an object file
-src/idl_gen_cpp.cpp.o:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.o
-.PHONY : src/idl_gen_cpp.cpp.o
-
-src/idl_gen_cpp.i: src/idl_gen_cpp.cpp.i
-
-.PHONY : src/idl_gen_cpp.i
-
-# target to preprocess a source file
-src/idl_gen_cpp.cpp.i:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.i
-.PHONY : src/idl_gen_cpp.cpp.i
-
-src/idl_gen_cpp.s: src/idl_gen_cpp.cpp.s
-
-.PHONY : src/idl_gen_cpp.s
-
-# target to generate assembly for a file
-src/idl_gen_cpp.cpp.s:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_cpp.cpp.s
-.PHONY : src/idl_gen_cpp.cpp.s
-
-src/idl_gen_fbs.o: src/idl_gen_fbs.cpp.o
-
-.PHONY : src/idl_gen_fbs.o
-
-# target to build an object file
-src/idl_gen_fbs.cpp.o:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.o
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.o
-.PHONY : src/idl_gen_fbs.cpp.o
-
-src/idl_gen_fbs.i: src/idl_gen_fbs.cpp.i
-
-.PHONY : src/idl_gen_fbs.i
-
-# target to preprocess a source file
-src/idl_gen_fbs.cpp.i:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.i
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.i
-.PHONY : src/idl_gen_fbs.cpp.i
-
-src/idl_gen_fbs.s: src/idl_gen_fbs.cpp.s
-
-.PHONY : src/idl_gen_fbs.s
-
-# target to generate assembly for a file
-src/idl_gen_fbs.cpp.s:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/idl_gen_fbs.cpp.s
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_fbs.cpp.s
-.PHONY : src/idl_gen_fbs.cpp.s
-
-src/idl_gen_general.o: src/idl_gen_general.cpp.o
-
-.PHONY : src/idl_gen_general.o
-
-# target to build an object file
-src/idl_gen_general.cpp.o:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_general.cpp.o
-.PHONY : src/idl_gen_general.cpp.o
-
-src/idl_gen_general.i: src/idl_gen_general.cpp.i
-
-.PHONY : src/idl_gen_general.i
-
-# target to preprocess a source file
-src/idl_gen_general.cpp.i:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_general.cpp.i
-.PHONY : src/idl_gen_general.cpp.i
-
-src/idl_gen_general.s: src/idl_gen_general.cpp.s
-
-.PHONY : src/idl_gen_general.s
-
-# target to generate assembly for a file
-src/idl_gen_general.cpp.s:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_general.cpp.s
-.PHONY : src/idl_gen_general.cpp.s
-
-src/idl_gen_go.o: src/idl_gen_go.cpp.o
-
-.PHONY : src/idl_gen_go.o
-
-# target to build an object file
-src/idl_gen_go.cpp.o:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_go.cpp.o
-.PHONY : src/idl_gen_go.cpp.o
-
-src/idl_gen_go.i: src/idl_gen_go.cpp.i
-
-.PHONY : src/idl_gen_go.i
-
-# target to preprocess a source file
-src/idl_gen_go.cpp.i:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_go.cpp.i
-.PHONY : src/idl_gen_go.cpp.i
-
-src/idl_gen_go.s: src/idl_gen_go.cpp.s
-
-.PHONY : src/idl_gen_go.s
-
-# target to generate assembly for a file
-src/idl_gen_go.cpp.s:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_go.cpp.s
-.PHONY : src/idl_gen_go.cpp.s
-
-src/idl_gen_grpc.o: src/idl_gen_grpc.cpp.o
-
-.PHONY : src/idl_gen_grpc.o
-
-# target to build an object file
-src/idl_gen_grpc.cpp.o:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.o
-.PHONY : src/idl_gen_grpc.cpp.o
-
-src/idl_gen_grpc.i: src/idl_gen_grpc.cpp.i
-
-.PHONY : src/idl_gen_grpc.i
-
-# target to preprocess a source file
-src/idl_gen_grpc.cpp.i:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.i
-.PHONY : src/idl_gen_grpc.cpp.i
-
-src/idl_gen_grpc.s: src/idl_gen_grpc.cpp.s
-
-.PHONY : src/idl_gen_grpc.s
-
-# target to generate assembly for a file
-src/idl_gen_grpc.cpp.s:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_grpc.cpp.s
-.PHONY : src/idl_gen_grpc.cpp.s
-
-src/idl_gen_js.o: src/idl_gen_js.cpp.o
-
-.PHONY : src/idl_gen_js.o
-
-# target to build an object file
-src/idl_gen_js.cpp.o:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_js.cpp.o
-.PHONY : src/idl_gen_js.cpp.o
-
-src/idl_gen_js.i: src/idl_gen_js.cpp.i
-
-.PHONY : src/idl_gen_js.i
-
-# target to preprocess a source file
-src/idl_gen_js.cpp.i:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_js.cpp.i
-.PHONY : src/idl_gen_js.cpp.i
-
-src/idl_gen_js.s: src/idl_gen_js.cpp.s
-
-.PHONY : src/idl_gen_js.s
-
-# target to generate assembly for a file
-src/idl_gen_js.cpp.s:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_js.cpp.s
-.PHONY : src/idl_gen_js.cpp.s
-
-src/idl_gen_php.o: src/idl_gen_php.cpp.o
-
-.PHONY : src/idl_gen_php.o
-
-# target to build an object file
-src/idl_gen_php.cpp.o:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_php.cpp.o
-.PHONY : src/idl_gen_php.cpp.o
-
-src/idl_gen_php.i: src/idl_gen_php.cpp.i
-
-.PHONY : src/idl_gen_php.i
-
-# target to preprocess a source file
-src/idl_gen_php.cpp.i:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_php.cpp.i
-.PHONY : src/idl_gen_php.cpp.i
-
-src/idl_gen_php.s: src/idl_gen_php.cpp.s
-
-.PHONY : src/idl_gen_php.s
-
-# target to generate assembly for a file
-src/idl_gen_php.cpp.s:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_php.cpp.s
-.PHONY : src/idl_gen_php.cpp.s
-
-src/idl_gen_python.o: src/idl_gen_python.cpp.o
-
-.PHONY : src/idl_gen_python.o
-
-# target to build an object file
-src/idl_gen_python.cpp.o:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_python.cpp.o
-.PHONY : src/idl_gen_python.cpp.o
-
-src/idl_gen_python.i: src/idl_gen_python.cpp.i
-
-.PHONY : src/idl_gen_python.i
-
-# target to preprocess a source file
-src/idl_gen_python.cpp.i:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_python.cpp.i
-.PHONY : src/idl_gen_python.cpp.i
-
-src/idl_gen_python.s: src/idl_gen_python.cpp.s
-
-.PHONY : src/idl_gen_python.s
-
-# target to generate assembly for a file
-src/idl_gen_python.cpp.s:
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_python.cpp.s
-.PHONY : src/idl_gen_python.cpp.s
-
-src/idl_gen_text.o: src/idl_gen_text.cpp.o
-
-.PHONY : src/idl_gen_text.o
-
-# target to build an object file
-src/idl_gen_text.cpp.o:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/idl_gen_text.cpp.o
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_text.cpp.o
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.o
-.PHONY : src/idl_gen_text.cpp.o
-
-src/idl_gen_text.i: src/idl_gen_text.cpp.i
-
-.PHONY : src/idl_gen_text.i
-
-# target to preprocess a source file
-src/idl_gen_text.cpp.i:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/idl_gen_text.cpp.i
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_text.cpp.i
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.i
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.i
-.PHONY : src/idl_gen_text.cpp.i
-
-src/idl_gen_text.s: src/idl_gen_text.cpp.s
-
-.PHONY : src/idl_gen_text.s
-
-# target to generate assembly for a file
-src/idl_gen_text.cpp.s:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/idl_gen_text.cpp.s
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_gen_text.cpp.s
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.s
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/src/idl_gen_text.cpp.s
-.PHONY : src/idl_gen_text.cpp.s
-
-src/idl_parser.o: src/idl_parser.cpp.o
-
-.PHONY : src/idl_parser.o
-
-# target to build an object file
-src/idl_parser.cpp.o:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/idl_parser.cpp.o
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_parser.cpp.o
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.o
-.PHONY : src/idl_parser.cpp.o
-
-src/idl_parser.i: src/idl_parser.cpp.i
-
-.PHONY : src/idl_parser.i
-
-# target to preprocess a source file
-src/idl_parser.cpp.i:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/idl_parser.cpp.i
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_parser.cpp.i
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.i
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.i
-.PHONY : src/idl_parser.cpp.i
-
-src/idl_parser.s: src/idl_parser.cpp.s
-
-.PHONY : src/idl_parser.s
-
-# target to generate assembly for a file
-src/idl_parser.cpp.s:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/idl_parser.cpp.s
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/idl_parser.cpp.s
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.s
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/src/idl_parser.cpp.s
-.PHONY : src/idl_parser.cpp.s
-
-src/reflection.o: src/reflection.cpp.o
-
-.PHONY : src/reflection.o
-
-# target to build an object file
-src/reflection.cpp.o:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/reflection.cpp.o
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/reflection.cpp.o
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/src/reflection.cpp.o
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/src/reflection.cpp.o
-.PHONY : src/reflection.cpp.o
-
-src/reflection.i: src/reflection.cpp.i
-
-.PHONY : src/reflection.i
-
-# target to preprocess a source file
-src/reflection.cpp.i:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/reflection.cpp.i
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/reflection.cpp.i
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/src/reflection.cpp.i
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/src/reflection.cpp.i
-.PHONY : src/reflection.cpp.i
-
-src/reflection.s: src/reflection.cpp.s
-
-.PHONY : src/reflection.s
-
-# target to generate assembly for a file
-src/reflection.cpp.s:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/reflection.cpp.s
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/reflection.cpp.s
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/src/reflection.cpp.s
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/src/reflection.cpp.s
-.PHONY : src/reflection.cpp.s
-
-src/util.o: src/util.cpp.o
-
-.PHONY : src/util.o
-
-# target to build an object file
-src/util.cpp.o:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/util.cpp.o
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/util.cpp.o
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/src/util.cpp.o
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/src/util.cpp.o
-.PHONY : src/util.cpp.o
-
-src/util.i: src/util.cpp.i
-
-.PHONY : src/util.i
-
-# target to preprocess a source file
-src/util.cpp.i:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/util.cpp.i
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/util.cpp.i
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/src/util.cpp.i
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/src/util.cpp.i
-.PHONY : src/util.cpp.i
-
-src/util.s: src/util.cpp.s
-
-.PHONY : src/util.s
-
-# target to generate assembly for a file
-src/util.cpp.s:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/src/util.cpp.s
- $(MAKE) -f CMakeFiles/flatc.dir/build.make CMakeFiles/flatc.dir/src/util.cpp.s
- $(MAKE) -f CMakeFiles/flatbuffers.dir/build.make CMakeFiles/flatbuffers.dir/src/util.cpp.s
- $(MAKE) -f CMakeFiles/flatsampletext.dir/build.make CMakeFiles/flatsampletext.dir/src/util.cpp.s
-.PHONY : src/util.cpp.s
-
-tests/test.o: tests/test.cpp.o
-
-.PHONY : tests/test.o
-
-# target to build an object file
-tests/test.cpp.o:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/tests/test.cpp.o
-.PHONY : tests/test.cpp.o
-
-tests/test.i: tests/test.cpp.i
-
-.PHONY : tests/test.i
-
-# target to preprocess a source file
-tests/test.cpp.i:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/tests/test.cpp.i
-.PHONY : tests/test.cpp.i
-
-tests/test.s: tests/test.cpp.s
-
-.PHONY : tests/test.s
-
-# target to generate assembly for a file
-tests/test.cpp.s:
- $(MAKE) -f CMakeFiles/flattests.dir/build.make CMakeFiles/flattests.dir/tests/test.cpp.s
-.PHONY : tests/test.cpp.s
-
-# Help Target
-help:
- @echo "The following are some of the valid targets for this Makefile:"
- @echo "... all (the default if no target is provided)"
- @echo "... clean"
- @echo "... depend"
- @echo "... rebuild_cache"
- @echo "... install"
- @echo "... flattests"
- @echo "... flatc"
- @echo "... list_install_components"
- @echo "... install/strip"
- @echo "... install/local"
- @echo "... flatbuffers"
- @echo "... flatsamplebinary"
- @echo "... flathash"
- @echo "... flatsampletext"
- @echo "... test"
- @echo "... edit_cache"
- @echo "... grpc/src/compiler/cpp_generator.o"
- @echo "... grpc/src/compiler/cpp_generator.i"
- @echo "... grpc/src/compiler/cpp_generator.s"
- @echo "... grpc/src/compiler/go_generator.o"
- @echo "... grpc/src/compiler/go_generator.i"
- @echo "... grpc/src/compiler/go_generator.s"
- @echo "... samples/sample_binary.o"
- @echo "... samples/sample_binary.i"
- @echo "... samples/sample_binary.s"
- @echo "... samples/sample_text.o"
- @echo "... samples/sample_text.i"
- @echo "... samples/sample_text.s"
- @echo "... src/code_generators.o"
- @echo "... src/code_generators.i"
- @echo "... src/code_generators.s"
- @echo "... src/flatc.o"
- @echo "... src/flatc.i"
- @echo "... src/flatc.s"
- @echo "... src/flatc_main.o"
- @echo "... src/flatc_main.i"
- @echo "... src/flatc_main.s"
- @echo "... src/flathash.o"
- @echo "... src/flathash.i"
- @echo "... src/flathash.s"
- @echo "... src/idl_gen_cpp.o"
- @echo "... src/idl_gen_cpp.i"
- @echo "... src/idl_gen_cpp.s"
- @echo "... src/idl_gen_fbs.o"
- @echo "... src/idl_gen_fbs.i"
- @echo "... src/idl_gen_fbs.s"
- @echo "... src/idl_gen_general.o"
- @echo "... src/idl_gen_general.i"
- @echo "... src/idl_gen_general.s"
- @echo "... src/idl_gen_go.o"
- @echo "... src/idl_gen_go.i"
- @echo "... src/idl_gen_go.s"
- @echo "... src/idl_gen_grpc.o"
- @echo "... src/idl_gen_grpc.i"
- @echo "... src/idl_gen_grpc.s"
- @echo "... src/idl_gen_js.o"
- @echo "... src/idl_gen_js.i"
- @echo "... src/idl_gen_js.s"
- @echo "... src/idl_gen_php.o"
- @echo "... src/idl_gen_php.i"
- @echo "... src/idl_gen_php.s"
- @echo "... src/idl_gen_python.o"
- @echo "... src/idl_gen_python.i"
- @echo "... src/idl_gen_python.s"
- @echo "... src/idl_gen_text.o"
- @echo "... src/idl_gen_text.i"
- @echo "... src/idl_gen_text.s"
- @echo "... src/idl_parser.o"
- @echo "... src/idl_parser.i"
- @echo "... src/idl_parser.s"
- @echo "... src/reflection.o"
- @echo "... src/reflection.i"
- @echo "... src/reflection.s"
- @echo "... src/util.o"
- @echo "... src/util.i"
- @echo "... src/util.s"
- @echo "... tests/test.o"
- @echo "... tests/test.i"
- @echo "... tests/test.s"
-.PHONY : help
-
-
-
-#=============================================================================
-# Special targets to cleanup operation of make.
-
-# Special rule to run CMake to check the build system integrity.
-# No rule that depends on this can have commands that come from listfiles
-# because they might be regenerated.
-cmake_check_build_system:
- $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
-.PHONY : cmake_check_build_system
-
diff --git a/third_party/flatbuffers/android/.project b/third_party/flatbuffers/android/.project
deleted file mode 100755
index e7d5931..0000000
--- a/third_party/flatbuffers/android/.project
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (c) 2014 Google, Inc.
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
- -->
-<projectDescription>
- <name>FlatBufferTest</name>
-</projectDescription>
diff --git a/third_party/flatbuffers/android/AndroidManifest.xml b/third_party/flatbuffers/android/AndroidManifest.xml
deleted file mode 100755
index a15f547..0000000
--- a/third_party/flatbuffers/android/AndroidManifest.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (c) 2013 Google, Inc.
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
- -->
-<!-- BEGIN_INCLUDE(manifest) -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.FlatBufferTest"
- android:versionCode="1"
- android:versionName="1.0">
-
- <uses-feature android:glEsVersion="0x00020000"></uses-feature>
- <!-- This is the platform API where NativeActivity was introduced. -->
- <uses-sdk android:minSdkVersion="9" />
-
- <!-- This .apk has no Java code itself, so set hasCode to false. -->
- <application android:label="@string/app_name" android:hasCode="false">
-
- <!-- Our activity is the built-in NativeActivity framework class.
- This will take care of integrating with our NDK code. -->
- <activity android:name="android.app.NativeActivity"
- android:label="@string/app_name"
- android:configChanges="orientation|keyboardHidden"
- android:screenOrientation="landscape">
- <!-- Tell NativeActivity the name of or .so -->
- <meta-data android:name="android.app.lib_name"
- android:value="FlatBufferTest" />
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
-
-</manifest>
-<!-- END_INCLUDE(manifest) -->
diff --git a/third_party/flatbuffers/android/build_apk.sh b/third_party/flatbuffers/android/build_apk.sh
deleted file mode 100755
index 1b9f4a4..0000000
--- a/third_party/flatbuffers/android/build_apk.sh
+++ /dev/null
@@ -1,511 +0,0 @@
-#!/bin/bash -eu
-#
-# Copyright (c) 2013 Google, Inc.
-#
-# This software is provided 'as-is', without any express or implied
-# warranty. In no event will the authors be held liable for any damages
-# arising from the use of this software.
-# Permission is granted to anyone to use this software for any purpose,
-# including commercial applications, and to alter it and redistribute it
-# freely, subject to the following restrictions:
-# 1. The origin of this software must not be misrepresented; you must not
-# claim that you wrote the original software. If you use this software
-# in a product, an acknowledgment in the product documentation would be
-# appreciated but is not required.
-# 2. Altered source versions must be plainly marked as such, and must not be
-# misrepresented as being the original software.
-# 3. This notice may not be removed or altered from any source distribution.
-#
-# Build, deploy, debug / execute a native Android package based upon
-# NativeActivity.
-
-declare -r script_directory=$(dirname $0)
-declare -r android_root=${script_directory}/../../../../../../
-declare -r script_name=$(basename $0)
-declare -r android_manifest=AndroidManifest.xml
-declare -r os_name=$(uname -s)
-
-# Minimum Android target version supported by this project.
-: ${BUILDAPK_ANDROID_TARGET_MINVERSION:=10}
-# Directory containing the Android SDK
-# (http://developer.android.com/sdk/index.html).
-: ${ANDROID_SDK_HOME:=}
-# Directory containing the Android NDK
-# (http://developer.android.com/tools/sdk/ndk/index.html).
-: ${NDK_HOME:=}
-
-# Display script help and exit.
-usage() {
- echo "
-Build the Android package in the current directory and deploy it to a
-connected device.
-
-Usage: ${script_name} \\
- [ADB_DEVICE=serial_number] [BUILD=0] [DEPLOY=0] [RUN_DEBUGGER=1] \
- [LAUNCH=0] [SWIG_BIN=swig_binary_directory] [SWIG_LIB=swig_include_directory] [ndk-build arguments ...]
-
-ADB_DEVICE=serial_number:
- serial_number specifies the device to deploy the built apk to if multiple
- Android devices are connected to the host.
-BUILD=0:
- Disables the build of the package.
-DEPLOY=0:
- Disables the deployment of the built apk to the Android device.
-RUN_DEBUGGER=1:
- Launches the application in gdb after it has been deployed. To debug in
- gdb, NDK_DEBUG=1 must also be specified on the command line to build a
- debug apk.
-LAUNCH=0:
- Disable the launch of the apk on the Android device.
-SWIG_BIN=swig_binary_directory:
- The directory where the SWIG binary lives. No need to set this if SWIG is
- installed and point to from your PATH variable.
-SWIG_LIB=swig_include_directory:
- The directory where SWIG shared include files are, usually obtainable from
- commandline with \"swig -swiglib\". No need to set this if SWIG is installed
- and point to from your PATH variable.
-ndk-build arguments...:
- Additional arguments for ndk-build. See ndk-build -h for more information.
-" >&2
- exit 1
-}
-
-# Get the number of CPU cores present on the host.
-get_number_of_cores() {
- case ${os_name} in
- Darwin)
- sysctl hw.ncpu | awk '{ print $2 }'
- ;;
- CYGWIN*|Linux)
- awk '/^processor/ { n=$3 } END { print n + 1 }' /proc/cpuinfo
- ;;
- *)
- echo 1
- ;;
- esac
-}
-
-# Get the package name from an AndroidManifest.xml file.
-get_package_name_from_manifest() {
- xmllint --xpath 'string(/manifest/@package)' "${1}"
-}
-
-# Get the library name from an AndroidManifest.xml file.
-get_library_name_from_manifest() {
- echo "\
-setns android=http://schemas.android.com/apk/res/android
-xpath string(/manifest/application/activity\
-[@android:name=\"android.app.NativeActivity\"]/meta-data\
-[@android:name=\"android.app.lib_name\"]/@android:value)" |
- xmllint --shell "${1}" | awk '/Object is a string/ { print $NF }'
-}
-
-# Get the number of Android devices connected to the system.
-get_number_of_devices_connected() {
- adb devices -l | \
- awk '/^..*$/ { if (p) { print $0 } }
- /List of devices attached/ { p = 1 }' | \
- wc -l
- return ${PIPESTATUS[0]}
-}
-
-# Kill a process and its' children. This is provided for cygwin which
-# doesn't ship with pkill.
-kill_process_group() {
- local parent_pid="${1}"
- local child_pid=
- for child_pid in $(ps -f | \
- awk '{ if ($3 == '"${parent_pid}"') { print $2 } }'); do
- kill_process_group "${child_pid}"
- done
- kill "${parent_pid}" 2>/dev/null
-}
-
-# Find and run "adb".
-adb() {
- local adb_path=
- for path in "$(which adb 2>/dev/null)" \
- "${ANDROID_SDK_HOME}/sdk/platform-tools/adb" \
- "${android_root}/prebuilts/sdk/platform-tools/adb"; do
- if [[ -e "${path}" ]]; then
- adb_path="${path}"
- break
- fi
- done
- if [[ "${adb_path}" == "" ]]; then
- echo -e "Unable to find adb." \
- "\nAdd the Android ADT sdk/platform-tools directory to the" \
- "PATH." >&2
- exit 1
- fi
- "${adb_path}" "$@"
-}
-
-# Find and run "android".
-android() {
- local android_executable=android
- if echo "${os_name}" | grep -q CYGWIN; then
- android_executable=android.bat
- fi
- local android_path=
- for path in "$(which ${android_executable})" \
- "${ANDROID_SDK_HOME}/sdk/tools/${android_executable}" \
- "${android_root}/prebuilts/sdk/tools/${android_executable}"; do
- if [[ -e "${path}" ]]; then
- android_path="${path}"
- break
- fi
- done
- if [[ "${android_path}" == "" ]]; then
- echo -e "Unable to find android tool." \
- "\nAdd the Android ADT sdk/tools directory to the PATH." >&2
- exit 1
- fi
- # Make sure ant is installed.
- if [[ "$(which ant)" == "" ]]; then
- echo -e "Unable to find ant." \
- "\nPlease install ant and add to the PATH." >&2
- exit 1
- fi
-
- "${android_path}" "$@"
-}
-
-# Find and run "ndk-build"
-ndkbuild() {
- local ndkbuild_path=
- for path in "$(which ndk-build 2>/dev/null)" \
- "${NDK_HOME}/ndk-build" \
- "${android_root}/prebuilts/ndk/current/ndk-build"; do
- if [[ -e "${path}" ]]; then
- ndkbuild_path="${path}"
- break
- fi
- done
- if [[ "${ndkbuild_path}" == "" ]]; then
- echo -e "Unable to find ndk-build." \
- "\nAdd the Android NDK directory to the PATH." >&2
- exit 1
- fi
- "${ndkbuild_path}" "$@"
-}
-
-# Get file modification time of $1 in seconds since the epoch.
-stat_mtime() {
- local filename="${1}"
- case ${os_name} in
- Darwin) stat -f%m "${filename}" 2>/dev/null || echo 0 ;;
- *) stat -c%Y "${filename}" 2>/dev/null || echo 0 ;;
- esac
-}
-
-# Build the native (C/C++) build targets in the current directory.
-build_native_targets() {
- # Save the list of output modules in the install directory so that it's
- # possible to restore their timestamps after the build is complete. This
- # works around a bug in ndk/build/core/setup-app.mk which results in the
- # unconditional execution of the clean-installed-binaries rule.
- restore_libraries="$(find libs -type f 2>/dev/null | \
- sed -E 's@^libs/(.*)@\1@')"
-
- # Build native code.
- ndkbuild -j$(get_number_of_cores) "$@"
-
- # Restore installed libraries.
- # Obviously this is a nasty hack (along with ${restore_libraries} above) as
- # it assumes it knows where the NDK will be placing output files.
- (
- IFS=$'\n'
- for libpath in ${restore_libraries}; do
- source_library="obj/local/${libpath}"
- target_library="libs/${libpath}"
- if [[ -e "${source_library}" ]]; then
- cp -a "${source_library}" "${target_library}"
- fi
- done
- )
-}
-
-# Select the oldest installed android build target that is at least as new as
-# BUILDAPK_ANDROID_TARGET_MINVERSION. If a suitable build target isn't found,
-# this function prints an error message and exits with an error.
-select_android_build_target() {
- local -r android_targets_installed=$( \
- android list targets | \
- awk -F'"' '/^id:.*android/ { print $2 }')
- local android_build_target=
- for android_target in $(echo "${android_targets_installed}" | \
- awk -F- '{ print $2 }' | sort -n); do
- local isNumber='^[0-9]+$'
- # skip preview API releases e.g. 'android-L'
- if [[ $android_target =~ $isNumber ]]; then
- if [[ $((android_target)) -ge \
- $((BUILDAPK_ANDROID_TARGET_MINVERSION)) ]]; then
- android_build_target="android-${android_target}"
- break
- fi
- # else
- # The API version is a letter, so skip it.
- fi
- done
- if [[ "${android_build_target}" == "" ]]; then
- echo -e \
- "Found installed Android targets:" \
- "$(echo ${android_targets_installed} | sed 's/ /\n /g;s/^/\n /;')" \
- "\nAndroid SDK platform" \
- "android-$((BUILDAPK_ANDROID_TARGET_MINVERSION))" \
- "must be installed to build this project." \
- "\nUse the \"android\" application to install API" \
- "$((BUILDAPK_ANDROID_TARGET_MINVERSION)) or newer." >&2
- exit 1
- fi
- echo "${android_build_target}"
-}
-
-# Sign unsigned apk $1 and write the result to $2 with key store file $3 and
-# password $4.
-# If a key store file $3 and password $4 aren't specified, a temporary
-# (60 day) key is generated and used to sign the package.
-sign_apk() {
- local unsigned_apk="${1}"
- local signed_apk="${2}"
- if [[ $(stat_mtime "${unsigned_apk}") -gt \
- $(stat_mtime "${signed_apk}") ]]; then
- local -r key_alias=$(basename ${signed_apk} .apk)
- local keystore="${3}"
- local key_password="${4}"
- [[ "${keystore}" == "" ]] && keystore="${unsigned_apk}.keystore"
- [[ "${key_password}" == "" ]] && \
- key_password="${key_alias}123456"
- if [[ ! -e ${keystore} ]]; then
- keytool -genkey -v -dname "cn=, ou=${key_alias}, o=fpl" \
- -storepass ${key_password} \
- -keypass ${key_password} -keystore ${keystore} \
- -alias ${key_alias} -keyalg RSA -keysize 2048 -validity 60
- fi
- cp "${unsigned_apk}" "${signed_apk}"
- jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 \
- -keystore ${keystore} -storepass ${key_password} \
- -keypass ${key_password} "${signed_apk}" ${key_alias}
- fi
-}
-
-# Build the apk $1 for package filename $2 in the current directory using the
-# ant build target $3.
-build_apk() {
- local -r output_apk="${1}"
- local -r package_filename="${2}"
- local -r ant_target="${3}"
- # Get the list of installed android targets and select the oldest target
- # that is at least as new as BUILDAPK_ANDROID_TARGET_MINVERSION.
- local -r android_build_target=$(select_android_build_target)
- [[ "${android_build_target}" == "" ]] && exit 1
- echo "Building ${output_apk} for target ${android_build_target}" >&2
-
- # Create / update build.xml and local.properties files.
- if [[ $(stat_mtime "${android_manifest}") -gt \
- $(stat_mtime build.xml) ]]; then
- android update project --target "${android_build_target}" \
- -n ${package_filename} --path .
- fi
-
- # Use ant to build the apk.
- ant -quiet ${ant_target}
-
- # Sign release apks with a temporary key as these packages will not be
- # redistributed.
- local unsigned_apk="bin/${package_filename}-${ant_target}-unsigned.apk"
- if [[ "${ant_target}" == "release" ]]; then
- sign_apk "${unsigned_apk}" "${output_apk}" "" ""
- fi
-}
-
-# Uninstall package $1 and install apk $2 on device $3 where $3 is "-s device"
-# or an empty string. If $3 is an empty string adb will fail when multiple
-# devices are connected to the host system.
-install_apk() {
- local -r uninstall_package_name="${1}"
- local -r install_apk="${2}"
- local -r adb_device="${3}"
- # Uninstall the package if it's already installed.
- adb ${adb_device} uninstall "${uninstall_package_name}" 1>&2 > /dev/null || \
- true # no error check
-
- # Install the apk.
- # NOTE: The following works around adb not returning an error code when
- # it fails to install an apk.
- echo "Install ${install_apk}" >&2
- local -r adb_install_result=$(adb ${adb_device} install "${install_apk}")
- echo "${adb_install_result}"
- if echo "${adb_install_result}" | grep -qF 'Failure ['; then
- exit 1
- fi
-}
-
-# Launch previously installed package $1 on device $2.
-# If $2 is an empty string adb will fail when multiple devices are connected
-# to the host system.
-launch_package() {
- (
- # Determine the SDK version of Android on the device.
- local -r android_sdk_version=$(
- adb ${adb_device} shell cat system/build.prop | \
- awk -F= '/ro.build.version.sdk/ {
- v=$2; sub(/[ \r\n]/, "", v); print v
- }')
-
- # Clear logs from previous runs.
- # Note that logcat does not just 'tail' the logs, it dumps the entire log
- # history.
- adb ${adb_device} logcat -c
-
- local finished_msg='Displayed '"${package_name}"
- local timeout_msg='Activity destroy timeout.*'"${package_name}"
- # Maximum time to wait before stopping log monitoring. 0 = infinity.
- local launch_timeout=0
- # If this is a Gingerbread device, kill log monitoring after 10 seconds.
- if [[ $((android_sdk_version)) -le 10 ]]; then
- launch_timeout=10
- fi
- # Display logcat in the background.
- # Stop displaying the log when the app launch / execution completes or the
- # logcat
- (
- adb ${adb_device} logcat | \
- awk "
- {
- print \$0
- }
-
- /ActivityManager.*: ${finished_msg}/ {
- exit 0
- }
-
- /ActivityManager.*: ${timeout_msg}/ {
- exit 0
- }" &
- adb_logcat_pid=$!;
- if [[ $((launch_timeout)) -gt 0 ]]; then
- sleep $((launch_timeout));
- kill ${adb_logcat_pid};
- else
- wait ${adb_logcat_pid};
- fi
- ) &
- logcat_pid=$!
- # Kill adb logcat if this shell exits.
- trap "kill_process_group ${logcat_pid}" SIGINT SIGTERM EXIT
-
- # If the SDK is newer than 10, "am" supports stopping an activity.
- adb_stop_activity=
- if [[ $((android_sdk_version)) -gt 10 ]]; then
- adb_stop_activity=-S
- fi
-
- # Launch the activity and wait for it to complete.
- adb ${adb_device} shell am start ${adb_stop_activity} -n \
- ${package_name}/android.app.NativeActivity
-
- wait "${logcat_pid}"
- )
-}
-
-# See usage().
-main() {
- # Parse arguments for this script.
- local adb_device=
- local ant_target=release
- local disable_deploy=0
- local disable_build=0
- local run_debugger=0
- local launch=1
- local build_package=1
- for opt; do
- case ${opt} in
- # NDK_DEBUG=0 tells ndk-build to build this as debuggable but to not
- # modify the underlying code whereas NDK_DEBUG=1 also builds as debuggable
- # but does modify the code
- NDK_DEBUG=1) ant_target=debug ;;
- NDK_DEBUG=0) ant_target=debug ;;
- ADB_DEVICE*) adb_device="$(\
- echo "${opt}" | sed -E 's/^ADB_DEVICE=([^ ]+)$/-s \1/;t;s/.*//')" ;;
- BUILD=0) disable_build=1 ;;
- DEPLOY=0) disable_deploy=1 ;;
- RUN_DEBUGGER=1) run_debugger=1 ;;
- LAUNCH=0) launch=0 ;;
- clean) build_package=0 disable_deploy=1 launch=0 ;;
- -h|--help|help) usage ;;
- esac
- done
-
- # If a target device hasn't been specified and multiple devices are connected
- # to the host machine, display an error.
- local -r devices_connected=$(get_number_of_devices_connected)
- if [[ "${adb_device}" == "" && $((devices_connected)) -gt 1 && \
- ($((disable_deploy)) -eq 0 || $((launch)) -ne 0 || \
- $((run_debugger)) -ne 0) ]]; then
- if [[ $((disable_deploy)) -ne 0 ]]; then
- echo "Deployment enabled, disable using DEPLOY=0" >&2
- fi
- if [[ $((launch)) -ne 0 ]]; then
- echo "Launch enabled." >&2
- fi
- if [[ $((disable_deploy)) -eq 0 ]]; then
- echo "Deployment enabled." >&2
- fi
- if [[ $((run_debugger)) -ne 0 ]]; then
- echo "Debugger launch enabled." >&2
- fi
- echo "
-Multiple Android devices are connected to this host. Either disable deployment
-and execution of the built .apk using:
- \"${script_name} DEPLOY=0 LAUNCH=0\"
-
-or specify a device to deploy to using:
- \"${script_name} ADB_DEVICE=\${device_serial}\".
-
-The Android devices connected to this machine are:
-$(adb devices -l)
-" >&2
- exit 1
- fi
-
- if [[ $((disable_build)) -eq 0 ]]; then
- # Build the native target.
- build_native_targets "$@"
- fi
-
- # Get the package name from the manifest.
- local -r package_name=$(get_package_name_from_manifest "${android_manifest}")
- if [[ "${package_name}" == "" ]]; then
- echo -e "No package name specified in ${android_manifest},"\
- "skipping apk build, deploy"
- "\nand launch steps." >&2
- exit 0
- fi
- local -r package_basename=${package_name/*./}
- local package_filename=$(get_library_name_from_manifest ${android_manifest})
- [[ "${package_filename}" == "" ]] && package_filename="${package_basename}"
-
- # Output apk name.
- local -r output_apk="bin/${package_filename}-${ant_target}.apk"
-
- if [[ $((disable_build)) -eq 0 && $((build_package)) -eq 1 ]]; then
- # Build the apk.
- build_apk "${output_apk}" "${package_filename}" "${ant_target}"
- fi
-
- # Deploy to the device.
- if [[ $((disable_deploy)) -eq 0 ]]; then
- install_apk "${package_name}" "${output_apk}" "${adb_device}"
- fi
-
- if [[ "${ant_target}" == "debug" && $((run_debugger)) -eq 1 ]]; then
- # Start debugging.
- ndk-gdb ${adb_device} --start
- elif [[ $((launch)) -eq 1 ]]; then
- launch_package "${package_name}" "${adb_device}"
- fi
-}
-
-main "$@"
diff --git a/third_party/flatbuffers/android/jni/Android.mk b/third_party/flatbuffers/android/jni/Android.mk
deleted file mode 100755
index 0269dd3..0000000
--- a/third_party/flatbuffers/android/jni/Android.mk
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright (c) 2013 Google, Inc.
-#
-# This software is provided 'as-is', without any express or implied
-# warranty. In no event will the authors be held liable for any damages
-# arising from the use of this software.
-# Permission is granted to anyone to use this software for any purpose,
-# including commercial applications, and to alter it and redistribute it
-# freely, subject to the following restrictions:
-# 1. The origin of this software must not be misrepresented; you must not
-# claim that you wrote the original software. If you use this software
-# in a product, an acknowledgment in the product documentation would be
-# appreciated but is not required.
-# 2. Altered source versions must be plainly marked as such, and must not be
-# misrepresented as being the original software.
-# 3. This notice may not be removed or altered from any source distribution.
-
-LOCAL_PATH := $(call my-dir)/../..
-
-include $(LOCAL_PATH)/android/jni/include.mk
-LOCAL_PATH := $(call realpath-portable,$(LOCAL_PATH))
-
-# Empty static library so that other projects can include just the basic
-# FlatBuffers headers as a module.
-include $(CLEAR_VARS)
-LOCAL_MODULE := flatbuffers
-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
-LOCAL_EXPORT_CPPFLAGS := -std=c++11 -fexceptions -Wall \
- -DFLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE
-
-include $(BUILD_STATIC_LIBRARY)
-
-# static library that additionally includes text parsing/generation/reflection
-# for projects that want richer functionality.
-include $(CLEAR_VARS)
-LOCAL_MODULE := flatbuffers_extra
-LOCAL_SRC_FILES := src/idl_parser.cpp \
- src/idl_gen_text.cpp \
- src/reflection.cpp \
- src/util.cpp \
- src/code_generators.cpp
-LOCAL_STATIC_LIBRARIES := flatbuffers
-include $(BUILD_STATIC_LIBRARY)
-
-# FlatBuffers test
-include $(CLEAR_VARS)
-LOCAL_MODULE := FlatBufferTest
-LOCAL_SRC_FILES := android/jni/main.cpp \
- tests/test.cpp \
- src/idl_gen_fbs.cpp \
- src/idl_gen_general.cpp
-LOCAL_LDLIBS := -llog -landroid
-LOCAL_STATIC_LIBRARIES := android_native_app_glue flatbuffers_extra
-LOCAL_ARM_MODE := arm
-include $(BUILD_SHARED_LIBRARY)
-
-$(call import-module,android/native_app_glue)
-
-$(call import-add-path,$(LOCAL_PATH)/../..)
diff --git a/third_party/flatbuffers/android/jni/Application.mk b/third_party/flatbuffers/android/jni/Application.mk
deleted file mode 100755
index 2fc9c73..0000000
--- a/third_party/flatbuffers/android/jni/Application.mk
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright (c) 2014 Google, Inc.
-#
-# This software is provided 'as-is', without any express or implied
-# warranty. In no event will the authors be held liable for any damages
-# arising from the use of this software.
-# Permission is granted to anyone to use this software for any purpose,
-# including commercial applications, and to alter it and redistribute it
-# freely, subject to the following restrictions:
-# 1. The origin of this software must not be misrepresented; you must not
-# claim that you wrote the original software. If you use this software
-# in a product, an acknowledgment in the product documentation would be
-# appreciated but is not required.
-# 2. Altered source versions must be plainly marked as such, and must not be
-# misrepresented as being the original software.
-# 3. This notice may not be removed or altered from any source distribution.
-APP_PLATFORM := android-10
-APP_PROJECT_PATH := $(call my-dir)/..
-APP_STL := gnustl_static
-
-APP_ABI := armeabi-v7a
-
-APP_CPPFLAGS += -std=c++11
diff --git a/third_party/flatbuffers/android/jni/build_flatc.bat b/third_party/flatbuffers/android/jni/build_flatc.bat
deleted file mode 100755
index 0b3f2ad..0000000
--- a/third_party/flatbuffers/android/jni/build_flatc.bat
+++ /dev/null
@@ -1,68 +0,0 @@
-@rem Copyright (c) 2013 Google, Inc.
-@rem
-@rem This software is provided 'as-is', without any express or implied
-@rem warranty. In no event will the authors be held liable for any damages
-@rem arising from the use of this software.
-@rem Permission is granted to anyone to use this software for any purpose,
-@rem including commercial applications, and to alter it and redistribute it
-@rem freely, subject to the following restrictions:
-@rem 1. The origin of this software must not be misrepresented; you must not
-@rem claim that you wrote the original software. If you use this software
-@rem in a product, an acknowledgment in the product documentation would be
-@rem appreciated but is not required.
-@rem 2. Altered source versions must be plainly marked as such, and must not be
-@rem misrepresented as being the original software.
-@rem 3. This notice may not be removed or altered from any source distribution.
-@echo off
-
-setlocal enabledelayedexpansion
-
-set thispath=%~dp0
-
-rem Path to cmake passed in by caller.
-set cmake=%1
-rem Path to cmake project to build.
-set cmake_project_path=%2
-
-rem Newest and oldest version of Visual Studio that it's possible to select.
-set visual_studio_version_max=20
-set visual_studio_version_min=8
-
-rem Determine the newest version of Visual Studio installed on this machine.
-set visual_studio_version=
-for /L %%a in (%visual_studio_version_max%,-1,%visual_studio_version_min%) do (
- echo Searching for Visual Studio %%a >&2
- reg query HKLM\SOFTWARE\Microsoft\VisualStudio\%%a.0 /ve 1>NUL 2>NUL
- if !ERRORLEVEL! EQU 0 (
- set visual_studio_version=%%a
- goto found_vs
- )
-)
-echo Unable to determine whether Visual Studio is installed. >&2
-exit /B 1
-:found_vs
-
-rem Map Visual Studio version to cmake generator name.
-if "%visual_studio_version%"=="8" (
- set cmake_generator=Visual Studio 8 2005
-)
-if "%visual_studio_version%"=="9" (
- set cmake_generator=Visual Studio 9 2008
-)
-if %visual_studio_version% GEQ 10 (
- set cmake_generator=Visual Studio %visual_studio_version%
-)
-rem Set visual studio version variable for msbuild.
-set VisualStudioVersion=%visual_studio_version%.0
-
-rem Generate Visual Studio solution.
-echo Generating solution for %cmake_generator%. >&2
-cd "%cmake_project_path%"
-%cmake% -G"%cmake_generator%"
-if %ERRORLEVEL% NEQ 0 (
- exit /B %ERRORLEVEL%
-)
-
-rem Build flatc
-python %thispath%\msbuild.py flatc.vcxproj
-if ERRORLEVEL 1 exit /B 1
diff --git a/third_party/flatbuffers/android/jni/include.mk b/third_party/flatbuffers/android/jni/include.mk
deleted file mode 100644
index b53e257..0000000
--- a/third_party/flatbuffers/android/jni/include.mk
+++ /dev/null
@@ -1,237 +0,0 @@
-# Copyright 2014 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# This file contains utility functions for Android projects using Flatbuffers.
-# To use this file, include it in your project's Android.mk by calling near the
-# top of your android makefile like so:
-#
-# include $(FLATBUFFERS_DIR)/android/jni/include.mk
-#
-# You will also need to import the flatbuffers module using the standard
-# import-module function.
-#
-# The main functionality this file provides are the following functions:
-# flatbuffers_fbs_to_h: Converts flatbuffer schema paths to header paths.
-# flatbuffers_header_build_rule:
-# Creates a build rule for a schema's generated header. This build rule
-# has a dependency on the flatc compiler which will be built if necessary.
-# flatbuffers_header_build_rules:
-# Creates build rules for generated headers for each schema listed and sets
-# up depenedendies.
-#
-# More information and example usage can be found in the comments preceeding
-# each function.
-
-# Targets to build the Flatbuffers compiler as well as some utility definitions
-ifeq (,$(FLATBUFFERS_INCLUDE_MK_))
-FLATBUFFERS_INCLUDE_MK_ := 1
-
-# Portable version of $(realpath) that omits drive letters on Windows.
-realpath-portable = $(join $(filter %:,$(subst :,: ,$1)),\
- $(realpath $(filter-out %:,$(subst :,: ,$1))))
-
-PROJECT_OS := $(OS)
-ifeq (,$(OS))
-PROJECT_OS := $(shell uname -s)
-else
-ifneq ($(findstring Windows,$(PROJECT_OS)),)
-PROJECT_OS := Windows
-endif
-endif
-
-# The following block generates build rules which result in headers being
-# rebuilt from flatbuffers schemas.
-
-FLATBUFFERS_CMAKELISTS_DIR := \
- $(call realpath-portable,$(dir $(lastword $(MAKEFILE_LIST)))/../..)
-
-# Directory that contains the FlatBuffers compiler.
-ifeq (Windows,$(PROJECT_OS))
-FLATBUFFERS_FLATC_PATH?=$(FLATBUFFERS_CMAKELISTS_DIR)
-FLATBUFFERS_FLATC := $(lastword \
- $(wildcard $(FLATBUFFERS_FLATC_PATH)/*/flatc.exe) \
- $(wildcard $(FLATBUFFERS_FLATC_PATH)/flatc.exe))
-endif
-ifeq (Linux,$(PROJECT_OS))
-FLATBUFFERS_FLATC_PATH?=$(FLATBUFFERS_CMAKELISTS_DIR)
-FLATBUFFERS_FLATC := $(FLATBUFFERS_FLATC_PATH)/flatc
-endif
-ifeq (Darwin,$(PROJECT_OS))
-FLATBUFFERS_FLATC_PATH?=$(FLATBUFFERS_CMAKELISTS_DIR)
-FLATBUFFERS_FLATC := $(lastword \
- $(wildcard $(FLATBUFFERS_FLATC_PATH)/*/flatc) \
- $(wildcard $(FLATBUFFERS_FLATC_PATH)/flatc))
-endif
-
-FLATBUFFERS_FLATC_ARGS?=
-
-# Search for cmake.
-CMAKE_ROOT := \
- $(call realpath-portable,$(LOCAL_PATH)/../../../../../../prebuilts/cmake)
-ifeq (,$(CMAKE))
-ifeq (Linux,$(PROJECT_OS))
-CMAKE := $(wildcard $(CMAKE_ROOT)/linux-x86/current/bin/cmake*)
-endif
-ifeq (Darwin,$(PROJECT_OS))
-CMAKE := \
- $(wildcard $(CMAKE_ROOT)/darwin-x86_64/current/*.app/Contents/bin/cmake)
-endif
-ifeq (Windows,$(PROJECT_OS))
-CMAKE := $(wildcard $(CMAKE_ROOT)/windows/current/bin/cmake*)
-endif
-endif
-ifeq (,$(CMAKE))
-CMAKE := cmake
-endif
-
-# Windows friendly portable local path.
-# GNU-make doesn't like : in paths, must use relative paths on Windows.
-ifeq (Windows,$(PROJECT_OS))
-PORTABLE_LOCAL_PATH =
-else
-PORTABLE_LOCAL_PATH = $(LOCAL_PATH)/
-endif
-
-# Generate a host build rule for the flatbuffers compiler.
-ifeq (Windows,$(PROJECT_OS))
-define build_flatc_recipe
- $(FLATBUFFERS_CMAKELISTS_DIR)\android\jni\build_flatc.bat \
- $(CMAKE) $(FLATBUFFERS_CMAKELISTS_DIR)
-endef
-endif
-ifeq (Linux,$(PROJECT_OS))
-define build_flatc_recipe
- +cd $(FLATBUFFERS_CMAKELISTS_DIR) && \
- $(CMAKE) . && \
- $(MAKE) flatc
-endef
-endif
-ifeq (Darwin,$(PROJECT_OS))
-define build_flatc_recipe
- cd $(FLATBUFFERS_CMAKELISTS_DIR) && "$(CMAKE)" -GXcode . && \
- xcodebuild -target flatc
-endef
-endif
-ifeq (,$(build_flatc_recipe))
-ifeq (,$(FLATBUFFERS_FLATC))
-$(error flatc binary not found!)
-endif
-endif
-
-# Generate a build rule for flatc.
-ifeq ($(strip $(FLATBUFFERS_FLATC)),)
-flatc_target := build_flatc
-.PHONY: $(flatc_target)
-FLATBUFFERS_FLATC := \
- python $(FLATBUFFERS_CMAKELISTS_DIR)/android/jni/run_flatc.py \
- $(FLATBUFFERS_CMAKELISTS_DIR)
-else
-flatc_target := $(FLATBUFFERS_FLATC)
-endif
-$(flatc_target):
- $(call build_flatc_recipe)
-
-# $(flatbuffers_fbs_to_h schema_dir,output_dir,path)
-#
-# Convert the specified schema path to a Flatbuffers generated header path.
-# For example:
-#
-# $(call flatbuffers_fbs_to_h,$(MY_PROJ_DIR)/schemas,\
-# $(MY_PROJ_DIR)/gen/include,$(MY_PROJ_DIR)/schemas/example.fbs)
-#
-# This will convert the file path `$(MY_PROJ_DIR)/schemas/example.fbs)` to
-# `$(MY_PROJ_DIR)/gen/include/example_generated.h`
-define flatbuffers_fbs_to_h
-$(subst $(1),$(2),$(patsubst %.fbs,%_generated.h,$(3)))
-endef
-
-# $(flatbuffers_header_build_rule schema_file,schema_dir,output_dir,\
-# schema_include_dirs)
-#
-# Generate a build rule that will convert a Flatbuffers schema to a generated
-# header derived from the schema filename using flatbuffers_fbs_to_h. For
-# example:
-#
-# $(call flatbuffers_header_build_rule,$(MY_PROJ_DIR)/schemas/example.fbs,\
-# $(MY_PROJ_DIR)/schemas,$(MY_PROJ_DIR)/gen/include)
-#
-# The final argument, schema_include_dirs, is optional and is only needed when
-# the schema files depend on other schema files outside their own directory.
-define flatbuffers_header_build_rule
-$(eval \
- $(call flatbuffers_fbs_to_h,$(2),$(3),$(1)): $(1) $(flatc_target)
- $(call host-echo-build-step,generic,Generate) \
- $(subst $(LOCAL_PATH)/,,$(call flatbuffers_fbs_to_h,$(2),$(3),$(1)))
- $(hide) $$(FLATBUFFERS_FLATC) $(FLATBUFFERS_FLATC_ARGS) \
- $(foreach include,$(4),-I $(include)) -o $$(dir $$@) -c $$<)
-endef
-
-# TODO: Remove when the LOCAL_PATH expansion bug in the NDK is fixed.
-# Override the default behavior of local-source-file-path to workaround
-# a bug which prevents the build of deeply nested projects when NDK_OUT is
-# set.
-local-source-file-path=\
-$(if $(call host-path-is-absolute,$1),$1,$(call \
- realpath-portable,$(LOCAL_PATH)/$1))
-
-
-# $(flatbuffers_header_build_rules schema_files,schema_dir,output_dir,\
-# schema_include_dirs,src_files,[build_target],[dependencies]))
-#
-# $(1) schema_files: Space separated list of flatbuffer schema files.
-# $(2) schema_dir: Directory containing the flatbuffer schemas.
-# $(3) output_dir: Where to place the generated files.
-# $(4) schema_include_dirs: Directories to include when generating schemas.
-# $(5) src_files: Files that should depend upon the headers generated from the
-# flatbuffer schemas.
-# $(6) build_target: Name of a build target that depends upon all generated
-# headers.
-# $(7) dependencies: Space seperated list of additional build targets src_files
-# should depend upon.
-#
-# Use this in your own Android.mk file to generate build rules that will
-# generate header files for your flatbuffer schemas as well as automatically
-# set your source files to be dependent on the generated headers. For example:
-#
-# $(call flatbuffers_header_build_rules,$(MY_PROJ_SCHEMA_FILES),\
-# $(MY_PROJ_SCHEMA_DIR),$(MY_PROJ_GENERATED_OUTPUT_DIR),
-# $(MY_PROJ_SCHEMA_INCLUDE_DIRS),$(LOCAL_SRC_FILES))
-#
-# NOTE: Due problesm with path processing in ndk-build when presented with
-# deeply nested projects must redefine LOCAL_PATH after include this makefile
-# using:
-#
-# LOCAL_PATH := $(call realpath-portable,$(LOCAL_PATH))
-#
-define flatbuffers_header_build_rules
-$(foreach schema,$(1),\
- $(call flatbuffers_header_build_rule,\
- $(schema),$(strip $(2)),$(strip $(3)),$(strip $(4))))\
-$(foreach src,$(strip $(5)),\
- $(eval $(call local-source-file-path,$(src)): \
- $(foreach schema,$(strip $(1)),\
- $(call flatbuffers_fbs_to_h,$(strip $(2)),$(strip $(3)),$(schema)))))\
-$(if $(6),\
- $(foreach schema,$(strip $(1)),\
- $(eval $(6): \
- $(call flatbuffers_fbs_to_h,$(strip $(2)),$(strip $(3)),$(schema)))),)\
-$(if $(7),\
- $(foreach src,$(strip $(5)),\
- $(eval $(call local-source-file-path,$(src)): $(strip $(7)))),)\
-$(if $(7),\
- $(foreach dependency,$(strip $(7)),\
- $(eval $(6): $(dependency))),)
-endef
-
-endif # FLATBUFFERS_INCLUDE_MK_
diff --git a/third_party/flatbuffers/android/jni/main.cpp b/third_party/flatbuffers/android/jni/main.cpp
deleted file mode 100644
index 0d64349..0000000
--- a/third_party/flatbuffers/android/jni/main.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <android_native_app_glue.h>
-
-extern int main(int argc, char **argv);
-
-void android_main(android_app *app) {
- // Make sure glue isn't stripped.
- app_dummy();
-
- main(0, NULL);
-}
diff --git a/third_party/flatbuffers/android/jni/msbuild.py b/third_party/flatbuffers/android/jni/msbuild.py
deleted file mode 100644
index 5f92d70..0000000
--- a/third_party/flatbuffers/android/jni/msbuild.py
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/usr/bin/python
-# Copyright 2014 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Simple script that locates the newest MSBuild in one of several locations.
-
-This script will find the highest version number of MSBuild and run it,
-passing its arguments through to MSBuild.
-"""
-
-import glob
-import os
-import re
-import string
-import subprocess
-import sys
-
-SYSTEMROOT = os.getenv("SYSTEMROOT", "c:\\windows")
-PROGRAM_FILES = os.getenv("ProgramFiles", "c:\\Program Files")
-PROGRAM_FILES_X86 = os.getenv("ProgramFiles(x86)", "c:\\Program Files (x86)")
-
-SEARCH_FOLDERS = [ PROGRAM_FILES + "\\MSBuild\\*\\Bin\\MSBuild.exe",
- PROGRAM_FILES_X86 + "\\MSBuild\\*\\Bin\\MSBuild.exe",
- SYSTEMROOT + "\\Microsoft.NET\Framework\\*\\MSBuild.exe" ]
-
-def compare_version(a, b):
- """Compare two version number strings of the form W.X.Y.Z.
-
- The numbers are compared most-significant to least-significant.
- For example, 12.345.67.89 > 2.987.88.99.
-
- Args:
- a: First version number string to compare
- b: Second version number string to compare
-
- Returns:
- 0 if the numbers are identical, a positive number if 'a' is larger, and
- a negative number if 'b' is larger.
- """
- aa = string.split(a, ".")
- bb = string.split(b, ".")
- for i in range(0, 4):
- if aa[i] != bb[i]:
- return cmp(int(aa[i]), int(bb[i]))
- return 0
-
-def main():
- msbuilds = []
-
- for folder in SEARCH_FOLDERS:
- for file in glob.glob(folder):
- p = subprocess.Popen([file, "/version"], stdout=subprocess.PIPE)
- out, err = p.communicate()
- match = re.search("^[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+$", out, re.M)
- if match:
- msbuilds.append({ 'ver':match.group(), 'exe':file })
- msbuilds.sort(lambda x, y: compare_version(x['ver'], y['ver']), reverse=True)
- if len(msbuilds) == 0:
- print "Unable to find MSBuild.\n"
- return -1;
- cmd = [msbuilds[0]['exe']]
- cmd.extend(sys.argv[1:])
- return subprocess.call(cmd)
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/third_party/flatbuffers/android/jni/run_flatc.py b/third_party/flatbuffers/android/jni/run_flatc.py
deleted file mode 100755
index cda13bb..0000000
--- a/third_party/flatbuffers/android/jni/run_flatc.py
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/python
-# Copyright 2015 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import os
-import platform
-import subprocess
-import sys
-
-EXECUTABLE_EXTENSION = '.exe' if platform.system() == 'Windows' else ''
-# Paths to search for flatc relative to the current working directory.
-FLATC_SEARCH_PATHS = [os.path.curdir, 'Release', 'Debug']
-
-def main():
- """Script that finds and runs flatc built from source."""
- if len(sys.argv) < 2:
- sys.stderr.write('Usage: run_flatc.py flatbuffers_dir [flatc_args]\n')
- return 1
- cwd = os.getcwd()
- flatc = ''
- flatbuffers_dir = sys.argv[1]
- for path in FLATC_SEARCH_PATHS:
- current = os.path.join(flatbuffers_dir, path,
- 'flatc' + EXECUTABLE_EXTENSION)
- if os.path.exists(current):
- flatc = current
- break
- if not flatc:
- sys.stderr.write('flatc not found\n')
- return 1
- command = [flatc] + sys.argv[2:]
- return subprocess.call(command)
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/third_party/flatbuffers/android/res/values/strings.xml b/third_party/flatbuffers/android/res/values/strings.xml
deleted file mode 100755
index ec75239..0000000
--- a/third_party/flatbuffers/android/res/values/strings.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (c) 2014 Google, Inc.
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
- -->
-<resources>
- <string name="app_name">FlatBufferTest</string>
-</resources>
diff --git a/third_party/flatbuffers/appveyor.yml b/third_party/flatbuffers/appveyor.yml
deleted file mode 100644
index f350f06..0000000
--- a/third_party/flatbuffers/appveyor.yml
+++ /dev/null
@@ -1,46 +0,0 @@
-branches:
- only:
- - master
-
-os: Visual Studio 2015
-
-platform:
- - x86
- - x64
-
-configuration:
- - Debug
- - Release
-
-before_build:
- - cmake -G"Visual Studio 10 2010"
- # This cuts down on a lot of noise generated by xamarin warnings.
- - del "C:\Program Files (x86)\MSBuild\14.0\Microsoft.Common.targets\ImportAfter\Xamarin.Common.targets"
-
-build:
- project: ALL_BUILD.vcxproj
- verbosity: minimal
-
-test_script:
- - rem "---------------- C++ -----------------"
- - "%CONFIGURATION%\\flattests.exe"
- - rem "---------------- Java -----------------"
- - "cd tests"
- - "java -version"
- - "JavaTest.bat"
- - rem "---------------- JS -----------------"
- - "node --version"
- - "..\\%CONFIGURATION%\\flatc -b monster_test.fbs unicode_test.json"
- - "node JavaScriptTest ./monster_test_generated"
- - rem "---------------- C# -----------------"
- # Have to compile this here rather than in "build" above because AppVeyor only
- # supports building one project??
- - "cd FlatBuffers.Test"
- - "msbuild.exe /property:Configuration=Release;OutputPath=tempcs /verbosity:minimal FlatBuffers.Test.csproj"
- - "tempcs\\FlatBuffers.Test.exe"
- # TODO: add more languages.
- - "cd ..\\.."
-
-artifacts:
- - path: $(CONFIGURATION)\\flatc.exe
- name: flatc.exe
diff --git a/third_party/flatbuffers/biicode.conf b/third_party/flatbuffers/biicode.conf
deleted file mode 100644
index b205168..0000000
--- a/third_party/flatbuffers/biicode.conf
+++ /dev/null
@@ -1,7 +0,0 @@
-# Biicode configuration file
-[paths]
- include
-[mains]
- !android/*
-[tests]
- tests/*
diff --git a/third_party/flatbuffers/biicode/README.md b/third_party/flatbuffers/biicode/README.md
deleted file mode 100644
index 8b0a185..0000000
--- a/third_party/flatbuffers/biicode/README.md
+++ /dev/null
@@ -1,21 +0,0 @@
-Biicode C/C++ dependency manager
-=================================
-
-[](https://www.biicode.com/fenix/flatbuffers)
-
-New with biicode? Check the [Getting Started Guide](http://docs.biicode.com/c++/gettingstarted.html).
-
-How to build it?
-------------------
-Building it is too easy:
-
- $ git clone git@github.com:google/flatbuffers.git
- $ cd flatbuffers
- $ bii init -L && bii build
- $ ./bin/any_executable
-
-Or run its tests:
-
- $ bii test
-
-You can check [the examples/flatbuffers block](https://www.biicode.com/examples/flatbuffers).
\ No newline at end of file
diff --git a/third_party/flatbuffers/biicode/cmake/biicode.cmake b/third_party/flatbuffers/biicode/cmake/biicode.cmake
deleted file mode 100644
index 85b15ed..0000000
--- a/third_party/flatbuffers/biicode/cmake/biicode.cmake
+++ /dev/null
@@ -1,18 +0,0 @@
-set(BII_TESTS_WORKING_DIR ${CMAKE_CURRENT_SOURCE_DIR})
-# Copying data files to project/bin folder
-if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/samples")
- file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/samples/monster.fbs"
- "${CMAKE_CURRENT_SOURCE_DIR}/samples/monsterdata.json"
- DESTINATION
- "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/samples")
-endif()
-if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests")
- file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/tests"
- DESTINATION
- "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
-endif()
-
-ADD_BIICODE_TARGETS()
-
-string(REPLACE " " ";" REPLACED_FLAGS ${CMAKE_CXX_FLAGS})
-target_compile_options(${BII_BLOCK_TARGET} INTERFACE ${REPLACED_FLAGS})
\ No newline at end of file
diff --git a/third_party/flatbuffers/biicode/support/bii-travis.sh b/third_party/flatbuffers/biicode/support/bii-travis.sh
deleted file mode 100755
index 67854c7..0000000
--- a/third_party/flatbuffers/biicode/support/bii-travis.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2016 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-sudo apt-get update -qq
-sudo apt-get install libglu1-mesa-dev xorg-dev
-wget http://www.biicode.com/downloads/latest/ubuntu64
-mv ubuntu64 bii-ubuntu64.deb
-(sudo dpkg -i bii-ubuntu64.deb) && sudo apt-get -f install
-rm bii-ubuntu64.deb
-wget https://s3.amazonaws.com/biibinaries/thirdparty/cmake-3.0.2-Linux-64.tar.gz
-tar -xzf cmake-3.0.2-Linux-64.tar.gz
-sudo cp -fR cmake-3.0.2-Linux-64/* /usr
-rm -rf cmake-3.0.2-Linux-64
-rm cmake-3.0.2-Linux-64.tar.gz
-
-cmake --version
-bii init -l && bii configure -DCMAKE_BUILD_TYPE=$1 && bii test
\ No newline at end of file
diff --git a/third_party/flatbuffers/cmake_install.cmake b/third_party/flatbuffers/cmake_install.cmake
deleted file mode 100644
index 6feae12..0000000
--- a/third_party/flatbuffers/cmake_install.cmake
+++ /dev/null
@@ -1,68 +0,0 @@
-# Install script for directory: /home/alain/flatbuffers
-
-# Set the install prefix
-if(NOT DEFINED CMAKE_INSTALL_PREFIX)
- set(CMAKE_INSTALL_PREFIX "/usr/local")
-endif()
-string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
-
-# Set the install configuration name.
-if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
- if(BUILD_TYPE)
- string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
- CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
- else()
- set(CMAKE_INSTALL_CONFIG_NAME "")
- endif()
- message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
-endif()
-
-# Set the component getting installed.
-if(NOT CMAKE_INSTALL_COMPONENT)
- if(COMPONENT)
- message(STATUS "Install component: \"${COMPONENT}\"")
- set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
- else()
- set(CMAKE_INSTALL_COMPONENT)
- endif()
-endif()
-
-# Install shared libraries without execute permission?
-if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
- set(CMAKE_INSTALL_SO_NO_EXE "1")
-endif()
-
-if(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified")
- file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/include" TYPE DIRECTORY FILES "/home/alain/flatbuffers/include/flatbuffers")
-endif()
-
-if(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified")
- file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE STATIC_LIBRARY FILES "/home/alain/flatbuffers/libflatbuffers.a")
-endif()
-
-if(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified")
- if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/flatc" AND
- NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/flatc")
- file(RPATH_CHECK
- FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/flatc"
- RPATH "")
- endif()
- file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" TYPE EXECUTABLE FILES "/home/alain/flatbuffers/flatc")
- if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/flatc" AND
- NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/flatc")
- if(CMAKE_INSTALL_DO_STRIP)
- execute_process(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/flatc")
- endif()
- endif()
-endif()
-
-if(CMAKE_INSTALL_COMPONENT)
- set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
-else()
- set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
-endif()
-
-string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
- "${CMAKE_INSTALL_MANIFEST_FILES}")
-file(WRITE "/home/alain/flatbuffers/${CMAKE_INSTALL_MANIFEST}"
- "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/third_party/flatbuffers/composer.json b/third_party/flatbuffers/composer.json
deleted file mode 100644
index 807709c..0000000
--- a/third_party/flatbuffers/composer.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "google/flatbuffers",
- "type": "library",
- "description": "FlatBuffers for PHP",
- "keywords": ["google", "flatbuffers", "serialization"],
- "homepage": "https://github.com/google/flatbuffers",
- "license": "Apache-2.0",
- "require": {
- "php": ">=5.4"
- },
- "require-dev": {
- },
- "autoload": {
- "psr-4": {
- "Google\\FlatBuffers\\": "php"
- }
- }
-}
\ No newline at end of file
diff --git a/third_party/flatbuffers/docs/footer.html b/third_party/flatbuffers/docs/footer.html
deleted file mode 100755
index 42bc5f2..0000000
--- a/third_party/flatbuffers/docs/footer.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!-- Google Analytics -->
-<script>
- (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
- (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
- m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
- })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-
- ga('create', 'UA-49880327-7', 'auto');
- ga('send', 'pageview');
-
-</script>
-
-</body>
-</html>
diff --git a/third_party/flatbuffers/docs/header.html b/third_party/flatbuffers/docs/header.html
deleted file mode 100644
index 0266e7c..0000000
--- a/third_party/flatbuffers/docs/header.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!-- HTML header for doxygen 1.8.6-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen $doxygenversion"/>
-<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
-<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
-<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="$relpath^jquery.js"></script>
-<script type="text/javascript" src="$relpath^dynsections.js"></script>
-$treeview
-$search
-$mathjax
-<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
-<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400italic,500,500italic,700,700italic|Roboto+Mono:400,700" rel="stylesheet">
-$extrastylesheet
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-
-<!--BEGIN TITLEAREA-->
-<div id="titlearea" style="height: 110px;">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
- <!--BEGIN PROJECT_LOGO-->
- <td id="projectlogo"><img alt="Logo" src="$relpath^$projectlogo"/></td>
- <!--END PROJECT_LOGO-->
- <td id="commonprojectlogo">
- <img alt="Logo" src="$relpath^fpl_logo_small.png"/>
- </td>
- <!--BEGIN PROJECT_NAME-->
- <td style="padding-left: 0.5em;">
- <div id="projectname">$projectname
- <!--BEGIN PROJECT_NUMBER--> <span id="projectnumber">$projectnumber</span><!--END PROJECT_NUMBER-->
- </div>
- <div style="font-size:12px;">
- An open source project by <a href="https://developers.google.com/games/#Tools">FPL</a>.
- </div>
- <!--BEGIN PROJECT_BRIEF--><div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF-->
- </td>
- <!--END PROJECT_NAME-->
- <!--BEGIN !PROJECT_NAME-->
- <!--BEGIN PROJECT_BRIEF-->
- <td style="padding-left: 0.5em;">
- <div id="projectbrief">$projectbrief</div>
- </td>
- <!--END PROJECT_BRIEF-->
- <!--END !PROJECT_NAME-->
- <!--BEGIN DISABLE_INDEX-->
- <!--BEGIN SEARCHENGINE-->
- <td>$searchbox</td>
- <!--END SEARCHENGINE-->
- <!--END DISABLE_INDEX-->
- </tr>
- </tbody>
-</table>
-</div>
-<!--END TITLEAREA-->
-<!-- end header part -->
diff --git a/third_party/flatbuffers/docs/images/fpl_logo_small.png b/third_party/flatbuffers/docs/images/fpl_logo_small.png
deleted file mode 100644
index 2c728f3..0000000
--- a/third_party/flatbuffers/docs/images/fpl_logo_small.png
+++ /dev/null
Binary files differ
diff --git a/third_party/flatbuffers/docs/images/ftv2mnode.png b/third_party/flatbuffers/docs/images/ftv2mnode.png
deleted file mode 100644
index 3caf47d..0000000
--- a/third_party/flatbuffers/docs/images/ftv2mnode.png
+++ /dev/null
Binary files differ
diff --git a/third_party/flatbuffers/docs/images/ftv2pnode.png b/third_party/flatbuffers/docs/images/ftv2pnode.png
deleted file mode 100644
index f1aaad3..0000000
--- a/third_party/flatbuffers/docs/images/ftv2pnode.png
+++ /dev/null
Binary files differ
diff --git a/third_party/flatbuffers/docs/source/Benchmarks.md b/third_party/flatbuffers/docs/source/Benchmarks.md
deleted file mode 100755
index e5e5847..0000000
--- a/third_party/flatbuffers/docs/source/Benchmarks.md
+++ /dev/null
@@ -1,63 +0,0 @@
-Benchmarks {#flatbuffers_benchmarks}
-==========
-
-Comparing against other serialization solutions, running on Windows 7
-64bit. We use the LITE runtime for Protocol Buffers (less code / lower
-overhead), Rapid JSON (one of the fastest C++ JSON parsers around),
-and pugixml, also one of the fastest XML parsers.
-
-We also compare against code that doesn't use a serialization library
-at all (the column "Raw structs"), which is what you get if you write
-hardcoded code that just writes structs. This is the fastest possible,
-but of course is not cross platform nor has any kind of forwards /
-backwards compatibility.
-
-We compare against Flatbuffers with the binary wire format (as
-intended), and also with JSON as the wire format with the optional JSON
-parser (which, using a schema, parses JSON into a binary buffer that can
-then be accessed as before).
-
-The benchmark object is a set of about 10 objects containing an array, 4
-strings, and a large variety of int/float scalar values of all sizes,
-meant to be representative of game data, e.g. a scene format.
-
-| | FlatBuffers (binary) | Protocol Buffers LITE | Rapid JSON | FlatBuffers (JSON) | pugixml | Raw structs |
-|--------------------------------------------------------|-----------------------|-----------------------|-----------------------|------------------------| ----------------------| ----------------------|
-| Decode + Traverse + Dealloc (1 million times, seconds) | 0.08 | 302 | 583 | 105 | 196 | 0.02 |
-| Decode / Traverse / Dealloc (breakdown) | 0 / 0.08 / 0 | 220 / 0.15 / 81 | 294 / 0.9 / 287 | 70 / 0.08 / 35 | 41 / 3.9 / 150 | 0 / 0.02 / 0 |
-| Encode (1 million times, seconds) | 3.2 | 185 | 650 | 169 | 273 | 0.15 |
-| Wire format size (normal / zlib, bytes) | 344 / 220 | 228 / 174 | 1475 / 322 | 1029 / 298 | 1137 / 341 | 312 / 187 |
-| Memory needed to store decoded wire (bytes / blocks) | 0 / 0 | 760 / 20 | 65689 / 4 | 328 / 1 | 34194 / 3 | 0 / 0 |
-| Transient memory allocated during decode (KB) | 0 | 1 | 131 | 4 | 34 | 0 |
-| Generated source code size (KB) | 4 | 61 | 0 | 4 | 0 | 0 |
-| Field access in handwritten traversal code | typed accessors | typed accessors | manual error checking | typed accessors | manual error checking | typed but no safety |
-| Library source code (KB) | 15 | some subset of 3800 | 87 | 43 | 327 | 0 |
-
-### Some other serialization systems we compared against but did not benchmark (yet), in rough order of applicability:
-
-- Cap'n'Proto promises to reduce Protocol Buffers much like FlatBuffers does,
- though with a more complicated binary encoding and less flexibility (no
- optional fields to allow deprecating fields or serializing with missing
- fields for which defaults exist).
- It currently also isn't fully cross-platform portable (lack of VS support).
-- msgpack: has very minimal forwards/backwards compatibility support when used
- with the typed C++ interface. Also lacks VS2010 support.
-- Thrift: very similar to Protocol Buffers, but appears to be less efficient,
- and have more dependencies.
-- YAML: a superset of JSON and otherwise very similar. Used by e.g. Unity.
-- C# comes with built-in serialization functionality, as used by Unity also.
- Being tied to the language, and having no automatic versioning support
- limits its applicability.
-- Project Anarchy (the free mobile engine by Havok) comes with a serialization
- system, that however does no automatic versioning (have to code around new
- fields manually), is very much tied to the rest of the engine, and works
- without a schema to generate code (tied to your C++ class definition).
-
-### Code for benchmarks
-
-Code for these benchmarks sits in `benchmarks/` in git branch `benchmarks`.
-It sits in its own branch because it has submodule dependencies that the main
-project doesn't need, and the code standards do not meet those of the main
-project. Please read `benchmarks/cpp/README.txt` before working with the code.
-
-<br>
diff --git a/third_party/flatbuffers/docs/source/Building.md b/third_party/flatbuffers/docs/source/Building.md
deleted file mode 100755
index daeeb1e..0000000
--- a/third_party/flatbuffers/docs/source/Building.md
+++ /dev/null
@@ -1,67 +0,0 @@
-Building {#flatbuffers_guide_building}
-========
-
-## Building with CMake
-
-The distribution comes with a `cmake` file that should allow
-you to build project/make files for any platform. For details on `cmake`, see
-<http://www.cmake.org>. In brief, depending on your platform, use one of
-e.g.:
-
- cmake -G "Unix Makefiles"
- cmake -G "Visual Studio 10"
- cmake -G "Xcode"
-
-Then, build as normal for your platform. This should result in a `flatc`
-executable, essential for the next steps.
-Note that to use clang instead of gcc, you may need to set up your environment
-variables, e.g.
-`CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake -G "Unix Makefiles"`.
-
-Optionally, run the `flattests` executable from the root `flatbuffers/`
-directory to ensure everything is working correctly on your system. If this
-fails, please contact us!
-
-Building should also produce two sample executables, `flatsamplebinary` and
-`flatsampletext`, see the corresponding `.cpp` files in the
-`flatbuffers/samples` directory.
-
-*Note that you MUST be in the root of the FlatBuffers distribution when you
-run 'flattests' or `flatsampletext`, or it will fail to load its files.*
-
-## Building for Android
-
-There is a `flatbuffers/android` directory that contains all you need to build
-the test executable on android (use the included `build_apk.sh` script, or use
-`ndk_build` / `adb` etc. as usual). Upon running, it will output to the log
-if tests succeeded or not.
-
-You may also run an android sample from inside the `flatbuffers/samples`, by
-running the `android_sample.sh` script. Optionally, you may go to the
-`flatbuffers/samples/android` folder and build the sample with the
-`build_apk.sh` script or `ndk_build` / `adb` etc.
-
-## Using FlatBuffers in your own projects.
-
-For C++, there is usually no runtime to compile, as the code consists of a
-single header, `include/flatbuffers/flatbuffers.h`. You should add the
-`include` folder to your include paths. If you wish to be
-able to load schemas and/or parse text into binary buffers at runtime,
-you additionally need the other headers in `include/flatbuffers`. You must
-also compile/link `src/idl_parser.cpp` (and `src/idl_gen_text.cpp` if you
-also want to be able convert binary to text).
-
-To see how to include FlatBuffers in any of our supported languages, please
-view the [Tutorial](@ref flatbuffers_guide_tutorial) and select your appropriate
-language using the radio buttons.
-
-#### For Google Play apps
-
-For applications on Google Play that integrate this library, usage is tracked.
-This tracking is done automatically using the embedded version string
-(flatbuffer_version_string), and helps us continue to optimize it.
-Aside from consuming a few extra bytes in your application binary, it shouldn't
-affect your application at all. We use this information to let us know if
-FlatBuffers is useful and if we should continue to invest in it. Since this is
-open source, you are free to remove the version string but we would appreciate
-if you would leave it in.
diff --git a/third_party/flatbuffers/docs/source/CONTRIBUTING.md b/third_party/flatbuffers/docs/source/CONTRIBUTING.md
deleted file mode 120000
index f939e75..0000000
--- a/third_party/flatbuffers/docs/source/CONTRIBUTING.md
+++ /dev/null
@@ -1 +0,0 @@
-../../CONTRIBUTING.md
\ No newline at end of file
diff --git a/third_party/flatbuffers/docs/source/CUsage.md b/third_party/flatbuffers/docs/source/CUsage.md
deleted file mode 100644
index 9aafa6f..0000000
--- a/third_party/flatbuffers/docs/source/CUsage.md
+++ /dev/null
@@ -1,224 +0,0 @@
-Use in C {#flatbuffers_guide_use_c}
-==========
-
-The C language binding exists in a separate project named [FlatCC](https://github.com/dvidelabs/flatcc).
-
-The `flatcc` C schema compiler can generate code offline as well as
-online via a C library. It can also generate buffer verifiers and fast
-JSON parsers, printers.
-
-Great care has been taken to ensure compatibily with the main `flatc`
-project.
-
-## General Documention
-
-- [Tutorial](@ref flatbuffers_guide_tutorial) - select C as language
- when scrolling down
-- [FlatCC Guide](https://github.com/dvidelabs/flatcc#flatcc-flatbuffers-in-c-for-c)
-- [The C Builder Interface](https://github.com/dvidelabs/flatcc/blob/master/doc/builder.md#the-builder-interface)
-- [The Monster Sample in C](https://github.com/dvidelabs/flatcc/blob/master/samples/monster/monster.c)
-- [GitHub](https://github.com/dvidelabs/flatcc)
-
-
-## Supported Platforms
-
-- Ubuntu (clang / gcc, ninja / gnu make)
-- OS-X (clang / gcc, ninja / gnu make)
-- Windows MSVC 2010, 2013, 2015
-
-CI builds recent versions of gcc, clang and MSVC on OS-X, Ubuntu, and
-Windows, and occasionally older compiler versions. See main project [Status](https://github.com/dvidelabs/flatcc#status).
-
-Other platforms may well work, including Centos, but are not tested
-regularly.
-
-The monster sample project was specifically written for C99 in order to
-follow the C++ version and for that reason it will not work with MSVC
-2010.
-
-## Modular Object Creation
-
-In the tutorial we used the call `Monster_create_as_root` to create the
-root buffer object since this is easier in simple use cases. Sometimes
-we need more modularity so we can reuse a function to create nested
-tables and root tables the same way. For this we need the
-`flatcc_builder_buffer_create_call`. It is best to keep `flatcc_builder`
-calls isolated at the top driver level, so we get:
-
-<div class="language-c">
-~~~{.c}
- ns(Monster_ref_t) create_orc(flatcc_builder_t *B)
- {
- // ... same as in the tutorial.
- return s(Monster_create(B, ...));
- }
-
- void create_monster_buffer()
- {
- uint8_t *buf;
- size_t size;
- flatcc_builder_t builder, *B;
-
- // Initialize the builder object.
- B = &builder;
- flatcc_builder_init(B);
- // Only use `buffer_create` without `create/start/end_as_root`.
- flatcc_builder_buffer_create(create_orc(B));
- // Allocate and copy buffer to user memory.
- buf = flatcc_builder_finalize_buffer(B, &size);
- // ... write the buffer to disk or network, or something.
-
- free(buf);
- flatcc_builder_clear(B);
- }
-~~~
-</div>
-
-The same principle applies with `start/end` vs `start/end_as_root` in
-the top-down approach.
-
-
-## Top Down Example
-
-The tutorial uses a bottom up approach. In C it is also possible to use
-a top-down approach by starting and ending objects nested within each
-other. In the tutorial there is no deep nesting, so the difference is
-limited, but it shows the idea:
-
-<div class="language-c">
-<br>
-~~~{.c}
- uint8_t treasure[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
- size_t treasure_count = c_vec_len(treasure);
- ns(Weapon_ref_t) axe;
-
- // NOTE: if we use end_as_root, we MUST also start as root.
- ns(Monster_start_as_root(B));
- ns(Monster_pos_create(B, 1.0f, 2.0f, 3.0f));
- ns(Monster_hp_add(B, 300));
- ns(Monster_mana_add(B, 150));
- // We use create_str instead of add because we have no existing string reference.
- ns(Monster_name_create_str(B, "Orc"));
- // Again we use create because we no existing vector object, only a C-array.
- ns(Monster_inventory_create(B, treasure, treasure_count));
- ns(Monster_color_add(B, ns(Color_Red)));
- if (1) {
- ns(Monster_weapons_start(B));
- ns(Monster_weapons_push_create(B, flatbuffers_string_create_str(B, "Sword"), 3));
- // We reuse the axe object later. Note that we dereference a pointer
- // because push always returns a short-term pointer to the stored element.
- // We could also have created the axe object first and simply pushed it.
- axe = *ns(Monster_weapons_push_create(B, flatbuffers_string_create_str(B, "Axe"), 5));
- ns(Monster_weapons_end(B));
- } else {
- // We can have more control with the table elements added to a vector:
- //
- ns(Monster_weapons_start(B));
- ns(Monster_weapons_push_start(B));
- ns(Weapon_name_create_str(B, "Sword"));
- ns(Weapon_damage_add(B, 3));
- ns(Monster_weapons_push_end(B));
- ns(Monster_weapons_push_start(B));
- ns(Monster_weapons_push_start(B));
- ns(Weapon_name_create_str(B, "Axe"));
- ns(Weapon_damage_add(B, 5));
- axe = *ns(Monster_weapons_push_end(B));
- ns(Monster_weapons_end(B));
- }
- // Unions can get their type by using a type-specific add/create/start method.
- ns(Monster_equipped_Weapon_add(B, axe));
-
- ns(Monster_end_as_root(B));
-~~~
-</div>
-
-
-## Basic Reflection
-
-The C-API does support reading binary schema (.bfbs)
-files via code generated from the `reflection.fbs` schema, and an
-[example usage](https://github.com/dvidelabs/flatcc/tree/master/samples/reflection)
-shows how to use this. The reflection schema files are pre-generated
-in the [runtime distribution](https://github.com/dvidelabs/flatcc/tree/master/include/flatcc/reflection).
-
-
-## Mutations and Reflection
-
-The C-API does not support mutating reflection like C++ does, nor does
-the reader interface support mutating scalars (and it is generally
-unsafe to do so even after verification).
-
-The generated reader interface supports sorting vectors in-place after
-casting them to a mutating type because it is not practical to do so
-while building a buffer. This is covered in the builder documentation.
-The reflection example makes use of this feature to look up objects by
-name.
-
-It is possible to build new buffers using complex objects from existing
-buffers as source. This can be very efficient due to direct copy
-semantics without endian conversion or temporary stack allocation.
-
-Scalars, structs and strings can be used as source, as well vectors of
-these.
-
-It is currently not possible to use an existing table or vector of table
-as source, but it would be possible to add support for this at some
-point.
-
-
-## Namespaces
-
-The `FLATBUFFERS_WRAP_NAMESPACE` approach used in the tutorial is convenient
-when each function has a very long namespace prefix. But it isn't always
-the best approach. If the namespace is absent, or simple and
-informative, we might as well use the prefix directly. The
-[reflection example](https://github.com/dvidelabs/flatcc/blob/master/samples/reflection/bfbs2json.c)
-mentioned above uses this approach.
-
-
-## Checking for Present Members
-
-Not all languages support testing if a field is present, but in C we can
-elaborate the reader section of the tutorial with tests for this. Recall
-that `mana` was set to the default value `150` and therefore shouldn't
-be present.
-
-<div class="language-c">
-~~~{.c}
- int hp_present = ns(Monster_hp_is_present(monster)); // 1
- int mana_present = ns(Monster_mana_is_present(monster)); // 0
-~~~
-</div>
-
-## Alternative ways to add a Union
-
-In the tutorial we used a single call to add a union. Here we show
-different ways to accomplish the same thing. The last form is rarely
-used, but is the low-level way to do it. It can be used to group small
-values together in the table by adding type and data at different
-points in time.
-
-<div class="language-c">
-~~~{.c}
- ns(Equipment_union_ref_t) equipped = ns(Equipment_as_Weapon(axe));
- ns(Monster_equipped_add(B, equipped));
- // or alternatively
- ns(Monster_equipped_Weapon_add(B, axe);
- // or alternatively
- ns(Monster_equipped_add_type(B, ns(Equipment_Weapon));
- ns(Monster_equipped_add_member(B, axe));
-~~~
-</div>
-
-## Why not integrate with the `flatc` tool?
-
-[It was considered how the C code generator could be integrated into the
-`flatc` tool](https://github.com/dvidelabs/flatcc/issues/1), but it
-would either require that the standalone C implementation of the schema
-compiler was dropped, or it would lead to excessive code duplication, or
-a complicated intermediate representation would have to be invented.
-Neither of these alternatives are very attractive, and it isn't a big
-deal to use the `flatcc` tool instead of `flatc` given that the
-FlatBuffers C runtime library needs to be made available regardless.
-
-
diff --git a/third_party/flatbuffers/docs/source/Compiler.md b/third_party/flatbuffers/docs/source/Compiler.md
deleted file mode 100755
index 2be5a66..0000000
--- a/third_party/flatbuffers/docs/source/Compiler.md
+++ /dev/null
@@ -1,127 +0,0 @@
-Using the schema compiler {#flatbuffers_guide_using_schema_compiler}
-=========================
-
-Usage:
-
- flatc [ GENERATOR OPTIONS ] [ -o PATH ] [ -I PATH ] [ -S ] FILES...
- [ -- FILES...]
-
-The files are read and parsed in order, and can contain either schemas
-or data (see below). Data files are processed according to the definitions of
-the most recent schema specified.
-
-`--` indicates that the following files are binary files in
-FlatBuffer format conforming to the schema indicated before it.
-
-Depending on the flags passed, additional files may
-be generated for each file processed:
-
-For any schema input files, one or more generators can be specified:
-
-- `--cpp`, `-c` : Generate a C++ header for all definitions in this file (as
- `filename_generated.h`).
-
-- `--java`, `-j` : Generate Java code.
-
-- `--csharp`, `-n` : Generate C# code.
-
-- `--go`, `-g` : Generate Go code.
-
-- `--python`, `-p`: Generate Python code.
-
-- `--js`, `-s`: Generate JavaScript code.
-
-- `--php`: Generate PHP code.
-
-- `--grpc`: Generate RPC stub code for GRPC.
-
-For any data input files:
-
-- `--binary`, `-b` : If data is contained in this file, generate a
- `filename.bin` containing the binary flatbuffer (or a different extension
- if one is specified in the schema).
-
-- `--json`, `-t` : If data is contained in this file, generate a
- `filename.json` representing the data in the flatbuffer.
-
-Additional options:
-
-- `-o PATH` : Output all generated files to PATH (either absolute, or
- relative to the current directory). If omitted, PATH will be the
- current directory. PATH should end in your systems path separator,
- e.g. `/` or `\`.
-
-- `-I PATH` : when encountering `include` statements, attempt to load the
- files from this path. Paths will be tried in the order given, and if all
- fail (or none are specified) it will try to load relative to the path of
- the schema file being parsed.
-
-- `-M` : Print make rules for generated files.
-
-- `--strict-json` : Require & generate strict JSON (field names are enclosed
- in quotes, no trailing commas in tables/vectors). By default, no quotes are
- required/generated, and trailing commas are allowed.
-
-- `--defaults-json` : Output fields whose value is equal to the default value
- when writing JSON text.
-
-- `--no-prefix` : Don't prefix enum values in generated C++ by their enum
- type.
-
-- `--scoped-enums` : Use C++11 style scoped and strongly typed enums in
- generated C++. This also implies `--no-prefix`.
-
-- `--gen-includes` : (deprecated), this is the default behavior.
- If the original behavior is required (no include
- statements) use `--no-includes.`
-
-- `--no-includes` : Don't generate include statements for included schemas the
- generated file depends on (C++).
-
-- `--gen-mutable` : Generate additional non-const accessors for mutating
- FlatBuffers in-place.
-
- `--gen-object-api` : Generate an additional object-based API. This API is
- more convenient for object construction and mutation than the base API,
- at the cost of efficiency (object allocation). Recommended only to be used
- if other options are insufficient.
-
-- `--gen-onefile` : Generate single output file (useful for C#)
-
-- `--gen-all`: Generate not just code for the current schema files, but
- for all files it includes as well. If the language uses a single file for
- output (by default the case for C++ and JS), all code will end up in
- this one file.
-
-- `--no-js-exports` : Removes Node.js style export lines (useful for JS)
-
-- `--goog-js-export` : Uses goog.exportsSymbol and goog.exportsProperty
- instead of Node.js style exporting. Needed for compatibility with the
- Google closure compiler (useful for JS).
-
-- `--raw-binary` : Allow binaries without a file_indentifier to be read.
- This may crash flatc given a mismatched schema.
-
-- `--proto`: Expect input files to be .proto files (protocol buffers).
- Output the corresponding .fbs file.
- Currently supports: `package`, `message`, `enum`, nested declarations,
- `import` (use `-I` for paths), `extend`, `oneof`, `group`.
- Does not support, but will skip without error: `option`, `service`,
- `extensions`, and most everything else.
-
-- `--schema`: Serialize schemas instead of JSON (use with -b). This will
- output a binary version of the specified schema that itself corresponds
- to the reflection/reflection.fbs schema. Loading this binary file is the
- basis for reflection functionality.
-
-- `--bfbs-comments`: Add doc comments to the binary schema files.
-
-- `--conform FILE` : Specify a schema the following schemas should be
- an evolution of. Gives errors if not. Useful to check if schema
- modifications don't break schema evolution rules.
-
-- `--include-prefix PATH` : Prefix this path to any generated include
- statements.
-
-NOTE: short-form options for generators are deprecated, use the long form
-whenever possible.
diff --git a/third_party/flatbuffers/docs/source/CppUsage.md b/third_party/flatbuffers/docs/source/CppUsage.md
deleted file mode 100755
index cff3071..0000000
--- a/third_party/flatbuffers/docs/source/CppUsage.md
+++ /dev/null
@@ -1,432 +0,0 @@
-Use in C++ {#flatbuffers_guide_use_cpp}
-==========
-
-## Before you get started
-
-Before diving into the FlatBuffers usage in C++, it should be noted that
-the [Tutorial](@ref flatbuffers_guide_tutorial) page has a complete guide
-to general FlatBuffers usage in all of the supported languages (including C++).
-This page is designed to cover the nuances of FlatBuffers usage, specific to
-C++.
-
-#### Prerequisites
-
-This page assumes you have written a FlatBuffers schema and compiled it
-with the Schema Compiler. If you have not, please see
-[Using the schema compiler](@ref flatbuffers_guide_using_schema_compiler)
-and [Writing a schema](@ref flatbuffers_guide_writing_schema).
-
-Assuming you wrote a schema, say `mygame.fbs` (though the extension doesn't
-matter), you've generated a C++ header called `mygame_generated.h` using the
-compiler (e.g. `flatc -c mygame.fbs`), you can now start using this in
-your program by including the header. As noted, this header relies on
-`flatbuffers/flatbuffers.h`, which should be in your include path.
-
-## FlatBuffers C++ library code location
-
-The code for the FlatBuffers C++ library can be found at
-`flatbuffers/include/flatbuffers`. You can browse the library code on the
-[FlatBuffers GitHub page](https://github.com/google/flatbuffers/tree/master/include/flatbuffers).
-
-## Testing the FlatBuffers C++ library
-
-The code to test the C++ library can be found at `flatbuffers/tests`.
-The test code itself is located in
-[test.cpp](https://github.com/google/flatbuffers/blob/master/tests/test.cpp).
-
-This test file is built alongside `flatc`. To review how to build the project,
-please read the [Building](@ref flatbuffers_guide_building) documenation.
-
-To run the tests, execute `flattests` from the root `flatbuffers/` directory.
-For example, on [Linux](https://en.wikipedia.org/wiki/Linux), you would simply
-run: `./flattests`.
-
-## Using the FlatBuffers C++ library
-
-*Note: See [Tutorial](@ref flatbuffers_guide_tutorial) for a more in-depth
-example of how to use FlatBuffers in C++.*
-
-FlatBuffers supports both reading and writing FlatBuffers in C++.
-
-To use FlatBuffers in your code, first generate the C++ classes from your
-schema with the `--cpp` option to `flatc`. Then you can include both FlatBuffers
-and the generated code to read or write FlatBuffers.
-
-For example, here is how you would read a FlatBuffer binary file in C++:
-First, include the library and generated code. Then read the file into
-a `char *` array, which you pass to `GetMonster()`.
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
- #include "flatbuffers/flatbuffers.h"
- #include "monster_test_generate.h"
- #include <cstdio> // For printing and file access.
-
- FILE* file = fopen("monsterdata_test.mon", "rb");
- fseek(file, 0L, SEEK_END);
- int length = ftell(file);
- fseek(file, 0L, SEEK_SET);
- char *data = new char[length];
- fread(data, sizeof(char), length, file);
- fclose(file);
-
- auto monster = GetMonster(data);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-`monster` is of type `Monster *`, and points to somewhere *inside* your
-buffer (root object pointers are not the same as `buffer_pointer` !).
-If you look in your generated header, you'll see it has
-convenient accessors for all fields, e.g. `hp()`, `mana()`, etc:
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
- printf("%d\n", monster->hp()); // `80`
- printf("%d\n", monster->mana()); // default value of `150`
- printf("%s\n", monster->name()->c_str()); // "MyMonster"
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-*Note: That we never stored a `mana` value, so it will return the default.*
-
-## Object based API. {#flatbuffers_cpp_object_based_api}
-
-FlatBuffers is all about memory efficiency, which is why its base API is written
-around using as little as possible of it. This does make the API clumsier
-(requiring pre-order construction of all data, and making mutation harder).
-
-For times when efficiency is less important a more convenient object based API
-can be used (through `--gen-object-api`) that is able to unpack & pack a
-FlatBuffer into objects and standard STL containers, allowing for convenient
-construction, access and mutation.
-
-To use:
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
- // Autogenerated class from table Monster.
- MonsterT monsterobj;
-
- // Deserialize from buffer into object.
- UnPackTo(&monsterobj, flatbuffer);
-
- // Update object directly like a C++ class instance.
- cout << monsterobj->name; // This is now a std::string!
- monsterobj->name = "Bob"; // Change the name.
-
- // Serialize into new flatbuffer.
- FlatBufferBuilder fbb;
- Pack(fbb, &monsterobj);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following attributes are specific to the object-based API code generation:
-
-- `native_inline` (on a field): Because FlatBuffer tables and structs are
- optionally present in a given buffer, they are best represented as pointers
- (specifically std::unique_ptrs) in the native class since they can be null.
- This attribute changes the member declaration to use the type directly
- rather than wrapped in a unique_ptr.
-
-- `native_default`: "value" (on a field): For members that are declared
- "native_inline", the value specified with this attribute will be included
- verbatim in the class constructor initializer list for this member.
-
-- `native_type`' "type" (on a struct): In some cases, a more optimal C++ data
- type exists for a given struct. For example, the following schema:
-
- struct Vec2 {
- x: float;
- y: float;
- }
-
- generates the following Object-Based API class:
-
- struct Vec2T : flatbuffers::NativeTable {
- float x;
- float y;
- };
-
- However, it can be useful to instead use a user-defined C++ type since it
- can provide more functionality, eg.
-
- struct vector2 {
- float x = 0, y = 0;
- vector2 operator+(vector2 rhs) const { ... }
- vector2 operator-(vector2 rhs) const { ... }
- float length() const { ... }
- // etc.
- };
-
- The `native_type` attribute will replace the usage of the generated class
- with the given type. So, continuing with the example, the generated
- code would use |vector2| in place of |Vec2T| for all generated code.
-
- However, becuase the native_type is unknown to flatbuffers, the user must
- provide the following functions to aide in the serialization process:
-
- namespace flatbuffers {
- FlatbufferStruct Pack(const native_type& obj);
- native_type UnPack(const FlatbufferStruct& obj);
- }
-
-Finally, the following top-level attribute
-
-- native_include: "path" (at file level): Because the `native_type` attribute
- can be used to introduce types that are unknown to flatbuffers, it may be
- necessary to include "external" header files in the generated code. This
- attribute can be used to directly add an #include directive to the top of
- the generated code that includes the specified path directly.
-
-# External references.
-
-An additional feature of the object API is the ability to allow you to load
-multiple independent FlatBuffers, and have them refer to eachothers objects
-using hashes which are then represented as typed pointers in the object API.
-
-To make this work have a field in the objects you want to referred to which is
-using the string hashing feature (see `hash` attribute in the
-[schema](@ref flatbuffers_guide_writing_schema) documentation). Then you have
-a similar hash in the field referring to it, along with a `cpp_type`
-attribute specifying the C++ type this will refer to (this can be any C++
-type, and will get a `*` added).
-
-Then, in JSON or however you create these buffers, make sure they use the
-same string (or hash).
-
-When you call `UnPack` (or `Create`), you'll need a function that maps from
-hash to the object (see `resolver_function_t` for details).
-
-# Using different pointer types.
-
-By default the object tree is built out of `std::unique_ptr`, but you can
-influence this either globally (using the `--cpp-ptr-type` argument to
-`flatc`) or per field (using the `cpp_ptr_type` attribute) to by any smart
-pointer type (`my_ptr<T>`), or by specifying `naked` as the type to get `T *`
-pointers. Unlike the smart pointers, naked pointers do not manage memory for
-you, so you'll have to manage their lifecycles manually.
-
-
-# Using different string type.
-
-By default the object tree is built out of `std::string`, but you can
-influence this either globally (using the `--cpp-str-type` argument to
-`flatc`) or per field using the `cpp_str_type` attribute.
-
-The type must support T::c_str() and T::length() as member functions.
-
-## Reflection (& Resizing)
-
-There is experimental support for reflection in FlatBuffers, allowing you to
-read and write data even if you don't know the exact format of a buffer, and
-even allows you to change sizes of strings and vectors in-place.
-
-The way this works is very elegant; there is actually a FlatBuffer schema that
-describes schemas (!) which you can find in `reflection/reflection.fbs`.
-The compiler, `flatc`, can write out any schemas it has just parsed as a binary
-FlatBuffer, corresponding to this meta-schema.
-
-Loading in one of these binary schemas at runtime allows you traverse any
-FlatBuffer data that corresponds to it without knowing the exact format. You
-can query what fields are present, and then read/write them after.
-
-For convenient field manipulation, you can include the header
-`flatbuffers/reflection.h` which includes both the generated code from the meta
-schema, as well as a lot of helper functions.
-
-And example of usage, for the time being, can be found in
-`test.cpp/ReflectionTest()`.
-
-## Storing maps / dictionaries in a FlatBuffer
-
-FlatBuffers doesn't support maps natively, but there is support to
-emulate their behavior with vectors and binary search, which means you
-can have fast lookups directly from a FlatBuffer without having to unpack
-your data into a `std::map` or similar.
-
-To use it:
-- Designate one of the fields in a table as they "key" field. You do this
- by setting the `key` attribute on this field, e.g.
- `name:string (key)`.
- You may only have one key field, and it must be of string or scalar type.
-- Write out tables of this type as usual, collect their offsets in an
- array or vector.
-- Instead of `CreateVector`, call `CreateVectorOfSortedTables`,
- which will first sort all offsets such that the tables they refer to
- are sorted by the key field, then serialize it.
-- Now when you're accessing the FlatBuffer, you can use `Vector::LookupByKey`
- instead of just `Vector::Get` to access elements of the vector, e.g.:
- `myvector->LookupByKey("Fred")`, which returns a pointer to the
- corresponding table type, or `nullptr` if not found.
- `LookupByKey` performs a binary search, so should have a similar speed to
- `std::map`, though may be faster because of better caching. `LookupByKey`
- only works if the vector has been sorted, it will likely not find elements
- if it hasn't been sorted.
-
-## Direct memory access
-
-As you can see from the above examples, all elements in a buffer are
-accessed through generated accessors. This is because everything is
-stored in little endian format on all platforms (the accessor
-performs a swap operation on big endian machines), and also because
-the layout of things is generally not known to the user.
-
-For structs, layout is deterministic and guaranteed to be the same
-accross platforms (scalars are aligned to their
-own size, and structs themselves to their largest member), and you
-are allowed to access this memory directly by using `sizeof()` and
-`memcpy` on the pointer to a struct, or even an array of structs.
-
-To compute offsets to sub-elements of a struct, make sure they
-are a structs themselves, as then you can use the pointers to
-figure out the offset without having to hardcode it. This is
-handy for use of arrays of structs with calls like `glVertexAttribPointer`
-in OpenGL or similar APIs.
-
-It is important to note is that structs are still little endian on all
-machines, so only use tricks like this if you can guarantee you're not
-shipping on a big endian machine (an `assert(FLATBUFFERS_LITTLEENDIAN)`
-would be wise).
-
-## Access of untrusted buffers
-
-The generated accessor functions access fields over offsets, which is
-very quick. These offsets are not verified at run-time, so a malformed
-buffer could cause a program to crash by accessing random memory.
-
-When you're processing large amounts of data from a source you know (e.g.
-your own generated data on disk), this is acceptable, but when reading
-data from the network that can potentially have been modified by an
-attacker, this is undesirable.
-
-For this reason, you can optionally use a buffer verifier before you
-access the data. This verifier will check all offsets, all sizes of
-fields, and null termination of strings to ensure that when a buffer
-is accessed, all reads will end up inside the buffer.
-
-Each root type will have a verification function generated for it,
-e.g. for `Monster`, you can call:
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
- bool ok = VerifyMonsterBuffer(Verifier(buf, len));
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-if `ok` is true, the buffer is safe to read.
-
-Besides untrusted data, this function may be useful to call in debug
-mode, as extra insurance against data being corrupted somewhere along
-the way.
-
-While verifying a buffer isn't "free", it is typically faster than
-a full traversal (since any scalar data is not actually touched),
-and since it may cause the buffer to be brought into cache before
-reading, the actual overhead may be even lower than expected.
-
-In specialized cases where a denial of service attack is possible,
-the verifier has two additional constructor arguments that allow
-you to limit the nesting depth and total amount of tables the
-verifier may encounter before declaring the buffer malformed. The default is
-`Verifier(buf, len, 64 /* max depth */, 1000000, /* max tables */)` which
-should be sufficient for most uses.
-
-## Text & schema parsing
-
-Using binary buffers with the generated header provides a super low
-overhead use of FlatBuffer data. There are, however, times when you want
-to use text formats, for example because it interacts better with source
-control, or you want to give your users easy access to data.
-
-Another reason might be that you already have a lot of data in JSON
-format, or a tool that generates JSON, and if you can write a schema for
-it, this will provide you an easy way to use that data directly.
-
-(see the schema documentation for some specifics on the JSON format
-accepted).
-
-There are two ways to use text formats:
-
-#### Using the compiler as a conversion tool
-
-This is the preferred path, as it doesn't require you to add any new
-code to your program, and is maximally efficient since you can ship with
-binary data. The disadvantage is that it is an extra step for your
-users/developers to perform, though you might be able to automate it.
-
- flatc -b myschema.fbs mydata.json
-
-This will generate the binary file `mydata_wire.bin` which can be loaded
-as before.
-
-#### Making your program capable of loading text directly
-
-This gives you maximum flexibility. You could even opt to support both,
-i.e. check for both files, and regenerate the binary from text when
-required, otherwise just load the binary.
-
-This option is currently only available for C++, or Java through JNI.
-
-As mentioned in the section "Building" above, this technique requires
-you to link a few more files into your program, and you'll want to include
-`flatbuffers/idl.h`.
-
-Load text (either a schema or json) into an in-memory buffer (there is a
-convenient `LoadFile()` utility function in `flatbuffers/util.h` if you
-wish). Construct a parser:
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
- flatbuffers::Parser parser;
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Now you can parse any number of text files in sequence:
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
- parser.Parse(text_file.c_str());
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This works similarly to how the command-line compiler works: a sequence
-of files parsed by the same `Parser` object allow later files to
-reference definitions in earlier files. Typically this means you first
-load a schema file (which populates `Parser` with definitions), followed
-by one or more JSON files.
-
-As optional argument to `Parse`, you may specify a null-terminated list of
-include paths. If not specified, any include statements try to resolve from
-the current directory.
-
-If there were any parsing errors, `Parse` will return `false`, and
-`Parser::err` contains a human readable error string with a line number
-etc, which you should present to the creator of that file.
-
-After each JSON file, the `Parser::fbb` member variable is the
-`FlatBufferBuilder` that contains the binary buffer version of that
-file, that you can access as described above.
-
-`samples/sample_text.cpp` is a code sample showing the above operations.
-
-## Threading
-
-Reading a FlatBuffer does not touch any memory outside the original buffer,
-and is entirely read-only (all const), so is safe to access from multiple
-threads even without synchronisation primitives.
-
-Creating a FlatBuffer is not thread safe. All state related to building
-a FlatBuffer is contained in a FlatBufferBuilder instance, and no memory
-outside of it is touched. To make this thread safe, either do not
-share instances of FlatBufferBuilder between threads (recommended), or
-manually wrap it in synchronisation primites. There's no automatic way to
-accomplish this, by design, as we feel multithreaded construction
-of a single buffer will be rare, and synchronisation overhead would be costly.
-
-## Advanced union features
-
-The C++ implementation currently supports vectors of unions (i.e. you can
-declare a field as `[T]` where `T` is a union type instead of a table type). It
-also supports structs and strings in unions, besides tables.
-
-For an example of these features, see `tests/union_vector`, and
-`UnionVectorTest` in `test.cpp`.
-
-Since these features haven't been ported to other languages yet, if you
-choose to use them, you won't be able to use these buffers in other languages
-(`flatc` will refuse to compile a schema that uses these features).
-
-These features reduce the amount of "table wrapping" that was previously
-needed to use unions.
-
-To use scalars, simply wrap them in a struct.
-
-<br>
diff --git a/third_party/flatbuffers/docs/source/FlatBuffers.md b/third_party/flatbuffers/docs/source/FlatBuffers.md
deleted file mode 100644
index d228bd4..0000000
--- a/third_party/flatbuffers/docs/source/FlatBuffers.md
+++ /dev/null
@@ -1,168 +0,0 @@
-FlatBuffers {#flatbuffers_index}
-===========
-
-# Overview {#flatbuffers_overview}
-
-[FlatBuffers](@ref flatbuffers_overview) is an efficient cross platform
-serialization library for C++, C#, C, Go, Java, JavaScript, PHP, and Python.
-It was originally created at Google for game development and other
-performance-critical applications.
-
-It is available as Open Source on [GitHub](http://github.com/google/flatbuffers)
-under the Apache license, v2 (see LICENSE.txt).
-
-## Why use FlatBuffers?
-
-- **Access to serialized data without parsing/unpacking** - What sets
- FlatBuffers apart is that it represents hierarchical data in a flat
- binary buffer in such a way that it can still be accessed directly
- without parsing/unpacking, while also still supporting data
- structure evolution (forwards/backwards compatibility).
-
-- **Memory efficiency and speed** - The only memory needed to access
- your data is that of the buffer. It requires 0 additional allocations
- (in C++, other languages may vary). FlatBuffers is also very
- suitable for use with mmap (or streaming), requiring only part of the
- buffer to be in memory. Access is close to the speed of raw
- struct access with only one extra indirection (a kind of vtable) to
- allow for format evolution and optional fields. It is aimed at
- projects where spending time and space (many memory allocations) to
- be able to access or construct serialized data is undesirable, such
- as in games or any other performance sensitive applications. See the
- [benchmarks](@ref flatbuffers_benchmarks) for details.
-
-- **Flexible** - Optional fields means not only do you get great
- forwards and backwards compatibility (increasingly important for
- long-lived games: don't have to update all data with each new
- version!). It also means you have a lot of choice in what data you
- write and what data you don't, and how you design data structures.
-
-- **Tiny code footprint** - Small amounts of generated code, and just
- a single small header as the minimum dependency, which is very easy
- to integrate. Again, see the benchmark section for details.
-
-- **Strongly typed** - Errors happen at compile time rather than
- manually having to write repetitive and error prone run-time checks.
- Useful code can be generated for you.
-
-- **Convenient to use** - Generated C++ code allows for terse access
- & construction code. Then there's optional functionality for parsing
- schemas and JSON-like text representations at runtime efficiently if
- needed (faster and more memory efficient than other JSON
- parsers).
-
- Java and Go code supports object-reuse. C# has efficient struct based
- accessors.
-
-- **Cross platform code with no dependencies** - C++ code will work
- with any recent gcc/clang and VS2010. Comes with build files for the tests &
- samples (Android .mk files, and cmake for all other platforms).
-
-### Why not use Protocol Buffers, or .. ?
-
-Protocol Buffers is indeed relatively similar to FlatBuffers,
-with the primary difference being that FlatBuffers does not need a parsing/
-unpacking step to a secondary representation before you can
-access data, often coupled with per-object memory allocation. The code
-is an order of magnitude bigger, too. Protocol Buffers has neither optional
-text import/export nor schema language features like unions.
-
-### But all the cool kids use JSON!
-
-JSON is very readable (which is why we use it as our optional text
-format) and very convenient when used together with dynamically typed
-languages (such as JavaScript). When serializing data from statically
-typed languages, however, JSON not only has the obvious drawback of runtime
-inefficiency, but also forces you to write *more* code to access data
-(counterintuitively) due to its dynamic-typing serialization system.
-In this context, it is only a better choice for systems that have very
-little to no information ahead of time about what data needs to be stored.
-
-If you do need to store data that doesn't fit a schema, FlatBuffers also
-offers a schema-less (self-describing) version!
-
-Read more about the "why" of FlatBuffers in the
-[white paper](@ref flatbuffers_white_paper).
-
-### Who uses FlatBuffers?
-- [Cocos2d-x](http://www.cocos2d-x.org/), the #1 open source mobile game
- engine, uses it to serialize all their
- [game data](http://www.cocos2d-x.org/reference/native-cpp/V3.5/d7/d2d/namespaceflatbuffers.html).
-- [Facebook](http://facebook.com/) uses it for client-server communication in
- their Android app. They have a nice
- [article](https://code.facebook.com/posts/872547912839369/improving-facebook-s-performance-on-android-with-flatbuffers/)
- explaining how it speeds up loading their posts.
-- [Fun Propulsion Labs](https://developers.google.com/games/#Tools)
- at Google uses it extensively in all their libraries and games.
-
-## Usage in brief
-
-This section is a quick rundown of how to use this system. Subsequent
-sections provide a more in-depth usage guide.
-
-- Write a schema file that allows you to define the data structures
- you may want to serialize. Fields can have a scalar type
- (ints/floats of all sizes), or they can be a: string; array of any type;
- reference to yet another object; or, a set of possible objects (unions).
- Fields are optional and have defaults, so they don't need to be
- present for every object instance.
-
-- Use `flatc` (the FlatBuffer compiler) to generate a C++ header (or
- Java/C#/Go/Python.. classes) with helper classes to access and construct
- serialized data. This header (say `mydata_generated.h`) only depends on
- `flatbuffers.h`, which defines the core functionality.
-
-- Use the `FlatBufferBuilder` class to construct a flat binary buffer.
- The generated functions allow you to add objects to this
- buffer recursively, often as simply as making a single function call.
-
-- Store or send your buffer somewhere!
-
-- When reading it back, you can obtain the pointer to the root object
- from the binary buffer, and from there traverse it conveniently
- in-place with `object->field()`.
-
-## In-depth documentation
-
-- How to [build the compiler](@ref flatbuffers_guide_building) and samples on
- various platforms.
-- How to [use the compiler](@ref flatbuffers_guide_using_schema_compiler).
-- How to [write a schema](@ref flatbuffers_guide_writing_schema).
-- How to [use the generated C++ code](@ref flatbuffers_guide_use_cpp) in your
- own programs.
-- How to [use the generated Java/C# code](@ref flatbuffers_guide_use_java_c-sharp)
- in your own programs.
-- How to [use the generated Go code](@ref flatbuffers_guide_use_go) in your
- own programs.
-- How to [use FlatBuffers in C with `flatcc`](@ref flatbuffers_guide_use_c) in your
- own programs.
-- [Support matrix](@ref flatbuffers_support) for platforms/languages/features.
-- Some [benchmarks](@ref flatbuffers_benchmarks) showing the advantage of
- using FlatBuffers.
-- A [white paper](@ref flatbuffers_white_paper) explaining the "why" of
- FlatBuffers.
-- How to use the [schema-less](@ref flexbuffers) version of
- FlatBuffers.
-- A description of the [internals](@ref flatbuffers_internals) of FlatBuffers.
-- A formal [grammar](@ref flatbuffers_grammar) of the schema language.
-
-## Online resources
-
-- [GitHub repository](http://github.com/google/flatbuffers)
-- [Landing page](http://google.github.io/flatbuffers)
-- [FlatBuffers Google Group](https://groups.google.com/forum/#!forum/flatbuffers)
-- [FlatBuffers Issues Tracker](http://github.com/google/flatbuffers/issues)
-- Independent implementations & tools:
- - [FlatCC](https://github.com/dvidelabs/flatcc) Alternative FlatBuffers
- parser, code generator and runtime all in C.
-- Videos:
- - Colt's [DevByte](https://www.youtube.com/watch?v=iQTxMkSJ1dQ).
- - GDC 2015 [Lightning Talk](https://www.youtube.com/watch?v=olmL1fUnQAQ).
- - FlatBuffers for [Go](https://www.youtube.com/watch?v=-BPVId_lA5w).
- - Evolution of FlatBuffers
- [visualization](https://www.youtube.com/watch?v=a0QE0xS8rKM).
-- Useful documentation created by others:
- - [FlatBuffers in Go](https://rwinslow.com/tags/flatbuffers/)
- - [FlatBuffers in Android](http://frogermcs.github.io/flatbuffers-in-android-introdution/)
- - [Parsing JSON to FlatBuffers in Java](http://frogermcs.github.io/json-parsing-with-flatbuffers-in-android/)
- - [FlatBuffers in Unity](http://exiin.com/blog/flatbuffers-for-unity-sample-code/)
diff --git a/third_party/flatbuffers/docs/source/FlexBuffers.md b/third_party/flatbuffers/docs/source/FlexBuffers.md
deleted file mode 100644
index 5d592fe..0000000
--- a/third_party/flatbuffers/docs/source/FlexBuffers.md
+++ /dev/null
@@ -1,156 +0,0 @@
-FlexBuffers {#flexbuffers}
-==========
-
-FlatBuffers was designed around schemas, because when you want maximum
-performance and data consistency, strong typing is helpful.
-
-There are however times when you want to store data that doesn't fit a
-schema, because you can't know ahead of time what all needs to be stored.
-
-For this, FlatBuffers has a dedicated format, called FlexBuffers.
-This is a binary format that can be used in conjunction
-with FlatBuffers (by storing a part of a buffer in FlexBuffers
-format), or also as its own independent serialization format.
-
-While it loses the strong typing, you retain the most unique advantage
-FlatBuffers has over other serialization formats (schema-based or not):
-FlexBuffers can also be accessed without parsing / copying / object allocation.
-This is a huge win in efficiency / memory friendly-ness, and allows unique
-use cases such as mmap-ing large amounts of free-form data.
-
-FlexBuffers' design and implementation allows for a very compact encoding,
-combining automatic pooling of strings with automatic sizing of containers to
-their smallest possible representation (8/16/32/64 bits). Many values and
-offsets can be encoded in just 8 bits. While a schema-less representation is
-usually more bulky because of the need to be self-descriptive, FlexBuffers
-generates smaller binaries for many cases than regular FlatBuffers.
-
-FlexBuffers is still slower than regular FlatBuffers though, so we recommend to
-only use it if you need it.
-
-
-# Usage
-
-This is for C++, other languages may follow.
-
-Include the header `flexbuffers.h`, which in turn depends on `flatbuffers.h`
-and `util.h`.
-
-To create a buffer:
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
-flexbuffers::Builder fbb;
-fbb.Int(13);
-fbb.Finish();
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You create any value, followed by `Finish`. Unlike FlatBuffers which requires
-the root value to be a table, here any value can be the root, including a lonely
-int value.
-
-You can now access the `std::vector<uint8_t>` that contains the encoded value
-as `fbb.GetBuffer()`. Write it, send it, or store it in a parent FlatBuffer. In
-this case, the buffer is just 3 bytes in size.
-
-To read this value back, you could just say:
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
-auto root = flexbuffers::GetRoot(my_buffer);
-int64_t i = root.AsInt64();
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FlexBuffers stores ints only as big as needed, so it doesn't differentiate
-between different sizes of ints. You can ask for the 64 bit version,
-regardless of what you put in. In fact, since you demand to read the root
-as an int, if you supply a buffer that actually contains a float, or a
-string with numbers in it, it will convert it for you on the fly as well,
-or return 0 if it can't. If instead you actually want to know what is inside
-the buffer before you access it, you can call `root.GetType()` or `root.IsInt()`
-etc.
-
-Here's a slightly more complex value you could write instead of `fbb.Int` above:
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
-fbb.Map([&]() {
- fbb.Vector("vec", [&]() {
- fbb.Int(-100);
- fbb.String("Fred");
- fbb.IndirectFloat(4.0f);
- });
- fbb.UInt("foo", 100);
-});
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This stores the equivalent of the JSON value
-`{ vec: [ -100, "Fred", 4.0 ], foo: 100 }`. The root is a dictionary that has
-just two key-value pairs, with keys `vec` and `foo`. Unlike FlatBuffers, it
-actually has to store these keys in the buffer (which it does only once if
-you store multiple such objects, by pooling key values), but also unlike
-FlatBuffers it has no restriction on the keys (fields) that you use.
-
-The map constructor uses a C++11 Lambda to group its children, but you can
-also use more conventional start/end calls if you prefer.
-
-The first value in the map is a vector. You'll notice that unlike FlatBuffers,
-you can use mixed types. There is also a `TypedVector` variant that only
-allows a single type, and uses a bit less memory.
-
-`IndirectFloat` is an interesting feature that allows you to store values
-by offset rather than inline. Though that doesn't make any visible change
-to the user, the consequence is that large values (especially doubles or
-64 bit ints) that occur more than once can be shared. Another use case is
-inside of vectors, where the largest element makes up the size of all elements
-(e.g. a single double forces all elements to 64bit), so storing a lot of small
-integers together with a double is more efficient if the double is indirect.
-
-Accessing it:
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
-auto map = flexbuffers::GetRoot(my_buffer).AsMap();
-map.size(); // 2
-auto vec = map["vec"].AsVector();
-vec.size(); // 3
-vec[0].AsInt64(); // -100;
-vec[1].AsString().c_str(); // "Fred";
-vec[1].AsInt64(); // 0 (Number parsing failed).
-vec[2].AsDouble(); // 4.0
-vec[2].AsString().IsTheEmptyString(); // true (Wrong Type).
-vec[2].AsString().c_str(); // "" (This still works though).
-vec[2].ToString().c_str(); // "4" (Or have it converted).
-map["foo"].AsUInt8(); // 100
-map["unknown"].IsNull(); // true
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-
-# Binary encoding
-
-A description of how FlexBuffers are encoded is in the
-[internals](Internals.md#flexbuffers) document.
-
-
-# Efficiency tips
-
-* Vectors generally are a lot more efficient than maps, so prefer them over maps
- when possible for small objects. Instead of a map with keys `x`, `y` and `z`,
- use a vector. Better yet, use a typed vector. Or even better, use a fixed
- size typed vector.
-* Maps are backwards compatible with vectors, and can be iterated as such.
- You can iterate either just the values (`map.Values()`), or in parallel with
- the keys vector (`map.Keys()`). If you intend
- to access most or all elements, this is faster than looking up each element
- by key, since that involves a binary search of the key vector.
-* When possible, don't mix values that require a big bit width (such as double)
- in a large vector of smaller values, since all elements will take on this
- width. Use `IndirectDouble` when this is a possibility. Note that
- integers automatically use the smallest width possible, i.e. if you ask
- to serialize an int64_t whose value is actually small, you will use less
- bits. Doubles are represented as floats whenever possible losslessly, but
- this is only possible for few values.
- Since nested vectors/maps are stored over offsets, they typically don't
- affect the vector width.
-* To store large arrays of byte data, use a blob. If you'd use a typed
- vector, the bit width of the size field may make it use more space than
- expected, and may not be compatible with `memcpy`.
- Similarly, large arrays of (u)int16_t may be better off stored as a
- binary blob if their size could exceed 64k elements.
- Construction and use are otherwise similar to strings.
diff --git a/third_party/flatbuffers/docs/source/GoApi.md b/third_party/flatbuffers/docs/source/GoApi.md
deleted file mode 100644
index 98be2b6..0000000
--- a/third_party/flatbuffers/docs/source/GoApi.md
+++ /dev/null
@@ -1,26 +0,0 @@
-Go API
-======
-
-\addtogroup flatbuffers_go_api
-
-<!-- Note: The `GoApi_generate.txt` code snippet was generated using `godoc` and
- customized for use with this markdown file. To regenerate the file, use the
- `godoc` tool (http://godoc.org) with the files in the `flatbuffers/go`
- folder.
-
- You may need to ensure that copies of the files exist in the `src/`
- subfolder at the path set by the `$GOROOT` environment variable. You can
- either move the files to `$GOROOT/src/flatbuffers` manually, if `$GOROOT`
- is already set, otherwise you will need to manually set the `$GOROOT`
- variable to a path and create `src/flatbuffers` subfolders at that path.
- Then copy the flatbuffers files into `$GOROOT/src/flatbuffers`. (Some
- versions of `godoc` include a `-path` flag. This could be used instead, if
- available).
-
- Once the files exist at the `$GOROOT/src/flatbuffers` location, you can
- regenerate this doc using the following command:
- `godoc flatbuffers > GoApi_generated.txt`.
-
- After the documentation is generated, you will have to manually remove any
- non-user facing documentation from this file. -->
-\snippet GoApi_generated.txt Go API
diff --git a/third_party/flatbuffers/docs/source/GoApi_generated.txt b/third_party/flatbuffers/docs/source/GoApi_generated.txt
deleted file mode 100644
index 3d4e0fc..0000000
--- a/third_party/flatbuffers/docs/source/GoApi_generated.txt
+++ /dev/null
@@ -1,125 +0,0 @@
-// This file was generated using `godoc` and customized for use with the
-// API Reference documentation. To recreate this file, use the `godoc` tool
-// (http://godoc.org) with the files in the `flatbuffers/go` folder.
-//
-// Note: You may need to ensure that copies of the files exist in the
-// `src/` subfolder at the path set by the `$GOROOT` environment variable.
-// You can either move the files to `$GOROOT/src/flatbuffers` manually, if
-// `$GOROOT` is already set, otherwise you will need to manually set the
-// `$GOROOT` variable to a path and create `src/flatbuffers` subfolders at that
-// path. Then copy these files into `$GOROOT/src/flatbuffers`. (Some versions of
-// `godoc` include a `-path` flag. This could be used instead, if available).
-//
-// Once the files exist at the `$GOROOT/src/flatbuffers` location, you can
-// regenerate this doc using the following command:
-// `godoc flatbuffers > GoApi_generated.txt`.
-//
-// After the documentation is generated, you will have to manually remove any
-// non-user facing documentation from this file.
-
-/// [Go API]
-PACKAGE DOCUMENTATION
-
-package flatbuffers
- Package flatbuffers provides facilities to read and write flatbuffers
- objects.
-
-TYPES
-
-type Builder struct {
- // `Bytes` gives raw access to the buffer. Most users will want to use
- // FinishedBytes() instead.
- Bytes []byte
-}
- Builder is a state machine for creating FlatBuffer objects. Use a
- Builder to construct object(s) starting from leaf nodes.
-
- A Builder constructs byte buffers in a last-first manner for simplicity
- and performance.
-
-FUNCTIONS
-
-func NewBuilder(initialSize int) *Builder
- NewBuilder initializes a Builder of size `initial_size`. The internal
- buffer is grown as needed.
-
-func (b *Builder) CreateByteString(s []byte) UOffsetT
- CreateByteString writes a byte slice as a string (null-terminated).
-
-func (b *Builder) CreateByteVector(v []byte) UOffsetT
- CreateByteVector writes a ubyte vector
-
-func (b *Builder) CreateString(s string) UOffsetT
- CreateString writes a null-terminated string as a vector.
-
-func (b *Builder) EndVector(vectorNumElems int) UOffsetT
- EndVector writes data necessary to finish vector construction.
-
-func (b *Builder) Finish(rootTable UOffsetT)
- Finish finalizes a buffer, pointing to the given `rootTable`.
-
-func (b *Builder) FinishedBytes() []byte
- FinishedBytes returns a pointer to the written data in the byte buffer.
- Panics if the builder is not in a finished state (which is caused by
- calling `Finish()`).
-
-func (b *Builder) Head() UOffsetT
- Head gives the start of useful data in the underlying byte buffer. Note:
- unlike other functions, this value is interpreted as from the left.
-
-func (b *Builder) PrependBool(x bool)
- PrependBool prepends a bool to the Builder buffer. Aligns and checks for
- space.
-
-func (b *Builder) PrependByte(x byte)
- PrependByte prepends a byte to the Builder buffer. Aligns and checks for
- space.
-
-func (b *Builder) PrependFloat32(x float32)
- PrependFloat32 prepends a float32 to the Builder buffer. Aligns and
- checks for space.
-
-func (b *Builder) PrependFloat64(x float64)
- PrependFloat64 prepends a float64 to the Builder buffer. Aligns and
- checks for space.
-
-func (b *Builder) PrependInt16(x int16)
- PrependInt16 prepends a int16 to the Builder buffer. Aligns and checks
- for space.
-
-func (b *Builder) PrependInt32(x int32)
- PrependInt32 prepends a int32 to the Builder buffer. Aligns and checks
- for space.
-
-func (b *Builder) PrependInt64(x int64)
- PrependInt64 prepends a int64 to the Builder buffer. Aligns and checks
- for space.
-
-func (b *Builder) PrependInt8(x int8)
- PrependInt8 prepends a int8 to the Builder buffer. Aligns and checks for
- space.
-
-func (b *Builder) PrependUOffsetT(off UOffsetT)
- PrependUOffsetT prepends an UOffsetT, relative to where it will be
- written.
-
-func (b *Builder) PrependUint16(x uint16)
- PrependUint16 prepends a uint16 to the Builder buffer. Aligns and checks
- for space.
-
-func (b *Builder) PrependUint32(x uint32)
- PrependUint32 prepends a uint32 to the Builder buffer. Aligns and checks
- for space.
-
-func (b *Builder) PrependUint64(x uint64)
- PrependUint64 prepends a uint64 to the Builder buffer. Aligns and checks
- for space.
-
-func (b *Builder) PrependUint8(x uint8)
- PrependUint8 prepends a uint8 to the Builder buffer. Aligns and checks
- for space.
-
-func (b *Builder) Reset()
- Reset truncates the underlying Builder buffer, facilitating alloc-free
- reuse of a Builder. It also resets bookkeeping data.
-/// [Go API]
diff --git a/third_party/flatbuffers/docs/source/GoUsage.md b/third_party/flatbuffers/docs/source/GoUsage.md
deleted file mode 100644
index ab6ddbd..0000000
--- a/third_party/flatbuffers/docs/source/GoUsage.md
+++ /dev/null
@@ -1,99 +0,0 @@
-Use in Go {#flatbuffers_guide_use_go}
-=========
-
-## Before you get started
-
-Before diving into the FlatBuffers usage in Go, it should be noted that
-the [Tutorial](@ref flatbuffers_guide_tutorial) page has a complete guide
-to general FlatBuffers usage in all of the supported languages (including Go).
-This page is designed to cover the nuances of FlatBuffers usage, specific to
-Go.
-
-You should also have read the [Building](@ref flatbuffers_guide_building)
-documentation to build `flatc` and should be familiar with
-[Using the schema compiler](@ref flatbuffers_guide_using_schema_compiler) and
-[Writing a schema](@ref flatbuffers_guide_writing_schema).
-
-## FlatBuffers Go library code location
-
-The code for the FlatBuffers Go library can be found at
-`flatbuffers/go`. You can browse the library code on the [FlatBuffers
-GitHub page](https://github.com/google/flatbuffers/tree/master/go).
-
-## Testing the FlatBuffers Go library
-
-The code to test the Go library can be found at `flatbuffers/tests`.
-The test code itself is located in [go_test.go](https://github.com/google/
-flatbuffers/blob/master/tests/go_test.go).
-
-To run the tests, use the [GoTest.sh](https://github.com/google/flatbuffers/
-blob/master/tests/GoTest.sh) shell script.
-
-*Note: The shell script requires [Go](https://golang.org/doc/install) to
-be installed.*
-
-## Using the FlatBuffers Go library
-
-*Note: See [Tutorial](@ref flatbuffers_guide_tutorial) for a more in-depth
-example of how to use FlatBuffers in Go.*
-
-FlatBuffers supports reading and writing binary FlatBuffers in Go.
-
-To use FlatBuffers in your own code, first generate Go classes from your
-schema with the `--go` option to `flatc`. Then you can include both FlatBuffers
-and the generated code to read or write a FlatBuffer.
-
-For example, here is how you would read a FlatBuffer binary file in Go: First,
-include the library and generated code. Then read a FlatBuffer binary file into
-a `[]byte`, which you pass to the `GetRootAsMonster` function:
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.go}
- import (
- example "MyGame/Example"
- flatbuffers "github.com/google/flatbuffers/go"
-
- io/ioutil
- )
-
- buf, err := ioutil.ReadFile("monster.dat")
- // handle err
- monster := example.GetRootAsMonster(buf, 0)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Now you can access values like this:
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.go}
- hp := monster.Hp()
- pos := monster.Pos(nil)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-
-In some cases it's necessary to modify values in an existing FlatBuffer in place (without creating a copy). For this reason, scalar fields of a Flatbuffer table or struct can be mutated.
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.go}
- monster := example.GetRootAsMonster(buf, 0)
-
- // Set table field.
- if ok := monster.MutateHp(10); !ok {
- panic("failed to mutate Hp")
- }
-
- // Set struct field.
- monster.Pos().MutateZ(4)
-
- // This mutation will fail because the mana field is not available in
- // the buffer. It should be set when creating the buffer.
- if ok := monster.MutateMana(20); !ok {
- panic("failed to mutate Hp")
- }
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The term `mutate` is used instead of `set` to indicate that this is a special use case. All mutate functions return a boolean value which is false if the field we're trying to mutate is not available in the buffer.
-
-## Text Parsing
-
-There currently is no support for parsing text (Schema's and JSON) directly
-from Go, though you could use the C++ parser through cgo. Please see the
-C++ documentation for more on text parsing.
-
-<br>
diff --git a/third_party/flatbuffers/docs/source/Grammar.md b/third_party/flatbuffers/docs/source/Grammar.md
deleted file mode 100755
index b6b48c0..0000000
--- a/third_party/flatbuffers/docs/source/Grammar.md
+++ /dev/null
@@ -1,48 +0,0 @@
-Grammar of the schema language {#flatbuffers_grammar}
-==============================
-
-schema = include*
- ( namespace\_decl | type\_decl | enum\_decl | root\_decl |
- file_extension_decl | file_identifier_decl |
- attribute\_decl | object )*
-
-include = `include` string\_constant `;`
-
-namespace\_decl = `namespace` ident ( `.` ident )* `;`
-
-attribute\_decl = `attribute` string\_constant `;`
-
-type\_decl = ( `table` | `struct` ) ident metadata `{` field\_decl+ `}`
-
-enum\_decl = ( `enum` | `union` ) ident [ `:` type ] metadata `{` commasep(
-enumval\_decl ) `}`
-
-root\_decl = `root_type` ident `;`
-
-field\_decl = ident `:` type [ `=` scalar ] metadata `;`
-
-type = `bool` | `byte` | `ubyte` | `short` | `ushort` | `int` | `uint` |
-`float` | `long` | `ulong` | `double`
- | `string` | `[` type `]` | ident
-
-enumval\_decl = ident [ `=` integer\_constant ]
-
-metadata = [ `(` commasep( ident [ `:` single\_value ] ) `)` ]
-
-scalar = integer\_constant | float\_constant
-
-object = { commasep( ident `:` value ) }
-
-single\_value = scalar | string\_constant
-
-value = single\_value | object | `[` commasep( value ) `]`
-
-commasep(x) = [ x ( `,` x )\* ]
-
-file_extension_decl = `file_extension` string\_constant `;`
-
-file_identifier_decl = `file_identifier` string\_constant `;`
-
-integer\_constant = -?[0-9]+ | `true` | `false`
-
-float\_constant = -?[0-9]+.[0-9]+((e|E)(+|-)?[0-9]+)?
diff --git a/third_party/flatbuffers/docs/source/Internals.md b/third_party/flatbuffers/docs/source/Internals.md
deleted file mode 100755
index de7a07e..0000000
--- a/third_party/flatbuffers/docs/source/Internals.md
+++ /dev/null
@@ -1,439 +0,0 @@
-FlatBuffer Internals {#flatbuffers_internals}
-====================
-
-This section is entirely optional for the use of FlatBuffers. In normal
-usage, you should never need the information contained herein. If you're
-interested however, it should give you more of an appreciation of why
-FlatBuffers is both efficient and convenient.
-
-### Format components
-
-A FlatBuffer is a binary file and in-memory format consisting mostly of
-scalars of various sizes, all aligned to their own size. Each scalar is
-also always represented in little-endian format, as this corresponds to
-all commonly used CPUs today. FlatBuffers will also work on big-endian
-machines, but will be slightly slower because of additional
-byte-swap intrinsics.
-
-On purpose, the format leaves a lot of details about where exactly
-things live in memory undefined, e.g. fields in a table can have any
-order, and objects to some extent can be stored in many orders. This is
-because the format doesn't need this information to be efficient, and it
-leaves room for optimization and extension (for example, fields can be
-packed in a way that is most compact). Instead, the format is defined in
-terms of offsets and adjacency only. This may mean two different
-implementations may produce different binaries given the same input
-values, and this is perfectly valid.
-
-### Format identification
-
-The format also doesn't contain information for format identification
-and versioning, which is also by design. FlatBuffers is a statically typed
-system, meaning the user of a buffer needs to know what kind of buffer
-it is. FlatBuffers can of course be wrapped inside other containers
-where needed, or you can use its union feature to dynamically identify
-multiple possible sub-objects stored. Additionally, it can be used
-together with the schema parser if full reflective capabilities are
-desired.
-
-Versioning is something that is intrinsically part of the format (the
-optionality / extensibility of fields), so the format itself does not
-need a version number (it's a meta-format, in a sense). We're hoping
-that this format can accommodate all data needed. If format breaking
-changes are ever necessary, it would become a new kind of format rather
-than just a variation.
-
-### Offsets
-
-The most important and generic offset type (see `flatbuffers.h`) is
-`uoffset_t`, which is currently always a `uint32_t`, and is used to
-refer to all tables/unions/strings/vectors (these are never stored
-in-line). 32bit is
-intentional, since we want to keep the format binary compatible between
-32 and 64bit systems, and a 64bit offset would bloat the size for almost
-all uses. A version of this format with 64bit (or 16bit) offsets is easy to set
-when needed. Unsigned means they can only point in one direction, which
-typically is forward (towards a higher memory location). Any backwards
-offsets will be explicitly marked as such.
-
-The format starts with an `uoffset_t` to the root object in the buffer.
-
-We have two kinds of objects, structs and tables.
-
-### Structs
-
-These are the simplest, and as mentioned, intended for simple data that
-benefits from being extra efficient and doesn't need versioning /
-extensibility. They are always stored inline in their parent (a struct,
-table, or vector) for maximum compactness. Structs define a consistent
-memory layout where all components are aligned to their size, and
-structs aligned to their largest scalar member. This is done independent
-of the alignment rules of the underlying compiler to guarantee a cross
-platform compatible layout. This layout is then enforced in the generated
-code.
-
-### Tables
-
-Unlike structs, these are not stored in inline in their parent, but are
-referred to by offset.
-
-They start with an `soffset_t` to a vtable. This is a signed version of
-`uoffset_t`, since vtables may be stored anywhere relative to the object.
-This offset is substracted (not added) from the object start to arrive at
-the vtable start. This offset is followed by all the
-fields as aligned scalars (or offsets). Unlike structs, not all fields
-need to be present. There is no set order and layout.
-
-To be able to access fields regardless of these uncertainties, we go
-through a vtable of offsets. Vtables are shared between any objects that
-happen to have the same vtable values.
-
-The elements of a vtable are all of type `voffset_t`, which is
-a `uint16_t`. The first element is the size of the vtable in bytes,
-including the size element. The second one is the size of the object, in bytes
-(including the vtable offset). This size could be used for streaming, to know
-how many bytes to read to be able to access all *inline* fields of the object.
-The remaining elements are the N offsets, where N is the amount of fields
-declared in the schema when the code that constructed this buffer was
-compiled (thus, the size of the table is N + 2).
-
-All accessor functions in the generated code for tables contain the
-offset into this table as a constant. This offset is checked against the
-first field (the number of elements), to protect against newer code
-reading older data. If this offset is out of range, or the vtable entry
-is 0, that means the field is not present in this object, and the
-default value is return. Otherwise, the entry is used as offset to the
-field to be read.
-
-### Strings and Vectors
-
-Strings are simply a vector of bytes, and are always
-null-terminated. Vectors are stored as contiguous aligned scalar
-elements prefixed by a 32bit element count (not including any
-null termination). Neither is stored inline in their parent, but are referred to
-by offset.
-
-### Construction
-
-The current implementation constructs these buffers backwards (starting
-at the highest memory address of the buffer), since
-that significantly reduces the amount of bookkeeping and simplifies the
-construction API.
-
-### Code example
-
-Here's an example of the code that gets generated for the `samples/monster.fbs`.
-What follows is the entire file, broken up by comments:
-
- // automatically generated, do not modify
-
- #include "flatbuffers/flatbuffers.h"
-
- namespace MyGame {
- namespace Sample {
-
-Nested namespace support.
-
- enum {
- Color_Red = 0,
- Color_Green = 1,
- Color_Blue = 2,
- };
-
- inline const char **EnumNamesColor() {
- static const char *names[] = { "Red", "Green", "Blue", nullptr };
- return names;
- }
-
- inline const char *EnumNameColor(int e) { return EnumNamesColor()[e]; }
-
-Enums and convenient reverse lookup.
-
- enum {
- Any_NONE = 0,
- Any_Monster = 1,
- };
-
- inline const char **EnumNamesAny() {
- static const char *names[] = { "NONE", "Monster", nullptr };
- return names;
- }
-
- inline const char *EnumNameAny(int e) { return EnumNamesAny()[e]; }
-
-Unions share a lot with enums.
-
- struct Vec3;
- struct Monster;
-
-Predeclare all data types since circular references between types are allowed
-(circular references between object are not, though).
-
- MANUALLY_ALIGNED_STRUCT(4) Vec3 {
- private:
- float x_;
- float y_;
- float z_;
-
- public:
- Vec3(float x, float y, float z)
- : x_(flatbuffers::EndianScalar(x)), y_(flatbuffers::EndianScalar(y)), z_(flatbuffers::EndianScalar(z)) {}
-
- float x() const { return flatbuffers::EndianScalar(x_); }
- float y() const { return flatbuffers::EndianScalar(y_); }
- float z() const { return flatbuffers::EndianScalar(z_); }
- };
- STRUCT_END(Vec3, 12);
-
-These ugly macros do a couple of things: they turn off any padding the compiler
-might normally do, since we add padding manually (though none in this example),
-and they enforce alignment chosen by FlatBuffers. This ensures the layout of
-this struct will look the same regardless of compiler and platform. Note that
-the fields are private: this is because these store little endian scalars
-regardless of platform (since this is part of the serialized data).
-`EndianScalar` then converts back and forth, which is a no-op on all current
-mobile and desktop platforms, and a single machine instruction on the few
-remaining big endian platforms.
-
- struct Monster : private flatbuffers::Table {
- const Vec3 *pos() const { return GetStruct<const Vec3 *>(4); }
- int16_t mana() const { return GetField<int16_t>(6, 150); }
- int16_t hp() const { return GetField<int16_t>(8, 100); }
- const flatbuffers::String *name() const { return GetPointer<const flatbuffers::String *>(10); }
- const flatbuffers::Vector<uint8_t> *inventory() const { return GetPointer<const flatbuffers::Vector<uint8_t> *>(14); }
- int8_t color() const { return GetField<int8_t>(16, 2); }
- };
-
-Tables are a bit more complicated. A table accessor struct is used to point at
-the serialized data for a table, which always starts with an offset to its
-vtable. It derives from `Table`, which contains the `GetField` helper functions.
-GetField takes a vtable offset, and a default value. It will look in the vtable
-at that offset. If the offset is out of bounds (data from an older version) or
-the vtable entry is 0, the field is not present and the default is returned.
-Otherwise, it uses the entry as an offset into the table to locate the field.
-
- struct MonsterBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_pos(const Vec3 *pos) { fbb_.AddStruct(4, pos); }
- void add_mana(int16_t mana) { fbb_.AddElement<int16_t>(6, mana, 150); }
- void add_hp(int16_t hp) { fbb_.AddElement<int16_t>(8, hp, 100); }
- void add_name(flatbuffers::Offset<flatbuffers::String> name) { fbb_.AddOffset(10, name); }
- void add_inventory(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> inventory) { fbb_.AddOffset(14, inventory); }
- void add_color(int8_t color) { fbb_.AddElement<int8_t>(16, color, 2); }
- MonsterBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); }
- flatbuffers::Offset<Monster> Finish() { return flatbuffers::Offset<Monster>(fbb_.EndTable(start_, 7)); }
- };
-
-`MonsterBuilder` is the base helper struct to construct a table using a
-`FlatBufferBuilder`. You can add the fields in any order, and the `Finish`
-call will ensure the correct vtable gets generated.
-
- inline flatbuffers::Offset<Monster> CreateMonster(flatbuffers::FlatBufferBuilder &_fbb,
- const Vec3 *pos, int16_t mana,
- int16_t hp,
- flatbuffers::Offset<flatbuffers::String> name,
- flatbuffers::Offset<flatbuffers::Vector<uint8_t>> inventory,
- int8_t color) {
- MonsterBuilder builder_(_fbb);
- builder_.add_inventory(inventory);
- builder_.add_name(name);
- builder_.add_pos(pos);
- builder_.add_hp(hp);
- builder_.add_mana(mana);
- builder_.add_color(color);
- return builder_.Finish();
- }
-
-`CreateMonster` is a convenience function that calls all functions in
-`MonsterBuilder` above for you. Note that if you pass values which are
-defaults as arguments, it will not actually construct that field, so
-you can probably use this function instead of the builder class in
-almost all cases.
-
- inline const Monster *GetMonster(const void *buf) { return flatbuffers::GetRoot<Monster>(buf); }
-
-This function is only generated for the root table type, to be able to
-start traversing a FlatBuffer from a raw buffer pointer.
-
- }; // namespace MyGame
- }; // namespace Sample
-
-### Encoding example.
-
-Below is a sample encoding for the following JSON corresponding to the above
-schema:
-
- { pos: { x: 1, y: 2, z: 3 }, name: "fred", hp: 50 }
-
-Resulting in this binary buffer:
-
- // Start of the buffer:
- uint32_t 20 // Offset to the root table.
-
- // Start of the vtable. Not shared in this example, but could be:
- uint16_t 16 // Size of table, starting from here.
- uint16_t 22 // Size of object inline data.
- uint16_t 4, 0, 20, 16, 0, 0 // Offsets to fields from start of (root) table, 0 for not present.
-
- // Start of the root table:
- int32_t 16 // Offset to vtable used (default negative direction)
- float 1, 2, 3 // the Vec3 struct, inline.
- uint32_t 8 // Offset to the name string.
- int16_t 50 // hp field.
- int16_t 0 // Padding for alignment.
-
- // Start of name string:
- uint32_t 4 // Length of string.
- int8_t 'f', 'r', 'e', 'd', 0, 0, 0, 0 // Text + 0 termination + padding.
-
-Note that this not the only possible encoding, since the writer has some
-flexibility in which of the children of root object to write first (though in
-this case there's only one string), and what order to write the fields in.
-Different orders may also cause different alignments to happen.
-
-# FlexBuffers
-
-The [schema-less](@ref flexbuffers) version of FlatBuffers have their
-own encoding, detailed here.
-
-It shares many properties mentioned above, in that all data is accessed
-over offsets, all scalars are aligned to their own size, and
-all data is always stored in little endian format.
-
-One difference is that FlexBuffers are built front to back, so children are
-stored before parents, and the root of the data starts at the last byte.
-
-Another difference is that scalar data is stored with a variable number of bits
-(8/16/32/64). The current width is always determined by the *parent*, i.e. if
-the scalar sits in a vector, the vector determines the bit width for all
-elements at once. Selecting the minimum bit width for a particular vector is
-something the encoder does automatically and thus is typically of no concern
-to the user, though being aware of this feature (and not sticking a double in
-the same vector as a bunch of byte sized elements) is helpful for efficiency.
-
-Unlike FlatBuffers there is only one kind of offset, and that is an unsigned
-integer indicating the number of bytes in a negative direction from the address
-of itself (where the offset is stored).
-
-### Vectors
-
-The representation of the vector is at the core of how FlexBuffers works (since
-maps are really just a combination of 2 vectors), so it is worth starting there.
-
-As mentioned, a vector is governed by a single bit width (supplied by its
-parent). This includes the size field. For example, a vector that stores the
-integer values `1, 2, 3` is encoded as follows:
-
- uint8_t 3, 1, 2, 3, 4, 4, 4
-
-The first `3` is the size field, and is placed before the vector (an offset
-from the parent to this vector points to the first element, not the size
-field, so the size field is effectively at index -1).
-Since this is an untyped vector `SL_VECTOR`, it is followed by 3 type
-bytes (one per element of the vector), which are always following the vector,
-and are always a uint8_t even if the vector is made up of bigger scalars.
-
-### Types
-
-A type byte is made up of 2 components (see flexbuffers.h for exact values):
-
-* 2 lower bits representing the bit-width of the child (8, 16, 32, 64).
- This is only used if the child is accessed over an offset, such as a child
- vector. It is ignored for inline types.
-* 6 bits representing the actual type (see flexbuffers.h).
-
-Thus, in this example `4` means 8 bit child (value 0, unused, since the value is
-in-line), type `SL_INT` (value 1).
-
-### Typed Vectors
-
-These are like the Vectors above, but omit the type bytes. The type is instead
-determined by the vector type supplied by the parent. Typed vectors are only
-available for a subset of types for which these savings can be significant,
-namely inline signed/unsigned integers (`TYPE_VECTOR_INT` / `TYPE_VECTOR_UINT`),
-floats (`TYPE_VECTOR_FLOAT`), and keys (`TYPE_VECTOR_KEY`, see below).
-
-Additionally, for scalars, there are fixed length vectors of sizes 2 / 3 / 4
-that don't store the size (`TYPE_VECTOR_INT2` etc.), for an additional savings
-in space when storing common vector or color data.
-
-### Scalars
-
-FlexBuffers supports integers (`TYPE_INT` and `TYPE_UINT`) and floats
-(`TYPE_FLOAT`), available in the bit-widths mentioned above. They can be stored
-both inline and over an offset (`TYPE_INDIRECT_*`).
-
-The offset version is useful to encode costly 64bit (or even 32bit) quantities
-into vectors / maps of smaller sizes, and to share / repeat a value multiple
-times.
-
-### Blobs, Strings and Keys.
-
-A blob (`TYPE_BLOB`) is encoded similar to a vector, with one difference: the
-elements are always `uint8_t`. The parent bit width only determines the width of
-the size field, allowing blobs to be large without the elements being large.
-
-Strings (`TYPE_STRING`) are similar to blobs, except they have an additional 0
-termination byte for convenience, and they MUST be UTF-8 encoded (since an
-accessor in a language that does not support pointers to UTF-8 data may have to
-convert them to a native string type).
-
-A "Key" (`TYPE_KEY`) is similar to a string, but doesn't store the size
-field. They're so named because they are used with maps, which don't care
-for the size, and can thus be even more compact. Unlike strings, keys cannot
-contain bytes of value 0 as part of their data (size can only be determined by
-`strlen`), so while you can use them outside the context of maps if you so
-desire, you're usually better off with strings.
-
-### Maps
-
-A map (`TYPE_MAP`) is like an (untyped) vector, but with 2 prefixes before the
-size field:
-
-| index | field |
-| ----: | :----------------------------------------------------------- |
-| -3 | An offset to the keys vector (may be shared between tables). |
-| -2 | Byte width of the keys vector. |
-| -1 | Size (from here on it is compatible with `TYPE_VECTOR`) |
-| 0 | Elements. |
-| Size | Types. |
-
-Since a map is otherwise the same as a vector, it can be iterated like
-a vector (which is probably faster than lookup by key).
-
-The keys vector is a typed vector of keys. Both the keys and corresponding
-values *have* to be stored in sorted order (as determined by `strcmp`), such
-that lookups can be made using binary search.
-
-The reason the key vector is a seperate structure from the value vector is
-such that it can be shared between multiple value vectors, and also to
-allow it to be treated as its own indivual vector in code.
-
-An example map { foo: 13, bar: 14 } would be encoded as:
-
- 0 : uint8_t 'f', 'o', 'o', 0
- 4 : uint8_t 'b', 'a', 'r', 0
- 8 : uint8_t 2 // key vector of size 2
- // key vector offset points here
- 9 : uint8_t 9, 6 // offsets to foo_key and bar_key
- 11: uint8_t 3, 1 // offset to key vector, and its byte width
- 13: uint8_t 2 // value vector of size
- // value vector offset points here
- 14: uint8_t 13, 14 // values
- 16: uint8_t 4, 4 // types
-
-### The root
-
-As mentioned, the root starts at the end of the buffer.
-The last uint8_t is the width in bytes of the root (normally the parent
-determines the width, but the root has no parent). The uint8_t before this is
-the type of the root, and the bytes before that are the root value (of the
-number of bytes specified by the last byte).
-
-So for example, the integer value `13` as root would be:
-
- uint8_t 13, 4, 1 // Value, type, root byte width.
-
-
-<br>
diff --git a/third_party/flatbuffers/docs/source/JavaCsharpUsage.md b/third_party/flatbuffers/docs/source/JavaCsharpUsage.md
deleted file mode 100755
index cc58f85..0000000
--- a/third_party/flatbuffers/docs/source/JavaCsharpUsage.md
+++ /dev/null
@@ -1,171 +0,0 @@
-Use in Java/C# {#flatbuffers_guide_use_java_c-sharp}
-==============
-
-## Before you get started
-
-Before diving into the FlatBuffers usage in Java or C#, it should be noted that
-the [Tutorial](@ref flatbuffers_guide_tutorial) page has a complete guide to
-general FlatBuffers usage in all of the supported languages (including both Java
-and C#). This page is designed to cover the nuances of FlatBuffers usage,
-specific to Java and C#.
-
-You should also have read the [Building](@ref flatbuffers_guide_building)
-documentation to build `flatc` and should be familiar with
-[Using the schema compiler](@ref flatbuffers_guide_using_schema_compiler) and
-[Writing a schema](@ref flatbuffers_guide_writing_schema).
-
-## FlatBuffers Java and C-sharp code location
-
-#### Java
-
-The code for the FlatBuffers Java library can be found at
-`flatbuffers/java/com/google/flatbuffers`. You can browse the library on the
-[FlatBuffers GitHub page](https://github.com/google/flatbuffers/tree/master/
-java/com/google/flatbuffers).
-
-#### C-sharp
-
-The code for the FlatBuffers C# library can be found at
-`flatbuffers/net/FlatBuffers`. You can browse the library on the
-[FlatBuffers GitHub page](https://github.com/google/flatbuffers/tree/master/net/
-FlatBuffers).
-
-## Testing the FlatBuffers Java and C-sharp libraries
-
-The code to test the libraries can be found at `flatbuffers/tests`.
-
-#### Java
-
-The test code for Java is located in [JavaTest.java](https://github.com/google
-/flatbuffers/blob/master/tests/JavaTest.java).
-
-To run the tests, use either [JavaTest.sh](https://github.com/google/
-flatbuffers/blob/master/tests/JavaTest.sh) or [JavaTest.bat](https://github.com/
-google/flatbuffers/blob/master/tests/JavaTest.bat), depending on your operating
-system.
-
-*Note: These scripts require that [Java](https://www.oracle.com/java/index.html)
-is installed.*
-
-#### C-sharp
-
-The test code for C# is located in the [FlatBuffers.Test](https://github.com/
-google/flatbuffers/tree/master/tests/FlatBuffers.Test) subfolder. To run the
-tests, open `FlatBuffers.Test.csproj` in [Visual Studio](
-https://www.visualstudio.com), and compile/run the project.
-
-Optionally, you can run this using [Mono](http://www.mono-project.com/) instead.
-Once you have installed `Mono`, you can run the tests from the command line
-by running the following commands from inside the `FlatBuffers.Test` folder:
-
-~~~{.sh}
- mcs *.cs ../MyGame/Example/*.cs ../../net/FlatBuffers/*.cs
- mono Assert.exe
-~~~
-
-## Using the FlatBuffers Java (and C#) library
-
-*Note: See [Tutorial](@ref flatbuffers_guide_tutorial) for a more in-depth
-example of how to use FlatBuffers in Java or C#.*
-
-FlatBuffers supports reading and writing binary FlatBuffers in Java and C#.
-
-To use FlatBuffers in your own code, first generate Java classes from your
-schema with the `--java` option to `flatc`. (Or for C# with `--csharp`).
-Then you can include both FlatBuffers and the generated code to read
-or write a FlatBuffer.
-
-For example, here is how you would read a FlatBuffer binary file in Java:
-First, import the library and generated code. Then, you read a FlatBuffer binary
-file into a `byte[]`. You then turn the `byte[]` into a `ByteBuffer`, which you
-pass to the `getRootAsMyRootType` function:
-
-*Note: The code here is written from the perspective of Java. Code for both
-languages is both generated and used in nearly the exact same way, with only
-minor differences. These differences are
-[explained in a section below](#differences_in_c-sharp).*
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.java}
- import MyGame.Example.*;
- import com.google.flatbuffers.FlatBufferBuilder;
-
- // This snippet ignores exceptions for brevity.
- File file = new File("monsterdata_test.mon");
- RandomAccessFile f = new RandomAccessFile(file, "r");
- byte[] data = new byte[(int)f.length()];
- f.readFully(data);
- f.close();
-
- ByteBuffer bb = ByteBuffer.wrap(data);
- Monster monster = Monster.getRootAsMonster(bb);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Now you can access the data from the `Monster monster`:
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.java}
- short hp = monster.hp();
- Vec3 pos = monster.pos();
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-<a name="differences_in_c-sharp">
-#### Differences in C-sharp
-</a>
-
-C# code works almost identically to Java, with only a few minor differences.
-You can see an example of C# code in
-`tests/FlatBuffers.Test/FlatBuffersExampleTests.cs` or
-`samples/SampleBinary.cs`.
-
-First of all, naming follows standard C# style with `PascalCasing` identifiers,
-e.g. `GetRootAsMyRootType`. Also, values (except vectors and unions) are
-available as properties instead of parameterless accessor methods as in Java.
-The performance-enhancing methods to which you can pass an already created
-object are prefixed with `Get`, e.g.:
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cs}
- // property
- var pos = monster.Pos;
-
- // method filling a preconstructed object
- var preconstructedPos = new Vec3();
- monster.GetPos(preconstructedPos);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-## Storing dictionaries in a FlatBuffer
-
-FlatBuffers doesn't support dictionaries natively, but there is support to
-emulate their behavior with vectors and binary search, which means you
-can have fast lookups directly from a FlatBuffer without having to unpack
-your data into a `Dictionary` or similar.
-
-To use it:
-- Designate one of the fields in a table as they "key" field. You do this
- by setting the `key` attribute on this field, e.g.
- `name:string (key)`.
- You may only have one key field, and it must be of string or scalar type.
-- Write out tables of this type as usual, collect their offsets in an
- array.
-- Instead of calling standard generated method,
- e.g.: `Monster.createTestarrayoftablesVector`,
- call `CreateMySortedVectorOfTables` in C# or
- `createSortedVectorOfTables` (from the `FlatBufferBuilder` object) in Java,
- which will first sort all offsets such that the tables they refer to
- are sorted by the key field, then serialize it.
-- Now when you're accessing the FlatBuffer, you can use `LookupByKey`
- to access elements of the vector, e.g.:
- `Monster.lookupByKey(tablesVectorOffset, "Frodo", dataBuffer)`,
- which returns an object of the corresponding table type,
- or `null` if not found.
- `LookupByKey` performs a binary search, so should have a similar speed to
- `Dictionary`, though may be faster because of better caching. `LookupByKey`
- only works if the vector has been sorted, it will likely not find elements
- if it hasn't been sorted.
-
-## Text parsing
-
-There currently is no support for parsing text (Schema's and JSON) directly
-from Java or C#, though you could use the C++ parser through native call
-interfaces available to each language. Please see the
-C++ documentation for more on text parsing.
-
-<br>
diff --git a/third_party/flatbuffers/docs/source/JavaScriptUsage.md b/third_party/flatbuffers/docs/source/JavaScriptUsage.md
deleted file mode 100755
index c321c95..0000000
--- a/third_party/flatbuffers/docs/source/JavaScriptUsage.md
+++ /dev/null
@@ -1,105 +0,0 @@
-Use in JavaScript {#flatbuffers_guide_use_javascript}
-=================
-
-## Before you get started
-
-Before diving into the FlatBuffers usage in JavaScript, it should be noted that
-the [Tutorial](@ref flatbuffers_guide_tutorial) page has a complete guide to
-general FlatBuffers usage in all of the supported languages
-(including JavaScript). This page is specifically designed to cover the nuances
-of FlatBuffers usage in JavaScript.
-
-You should also have read the [Building](@ref flatbuffers_guide_building)
-documentation to build `flatc` and should be familiar with
-[Using the schema compiler](@ref flatbuffers_guide_using_schema_compiler) and
-[Writing a schema](@ref flatbuffers_guide_writing_schema).
-
-## FlatBuffers JavaScript library code location
-
-The code for the FlatBuffers JavaScript library can be found at
-`flatbuffers/js`. You can browse the library code on the [FlatBuffers
-GitHub page](https://github.com/google/flatbuffers/tree/master/js).
-
-## Testing the FlatBuffers JavaScript library
-
-The code to test the JavaScript library can be found at `flatbuffers/tests`.
-The test code itself is located in [JavaScriptTest.js](https://github.com/
-google/flatbuffers/blob/master/tests/JavaScriptTest.js).
-
-To run the tests, use the [JavaScriptTest.sh](https://github.com/google/
-flatbuffers/blob/master/tests/JavaScriptTest.sh) shell script.
-
-*Note: The JavaScript test file requires [Node.js](https://nodejs.org/en/).*
-
-## Using the FlatBuffers JavaScript libary
-
-*Note: See [Tutorial](@ref flatbuffers_guide_tutorial) for a more in-depth
-example of how to use FlatBuffers in JavaScript.*
-
-FlatBuffers supports both reading and writing FlatBuffers in JavaScript.
-
-To use FlatBuffers in your own code, first generate JavaScript classes from your
-schema with the `--js` option to `flatc`. Then you can include both FlatBuffers
-and the generated code to read or write a FlatBuffer.
-
-For example, here is how you would read a FlatBuffer binary file in Javascript:
-First, include the library and generated code. Then read the file into an
-`Uint8Array`. Make a `flatbuffers.ByteBuffer` out of the `Uint8Array`, and pass
-the ByteBuffer to the `getRootAsMonster` function.
-
-*Note: Both JavaScript module loaders (e.g. Node.js) and browser-based
-HTML/JavaScript code segments are shown below in the following snippet:*
-
-~~~{.js}
- // Note: These require functions are specific to JavaScript module loaders
- // (namely, Node.js). See below for a browser-based example.
- var fs = require('fs');
-
- var flatbuffers = require('../flatbuffers').flatbuffers;
- var MyGame = require('./monster_generated').MyGame;
-
- var data = new Uint8Array(fs.readFileSync('monster.dat'));
- var buf = new flatbuffers.ByteBuffer(data);
-
- var monster = MyGame.Example.Monster.getRootAsMonster(buf);
-
- //--------------------------------------------------------------------------//
-
- // Note: This code is specific to browser-based HTML/JavaScript. See above
- // for the code using JavaScript module loaders (e.g. Node.js).
- <script src="../js/flatbuffers.js"></script>
- <script src="monster_generated.js"></script>
- <script>
- function readFile() {
- var reader = new FileReader(); // This example uses the HTML5 FileReader.
- var file = document.getElementById(
- 'file_input').files[0]; // "monster.dat" from the HTML <input> field.
-
- reader.onload = function() { // Executes after the file is read.
- var data = new Uint8Array(reader.result);
-
- var buf = new flatbuffers.ByteBuffer(data);
-
- var monster = MyGame.Example.Monster.getRootAsMonster(buf);
- }
-
- reader.readAsArrayBuffer(file);
- }
- </script>
-
- // Open the HTML file in a browser and select "monster.dat" from with the
- // <input> field.
- <input type="file" id="file_input" onchange="readFile();">
-~~~
-
-Now you can access values like this:
-
-~~~{.js}
- var hp = monster.hp();
- var pos = monster.pos();
-~~~
-
-## Text parsing FlatBuffers in JavaScript
-
-There currently is no support for parsing text (Schema's and JSON) directly
-from JavaScript.
diff --git a/third_party/flatbuffers/docs/source/PHPUsage.md b/third_party/flatbuffers/docs/source/PHPUsage.md
deleted file mode 100644
index cdff449..0000000
--- a/third_party/flatbuffers/docs/source/PHPUsage.md
+++ /dev/null
@@ -1,89 +0,0 @@
-Use in PHP {#flatbuffers_guide_use_php}
-==========
-
-## Before you get started
-
-Before diving into the FlatBuffers usage in PHP, it should be noted that
-the [Tutorial](@ref flatbuffers_guide_tutorial) page has a complete guide to
-general FlatBuffers usage in all of the supported languages
-(including PHP). This page is specifically designed to cover the nuances of
-FlatBuffers usage in PHP.
-
-You should also have read the [Building](@ref flatbuffers_guide_building)
-documentation to build `flatc` and should be familiar with
-[Using the schema compiler](@ref flatbuffers_guide_using_schema_compiler) and
-[Writing a schema](@ref flatbuffers_guide_writing_schema).
-
-## FlatBuffers PHP library code location
-
-The code for FlatBuffers PHP library can be found at `flatbuffers/php`. You
-can browse the library code on the [FlatBuffers
-GitHub page](https://github.com/google/flatbuffers/tree/master/php).
-
-## Testing the FlatBuffers JavaScript library
-
-The code to test the PHP library can be found at `flatbuffers/tests`.
-The test code itself is located in [phpTest.php](https://github.com/google/
-flatbuffers/blob/master/tests/phpTest.php).
-
-You can run the test with `php phpTest.php` from the command line.
-
-*Note: The PHP test file requires
-[PHP](http://php.net/manual/en/install.php) to be installed.*
-
-## Using theFlatBuffers PHP library
-
-*Note: See [Tutorial](@ref flatbuffers_guide_tutorial) for a more in-depth
-example of how to use FlatBuffers in PHP.*
-
-FlatBuffers supports both reading and writing FlatBuffers in PHP.
-
-To use FlatBuffers in your own code, first generate PHP classes from your schema
-with the `--php` option to `flatc`. Then you can include both FlatBuffers and
-the generated code to read or write a FlatBuffer.
-
-For example, here is how you would read a FlatBuffer binary file in PHP:
-First, include the library and generated code (using the PSR `autoload`
-function). Then you can read a FlatBuffer binary file, which you
-pass the contents of to the `GetRootAsMonster` function:
-
-~~~{.php}
- // It is recommended that your use PSR autoload when using FlatBuffers in PHP.
- // Here is an example:
- function __autoload($class_name) {
- // The last segment of the class name matches the file name.
- $class = substr($class_name, strrpos($class_name, "\\") + 1);
- $root_dir = join(DIRECTORY_SEPARATOR, array(dirname(dirname(__FILE__)))); // `flatbuffers` root.
-
- // Contains the `*.php` files for the FlatBuffers library and the `flatc` generated files.
- $paths = array(join(DIRECTORY_SEPARATOR, array($root_dir, "php")),
- join(DIRECTORY_SEPARATOR, array($root_dir, "tests", "MyGame", "Example")));
- foreach ($paths as $path) {
- $file = join(DIRECTORY_SEPARATOR, array($path, $class . ".php"));
- if (file_exists($file)) {
- require($file);
- break;
- }
- }
-
- // Read the contents of the FlatBuffer binary file.
- $filename = "monster.dat";
- $handle = fopen($filename, "rb");
- $contents = $fread($handle, filesize($filename));
- fclose($handle);
-
- // Pass the contents to `GetRootAsMonster`.
- $monster = \MyGame\Example\Monster::GetRootAsMonster($contents);
-~~~
-
-Now you can access values like this:
-
-~~~{.php}
- $hp = $monster->GetHp();
- $pos = $monster->GetPos();
-~~~
-
-## Text Parsing
-
-There currently is no support for parsing text (Schema's and JSON) directly
-from PHP.
diff --git a/third_party/flatbuffers/docs/source/PythonUsage.md b/third_party/flatbuffers/docs/source/PythonUsage.md
deleted file mode 100755
index 2a0cdde..0000000
--- a/third_party/flatbuffers/docs/source/PythonUsage.md
+++ /dev/null
@@ -1,73 +0,0 @@
-Use in Python {#flatbuffers_guide_use_python}
-=============
-
-## Before you get started
-
-Before diving into the FlatBuffers usage in Python, it should be noted that the
-[Tutorial](@ref flatbuffers_guide_tutorial) page has a complete guide to general
-FlatBuffers usage in all of the supported languages (including Python). This
-page is designed to cover the nuances of FlatBuffers usage, specific to
-Python.
-
-You should also have read the [Building](@ref flatbuffers_guide_building)
-documentation to build `flatc` and should be familiar with
-[Using the schema compiler](@ref flatbuffers_guide_using_schema_compiler) and
-[Writing a schema](@ref flatbuffers_guide_writing_schema).
-
-## FlatBuffers Python library code location
-
-The code for the FlatBuffers Python library can be found at
-`flatbuffers/python/flatbuffers`. You can browse the library code on the
-[FlatBuffers GitHub page](https://github.com/google/flatbuffers/tree/master/
-python).
-
-## Testing the FlatBuffers Python library
-
-The code to test the Python library can be found at `flatbuffers/tests`.
-The test code itself is located in [py_test.py](https://github.com/google/
-flatbuffers/blob/master/tests/py_test.py).
-
-To run the tests, use the [PythonTest.sh](https://github.com/google/flatbuffers/
-blob/master/tests/PythonTest.sh) shell script.
-
-*Note: This script requires [python](https://www.python.org/) to be
-installed.*
-
-## Using the FlatBuffers Python library
-
-*Note: See [Tutorial](@ref flatbuffers_guide_tutorial) for a more in-depth
-example of how to use FlatBuffers in Python.*
-
-There is support for both reading and writing FlatBuffers in Python.
-
-To use FlatBuffers in your own code, first generate Python classes from your
-schema with the `--python` option to `flatc`. Then you can include both
-FlatBuffers and the generated code to read or write a FlatBuffer.
-
-For example, here is how you would read a FlatBuffer binary file in Python:
-First, import the library and the generated code. Then read a FlatBuffer binary
-file into a `bytearray`, which you pass to the `GetRootAsMonster` function:
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.py}
- import MyGame.Example as example
- import flatbuffers
-
- buf = open('monster.dat', 'rb').read()
- buf = bytearray(buf)
- monster = example.GetRootAsMonster(buf, 0)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Now you can access values like this:
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.py}
- hp = monster.Hp()
- pos = monster.Pos()
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-## Text Parsing
-
-There currently is no support for parsing text (Schema's and JSON) directly
-from Python, though you could use the C++ parser through SWIG or ctypes. Please
-see the C++ documentation for more on text parsing.
-
-<br>
diff --git a/third_party/flatbuffers/docs/source/README_TO_GENERATE_DOCS.md b/third_party/flatbuffers/docs/source/README_TO_GENERATE_DOCS.md
deleted file mode 100644
index 5df0b6a..0000000
--- a/third_party/flatbuffers/docs/source/README_TO_GENERATE_DOCS.md
+++ /dev/null
@@ -1,32 +0,0 @@
-## Prerequisites
-
-To generate the docs for FlatBuffers from the source files, you
-will first need to install two programs.
-
-1. You will need to install `doxygen`. See
- [Download Doxygen](http://www.stack.nl/~dimitri/doxygen/download.html).
-
-2. You will need to install `doxypypy` to format python comments appropriately.
- Install it from [here](https://github.com/Feneric/doxypypy).
-
-*Note: You will need both `doxygen` and `doxypypy` to be in your
-[PATH](https://en.wikipedia.org/wiki/PATH_(variable)) environment variable.*
-
-After you have both of those files installed and in your path, you need to
-set up the `py_filter` to invoke `doxypypy` from `doxygen`.
-
-Follow the steps
-[here](https://github.com/Feneric/doxypypy#invoking-doxypypy-from-doxygen).
-
-## Generating Docs
-
-Run the following commands to generate the docs:
-
-`cd flatbuffers/docs/source`
-`doxygen`
-
-The output is placed in `flatbuffers/docs/html`.
-
-*Note: The Go API Reference code must be generated ahead of time. For
-instructions on how to regenerated this file, please read the comments
-in `GoApi.md`.*
diff --git a/third_party/flatbuffers/docs/source/Schemas.md b/third_party/flatbuffers/docs/source/Schemas.md
deleted file mode 100755
index c4a9421..0000000
--- a/third_party/flatbuffers/docs/source/Schemas.md
+++ /dev/null
@@ -1,545 +0,0 @@
-Writing a schema {#flatbuffers_guide_writing_schema}
-================
-
-The syntax of the schema language (aka IDL, [Interface Definition Language][])
-should look quite familiar to users of any of the C family of
-languages, and also to users of other IDLs. Let's look at an example
-first:
-
- // example IDL file
-
- namespace MyGame;
-
- attribute "priority";
-
- enum Color : byte { Red = 1, Green, Blue }
-
- union Any { Monster, Weapon, Pickup }
-
- struct Vec3 {
- x:float;
- y:float;
- z:float;
- }
-
- table Monster {
- pos:Vec3;
- mana:short = 150;
- hp:short = 100;
- name:string;
- friendly:bool = false (deprecated, priority: 1);
- inventory:[ubyte];
- color:Color = Blue;
- test:Any;
- }
-
- root_type Monster;
-
-(`Weapon` & `Pickup` not defined as part of this example).
-
-### Tables
-
-Tables are the main way of defining objects in FlatBuffers, and consist
-of a name (here `Monster`) and a list of fields. Each field has a name,
-a type, and optionally a default value (if omitted, it defaults to `0` /
-`NULL`).
-
-Each field is optional: It does not have to appear in the wire
-representation, and you can choose to omit fields for each individual
-object. As a result, you have the flexibility to add fields without fear of
-bloating your data. This design is also FlatBuffer's mechanism for forward
-and backwards compatibility. Note that:
-
-- You can add new fields in the schema ONLY at the end of a table
- definition. Older data will still
- read correctly, and give you the default value when read. Older code
- will simply ignore the new field.
- If you want to have flexibility to use any order for fields in your
- schema, you can manually assign ids (much like Protocol Buffers),
- see the `id` attribute below.
-
-- You cannot delete fields you don't use anymore from the schema,
- but you can simply
- stop writing them into your data for almost the same effect.
- Additionally you can mark them as `deprecated` as in the example
- above, which will prevent the generation of accessors in the
- generated C++, as a way to enforce the field not being used any more.
- (careful: this may break code!).
-
-- You may change field names and table names, if you're ok with your
- code breaking until you've renamed them there too.
-
-See "Schema evolution examples" below for more on this
-topic.
-
-### Structs
-
-Similar to a table, only now none of the fields are optional (so no defaults
-either), and fields may not be added or be deprecated. Structs may only contain
-scalars or other structs. Use this for
-simple objects where you are very sure no changes will ever be made
-(as quite clear in the example `Vec3`). Structs use less memory than
-tables and are even faster to access (they are always stored in-line in their
-parent object, and use no virtual table).
-
-### Types
-
-Built-in scalar types are:
-
-- 8 bit: `byte`, `ubyte`, `bool`
-
-- 16 bit: `short`, `ushort`
-
-- 32 bit: `int`, `uint`, `float`
-
-- 64 bit: `long`, `ulong`, `double`
-
-Built-in non-scalar types:
-
-- Vector of any other type (denoted with `[type]`). Nesting vectors
- is not supported, instead you can wrap the inner vector in a table.
-
-- `string`, which may only hold UTF-8 or 7-bit ASCII. For other text encodings
- or general binary data use vectors (`[byte]` or `[ubyte]`) instead.
-
-- References to other tables or structs, enums or unions (see
- below).
-
-You can't change types of fields once they're used, with the exception
-of same-size data where a `reinterpret_cast` would give you a desirable result,
-e.g. you could change a `uint` to an `int` if no values in current data use the
-high bit yet.
-
-### (Default) Values
-
-Values are a sequence of digits. Values may be optionally followed by a decimal
-point (`.`) and more digits, for float constants, or optionally prefixed by
-a `-`. Floats may also be in scientific notation; optionally ending with an `e`
-or `E`, followed by a `+` or `-` and more digits.
-
-Only scalar values can have defaults, non-scalar (string/vector/table) fields
-default to `NULL` when not present.
-
-You generally do not want to change default values after they're initially
-defined. Fields that have the default value are not actually stored in the
-serialized data (see also Gotchas below) but are generated in code,
-so when you change the default, you'd
-now get a different value than from code generated from an older version of
-the schema. There are situations, however, where this may be
-desirable, especially if you can ensure a simultaneous rebuild of
-all code.
-
-### Enums
-
-Define a sequence of named constants, each with a given value, or
-increasing by one from the previous one. The default first value
-is `0`. As you can see in the enum declaration, you specify the underlying
-integral type of the enum with `:` (in this case `byte`), which then determines
-the type of any fields declared with this enum type.
-
-Typically, enum values should only ever be added, never removed (there is no
-deprecation for enums). This requires code to handle forwards compatibility
-itself, by handling unknown enum values.
-
-### Unions
-
-Unions share a lot of properties with enums, but instead of new names
-for constants, you use names of tables. You can then declare
-a union field, which can hold a reference to any of those types, and
-additionally a hidden field with the suffix `_type` is generated that
-holds the corresponding enum value, allowing you to know which type to
-cast to at runtime.
-
-Unions are a good way to be able to send multiple message types as a FlatBuffer.
-Note that because a union field is really two fields, it must always be
-part of a table, it cannot be the root of a FlatBuffer by itself.
-
-If you have a need to distinguish between different FlatBuffers in a more
-open-ended way, for example for use as files, see the file identification
-feature below.
-
-There is an experimental support only in C++ for a vector of unions
-(and types). In the example IDL file above, use [Any] to add a
-vector of Any to Monster table.
-
-### Namespaces
-
-These will generate the corresponding namespace in C++ for all helper
-code, and packages in Java. You can use `.` to specify nested namespaces /
-packages.
-
-### Includes
-
-You can include other schemas files in your current one, e.g.:
-
- include "mydefinitions.fbs";
-
-This makes it easier to refer to types defined elsewhere. `include`
-automatically ensures each file is parsed just once, even when referred to
-more than once.
-
-When using the `flatc` compiler to generate code for schema definitions,
-only definitions in the current file will be generated, not those from the
-included files (those you still generate separately).
-
-### Root type
-
-This declares what you consider to be the root table (or struct) of the
-serialized data. This is particularly important for parsing JSON data,
-which doesn't include object type information.
-
-### File identification and extension
-
-Typically, a FlatBuffer binary buffer is not self-describing, i.e. it
-needs you to know its schema to parse it correctly. But if you
-want to use a FlatBuffer as a file format, it would be convenient
-to be able to have a "magic number" in there, like most file formats
-have, to be able to do a sanity check to see if you're reading the
-kind of file you're expecting.
-
-Now, you can always prefix a FlatBuffer with your own file header,
-but FlatBuffers has a built-in way to add an identifier to a
-FlatBuffer that takes up minimal space, and keeps the buffer
-compatible with buffers that don't have such an identifier.
-
-You can specify in a schema, similar to `root_type`, that you intend
-for this type of FlatBuffer to be used as a file format:
-
- file_identifier "MYFI";
-
-Identifiers must always be exactly 4 characters long. These 4 characters
-will end up as bytes at offsets 4-7 (inclusive) in the buffer.
-
-For any schema that has such an identifier, `flatc` will automatically
-add the identifier to any binaries it generates (with `-b`),
-and generated calls like `FinishMonsterBuffer` also add the identifier.
-If you have specified an identifier and wish to generate a buffer
-without one, you can always still do so by calling
-`FlatBufferBuilder::Finish` explicitly.
-
-After loading a buffer, you can use a call like
-`MonsterBufferHasIdentifier` to check if the identifier is present.
-
-Note that this is best for open-ended uses such as files. If you simply wanted
-to send one of a set of possible messages over a network for example, you'd
-be better off with a union.
-
-Additionally, by default `flatc` will output binary files as `.bin`.
-This declaration in the schema will change that to whatever you want:
-
- file_extension "ext";
-
-### RPC interface declarations
-
-You can declare RPC calls in a schema, that define a set of functions
-that take a FlatBuffer as an argument (the request) and return a FlatBuffer
-as the response (both of which must be table types):
-
- rpc_service MonsterStorage {
- Store(Monster):StoreResponse;
- Retrieve(MonsterId):Monster;
- }
-
-What code this produces and how it is used depends on language and RPC system
-used, there is preliminary support for GRPC through the `--grpc` code generator,
-see `grpc/tests` for an example.
-
-### Comments & documentation
-
-May be written as in most C-based languages. Additionally, a triple
-comment (`///`) on a line by itself signals that a comment is documentation
-for whatever is declared on the line after it
-(table/struct/field/enum/union/element), and the comment is output
-in the corresponding C++ code. Multiple such lines per item are allowed.
-
-### Attributes
-
-Attributes may be attached to a declaration, behind a field, or after
-the name of a table/struct/enum/union. These may either have a value or
-not. Some attributes like `deprecated` are understood by the compiler;
-user defined ones need to be declared with the attribute declaration
-(like `priority` in the example above), and are
-available to query if you parse the schema at runtime.
-This is useful if you write your own code generators/editors etc., and
-you wish to add additional information specific to your tool (such as a
-help text).
-
-Current understood attributes:
-
-- `id: n` (on a table field): manually set the field identifier to `n`.
- If you use this attribute, you must use it on ALL fields of this table,
- and the numbers must be a contiguous range from 0 onwards.
- Additionally, since a union type effectively adds two fields, its
- id must be that of the second field (the first field is the type
- field and not explicitly declared in the schema).
- For example, if the last field before the union field had id 6,
- the union field should have id 8, and the unions type field will
- implicitly be 7.
- IDs allow the fields to be placed in any order in the schema.
- When a new field is added to the schema it must use the next available ID.
-- `deprecated` (on a field): do not generate accessors for this field
- anymore, code should stop using this data.
-- `required` (on a non-scalar table field): this field must always be set.
- By default, all fields are optional, i.e. may be left out. This is
- desirable, as it helps with forwards/backwards compatibility, and
- flexibility of data structures. It is also a burden on the reading code,
- since for non-scalar fields it requires you to check against NULL and
- take appropriate action. By specifying this field, you force code that
- constructs FlatBuffers to ensure this field is initialized, so the reading
- code may access it directly, without checking for NULL. If the constructing
- code does not initialize this field, they will get an assert, and also
- the verifier will fail on buffers that have missing required fields.
-- `force_align: size` (on a struct): force the alignment of this struct
- to be something higher than what it is naturally aligned to. Causes
- these structs to be aligned to that amount inside a buffer, IF that
- buffer is allocated with that alignment (which is not necessarily
- the case for buffers accessed directly inside a `FlatBufferBuilder`).
-- `bit_flags` (on an enum): the values of this field indicate bits,
- meaning that any value N specified in the schema will end up
- representing 1<<N, or if you don't specify values at all, you'll get
- the sequence 1, 2, 4, 8, ...
-- `nested_flatbuffer: "table_name"` (on a field): this indicates that the field
- (which must be a vector of ubyte) contains flatbuffer data, for which the
- root type is given by `table_name`. The generated code will then produce
- a convenient accessor for the nested FlatBuffer.
-- `key` (on a field): this field is meant to be used as a key when sorting
- a vector of the type of table it sits in. Can be used for in-place
- binary search.
-- `hash` (on a field). This is an (un)signed 32/64 bit integer field, whose
- value during JSON parsing is allowed to be a string, which will then be
- stored as its hash. The value of attribute is the hashing algorithm to
- use, one of `fnv1_32` `fnv1_64` `fnv1a_32` `fnv1a_64`.
-- `original_order` (on a table): since elements in a table do not need
- to be stored in any particular order, they are often optimized for
- space by sorting them to size. This attribute stops that from happening.
- There should generally not be any reason to use this flag.
-- 'native_*'. Several attributes have been added to support the [C++ object
- Based API](@ref flatbuffers_cpp_object_based_api). All such attributes
- are prefixed with the term "native_".
-
-
-## JSON Parsing
-
-The same parser that parses the schema declarations above is also able
-to parse JSON objects that conform to this schema. So, unlike other JSON
-parsers, this parser is strongly typed, and parses directly into a FlatBuffer
-(see the compiler documentation on how to do this from the command line, or
-the C++ documentation on how to do this at runtime).
-
-Besides needing a schema, there are a few other changes to how it parses
-JSON:
-
-- It accepts field names with and without quotes, like many JSON parsers
- already do. It outputs them without quotes as well, though can be made
- to output them using the `strict_json` flag.
-- If a field has an enum type, the parser will recognize symbolic enum
- values (with or without quotes) instead of numbers, e.g.
- `field: EnumVal`. If a field is of integral type, you can still use
- symbolic names, but values need to be prefixed with their type and
- need to be quoted, e.g. `field: "Enum.EnumVal"`. For enums
- representing flags, you may place multiple inside a string
- separated by spaces to OR them, e.g.
- `field: "EnumVal1 EnumVal2"` or `field: "Enum.EnumVal1 Enum.EnumVal2"`.
-- Similarly, for unions, these need to specified with two fields much like
- you do when serializing from code. E.g. for a field `foo`, you must
- add a field `foo_type: FooOne` right before the `foo` field, where
- `FooOne` would be the table out of the union you want to use.
-- A field that has the value `null` (e.g. `field: null`) is intended to
- have the default value for that field (thus has the same effect as if
- that field wasn't specified at all).
-- It has some built in conversion functions, so you can write for example
- `rad(180)` where ever you'd normally write `3.14159`.
- Currently supports the following functions: `rad`, `deg`, `cos`, `sin`,
- `tan`, `acos`, `asin`, `atan`.
-
-When parsing JSON, it recognizes the following escape codes in strings:
-
-- `\n` - linefeed.
-- `\t` - tab.
-- `\r` - carriage return.
-- `\b` - backspace.
-- `\f` - form feed.
-- `\"` - double quote.
-- `\\` - backslash.
-- `\/` - forward slash.
-- `\uXXXX` - 16-bit unicode code point, converted to the equivalent UTF-8
- representation.
-- `\xXX` - 8-bit binary hexadecimal number XX. This is the only one that is
- not in the JSON spec (see http://json.org/), but is needed to be able to
- encode arbitrary binary in strings to text and back without losing
- information (e.g. the byte 0xFF can't be represented in standard JSON).
-
-It also generates these escape codes back again when generating JSON from a
-binary representation.
-
-## Guidelines
-
-### Efficiency
-
-FlatBuffers is all about efficiency, but to realize that efficiency you
-require an efficient schema. There are usually multiple choices on
-how to represent data that have vastly different size characteristics.
-
-It is very common nowadays to represent any kind of data as dictionaries
-(as in e.g. JSON), because of its flexibility and extensibility. While
-it is possible to emulate this in FlatBuffers (as a vector
-of tables with key and value(s)), this is a bad match for a strongly
-typed system like FlatBuffers, leading to relatively large binaries.
-FlatBuffer tables are more flexible than classes/structs in most systems,
-since having a large number of fields only few of which are actually
-used is still efficient. You should thus try to organize your data
-as much as possible such that you can use tables where you might be
-tempted to use a dictionary.
-
-Similarly, strings as values should only be used when they are
-truely open-ended. If you can, always use an enum instead.
-
-FlatBuffers doesn't have inheritance, so the way to represent a set
-of related data structures is a union. Unions do have a cost however,
-so an alternative to a union is to have a single table that has
-all the fields of all the data structures you are trying to
-represent, if they are relatively similar / share many fields.
-Again, this is efficient because optional fields are cheap.
-
-FlatBuffers supports the full range of integer sizes, so try to pick
-the smallest size needed, rather than defaulting to int/long.
-
-Remember that you can share data (refer to the same string/table
-within a buffer), so factoring out repeating data into its own
-data structure may be worth it.
-
-### Style guide
-
-Identifiers in a schema are meant to translate to many different programming
-languages, so using the style of your "main" language is generally a bad idea.
-
-For this reason, below is a suggested style guide to adhere to, to keep schemas
-consistent for interoperation regardless of the target language.
-
-Where possible, the code generators for specific languages will generate
-identifiers that adhere to the language style, based on the schema identifiers.
-
-- Table, struct, enum and rpc names (types): UpperCamelCase.
-- Table and struct field names: snake_case. This is translated to lowerCamelCase
- automatically for some languages, e.g. Java.
-- Enum values: UpperCamelCase.
-- namespaces: UpperCamelCase.
-
-Formatting (this is less important, but still worth adhering to):
-
-- Opening brace: on the same line as the start of the declaration.
-- Spacing: Indent by 2 spaces. None around `:` for types, on both sides for `=`.
-
-For an example, see the schema at the top of this file.
-
-## Gotchas
-
-### Schemas and version control
-
-FlatBuffers relies on new field declarations being added at the end, and earlier
-declarations to not be removed, but be marked deprecated when needed. We think
-this is an improvement over the manual number assignment that happens in
-Protocol Buffers (and which is still an option using the `id` attribute
-mentioned above).
-
-One place where this is possibly problematic however is source control. If user
-A adds a field, generates new binary data with this new schema, then tries to
-commit both to source control after user B already committed a new field also,
-and just auto-merges the schema, the binary files are now invalid compared to
-the new schema.
-
-The solution of course is that you should not be generating binary data before
-your schema changes have been committed, ensuring consistency with the rest of
-the world. If this is not practical for you, use explicit field ids, which
-should always generate a merge conflict if two people try to allocate the same
-id.
-
-### Schema evolution examples
-
-Some examples to clarify what happens as you change a schema:
-
-If we have the following original schema:
-
- table { a:int; b:int; }
-
-And we extend it:
-
- table { a:int; b:int; c:int; }
-
-This is ok. Code compiled with the old schema reading data generated with the
-new one will simply ignore the presence of the new field. Code compiled with the
-new schema reading old data will get the default value for `c` (which is 0
-in this case, since it is not specified).
-
- table { a:int (deprecated); b:int; }
-
-This is also ok. Code compiled with the old schema reading newer data will now
-always get the default value for `a` since it is not present. Code compiled
-with the new schema now cannot read nor write `a` anymore (any existing code
-that tries to do so will result in compile errors), but can still read
-old data (they will ignore the field).
-
- table { c:int a:int; b:int; }
-
-This is NOT ok, as this makes the schemas incompatible. Old code reading newer
-data will interpret `c` as if it was `a`, and new code reading old data
-accessing `a` will instead receive `b`.
-
- table { c:int (id: 2); a:int (id: 0); b:int (id: 1); }
-
-This is ok. If your intent was to order/group fields in a way that makes sense
-semantically, you can do so using explicit id assignment. Now we are compatible
-with the original schema, and the fields can be ordered in any way, as long as
-we keep the sequence of ids.
-
- table { b:int; }
-
-NOT ok. We can only remove a field by deprecation, regardless of wether we use
-explicit ids or not.
-
- table { a:uint; b:uint; }
-
-This is MAYBE ok, and only in the case where the type change is the same size,
-like here. If old data never contained any negative numbers, this will be
-safe to do.
-
- table { a:int = 1; b:int = 2; }
-
-Generally NOT ok. Any older data written that had 0 values were not written to
-the buffer, and rely on the default value to be recreated. These will now have
-those values appear to `1` and `2` instead. There may be cases in which this
-is ok, but care must be taken.
-
- table { aa:int; bb:int; }
-
-Occasionally ok. You've renamed fields, which will break all code (and JSON
-files!) that use this schema, but as long as the change is obvious, this is not
-incompatible with the actual binary buffers, since those only ever address
-fields by id/offset.
-<br>
-
-### Testing whether a field is present in a table
-
-Most serialization formats (e.g. JSON or Protocol Buffers) make it very
-explicit in the format whether a field is present in an object or not,
-allowing you to use this as "extra" information.
-
-In FlatBuffers, this also holds for everything except scalar values.
-
-FlatBuffers by default will not write fields that are equal to the default
-value (for scalars), sometimes resulting in a significant space savings.
-
-However, this also means testing whether a field is "present" is somewhat
-meaningless, since it does not tell you if the field was actually written by
-calling `add_field` style calls, unless you're only interested in this
-information for non-default values.
-
-Some `FlatBufferBuilder` implementations have an option called `force_defaults`
-that circumvents this behavior, and writes fields even if they are equal to
-the default. You can then use `IsFieldPresent` to query this.
-
-Another option that works in all languages is to wrap a scalar field in a
-struct. This way it will return null if it is not present. The cool thing
-is that structs don't take up any more space than the scalar they represent.
-
- [Interface Definition Language]: https://en.wikipedia.org/wiki/Interface_description_language
diff --git a/third_party/flatbuffers/docs/source/Support.md b/third_party/flatbuffers/docs/source/Support.md
deleted file mode 100755
index 7bc3348..0000000
--- a/third_party/flatbuffers/docs/source/Support.md
+++ /dev/null
@@ -1,44 +0,0 @@
-Platform / Language / Feature support {#flatbuffers_support}
-=====================================
-
-FlatBuffers is actively being worked on, which means that certain platform /
-language / feature combinations may not be available yet.
-
-This page tries to track those issues, to make informed decisions easier.
-In general:
-
- * Languages: language support beyond the ones created by the original
- FlatBuffer authors typically depends on community contributions.
- * Features: C++ was the first language supported, since our original
- target was high performance game development. It thus has the richest
- feature set, and is likely most robust. Other languages are catching up
- however.
- * Platforms: All language implementations are typically portable to most
- platforms, unless where noted otherwise.
-
-NOTE: this table is a start, it needs to be extended.
-
-Feature | C++ | Java | C# | Go | Python | JS | C | PHP | Ruby
------------------------------- | ------ | ------ | ------ | ------ | ------ | --------- | ------ | --- | ----
-Codegen for all basic features | Yes | Yes | Yes | Yes | Yes | Yes | Yes | WiP | WiP
-JSON parsing | Yes | No | No | No | No | No | Yes | No | No
-Simple mutation | Yes | WIP | WIP | No | No | No | No | No | No
-Reflection | Yes | No | No | No | No | No | Basic | No | No
-Buffer verifier | Yes | No | No | No | No | No | Yes | No | No
-Testing: basic | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ? | ?
-Testing: fuzz | Yes | No | No | Yes | Yes | No | No | ? | ?
-Performance: | Superb | Great | Great | Great | Ok | ? | Superb | ? | ?
-Platform: Windows | VS2010 | Yes | Yes | ? | ? | ? | VS2010 | ? | ?
-Platform: Linux | GCC282 | Yes | ? | Yes | Yes | ? | Yes | ? | ?
-Platform: OS X | Xcode4 | ? | ? | ? | Yes | ? | Yes | ? | ?
-Platform: Android | NDK10d | Yes | ? | ? | ? | ? | ? | ? | ?
-Platform: iOS | ? | ? | ? | ? | ? | ? | ? | ? | ?
-Engine: Unity | ? | ? | Yes | ? | ? | ? | ? | ? | ?
-Primary authors (github) | gwvo | gwvo | ev*/js*| rw | rw | evanw/ev* | mik* | ch* | rw
-
- * ev = evolutional
- * js = jonsimantov
- * mik = mikkelfj
- * ch = chobie
-
-<br>
diff --git a/third_party/flatbuffers/docs/source/Tutorial.md b/third_party/flatbuffers/docs/source/Tutorial.md
deleted file mode 100644
index 7d9c6d9..0000000
--- a/third_party/flatbuffers/docs/source/Tutorial.md
+++ /dev/null
@@ -1,1943 +0,0 @@
-Tutorial {#flatbuffers_guide_tutorial}
-========
-
-## Overview
-
-This tutorial provides a basic example of how to work with
-[FlatBuffers](@ref flatbuffers_overview). We will step through a simple example
-application, which shows you how to:
-
- - Write a FlatBuffer `schema` file.
- - Use the `flatc` FlatBuffer compiler.
- - Parse [JSON](http://json.org) files that conform to a schema into
- FlatBuffer binary files.
- - Use the generated files in many of the supported languages (such as C++,
- Java, and more.)
-
-During this example, imagine that you are creating a game where the main
-character, the hero of the story, needs to slay some `orc`s. We will walk
-through each step necessary to create this monster type using FlatBuffers.
-
-Please select your desired language for our quest:
-\htmlonly
-<form>
- <input type="radio" name="language" value="cpp" checked="checked">C++</input>
- <input type="radio" name="language" value="java">Java</input>
- <input type="radio" name="language" value="csharp">C#</input>
- <input type="radio" name="language" value="go">Go</input>
- <input type="radio" name="language" value="python">Python</input>
- <input type="radio" name="language" value="javascript">JavaScript</input>
- <input type="radio" name="language" value="php">PHP</input>
- <input type="radio" name="language" value="c">C</input>
-</form>
-\endhtmlonly
-
-\htmlonly
-<script>
- /**
- * Check if an HTML `class` attribute is in the language-specific format.
- * @param {string} languageClass An HTML `class` attribute in the format
- * 'language-{lang}', where {lang} is a programming language (e.g. 'cpp',
- * 'java', 'go', etc.).
- * @return {boolean} Returns `true` if `languageClass` was in the valid
- * format, prefixed with 'language-'. Otherwise, it returns false.
- */
- function isProgrammingLanguageClassName(languageClass) {
- if (languageClass && languageClass.substring(0, 9) == 'language-' &&
- languageClass.length > 8) {
- return true;
- } else {
- return false;
- }
- }
-
- /**
- * Given a language-specific HTML `class` attribute, extract the language.
- * @param {string} languageClass The string name of an HTML `class` attribute,
- * in the format `language-{lang}`, where {lang} is a programming language
- * (e.g. 'cpp', 'java', 'go', etc.).
- * @return {string} Returns a string containing only the {lang} portion of
- * the class name. If the input was invalid, then it returns `null`.
- */
- function extractProgrammingLanguageFromLanguageClass(languageClass) {
- if (isProgrammingLanguageClassName(languageClass)) {
- return languageClass.substring(9);
- } else {
- return null;
- }
- }
-
- /**
- * Hide every code snippet, except for the language that is selected.
- */
- function displayChosenLanguage() {
- var selection = $('input:checked').val();
-
- var htmlElements = document.getElementsByTagName('*');
- for (var i = 0; i < htmlElements.length; i++) {
- if (isProgrammingLanguageClassName(htmlElements[i].className)) {
- if (extractProgrammingLanguageFromLanguageClass(
- htmlElements[i].className).toLowerCase() != selection) {
- htmlElements[i].style.display = 'none';
- } else {
- htmlElements[i].style.display = 'initial';
- }
- }
- }
- }
-
- $( document ).ready(displayChosenLanguage);
-
- $('input[type=radio]').on("click", displayChosenLanguage);
-</script>
-\endhtmlonly
-
-## Where to Find the Example Code
-
-Samples demonstating the concepts in this example are located in the source code
-package, under the `samples` directory. You can browse the samples on GitHub
-[here](https://github.com/google/flatbuffers/tree/master/samples).
-
-<div class="language-c">
-*Note: The above does not apply to C, instead [look here](https://github.com/dvidelabs/flatcc/tree/master/samples).*
-</div>
-
-For your chosen language, please cross-reference with:
-
-<div class="language-cpp">
-[sample_binary.cpp](https://github.com/google/flatbuffers/blob/master/samples/sample_binary.cpp)
-</div>
-<div class="language-java">
-[SampleBinary.java](https://github.com/google/flatbuffers/blob/master/samples/SampleBinary.java)
-</div>
-<div class="language-csharp">
-[SampleBinary.cs](https://github.com/google/flatbuffers/blob/master/samples/SampleBinary.cs)
-</div>
-<div class="language-go">
-[sample_binary.go](https://github.com/google/flatbuffers/blob/master/samples/sample_binary.go)
-</div>
-<div class="language-python">
-[sample_binary.py](https://github.com/google/flatbuffers/blob/master/samples/sample_binary.py)
-</div>
-<div class="language-javascript">
-[samplebinary.js](https://github.com/google/flatbuffers/blob/master/samples/samplebinary.js)
-</div>
-<div class="language-php">
-[SampleBinary.php](https://github.com/google/flatbuffers/blob/master/samples/SampleBinary.php)
-</div>
-<div class="language-c">
-[monster.c](https://github.com/dvidelabs/flatcc/blob/master/samples/monster/monster.c)
-</div>
-
-## Writing the Monsters' FlatBuffer Schema
-
-To start working with FlatBuffers, you first need to create a `schema` file,
-which defines the format for each data structure you wish to serialize. Here is
-the `schema` that defines the template for our monsters:
-
-~~~
- // Example IDL file for our monster's schema.
-
- namespace MyGame.Sample;
-
- enum Color:byte { Red = 0, Green, Blue = 2 }
-
- union Equipment { Weapon } // Optionally add more tables.
-
- struct Vec3 {
- x:float;
- y:float;
- z:float;
- }
-
- table Monster {
- pos:Vec3; // Struct.
- mana:short = 150;
- hp:short = 100;
- name:string;
- friendly:bool = false (deprecated);
- inventory:[ubyte]; // Vector of scalars.
- color:Color = Blue; // Enum.
- weapons:[Weapon]; // Vector of tables.
- equipped:Equipment; // Union.
- }
-
- table Weapon {
- name:string;
- damage:short;
- }
-
- root_type Monster;
-~~~
-
-As you can see, the syntax for the `schema`
-[Interface Definition Language (IDL)](https://en.wikipedia.org/wiki/Interface_description_language)
-is similar to those of the C family of languages, and other IDL languages. Let's
-examine each part of this `schema` to determine what it does.
-
-The `schema` starts with a `namespace` declaration. This determines the
-corresponding package/namespace for the generated code. In our example, we have
-the `Sample` namespace inside of the `MyGame` namespace.
-
-Next, we have an `enum` definition. In this example, we have an `enum` of type
-`byte`, named `Color`. We have three values in this `enum`: `Red`, `Green`, and
-`Blue`. We specify `Red = 0` and `Blue = 2`, but we do not specify an explicit
-value for `Green`. Since the behavior of an `enum` is to increment if
-unspecified, `Green` will receive the implicit value of `1`.
-
-Following the `enum` is a `union`. The `union` in this example is not very
-useful, as it only contains the one `table` (named `Weapon`). If we had created
-multiple tables that we would want the `union` to be able to reference, we
-could add more elements to the `union Equipment`.
-
-After the `union` comes a `struct Vec3`, which represents a floating point
-vector with `3` dimensions. We use a `struct` here, over a `table`, because
-`struct`s are ideal for data structures that will not change, since they use
-less memory and have faster lookup.
-
-The `Monster` table is the main object in our FlatBuffer. This will be used as
-the template to store our `orc` monster. We specify some default values for
-fields, such as `mana:short = 150`. All unspecified fields will default to `0`
-or `NULL`. Another thing to note is the line
-`friendly:bool = false (deprecated);`. Since you cannot delete fields from a
-`table` (to support backwards compatability), you can set fields as
-`deprecated`, which will prevent the generation of accessors for this field in
-the generated code. Be careful when using `deprecated`, however, as it may break
-legacy code that used this accessor.
-
-The `Weapon` table is a sub-table used within our FlatBuffer. It is
-used twice: once within the `Monster` table and once within the `Equipment`
-enum. For our `Monster`, it is used to populate a `vector of tables` via the
-`weapons` field within our `Monster`. It is also the only table referenced by
-the `Equipment` enum.
-
-The last part of the `schema` is the `root_type`. The root type declares what
-will be the root table for the serialized data. In our case, the root type is
-our `Monster` table.
-
-#### More Information About Schemas
-
-You can find a complete guide to writing `schema` files in the
-[Writing a schema](@ref flatbuffers_guide_writing_schema) section of the
-Programmer's Guide. You can also view the formal
-[Grammar of the schema language](@ref flatbuffers_grammar).
-
-## Compiling the Monsters' Schema
-
-After you have written the FlatBuffers schema, the next step is to compile it.
-
-If you have not already done so, please follow
-[these instructions](@ref flatbuffers_guide_building) to build `flatc`, the
-FlatBuffer compiler.
-
-Once `flatc` is built successfully, compile the schema for your language:
-
-<div class="language-c">
-*Note: If you're working in C, you need to use the separate project [FlatCC](https://github.com/dvidelabs/flatcc) which contains a schema compiler and runtime library in C for C.*
-<br>
-See [flatcc build instructions](https://github.com/dvidelabs/flatcc#building).
-<br>
-Please be aware of the difference between `flatc` and `flatcc` tools.
-<br>
-</div>
-
-<div class="language-cpp">
-~~~{.sh}
- cd flatbuffers/sample
- ./../flatc --cpp samples/monster.fbs
-~~~
-</div>
-<div class="language-java">
-~~~{.sh}
- cd flatbuffers/sample
- ./../flatc --java samples/monster.fbs
-~~~
-</div>
-<div class="language-csharp">
-~~~{.sh}
- cd flatbuffers/sample
- ./../flatc --csharp samples/monster.fbs
-~~~
-</div>
-<div class="language-go">
-~~~{.sh}
- cd flatbuffers/sample
- ./../flatc --go samples/monster.fbs
-~~~
-</div>
-<div class="language-python">
-~~~{.sh}
- cd flatbuffers/sample
- ./../flatc --python samples/monster.fbs
-~~~
-</div>
-<div class="language-javascript">
-~~~{.sh}
- cd flatbuffers/sample
- ./../flatc --javascript samples/monster.fbs
-~~~
-</div>
-<div class="language-php">
-~~~{.sh}
- cd flatbuffers/sample
- ./../flatc --php samples/monster.fbs
-~~~
-</div>
-<div class="language-c">
-~~~{.sh}
- cd flatcc
- mkdir -p build/tmp/samples/monster
- bin/flatcc -a -o build/tmp/samples/monster samples/monster/monster.fbs
- # or just
- flatcc/samples/monster/build.sh
-~~~
-</div>
-
-For a more complete guide to using the `flatc` compiler, please read the
-[Using the schema compiler](@ref flatbuffers_guide_using_schema_compiler)
-section of the Programmer's Guide.
-
-## Reading and Writing Monster FlatBuffers
-
-Now that we have compiled the schema for our programming language, we can
-start creating some monsters and serializing/deserializing them from
-FlatBuffers.
-
-#### Creating and Writing Orc FlatBuffers
-
-The first step is to import/include the library, generated files, etc.
-
-<div class="language-cpp">
-~~~{.cpp}
- #include "monster_generate.h" // This was generated by `flatc`.
-
- using namespace MyGame::Sample; // Specified in the schema.
-~~~
-</div>
-<div class="language-java">
-~~~{.java}
- import MyGame.Sample.*; //The `flatc` generated files. (Monster, Vec3, etc.)
-
- import com.google.flatbuffers.FlatBufferBuilder;
-~~~
-</div>
-<div class="language-csharp">
-~~~{.cs}
- using FlatBuffers;
- using MyGame.Sample; // The `flatc` generated files. (Monster, Vec3, etc.)
-~~~
-</div>
-<div class="language-go">
-~~~{.go}
- import (
- flatbuffers "github.com/google/flatbuffers/go"
- sample "MyGame/Sample"
- )
-~~~
-</div>
-<div class="language-python">
-~~~{.py}
- import flatbuffers
-
- # Generated by `flatc`.
- import MyGame.Sample.Color
- import MyGame.Sample.Equipment
- import MyGame.Sample.Monster
- import MyGame.Sample.Vec3
- import MyGame.Sample.Weapon
-~~~
-</div>
-<div class="language-javascript">
-~~~{.js}
- // The following code is for JavaScript module loaders (e.g. Node.js). See
- // below for a browser-based HTML/JavaScript example of including the library.
- var flatbuffers = require('/js/flatbuffers').flatbuffers;
- var MyGame = require('./monster_generated').MyGame; // Generated by `flatc`.
-
- //--------------------------------------------------------------------------//
-
- // The following code is for browser-based HTML/JavaScript. Use the above code
- // for JavaScript module loaders (e.g. Node.js).
- <script src="../js/flatbuffers.js"></script>
- <script src="monster_generated.js"></script> // Generated by `flatc`.
-~~~
-</div>
-<div class="language-php">
-~~~{.php}
- // It is recommended that your use PSR autoload when using FlatBuffers in PHP.
- // Here is an example from `SampleBinary.php`:
- function __autoload($class_name) {
- // The last segment of the class name matches the file name.
- $class = substr($class_name, strrpos($class_name, "\\") + 1);
- $root_dir = join(DIRECTORY_SEPARATOR, array(dirname(dirname(__FILE__)))); // `flatbuffers` root.
-
- // Contains the `*.php` files for the FlatBuffers library and the `flatc` generated files.
- $paths = array(join(DIRECTORY_SEPARATOR, array($root_dir, "php")),
- join(DIRECTORY_SEPARATOR, array($root_dir, "samples", "MyGame", "Sample")));
- foreach ($paths as $path) {
- $file = join(DIRECTORY_SEPARATOR, array($path, $class . ".php"));
- if (file_exists($file)) {
- require($file);
- break;
- }
- }
- }
-~~~
-</div>
-<div class="language-c">
-~~~{.c}
- #include "monster_builder.h" // Generated by `flatcc`.
-
- // Convenient namespace macro to manage long namespace prefix.
- #undef ns
- #define ns(x) FLATBUFFERS_WRAP_NAMESPACE(MyGame_Sample, x) // Specified in the schema.
-
- // A helper to simplify creating vectors from C-arrays.
- #define c_vec_len(V) (sizeof(V)/sizeof((V)[0]))
-~~~
-</div>
-
-Now we are ready to start building some buffers. In order to start, we need
-to create an instance of the `FlatBufferBuilder`, which will contain the buffer
-as it grows. You can pass an initial size of the buffer (here 1024 bytes),
-which will grow automatically if needed:
-
-<div class="language-cpp">
-~~~{.cpp}
- // Create a `FlatBufferBuilder`, which will be used to create our
- // monsters' FlatBuffers.
- flatbuffers::FlatBufferBuilder builder(1024);
-~~~
-</div>
-<div class="language-java">
-~~~{.java}
- // Create a `FlatBufferBuilder`, which will be used to create our
- // monsters' FlatBuffers.
- FlatBufferBuilder builder = new FlatBufferBuilder(1024);
-~~~
-</div>
-<div class="language-csharp">
-~~~{.cs}
- // Create a `FlatBufferBuilder`, which will be used to create our
- // monsters' FlatBuffers.
- var builder = new FlatBufferBuilder(1024);
-~~~
-</div>
-<div class="language-go">
-~~~{.go}
- // Create a `FlatBufferBuilder`, which will be used to create our
- // monsters' FlatBuffers.
- builder := flatbuffers.NewBuilder(1024)
-~~~
-</div>
-<div class="language-python">
-~~~{.py}
- # Create a `FlatBufferBuilder`, which will be used to create our
- # monsters' FlatBuffers.
- builder = flatbuffers.Builder(1024)
-~~~
-</div>
-<div class="language-javascript">
-~~~{.js}
- // Create a `flatbuffer.Builder`, which will be used to create our
- // monsters' FlatBuffers.
- var builder = new flatbuffers.Builder(1024);
-~~~
-</div>
-<div class="language-php">
-~~~{.php}
- // Create a `FlatBufferBuilder`, which will be used to create our
- // monsters' FlatBuffers.
- $builder = new Google\FlatBuffers\FlatbufferBuilder(1024);
-~~~
-</div>
-<div class="language-c">
-~~~{.c}
- flatcc_builder_t builder, *B;
- B = &builder;
- // Initialize the builder object.
- flatcc_builder_init(B);
-~~~
-</div>
-
-After creating the `builder`, we can start serializing our data. Before we make
-our `orc` Monster, lets create some `Weapon`s: a `Sword` and an `Axe`.
-
-<div class="language-cpp">
-~~~{.cpp}
- auto weapon_one_name = builder.CreateString("Sword");
- short weapon_one_damage = 3;
-
- auto weapon_two_name = builder.CreateString("Axe");
- short weapon_two_damage = 5;
-
- // Use the `CreateWeapon` shortcut to create Weapons with all the fields set.
- auto sword = CreateWeapon(builder, weapon_one_name, weapon_one_damage);
- auto axe = CreateWeapon(builder, weapon_two_name, weapon_two_damage);
-~~~
-</div>
-<div class="language-java">
-~~~{.java}
- int weaponOneName = builder.createString("Sword")
- short weaponOneDamage = 3;
-
- int weaponTwoName = builder.createString("Axe");
- short weaponTwoDamage = 5;
-
- // Use the `createWeapon()` helper function to create the weapons, since we set every field.
- int sword = Weapon.createWeapon(builder, weaponOneName, weaponOneDamage);
- int axe = Weapon.createWeapon(builder, weaponTwoName, weaponTwoDamage);
-~~~
-</div>
-<div class="language-csharp">
-~~~{.cs}
- var weaponOneName = builder.CreateString("Sword");
- var weaponOneDamage = 3;
-
- var weaponTwoName = builder.CreateString("Axe");
- var weaponTwoDamage = 5;
-
- // Use the `CreateWeapon()` helper function to create the weapons, since we set every field.
- var sword = Weapon.CreateWeapon(builder, weaponOneName, (short)weaponOneDamage);
- var axe = Weapon.CreateWeapon(builder, weaponTwoName, (short)weaponTwoDamage);
-~~~
-</div>
-<div class="language-go">
-~~~{.go}
- weaponOne := builder.CreateString("Sword")
- weaponTwo := builder.CreateString("Axe")
-
- // Create the first `Weapon` ("Sword").
- sample.WeaponStart(builder)
- sample.Weapon.AddName(builder, weaponOne)
- sample.Weapon.AddDamage(builder, 3)
- sword := sample.WeaponEnd(builder)
-
- // Create the second `Weapon` ("Axe").
- sample.WeaponStart(builder)
- sample.Weapon.AddName(builder, weaponTwo)
- sample.Weapon.AddDamage(builder, 5)
- axe := sample.WeaponEnd(builder)
-~~~
-</div>
-<div class="language-python">
-~~~{.py}
- weapon_one = builder.CreateString('Sword')
- weapon_two = builder.CreateString('Axe')
-
- # Create the first `Weapon` ('Sword').
- MyGame.Sample.Weapon.WeaponStart(builder)
- MyGame.Sample.Weapon.WeaponAddName(builder, weapon_one)
- MyGame.Sample.Weapon.WeaponAddDamage(builder, 3)
- sword = MyGame.Sample.Weapon.WeaponEnd(builder)
-
- # Create the second `Weapon` ('Axe').
- MyGame.Sample.Weapon.WeaponStart(builder)
- MyGame.Sample.Weapon.WeaponAddName(builder, weapon_two)
- MyGame.Sample.Weapon.WeaponAddDamage(builder, 5)
- axe = MyGame.Sample.Weapon.WeaponEnd(builder)
-~~~
-</div>
-<div class="language-javascript">
-~~~{.js}
- var weaponOne = builder.createString('Sword');
- var weaponTwo = builder.createString('Axe');
-
- // Create the first `Weapon` ('Sword').
- MyGame.Sample.Weapon.startWeapon(builder);
- MyGame.Sample.Weapon.addName(builder, weaponOne);
- MyGame.Sample.Weapon.addDamage(builder, 3);
- var sword = MyGame.Sample.Weapon.endWeapon(builder);
-
- // Create the second `Weapon` ('Axe').
- MyGame.Sample.Weapon.startWeapon(builder);
- MyGame.Sample.Weapon.addName(builder, weaponTwo);
- MyGame.Sample.Weapon.addDamage(builder, 5);
- var axe = MyGame.Sample.Weapon.endWeapon(builder);
-~~~
-</div>
-<div class="language-php">
-~~~{.php}
- // Create the `Weapon`s using the `createWeapon()` helper function.
- $weapon_one_name = $builder->createString("Sword");
- $sword = \MyGame\Sample\Weapon::CreateWeapon($builder, $weapon_one_name, 3);
-
- $weapon_two_name = $builder->createString("Axe");
- $axe = \MyGame\Sample\Weapon::CreateWeapon($builder, $weapon_two_name, 5);
-
- // Create an array from the two `Weapon`s and pass it to the
- // `CreateWeaponsVector()` method to create a FlatBuffer vector.
- $weaps = array($sword, $axe);
- $weapons = \MyGame\Sample\Monster::CreateWeaponsVector($builder, $weaps);
-~~~
-</div>
-<div class="language-c">
-~~~{.c}
- ns(Weapon_ref_t) weapon_one_name = flatbuffers_string_create_str(B, "Sword");
- uint16_t weapon_one_damage = 3;
-
- ns(Weapon_ref_t) weapon_two_name = flatbuffers_string_create_str(B, "Axe");
- uint16_t weapon_two_damage = 5;
-
- ns(Weapon_ref_t) sword = ns(Weapon_create(B, weapon_one_name, weapon_one_damage));
- ns(Weapon_ref_t) axe = ns(Weapon_create(B, weapon_two_name, weapon_two_damage));
-~~~
-</div>
-
-Now let's create our monster, the `orc`. For this `orc`, lets make him
-`red` with rage, positioned at `(1.0, 2.0, 3.0)`, and give him
-a large pool of hit points with `300`. We can give him a vector of weapons
-to choose from (our `Sword` and `Axe` from earlier). In this case, we will
-equip him with the `Axe`, since it is the most powerful of the two. Lastly,
-let's fill his inventory with some potential treasures that can be taken once he
-is defeated.
-
-Before we serialize a monster, we need to first serialize any objects that are
-contained there-in, i.e. we serialize the data tree using depth-first, pre-order
-traversal. This is generally easy to do on any tree structures.
-
-<div class="language-cpp">
-~~~{.cpp}
- // Serialize a name for our monster, called "Orc".
- auto name = builder.CreateString("Orc");
-
- // Create a `vector` representing the inventory of the Orc. Each number
- // could correspond to an item that can be claimed after he is slain.
- unsigned char treasure = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
- auto inventory = builder.CreateVector(treasure, 10);
-~~~
-</div>
-<div class="language-java">
-~~~{.java}
- // Serialize a name for our monster, called "Orc".
- int name = builder.createString("Orc");
-
- // Create a `vector` representing the inventory of the Orc. Each number
- // could correspond to an item that can be claimed after he is slain.
- byte[] treasure = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
- int inv = Monster.createInventoryVector(builder, treasure);
-~~~
-</div>
-<div class="language-csharp">
-~~~{.cs}
- // Serialize a name for our monster, called "Orc".
- var name = builder.CreateString("Orc");
-
- // Create a `vector` representing the inventory of the Orc. Each number
- // could correspond to an item that can be claimed after he is slain.
- // Note: Since we prepend the bytes, this loop iterates in reverse order.
- Monster.StartInventoryVector(builder, 10);
- for (int i = 9; i >= 0; i--)
- {
- builder.AddByte((byte)i);
- }
- var inv = builder.EndVector();
-~~~
-</div>
-<div class="language-go">
-~~~{.go}
- // Serialize a name for our monster, called "Orc".
- name := builder.CreateString("Orc")
-
- // Create a `vector` representing the inventory of the Orc. Each number
- // could correspond to an item that can be claimed after he is slain.
- // Note: Since we prepend the bytes, this loop iterates in reverse.
- sample.MonsterStartInventoryVector(builder, 10)
- for i := 9; i >= 0; i-- {
- builder.PrependByte(byte(i))
- }
- int := builder.EndVector(10)
-~~~
-</div>
-<div class="language-python">
-~~~{.py}
- # Serialize a name for our monster, called "Orc".
- name = builder.CreateString("Orc")
-
- # Create a `vector` representing the inventory of the Orc. Each number
- # could correspond to an item that can be claimed after he is slain.
- # Note: Since we prepend the bytes, this loop iterates in reverse.
- MyGame.Sample.Monster.MonsterStartInventoryVector(builder, 10)
- for i in reversed(range(0, 10)):
- builder.PrependByte(i)
- inv = builder.EndVector(10)
-~~~
-</div>
-<div class="language-javascript">
-~~~{.js}
- // Serialize a name for our monster, called 'Orc'.
- var name = builder.createString('Orc');
-
- // Create a `vector` representing the inventory of the Orc. Each number
- // could correspond to an item that can be claimed after he is slain.
- var treasure = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
- var inv = MyGame.Sample.Monster.createInventoryVector(builder, treasure);
-~~~
-</div>
-<div class="language-php">
-~~~{.php}
- // Serialize a name for our monster, called "Orc".
- $name = $builder->createString("Orc");
-
- // Create a `vector` representing the inventory of the Orc. Each number
- // could correspond to an item that can be claimed after he is slain.
- $treasure = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
- $inv = \MyGame\Sample\Monster::CreateInventoryVector($builder, $treasure);
-~~~
-</div>
-<div class="language-c">
-~~~{.c}
- // Serialize a name for our monster, called "Orc".
- // The _str suffix indicates the source is an ascii-z string.
- flatbuffers_string_ref_t name = flatbuffers_string_create_str(B, "Orc");
-
- // Create a `vector` representing the inventory of the Orc. Each number
- // could correspond to an item that can be claimed after he is slain.
- uint8_t treasure[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
- flatbuffers_uint8_vec_ref_t inventory;
- // `c_vec_len` is the convenience macro we defined earlier.
- inventory = flatbuffers_uint8_vec_create(B, treasure, c_vec_len(treasure));
-~~~
-</div>
-
-We serialized two built-in data types (`string` and `vector`) and captured
-their return values. These values are offsets into the serialized data,
-indicating where they are stored, such that we can refer to them below when
-adding fields to our monster.
-
-*Note: To create a `vector` of nested objects (e.g. `table`s, `string`s, or
-other `vector`s), collect their offsets into a temporary data structure, and
-then create an additional `vector` containing their offsets.*
-
-For example, take a look at the two `Weapon`s that we created earlier (`Sword`
-and `Axe`). These are both FlatBuffer `table`s, whose offsets we now store in
-memory. Therefore we can create a FlatBuffer `vector` to contain these
-offsets.
-
-<div class="language-cpp">
-~~~{.cpp}
- // Place the weapons into a `std::vector`, then convert that into a FlatBuffer `vector`.
- std::vector<flatbuffers::Offset<Weapon>> weapons_vector;
- weapons_vector.push_back(sword);
- weapons_vector.push_back(axe);
- auto weapons = builder.CreateVector(weapons_vector);
-~~~
-</div>
-<div class="language-java">
-~~~{.java}
- // Place the two weapons into an array, and pass it to the `createWeaponsVector()` method to
- // create a FlatBuffer vector.
- int[] weaps = new int[2];
- weaps[0] = sword;
- weaps[1] = axe;
-
- // Pass the `weaps` array into the `createWeaponsVector()` method to create a FlatBuffer vector.
- int weapons = Monster.createWeaponsVector(builder, weaps);
-~~~
-</div>
-<div class="language-csharp">
-~~~{.cs}
- var weaps = new Offset<Weapon>[2];
- weaps[0] = sword;
- weaps[1] = axe;
-
- // Pass the `weaps` array into the `CreateWeaponsVector()` method to create a FlatBuffer vector.
- var weapons = Monster.CreateWeaponsVector(builder, weaps);
-~~~
-</div>
-<div class="language-go">
-~~~{.go}
- // Create a FlatBuffer vector and prepend the weapons.
- // Note: Since we prepend the data, prepend them in reverse order.
- sample.MonsterStartWeaponsVector(builder, 2)
- builder.PrependUOffsetT(axe)
- builder.PrependUOffsetT(sword)
- weapons := builder.EndVector(2)
-~~~
-</div>
-<div class="language-python">
-~~~{.py}
- # Create a FlatBuffer vector and prepend the weapons.
- # Note: Since we prepend the data, prepend them in reverse order.
- MyGame.Sample.Monster.MonsterStartWeaponsVector(builder, 2)
- builder.PrependUOffsetTRelative(axe)
- builder.PrependUOffsetTRelative(sword)
- weapons = builder.EndVector(2)
-~~~
-</div>
-<div class="language-javascript">
-~~~{.js}
- // Create an array from the two `Weapon`s and pass it to the
- // `createWeaponsVector()` method to create a FlatBuffer vector.
- var weaps = [sword, axe];
- var weapons = MyGame.Sample.Monster.createWeaponsVector(builder, weaps);
-~~~
-</div>
-<div class="language-php">
-~~~{.php}
- // Create an array from the two `Weapon`s and pass it to the
- // `CreateWeaponsVector()` method to create a FlatBuffer vector.
- $weaps = array($sword, $axe);
- $weapons = \MyGame\Sample\Monster::CreateWeaponsVector($builder, $weaps);
-~~~
-</div>
-<div class="language-c">
-~~~{.c}
- // We use the internal builder stack to implement a dynamic vector.
- ns(Weapon_vec_start(B));
- ns(Weapon_vec_push(B, sword));
- ns(Weapon_vec_push(B, axe));
- ns(Weapon_vec_ref_t) weapons = ns(Weapon_vec_end(B));
-~~~
-</div>
-
-<div class="language-cpp">
-<br>
-Note there's additional convenience overloads of `CreateVector`, allowing you
-to work with data that's not in a `std::vector`, or allowing you to generate
-elements by calling a lambda. For the common case of `std::vector<std::string>`
-there's also `CreateVectorOfStrings`.
-</div>
-
-We have now serialized the non-scalar components of the orc, so we
-can serialize the monster itself:
-
-<div class="language-cpp">
-~~~{.cpp}
- // Set his hit points to 300 and his mana to 150.
- int hp = 300;
- int mana = 150;
-
- // Finally, create the monster using the `CreateMonster` helper function
- // to set all fields.
- auto orc = CreateMonster(builder, Vec3(1.0f, 2.0f, 3.0f), mana, hp, name,
- inventory, Color_Red, weapons, Equipment_Weapon,
- axe.Union());
-~~~
-</div>
-<div class="language-java">
-~~~{.java}
- // Create our monster using `startMonster()` and `endMonster()`.
- Monster.startMonster(builder);
- Monster.addPos(builder, Vec3.createVec3(builder, 1.0f, 2.0f, 3.0f));
- Monster.addName(builder, name);
- Monster.addColor(builder, Color.Red);
- Monster.addHp(builder, (short)300);
- Monster.addInventory(builder, inv);
- Monster.addWeapons(builder, weapons);
- Monster.addEquippedType(builder, Equipment.Weapon);
- Monster.addEquipped(builder, axe);
- int orc = Monster.endMonster(builder);
-~~~
-</div>
-<div class="language-csharp">
-~~~{.cs}
- // Create our monster using `StartMonster()` and `EndMonster()`.
- Monster.StartMonster(builder);
- Monster.AddPos(builder, Vec3.CreateVec3(builder, 1.0f, 2.0f, 3.0f));
- Monster.AddHp(builder, (short)300);
- Monster.AddName(builder, name);
- Monster.AddInventory(builder, inv);
- Monster.AddColor(builder, Color.Red);
- Monster.AddWeapons(builder, weapons);
- Monster.AddEquippedType(builder, Equipment.Weapon);
- Monster.AddEquipped(builder, axe.Value); // Axe
- var orc = Monster.EndMonster(builder);
-~~~
-</div>
-<div class="language-go">
-~~~{.go}
- // Create our monster using `MonsterStart()` and `MonsterEnd()`.
- sample.MonsterStart(builder)
- sample.MonsterAddPos(builder, sample.CreateVec3(builder, 1.0, 2.0, 3.0))
- sample.MonsterAddHp(builder, 300)
- sample.MonsterAddName(builder, name)
- sample.MonsterAddInventory(builder, inv)
- sample.MonsterAddColor(builder, sample.ColorRed)
- sample.MonsterAddWeapons(builder, weapons)
- sample.MonsterAddEquippedType(builder, sample.EquipmentWeapon)
- sample.MonsterAddEquipped(builder, axe)
- orc := sample.MonsterEnd(builder)
-~~~
-</div>
-<div class="language-python">
-~~~{.py}
- # Create our monster by using `MonsterStart()` and `MonsterEnd()`.
- MyGame.Sample.Monster.MonsterStart(builder)
- MyGame.Sample.Monster.MonsterAddPos(builder,
- MyGame.Sample.Vec3.CreateVec3(builder, 1.0, 2.0, 3.0))
- MyGame.Sample.Monster.MonsterAddHp(builder, 300)
- MyGame.Sample.Monster.MonsterAddName(builder, name)
- MyGame.Sample.Monster.MonsterAddInventory(builder, inv)
- MyGame.Sample.Monster.MonsterAddColor(builder,
- MyGame.Sample.Color.Color().Red)
- MyGame.Sample.Monster.MonsterAddWeapons(builder, weapons)
- MyGame.Sample.Monster.MonsterAddEquippedType(
- builder, MyGame.Sample.Equipment.Equipment().Weapon)
- MyGame.Sample.Monster.MonsterAddEquipped(builder, axe)
- orc = MyGame.Sample.Monster.MonsterEnd(builder)
-~~~
-</div>
-<div class="language-javascript">
-~~~{.js}
- // Create our monster by using `startMonster()` and `endMonster()`.
- MyGame.Sample.Monster.startMonster(builder);
- MyGame.Sample.Monster.addPos(builder,
- MyGame.Sample.Vec3.createVec3(builder, 1.0, 2.0, 3.0));
- MyGame.Sample.Monster.addHp(builder, 300);
- MyGame.Sample.Monster.addColor(builder, MyGame.Sample.Color.Red)
- MyGame.Sample.Monster.addName(builder, name);
- MyGame.Sample.Monster.addInventory(builder, inv);
- MyGame.Sample.Monster.addWeapons(builder, weapons);
- MyGame.Sample.Monster.addEquippedType(builder, MyGame.Sample.Equipment.Weapon);
- MyGame.Sample.Monster.addEquipped(builder, axe);
- var orc = MyGame.Sample.Monster.endMonster(builder);
-~~~
-</div>
-<div class="language-php">
-~~~{.php}
- // Create our monster by using `StartMonster()` and `EndMonster()`.
- \MyGame\Sample\Monster::StartMonster($builder);
- \MyGame\Sample\Monster::AddPos($builder,
- \MyGame\Sample\Vec3::CreateVec3($builder, 1.0, 2.0, 3.0));
- \MyGame\Sample\Monster::AddHp($builder, 300);
- \MyGame\Sample\Monster::AddName($builder, $name);
- \MyGame\Sample\Monster::AddInventory($builder, $inv);
- \MyGame\Sample\Monster::AddColor($builder, \MyGame\Sample\Color::Red);
- \MyGame\Sample\Monster::AddWeapons($builder, $weapons);
- \MyGame\Sample\Monster::AddEquippedType($builder, \MyGame\Sample\Equipment::Weapon);
- \MyGame\Sample\Monster::AddEquipped($builder, $axe);
- $orc = \MyGame\Sample\Monster::EndMonster($builder);
-~~~
-</div>
-<div class="language-c">
-~~~{.c}
- // Set his hit points to 300 and his mana to 150.
- uint16_t hp = 300;
- uint16_t mana = 150;
-
- // Define an equipment union. `create` calls in C has a single
- // argument for unions where C++ has both a type and a data argument.
- ns(Equipment_union_ref_t) equipped = ns(Equipment_as_Weapon(axe));
- ns(Vec3_t) pos = { 1.0f, 2.0f, 3.0f };
- ns(Monster_create_as_root(B, &pos, mana, hp, name, inventory, ns(Color_Red),
- weapons, equipped));
-~~~
-</div>
-
-Note how we create `Vec3` struct in-line in the table. Unlike tables, structs
-are simple combinations of scalars that are always stored inline, just like
-scalars themselves.
-
-**Important**: you should not nest tables or any other objects, which is why
-we created all the strings/vectors/tables that this monster refers to before
-`start`. If you try to create any of them between `start` and `end`, you
-will get an assert/exception/panic depending on your language.
-
-*Note: Since we are passing `150` as the `mana` field, which happens to be the
-default value, the field will not actually be written to the buffer, since the
-default value will be returned on query anyway. This is a nice space savings,
-especially if default values are common in your data. It also means that you do
-not need to be worried of adding a lot of fields that are only used in a small
-number of instances, as it will not bloat the buffer if unused.*
-
-<div class="language-cpp">
-<br>
-If you do not wish to set every field in a `table`, it may be more convenient to
-manually set each field of your monster, instead of calling `CreateMonster()`.
-The following snippet is functionally equivalent to the above code, but provides
-a bit more flexibility.
-<br>
-~~~{.cpp}
- // You can use this code instead of `CreateMonster()`, to create our orc
- // manually.
- MonsterBuilder monster_builder(builder);
- monster_builder.add_pos(&pos);
- monster_builder.add_hp(hp);
- monster_builder.add_name(name);
- monster_builder.add_inventory(inventory);
- monster_builder.add_color(Color_Red);
- monster_builder.add_weapons(weapons);
- monster_builder.add_equipped_type(Equipment_Weapon);
- monster_builder.add_equpped(axe);
- auto orc = monster_builder.Finish();
-~~~
-</div>
-<div class="language-c">
-If you do not wish to set every field in a `table`, it may be more convenient to
-manually set each field of your monster, instead of calling `create_monster_as_root()`.
-The following snippet is functionally equivalent to the above code, but provides
-a bit more flexibility.
-<br>
-~~~{.c}
- // It is important to pair `start_as_root` with `end_as_root`.
- ns(Monster_start_as_root(B));
- ns(Monster_pos_create(B, 1.0f, 2.0f, 3.0f));
- // or alternatively
- //ns(Monster_pos_add(&pos);
-
- ns(Monster_hp_add(B, hp));
- // Notice that `Monser_name_add` adds a string reference unlike the
- // add_str and add_strn variants.
- ns(Monster_name_add(B, name));
- ns(Monster_inventory_add(B, inventory));
- ns(Monster_color_add(B, ns(Color_Red)));
- ns(Monster_weapons_add(B, weapons));
- ns(Monster_equipped_add(B, equipped));
- // Complete the monster object and make it the buffer root object.
- ns(Monster_end_as_root(B));
-~~~
-</div>
-
-Before finishing the serialization, let's take a quick look at FlatBuffer
-`union Equipped`. There are two parts to each FlatBuffer `union`. The first, is
-a hidden field `_type`, that is generated to hold the type of `table` referred
-to by the `union`. This allows you to know which type to cast to at runtime.
-Second, is the `union`'s data.
-
-In our example, the last two things we added to our `Monster` were the
-`Equipped Type` and the `Equipped` union itself.
-
-Here is a repetition these lines, to help highlight them more clearly:
-
-<div class="language-cpp">
- ~~~{.cpp}
- monster_builder.add_equipped_type(Equipment_Weapon); // Union type
- monster_builder.add_equipped(axe); // Union data
- ~~~
-</div>
-<div class="language-java">
- ~~~{.java}
- Monster.addEquippedType(builder, Equipment.Weapon); // Union type
- Monster.addEquipped(axe); // Union data
- ~~~
-</div>
-<div class="language-csharp">
- ~~~{.cs}
- Monster.AddEquippedType(builder, Equipment.Weapon); // Union type
- Monster.AddEquipped(builder, axe.Value); // Union data
- ~~~
-</div>
-<div class="language-go">
- ~~~{.go}
- sample.MonsterAddEquippedType(builder, sample.EquipmentWeapon) // Union type
- sample.MonsterAddEquipped(builder, axe) // Union data
- ~~~
-</div>
-<div class="language-python">
- ~~~{.py}
- MyGame.Sample.Monster.MonsterAddEquippedType( # Union type
- builder, MyGame.Sample.Equipment.Equipment().Weapon)
- MyGame.Sample.Monster.MonsterAddEquipped(builder, axe) # Union data
- ~~~
-</div>
-<div class="language-javascript">
- ~~~{.js}
- MyGame.Sample.Monster.addEquippedType(builder, MyGame.Sample.Equipment.Weapon); // Union type
- MyGame.Sample.Monster.addEquipped(builder, axe); // Union data
- ~~~
-</div>
-<div class="language-php">
- ~~~{.php}
- \MyGame\Sample\Monster::AddEquippedType($builder, \MyGame\Sample\Equipment::Weapon); // Union type
- \MyGame\Sample\Monster::AddEquipped($builder, $axe); // Union data
- ~~~
-</div>
-<div class="language-c">
-~~~{.c}
- // Add union type and data simultanously.
- ns(Monster_equipped_Weapon_add(B, axe));
-~~~
-</div>
-
-After you have created your buffer, you will have the offset to the root of the
-data in the `orc` variable, so you can finish the buffer by calling the
-appropriate `finish` method.
-
-
-<div class="language-cpp">
-~~~{.cpp}
- // Call `Finish()` to instruct the builder that this monster is complete.
- // Note: Regardless of how you created the `orc`, you still need to call
- // `Finish()` on the `FlatBufferBuilder`.
- builder.Finish(orc); // You could also call `FinishMonsterBuffer(builder,
- // orc);`.
-~~~
-</div>
-<div class="language-java">
-~~~{.java}
- // Call `finish()` to instruct the builder that this monster is complete.
- builder.finish(orc); // You could also call `Monster.finishMonsterBuffer(builder, orc);`.
-~~~
-</div>
-<div class="language-csharp">
-~~~{.cs}
- // Call `Finish()` to instruct the builder that this monster is complete.
- builder.Finish(orc.Value); // You could also call `Monster.FinishMonsterBuffer(builder, orc);`.
-~~~
-</div>
-<div class="language-go">
-~~~{.go}
- // Call `Finish()` to instruct the builder that this monster is complete.
- builder.Finish(orc)
-~~~
-</div>
-<div class="language-python">
-~~~{.py}
- # Call `Finish()` to instruct the builder that this monster is complete.
- builder.Finish(orc)
-~~~
-</div>
-<div class="language-javascript">
-~~~{.js}
- // Call `finish()` to instruct the builder that this monster is complete.
- builder.finish(orc); // You could also call `MyGame.Example.Monster.finishMonsterBuffer(builder,
- // orc);`.
-~~~
-</div>
-<div class="language-php">
-~~~{.php}
- // Call `finish()` to instruct the builder that this monster is complete.
- $builder->finish($orc); // You may also call `\MyGame\Sample\Monster::FinishMonsterBuffer(
- // $builder, $orc);`.
-~~~
-</div>
-<div class="language-c">
-~~~{.c}
- // Because we used `Monster_create_as_root`, we do not need a `finish` call in C`.
-~~~
-</div>
-
-The buffer is now ready to be stored somewhere, sent over the network, be
-compressed, or whatever you'd like to do with it. You can access the buffer
-like so:
-
-<div class="language-cpp">
-~~~{.cpp}
- // This must be called after `Finish()`.
- uint8_t *buf = builder.GetBufferPointer();
- int size = builder.GetSize(); // Returns the size of the buffer that
- // `GetBufferPointer()` points to.
-~~~
-</div>
-<div class="language-java">
-~~~{.java}
- // This must be called after `finish()`.
- java.nio.ByteBuffer buf = builder.dataBuffer();
- // The data in this ByteBuffer does NOT start at 0, but at buf.position().
- // The number of bytes is buf.remaining().
-
- // Alternatively this copies the above data out of the ByteBuffer for you:
- bytes[] buf = builder.sizedByteArray();
-~~~
-</div>
-<div class="language-csharp">
-~~~{.cs}
- // This must be called after `Finish()`.
- var buf = builder.DataBuffer; // Of type `FlatBuffers.ByteBuffer`.
- // The data in this ByteBuffer does NOT start at 0, but at buf.Position.
- // The end of the data is marked by buf.Length, so the size is
- // buf.Length - buf.Position.
-
- // Alternatively this copies the above data out of the ByteBuffer for you:
- bytes[] buf = builder.SizedByteArray();
-~~~
-</div>
-<div class="language-go">
-~~~{.go}
- // This must be called after `Finish()`.
- buf := builder.FinishedBytes() // Of type `byte[]`.
-~~~
-</div>
-<div class="language-python">
-~~~{.py}
- # This must be called after `Finish()`.
- buf = builder.Output() // Of type `bytearray`.
-~~~
-</div>
-<div class="language-javascript">
-~~~{.js}
- // This must be called after `finish()`.
- var buf = builder.asUint8Array(); // Of type `Uint8Array`.
-~~~
-</div>
-<div class="language-php">
-~~~{.php}
- // This must be called after `finish()`.
- $buf = $builder->dataBuffer(); // Of type `Google\FlatBuffers\ByteBuffer`
- // The data in this ByteBuffer does NOT start at 0, but at buf->getPosition().
- // The end of the data is marked by buf->capacity(), so the size is
- // buf->capacity() - buf->getPosition().
-~~~
-</div>
-<div class="language-c">
-~~~{.c}
- uint8_t *buf;
- size_t size;
-
- // Allocate and extract a readable buffer from internal builder heap.
- // The returned buffer must be deallocated using `free`.
- // NOTE: Finalizing the buffer does NOT change the builder, it
- // just creates a snapshot of the builder content.
- buf = flatcc_builder_finalize_buffer(B, &size);
- // use buf
- free(buf);
-
- // Optionally reset builder to reuse builder without deallocating
- // internal stack and heap.
- flatcc_builder_reset(B);
- // build next buffer.
- // ...
-
- // Cleanup.
- flatcc_builder_clear(B);
-~~~
-</div>
-
-Now you can write the bytes to a file, send them over the network..
-**Make sure your file mode (or tranfer protocol) is set to BINARY, not text.**
-If you transfer a FlatBuffer in text mode, the buffer will be corrupted,
-which will lead to hard to find problems when you read the buffer.
-
-#### Reading Orc FlatBuffers
-
-Now that we have successfully created an `Orc` FlatBuffer, the monster data can
-be saved, sent over a network, etc. Let's now adventure into the inverse, and
-deserialize a FlatBuffer.
-
-This section requires the same import/include, namespace, etc. requirements as
-before:
-
-<div class="language-cpp">
-~~~{.cpp}
- #include "monster_generate.h" // This was generated by `flatc`.
-
- using namespace MyGame::Sample; // Specified in the schema.
-~~~
-</div>
-<div class="language-java">
-~~~{.java}
- import MyGame.Sample.*; //The `flatc` generated files. (Monster, Vec3, etc.)
-
- import com.google.flatbuffers.FlatBufferBuilder;
-~~~
-</div>
-<div class="language-csharp">
-~~~{.cs}
- using FlatBuffers;
- using MyGame.Sample; // The `flatc` generated files. (Monster, Vec3, etc.)
-~~~
-</div>
-<div class="language-go">
-~~~{.go}
- import (
- flatbuffers "github.com/google/flatbuffers/go"
- sample "MyGame/Sample"
- )
-~~~
-</div>
-<div class="language-python">
-~~~{.py}
- import flatbuffers
-
- # Generated by `flatc`.
- import MyGame.Sample.Any
- import MyGame.Sample.Color
- import MyGame.Sample.Monster
- import MyGame.Sample.Vec3
-~~~
-</div>
-<div class="language-javascript">
-~~~{.js}
- // The following code is for JavaScript module loaders (e.g. Node.js). See
- // below for a browser-based HTML/JavaScript example of including the library.
- var flatbuffers = require('/js/flatbuffers').flatbuffers;
- var MyGame = require('./monster_generated').MyGame; // Generated by `flatc`.
-
- //--------------------------------------------------------------------------//
-
- // The following code is for browser-based HTML/JavaScript. Use the above code
- // for JavaScript module loaders (e.g. Node.js).
- <script src="../js/flatbuffers.js"></script>
- <script src="monster_generated.js"></script> // Generated by `flatc`.
-~~~
-</div>
-<div class="language-php">
-~~~{.php}
- // It is recommended that your use PSR autoload when using FlatBuffers in PHP.
- // Here is an example from `SampleBinary.php`:
- function __autoload($class_name) {
- // The last segment of the class name matches the file name.
- $class = substr($class_name, strrpos($class_name, "\\") + 1);
- $root_dir = join(DIRECTORY_SEPARATOR, array(dirname(dirname(__FILE__)))); // `flatbuffers` root.
-
- // Contains the `*.php` files for the FlatBuffers library and the `flatc` generated files.
- $paths = array(join(DIRECTORY_SEPARATOR, array($root_dir, "php")),
- join(DIRECTORY_SEPARATOR, array($root_dir, "samples", "MyGame", "Sample")));
- foreach ($paths as $path) {
- $file = join(DIRECTORY_SEPARATOR, array($path, $class . ".php"));
- if (file_exists($file)) {
- require($file);
- break;
- }
- }
- }
-~~~
-</div>
-<div class="language-c">
-~~~{.c}
- // Only needed if we don't have `#include "monster_builder.h"`.
- #include "monster_reader.h"
-
- #undef ns
- #define ns(x) FLATBUFFERS_WRAP_NAMESPACE(MyGame_Sample, x) // Specified in the schema.
-~~~
-</div>
-
-Then, assuming you have a buffer of bytes received from disk,
-network, etc., you can create start accessing the buffer like so:
-
-**Again, make sure you read the bytes in BINARY mode, otherwise the code below
-won't work**
-
-<div class="language-cpp">
-~~~{.cpp}
- uint8_t *buffer_pointer = /* the data you just read */;
-
- // Get a pointer to the root object inside the buffer.
- auto monster = GetMonster(buffer_pointer);
-
- // `monster` is of type `Monster *`.
- // Note: root object pointers are NOT the same as `buffer_pointer`.
-~~~
-</div>
-<div class="language-java">
-~~~{.java}
- byte[] bytes = /* the data you just read */
- java.nio.ByteBuffer buf = java.nio.ByteBuffer.wrap(bytes);
-
- // Get an accessor to the root object inside the buffer.
- Monster monster = Monster.getRootAsMonster(buf);
-~~~
-</div>
-<div class="language-csharp">
-~~~{.cs}
- byte[] bytes = /* the data you just read */
- var buf = new ByteBuffer(bytes);
-
- // Get an accessor to the root object inside the buffer.
- var monster = Monster.GetRootAsMonster(buf);
-~~~
-</div>
-<div class="language-go">
-~~~{.go}
- var buf []byte = /* the data you just read */
-
- // Get an accessor to the root object inside the buffer.
- monster := sample.GetRootAsMonster(buf, 0)
-
- // Note: We use `0` for the offset here, which is typical for most buffers
- // you would read. If you wanted to read from `builder.Bytes` directly, you
- // would need to pass in the offset of `builder.Head()`, as the builder
- // constructs the buffer backwards, so may not start at offset 0.
-~~~
-</div>
-<div class="language-python">
-~~~{.py}
- buf = /* the data you just read, in an object of type "bytearray" */
-
- // Get an accessor to the root object inside the buffer.
- monster = MyGame.Sample.Monster.Monster.GetRootAsMonster(buf, 0)
-
- # Note: We use `0` for the offset here, which is typical for most buffers
- # you would read. If you wanted to read from the `builder.Bytes` directly,
- # you would need to pass in the offset of `builder.Head()`, as the builder
- # constructs the buffer backwards, so may not start at offset 0.
-~~~
-</div>
-<div class="language-javascript">
-~~~{.js}
- var bytes = /* the data you just read, in an object of type "Uint8Array" */
- var buf = new flatbuffers.ByteBuffer(bytes);
-
- // Get an accessor to the root object inside the buffer.
- var monster = MyGame.Sample.Monster.getRootAsMonster(buf);
-~~~
-</div>
-<div class="language-php">
-~~~{.php}
- $bytes = /* the data you just read, in a string */
- $buf = Google\FlatBuffers\ByteBuffer::wrap($bytes);
-
- // Get an accessor to the root object inside the buffer.
- $monster = \MyGame\Sample\Monster::GetRootAsMonster($buf);
-~~~
-</div>
-<div class="language-c">
-~~~{.c}
- // Note that we use the `table_t` suffix when reading a table object
- // as opposed to the `ref_t` suffix used during the construction of
- // the buffer.
- ns(Monster_table_t) monster = ns(Monster_as_root(buffer));
-
- // Note: root object pointers are NOT the same as the `buffer` pointer.
-~~~
-</div>
-
-If you look in the generated files from the schema compiler, you will see it generated
-accessors for all non-`deprecated` fields. For example:
-
-<div class="language-cpp">
-~~~{.cpp}
- auto hp = monster->hp();
- auto mana = monster->mana();
- auto name = monster->name()->c_str();
-~~~
-</div>
-<div class="language-java">
-~~~{.java}
- short hp = monster.hp();
- short mana = monster.mana();
- String name = monster.name();
-~~~
-</div>
-<div class="language-csharp">
-~~~{.cs}
- // For C#, unlike other languages support by FlatBuffers, most values (except for
- // vectors and unions) are available as propreties instead of asccessor methods.
- var hp = monster.Hp
- var mana = monster.Mana
- var name = monster.Name
-~~~
-</div>
-<div class="language-go">
-~~~{.go}
- hp := monster.Hp()
- mana := monster.Mana()
- name := string(monster.Name()) // Note: `monster.Name()` returns a byte[].
-~~~
-</div>
-<div class="language-python">
-~~~{.py}
- hp = monster.Hp()
- mana = monster.Mana()
- name = monster.Name()
-~~~
-</div>
-<div class="language-javascript">
-~~~{.js}
- var hp = $monster.hp();
- var mana = $monster.mana();
- var name = $monster.name();
-~~~
-</div>
-<div class="language-php">
-~~~{.php}
- $hp = $monster->getHp();
- $mana = $monster->getMana();
- $name = monster->getName();
-~~~
-</div>
-<div class="language-c">
-~~~{.c}
- uint16_t hp = ns(Monster_hp(monster));
- uint16_t mana = ns(Monster_mana(monster));
- flatbuffers_string_t name = ns(Monster_name(monster));
-~~~
-</div>
-
-These should hold `300`, `150`, and `"Orc"` respectively.
-
-*Note: The default value `150` wasn't stored in `mana`, but we are still able to retrieve it.*
-
-To access sub-objects, in the case of our `pos`, which is a `Vec3`:
-
-<div class="language-cpp">
-~~~{.cpp}
- auto pos = monster->pos();
- auto x = pos->x();
- auto y = pos->y();
- auto z = pos->z();
-~~~
-</div>
-<div class="language-java">
-~~~{.java}
- Vec3 pos = monster.pos();
- float x = pos.x();
- float y = pos.y();
- float z = pos.z();
-~~~
-</div>
-<div class="language-csharp">
-~~~{.cs}
- var pos = monster.Pos
- var x = pos.X
- var y = pos.Y
- var z = pos.Z
-~~~
-</div>
-<div class="language-go">
-~~~{.go}
- pos := monster.Pos(nil)
- x := pos.X()
- y := pos.Y()
- z := pos.Z()
-
- // Note: Whenever you access a new object, like in `Pos()`, a new temporary
- // accessor object gets created. If your code is very performance sensitive,
- // you can pass in a pointer to an existing `Vec3` instead of `nil`. This
- // allows you to reuse it across many calls to reduce the amount of object
- // allocation/garbage collection.
-~~~
-</div>
-<div class="language-python">
-~~~{.py}
- pos = monster.Pos()
- x = pos.X()
- y = pos.Y()
- z = pos.Z()
-~~~
-</div>
-<div class="language-javascript">
-~~~{.js}
- var pos = monster.pos();
- var x = pos.x();
- var y = pos.y();
- var z = pos.z();
-~~~
-</div>
-<div class="language-php">
-~~~{.php}
- $pos = $monster->getPos();
- $x = $pos->getX();
- $y = $pos->getY();
- $z = $pos->getZ();
-~~~
-</div>
-<div class="language-c">
-~~~{.c}
- ns(Vec3_struct_t) pos = ns(Monster_pos(monster));
- float x = ns(Vec3_x(pos));
- float y = ns(Vec3_y(pos));
- float z = ns(Vec3_z(pos));
-~~~
-</div>
-
-`x`, `y`, and `z` will contain `1.0`, `2.0`, and `3.0`, respectively.
-
-*Note: Had we not set `pos` during serialization, it would be a `NULL`-value.*
-
-Similarly, we can access elements of the inventory `vector` by indexing it. You
-can also iterate over the length of the array/vector representing the
-FlatBuffers `vector`.
-
-<div class="language-cpp">
-~~~{.cpp}
- auto inv = monster->inventory(); // A pointer to a `flatbuffers::Vector<>`.
- auto inv_len = inv->Length();
- auto third_item = inv->Get(2);
-~~~
-</div>
-<div class="language-java">
-~~~{.java}
- int invLength = monster.inventoryLength();
- byte thirdItem = monster.inventory(2);
-~~~
-</div>
-<div class="language-csharp">
-~~~{.cs}
- int invLength = monster.InventoryLength;
- var thirdItem = monster.GetInventory(2);
-~~~
-</div>
-<div class="language-go">
-~~~{.go}
- invLength := monster.InventoryLength()
- thirdItem := monster.Inventory(2)
-~~~
-</div>
-<div class="language-python">
-~~~{.py}
- inv_len = monster.InventoryLength()
- third_item = monster.Inventory(2)
-~~~
-</div>
-<div class="language-javascript">
-~~~{.js}
- var invLength = monster.inventoryLength();
- var thirdItem = monster.inventory(2);
-~~~
-</div>
-<div class="language-php">
-~~~{.php}
- $inv_len = $monster->getInventoryLength();
- $third_item = $monster->getInventory(2);
-~~~
-</div>
-<div class="language-c">
-~~~{.c}
- // If `inv` hasn't been set, it will be null. It is valid get
- // the length of null which will be 0, useful for iteration.
- flatbuffers_uint8_vec_t inv = ns(Monster_inventory(monster));
- size_t inv_len = flatbuffers_uint8_vec_len(inv);
-~~~
-</div>
-
-For `vector`s of `table`s, you can access the elements like any other vector,
-except your need to handle the result as a FlatBuffer `table`:
-
-<div class="language-cpp">
-~~~{.cpp}
- auto weapons = monster->weapons(); // A pointer to a `flatbuffers::Vector<>`.
- auto weapon_len = weapons->Length();
- auto second_weapon_name = weapons->Get(1)->name()->str();
- auto second_weapon_damage = weapons->Get(1)->damage()
-~~~
-</div>
-<div class="language-java">
-~~~{.java}
- int weaponsLength = monster.weaponsLength();
- String secondWeaponName = monster.weapons(1).name();
- short secondWeaponDamage = monster.weapons(1).damage();
-~~~
-</div>
-<div class="language-csharp">
-~~~{.cs}
- int weaponsLength = monster.WeaponsLength;
- var secondWeaponName = monster.GetWeapons(1).Name;
- var secondWeaponDamage = monster.GetWeapons(1).Damage;
-~~~
-</div>
-<div class="language-go">
-~~~{.go}
- weaponLength := monster.WeaponsLength()
- weapon := new(sample.Weapon) // We need a `sample.Weapon` to pass into `monster.Weapons()`
- // to capture the output of the function.
- if monster.Weapons(weapon, 1) {
- secondWeaponName := weapon.Name()
- secondWeaponDamage := weapon.Damage()
- }
-~~~
-</div>
-<div class="language-python">
-~~~{.py}
- weapons_length = monster.WeaponsLength()
- second_weapon_name = monster.Weapons(1).Name()
- second_weapon_damage = monster.Weapons(1).Damage()
-~~~
-</div>
-<div class="language-javascript">
-~~~{.js}
- var weaponsLength = monster.weaponsLength();
- var secondWeaponName = monster.weapons(1).name();
- var secondWeaponDamage = monster.weapons(1).damage();
-~~~
-</div>
-<div class="language-php">
-~~~{.php}
- $weapons_len = $monster->getWeaponsLength();
- $second_weapon_name = $monster->getWeapons(1)->getName();
- $second_weapon_damage = $monster->getWeapons(1)->getDamage();
-~~~
-</div>
-<div class="language-c">
-~~~{.c}
- ns(Weapon_vec_t) weapons = ns(Monster_weapons(monster));
- size_t weapons_len = ns(Weapon_vec_len(weapons));
- // We can use `const char *` instead of `flatbuffers_string_t`.
- const char *second_weapon_name = ns(Weapon_name(ns(Weapon_vec_at(weapons, 1))));
- uint16_t second_weapon_damage = ns(Weapon_damage(ns(Weapon_vec_at(weapons, 1))));
-~~~
-</div>
-
-Last, we can access our `Equipped` FlatBuffer `union`. Just like when we created
-the `union`, we need to get both parts of the `union`: the type and the data.
-
-We can access the type to dynamically cast the data as needed (since the
-`union` only stores a FlatBuffer `table`).
-
-<div class="language-cpp">
-~~~{.cpp}
- auto union_type = monster.equipped_type();
-
- if (union_type == Equipment_Weapon) {
- auto weapon = static_cast<const Weapon*>(monster->equipped()); // Requires `static_cast`
- // to type `const Weapon*`.
-
- auto weapon_name = weapon->name()->str(); // "Axe"
- auto weapon_damage = weapon->damage(); // 5
- }
-~~~
-</div>
-<div class="language-java">
-~~~{.java}
- int unionType = monster.EquippedType();
-
- if (unionType == Equipment.Weapon) {
- Weapon weapon = (Weapon)monster.equipped(new Weapon()); // Requires explicit cast
- // to `Weapon`.
-
- String weaponName = weapon.name(); // "Axe"
- short weaponDamage = weapon.damage(); // 5
- }
-~~~
-</div>
-<div class="language-csharp">
-~~~{.cs}
- var unionType = monster.EquippedType;
-
- if (unionType == Equipment.Weapon) {
- var weapon = (Weapon)monster.GetEquipped(new Weapon()); // Requires explicit cast
- // to `Weapon`.
-
- var weaponName = weapon.Name; // "Axe"
- var weaponDamage = weapon.Damage; // 5
- }
-~~~
-</div>
-<div class="language-go">
-~~~{.go}
- // We need a `flatbuffers.Table` to capture the output of the
- // `monster.Equipped()` function.
- unionTable := new(flatbuffers.Table)
-
- if monster.Equipped(unionTable) {
- unionType := monster.EquippedType()
-
- if unionType == sample.EquipmentWeapon {
- // Create a `sample.Weapon` object that can be initialized with the contents
- // of the `flatbuffers.Table` (`unionTable`), which was populated by
- // `monster.Equipped()`.
- unionWeapon = new(sample.Weapon)
- unionWeapon.Init(unionTable.Bytes, unionTable.Pos)
-
- weaponName = unionWeapon.Name()
- weaponDamage = unionWeapon.Damage()
- }
- }
-~~~
-</div>
-<div class="language-python">
-~~~{.py}
- union_type = monster.EquippedType()
-
- if union_type == MyGame.Sample.Equipment.Equipment().Weapon:
- # `monster.Equipped()` returns a `flatbuffers.Table`, which can be used to
- # initialize a `MyGame.Sample.Weapon.Weapon()`.
- union_weapon = MyGame.Sample.Weapon.Weapon()
- union_weapon.Init(monster.Equipped().Bytes, monster.Equipped().Pos)
-
- weapon_name = union_weapon.Name() // 'Axe'
- weapon_damage = union_weapon.Damage() // 5
-~~~
-</div>
-<div class="language-javascript">
-~~~{.js}
- var unionType = monster.equippedType();
-
- if (unionType == MyGame.Sample.Equipment.Weapon) {
- var weapon_name = monster.equipped(new MyGame.Sample.Weapon()).name(); // 'Axe'
- var weapon_damage = monster.equipped(new MyGame.Sample.Weapon()).damage(); // 5
- }
-~~~
-</div>
-<div class="language-php">
-~~~{.php}
- $union_type = $monster->getEquippedType();
-
- if ($union_type == \MyGame\Sample\Equipment::Weapon) {
- $weapon_name = $monster->getEquipped(new \MyGame\Sample\Weapon())->getName(); // "Axe"
- $weapon_damage = $monster->getEquipped(new \MyGame\Sample\Weapon())->getDamage(); // 5
- }
-~~~
-</div>
-<div class="language-c">
-~~~{.c}
- // Access union type field.
- if (ns(Monster_equipped_type(monster)) == ns(Equipment_Weapon)) {
- // Cast to appropriate type:
- // C allows for silent void pointer assignment, so we need no explicit cast.
- ns(Weapon_table_t) weapon = ns(Monster_equipped(monster));
- const char *weapon_name = ns(Weapon_name(weapon)); // "Axe"
- uint16_t weapon_damage = ns(Weapon_damage(weapon)); // 5
- }
-~~~
-</div>
-
-## Mutating FlatBuffers
-
-As you saw above, typically once you have created a FlatBuffer, it is read-only
-from that moment on. There are, however, cases where you have just received a
-FlatBuffer, and you'd like to modify something about it before sending it on to
-another recipient. With the above functionality, you'd have to generate an
-entirely new FlatBuffer, while tracking what you modified in your own data
-structures. This is inconvenient.
-
-For this reason FlatBuffers can also be mutated in-place. While this is great
-for making small fixes to an existing buffer, you generally want to create
-buffers from scratch whenever possible, since it is much more efficient and the
-API is much more general purpose.
-
-To get non-const accessors, invoke `flatc` with `--gen-mutable`.
-
-Similar to how we read fields using the accessors above, we can now use the
-mutators like so:
-
-<div class="language-cpp">
-~~~{.cpp}
- auto monster = GetMutableMonster(buffer_pointer); // non-const
- monster->mutate_hp(10); // Set the table `hp` field.
- monster->mutable_pos()->mutate_z(4); // Set struct field.
- monster->mutable_inventory()->Mutate(0, 1); // Set vector element.
-~~~
-</div>
-<div class="language-java">
-~~~{.java}
- Monster monster = Monster.getRootAsMonster(buf);
- monster.mutateHp(10); // Set table field.
- monster.pos().mutateZ(4); // Set struct field.
- monster.mutateInventory(0, 1); // Set vector element.
-~~~
-</div>
-<div class="language-csharp">
-~~~{.cs}
- var monster = Monster.GetRootAsMonster(buf);
- monster.MutateHp(10); // Set table field.
- monster.Pos.MutateZ(4); // Set struct field.
- monster.MutateInventory(0, 1); // Set vector element.
-~~~
-</div>
-<div class="language-go">
-~~~{.go}
- <API for mutating FlatBuffers is not yet available in Go.>
-~~~
-</div>
-<div class="language-python">
-~~~{.py}
- <API for mutating FlatBuffers is not yet available in Python.>
-~~~
-</div>
-<div class="language-javascript">
-~~~{.js}
- <API for mutating FlatBuffers is not yet support in JavaScript.>
-~~~
-</div>
-<div class="language-php">
-~~~{.php}
- <API for mutating FlatBuffers is not yet supported in PHP.>
-~~~
-</div>
-<div class="language-c">
-~~~{.c}
- <API for in-place mutating FlatBuffers will not be supported in C
- (except in-place vector sorting is possible).>
-~~~
-</div>
-
-We use the somewhat verbose term `mutate` instead of `set` to indicate that this
-is a special use case, not to be confused with the default way of constructing
-FlatBuffer data.
-
-After the above mutations, you can send on the FlatBuffer to a new recipient
-without any further work!
-
-Note that any `mutate` functions on a table will return a boolean, which is
-`false` if the field we're trying to set is not present in the buffer. Fields
-that are not present if they weren't set, or even if they happen to be equal to
-the default value. For example, in the creation code above, the `mana`
-field is equal to `150`, which is the default value, so it was never stored in
-the buffer. Trying to call the corresponding `mutate` method for `mana` on such
-data will return `false`, and the value won't actually be modified!
-
-One way to solve this is to call `ForceDefaults` on a FlatBufferBuilder to
-force all fields you set to actually be written. This, of course, increases the
-size of the buffer somewhat, but this may be acceptable for a mutable buffer.
-
-If this is not sufficient, other ways of mutating FlatBuffers may be supported
-in your language through an object based API (`--gen-object-api`) or reflection.
-See the individual language documents for support.
-
-## JSON with FlatBuffers
-
-#### Using `flatc` as a Conversion Tool
-
-This is often the preferred method to use JSON with FlatBuffers, as it doesn't
-require you to add any new code to your program. It is also efficient, since you
-can ship with the binary data. The drawback is that it requires an extra step
-for your users/developers to perform (although it may be able to be automated
-as part of your compilation).
-
-Lets say you have a JSON file that describes your monster. In this example,
-we will use the file `flatbuffers/samples/monsterdata.json`.
-
-Here are the contents of the file:
-
-~~~{.json}
-{
- pos: {
- x: 1,
- y: 2,
- z: 3
- },
- hp: 300,
- name: "Orc"
-}
-~~~
-
-You can run this file through the `flatc` compile with the `-b` flag and
-our `monster.fbs` schema to produce a FlatBuffer binary file.
-
-~~~{.sh}
-./../flatc -b monster.fbs monsterdata.json
-~~~
-
-The output of this will be a file `monsterdata.bin`, which will contain the
-FlatBuffer binary representation of the contents from our `.json` file.
-
-<div class="language-cpp">
-*Note: If you're working in C++, you can also parse JSON at runtime. See the
-[Use in C++](@ref flatbuffers_guide_use_cpp) section of the Programmer's
-Guide for more information.*
-</div>
-<div class="language-c">
-*Note: If you're working in C, the `flatcc --json` (not `flatc`)
-compiler will generate schema specific high performance json parsers and
-printers that you can compile and use at runtime. The `flatc` compiler (not
-`flatcc`) on the other hand, is still useful for general offline json to
-flatbuffer conversion from a given schema. There are no current plans
-for `flatcc` to support this.*
-</div>
-
-## Advanced Features for Each Language
-
-Each language has a dedicated `Use in XXX` page in the Programmer's Guide
-to cover the nuances of FlatBuffers in that language.
-
-For your chosen language, see:
-
-<div class="language-cpp">
-[Use in C++](@ref flatbuffers_guide_use_cpp)
-</div>
-<div class="language-java">
-[Use in Java/C#](@ref flatbuffers_guide_use_java_c-sharp)
-</div>
-<div class="language-csharp">
-[Use in Java/C#](@ref flatbuffers_guide_use_java_c-sharp)
-</div>
-<div class="language-go">
-[Use in Go](@ref flatbuffers_guide_use_go)
-</div>
-<div class="language-python">
-[Use in Python](@ref flatbuffers_guide_use_python)
-</div>
-<div class="language-javascript">
-[Use in JavaScript](@ref flatbuffers_guide_use_javascript)
-</div>
-<div class="language-php">
-[Use in PHP](@ref flatbuffers_guide_use_php)
-</div>
-<div class="language-c">
-[Use in C](@ref flatbuffers_guide_use_c)
-</div>
-
-<br>
diff --git a/third_party/flatbuffers/docs/source/WhitePaper.md b/third_party/flatbuffers/docs/source/WhitePaper.md
deleted file mode 100755
index e504ada..0000000
--- a/third_party/flatbuffers/docs/source/WhitePaper.md
+++ /dev/null
@@ -1,128 +0,0 @@
-FlatBuffers white paper {#flatbuffers_white_paper}
-=======================
-
-This document tries to shed some light on to the "why" of FlatBuffers, a
-new serialization library.
-
-## Motivation
-
-Back in the good old days, performance was all about instructions and
-cycles. Nowadays, processing units have run so far ahead of the memory
-subsystem, that making an efficient application should start and finish
-with thinking about memory. How much you use of it. How you lay it out
-and access it. How you allocate it. When you copy it.
-
-Serialization is a pervasive activity in a lot programs, and a common
-source of memory inefficiency, with lots of temporary data structures
-needed to parse and represent data, and inefficient allocation patterns
-and locality.
-
-If it would be possible to do serialization with no temporary objects,
-no additional allocation, no copying, and good locality, this could be
-of great value. The reason serialization systems usually don't manage
-this is because it goes counter to forwards/backwards compatability, and
-platform specifics like endianness and alignment.
-
-FlatBuffers is what you get if you try anyway.
-
-In particular, FlatBuffers focus is on mobile hardware (where memory
-size and memory bandwidth is even more constrained than on desktop
-hardware), and applications that have the highest performance needs:
-games.
-
-## FlatBuffers
-
-*This is a summary of FlatBuffers functionality, with some rationale.
-A more detailed description can be found in the FlatBuffers
-documentation.*
-
-### Summary
-
-A FlatBuffer is a binary buffer containing nested objects (structs,
-tables, vectors,..) organized using offsets so that the data can be
-traversed in-place just like any pointer-based data structure. Unlike
-most in-memory data structures however, it uses strict rules of
-alignment and endianness (always little) to ensure these buffers are
-cross platform. Additionally, for objects that are tables, FlatBuffers
-provides forwards/backwards compatibility and general optionality of
-fields, to support most forms of format evolution.
-
-You define your object types in a schema, which can then be compiled to
-C++ or Java for low to zero overhead reading & writing.
-Optionally, JSON data can be dynamically parsed into buffers.
-
-### Tables
-
-Tables are the cornerstone of FlatBuffers, since format evolution is
-essential for most applications of serialization. Typically, dealing
-with format changes is something that can be done transparently during
-the parsing process of most serialization solutions out there.
-But a FlatBuffer isn't parsed before it is accessed.
-
-Tables get around this by using an extra indirection to access fields,
-through a *vtable*. Each table comes with a vtable (which may be shared
-between multiple tables with the same layout), and contains information
-where fields for this particular kind of instance of vtable are stored.
-The vtable may also indicate that the field is not present (because this
-FlatBuffer was written with an older version of the software, of simply
-because the information was not necessary for this instance, or deemed
-deprecated), in which case a default value is returned.
-
-Tables have a low overhead in memory (since vtables are small and
-shared) and in access cost (an extra indirection), but provide great
-flexibility. Tables may even cost less memory than the equivalent
-struct, since fields do not need to be stored when they are equal to
-their default.
-
-FlatBuffers additionally offers "naked" structs, which do not offer
-forwards/backwards compatibility, but can be even smaller (useful for
-very small objects that are unlikely to change, like e.g. a coordinate
-pair or a RGBA color).
-
-### Schemas
-
-While schemas reduce some generality (you can't just read any data
-without having its schema), they have a lot of upsides:
-
-- Most information about the format can be factored into the generated
- code, reducing memory needed to store data, and time to access it.
-
-- The strong typing of the data definitions means less error
- checking/handling at runtime (less can go wrong).
-
-- A schema enables us to access a buffer without parsing.
-
-FlatBuffer schemas are fairly similar to those of the incumbent,
-Protocol Buffers, and generally should be readable to those familiar
-with the C family of languages. We chose to improve upon the features
-offered by .proto files in the following ways:
-
-- Deprecation of fields instead of manual field id assignment.
- Extending an object in a .proto means hunting for a free slot among
- the numbers (preferring lower numbers since they have a more compact
- representation). Besides being inconvenient, it also makes removing
- fields problematic: you either have to keep them, not making it
- obvious that this field shouldn't be read/written anymore, and still
- generating accessors. Or you remove it, but now you risk that
- there's still old data around that uses that field by the time
- someone reuses that field id, with nasty consequences.
-
-- Differentiating between tables and structs (see above). Effectively
- all table fields are `optional`, and all struct fields are
- `required`.
-
-- Having a native vector type instead of `repeated`. This gives you a
- length without having to collect all items, and in the case of
- scalars provides for a more compact representation, and one that
- guarantees adjacency.
-
-- Having a native `union` type instead of using a series of `optional`
- fields, all of which must be checked individually.
-
-- Being able to define defaults for all scalars, instead of having to
- deal with their optionality at each access.
-
-- A parser that can deal with both schemas and data definitions (JSON
- compatible) uniformly.
-
-<br>
diff --git a/third_party/flatbuffers/docs/source/doxyfile b/third_party/flatbuffers/docs/source/doxyfile
deleted file mode 100755
index 770da9f..0000000
--- a/third_party/flatbuffers/docs/source/doxyfile
+++ /dev/null
@@ -1,2364 +0,0 @@
-# Doxyfile 1.8.5
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
-#
-# All text after a double hash (##) is considered a comment and is placed in
-# front of the TAG it is preceding.
-#
-# All text after a single hash (#) is considered a comment and will be ignored.
-# The format is:
-# TAG = value [value, ...]
-# For lists, items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (\" \").
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all text
-# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
-# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
-# for the list of possible encodings.
-# The default value is: UTF-8.
-
-DOXYFILE_ENCODING = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
-# double-quotes, unless you are using Doxywizard) that should identify the
-# project for which the documentation is generated. This name is used in the
-# title of most generated pages and in a few other places.
-# The default value is: My Project.
-
-PROJECT_NAME = "FlatBuffers"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
-# could be handy for archiving the generated documentation or if some version
-# control system is used.
-
-PROJECT_NUMBER =
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer a
-# quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF =
-
-# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
-# the documentation. The maximum height of the logo should not exceed 55 pixels
-# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
-# to the output directory.
-
-PROJECT_LOGO =
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
-# into which the generated documentation will be written. If a relative path is
-# entered, it will be relative to the location where doxygen was started. If
-# left blank the current directory will be used.
-
-OUTPUT_DIRECTORY = ".."
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
-# directories (in 2 levels) under the output directory of each output format and
-# will distribute the generated files over these directories. Enabling this
-# option can be useful when feeding doxygen a huge amount of source files, where
-# putting all generated files in the same directory would otherwise causes
-# performance problems for the file system.
-# The default value is: NO.
-
-CREATE_SUBDIRS = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# Possible values are: Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-
-# Traditional, Croatian, Czech, Danish, Dutch, English, Esperanto, Farsi,
-# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en,
-# Korean, Korean-en, Latvian, Norwegian, Macedonian, Persian, Polish,
-# Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish,
-# Turkish, Ukrainian and Vietnamese.
-# The default value is: English.
-
-OUTPUT_LANGUAGE = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
-# descriptions after the members that are listed in the file and class
-# documentation (similar to Javadoc). Set to NO to disable this.
-# The default value is: YES.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
-# description of a member or function before the detailed description
-#
-# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-# The default value is: YES.
-
-REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator that is
-# used to form the text in various listings. Each string in this list, if found
-# as the leading text of the brief description, will be stripped from the text
-# and the result, after processing the whole list, is used as the annotated
-# text. Otherwise, the brief description is used as-is. If left blank, the
-# following values are used ($name is automatically replaced with the name of
-# the entity):The $name class, The $name widget, The $name file, is, provides,
-# specifies, contains, represents, a, an and the.
-
-ABBREVIATE_BRIEF = "The $name class" \
- "The $name widget" \
- "The $name file" \
- is \
- provides \
- specifies \
- contains \
- represents \
- a \
- an \
- the
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# doxygen will generate a detailed section even if there is only a brief
-# description.
-# The default value is: NO.
-
-ALWAYS_DETAILED_SEC = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-# The default value is: NO.
-
-INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
-# before files name in the file list and in the header files. If set to NO the
-# shortest path that makes the file name unique will be used
-# The default value is: YES.
-
-FULL_PATH_NAMES = NO
-
-# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
-# Stripping is only done if one of the specified strings matches the left-hand
-# part of the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the path to
-# strip.
-#
-# Note that you can specify absolute paths here, but also relative paths, which
-# will be relative from the directory where doxygen is started.
-# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-
-STRIP_FROM_PATH =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
-# path mentioned in the documentation of a class, which tells the reader which
-# header file to include in order to use a class. If left blank only the name of
-# the header file containing the class definition is used. Otherwise one should
-# specify the list of include paths that are normally passed to the compiler
-# using the -I flag.
-
-STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
-# less readable) file names. This can be useful is your file systems doesn't
-# support long names like on DOS, Mac, or CD-ROM.
-# The default value is: NO.
-
-SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
-# first line (until the first dot) of a Javadoc-style comment as the brief
-# description. If set to NO, the Javadoc-style will behave just like regular Qt-
-# style comments (thus requiring an explicit @brief command for a brief
-# description.)
-# The default value is: NO.
-
-JAVADOC_AUTOBRIEF = YES
-
-# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
-# line (until the first dot) of a Qt-style comment as the brief description. If
-# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
-# requiring an explicit \brief command for a brief description.)
-# The default value is: NO.
-
-QT_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
-# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
-# a brief description. This used to be the default behavior. The new default is
-# to treat a multi-line C++ comment block as a detailed description. Set this
-# tag to YES if you prefer the old behavior instead.
-#
-# Note that setting this tag to YES also means that rational rose comments are
-# not recognized any more.
-# The default value is: NO.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
-# documentation from any documented member that it re-implements.
-# The default value is: YES.
-
-INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
-# new page for each member. If set to NO, the documentation of a member will be
-# part of the file/class/namespace that contains it.
-# The default value is: NO.
-
-SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
-# uses this value to replace tabs by spaces in code fragments.
-# Minimum value: 1, maximum value: 16, default value: 4.
-
-TAB_SIZE = 2
-
-# This tag can be used to specify a number of aliases that act as commands in
-# the documentation. An alias has the form:
-# name=value
-# For example adding
-# "sideeffect=@par Side Effects:\n"
-# will allow you to put the command \sideeffect (or @sideeffect) in the
-# documentation, which will result in a user-defined paragraph with heading
-# "Side Effects:". You can put \n's in the value part of an alias to insert
-# newlines.
-
-ALIASES =
-
-# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding "class=itcl::class"
-# will allow you to use the command class in the itcl::class meaning.
-
-TCL_SUBST =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
-# only. Doxygen will then generate output that is more tailored for C. For
-# instance, some of the names that are used will be different. The list of all
-# members will be omitted, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_FOR_C = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
-# Python sources only. Doxygen will then generate output that is more tailored
-# for that language. For instance, namespaces will be presented as packages,
-# qualified scopes will look different, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources. Doxygen will then generate output that is tailored for Fortran.
-# The default value is: NO.
-
-OPTIMIZE_FOR_FORTRAN = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for VHDL.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_VHDL = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given
-# extension. Doxygen has a built-in mapping, but you can override or extend it
-# using this tag. The format is ext=language, where ext is a file extension, and
-# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
-# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make
-# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
-# (default is Fortran), use: inc=Fortran f=C.
-#
-# Note For files without extension you can use no_extension as a placeholder.
-#
-# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
-# the files are not read by doxygen.
-
-EXTENSION_MAPPING =
-
-# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
-# according to the Markdown format, which allows for more readable
-# documentation. See http://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you can
-# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
-# case of backward compatibilities issues.
-# The default value is: YES.
-
-MARKDOWN_SUPPORT = YES
-
-# When enabled doxygen tries to link words that correspond to documented
-# classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by by putting a % sign in front of the word
-# or globally by setting AUTOLINK_SUPPORT to NO.
-# The default value is: YES.
-
-AUTOLINK_SUPPORT = NO # Due to the multiple languages included in the API
- # reference for FlatBuffers, the Auto-links were
- # wrong more often than not.
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should set this
-# tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string);
-# versus func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-# The default value is: NO.
-
-BUILTIN_STL_SUPPORT = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-# The default value is: NO.
-
-CPP_CLI_SUPPORT = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
-# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
-# will parse them like normal C++ but will assume all classes use public instead
-# of private inheritance when no explicit protection keyword is present.
-# The default value is: NO.
-
-SIP_SUPPORT = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate
-# getter and setter methods for a property. Setting this option to YES will make
-# doxygen to replace the get and set methods by a property in the documentation.
-# This will only work if the methods are indeed getting or setting a simple
-# type. If this is not the case, or you want to show the methods anyway, you
-# should set this option to NO.
-# The default value is: YES.
-
-IDL_PROPERTY_SUPPORT = NO
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-# The default value is: NO.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# Set the SUBGROUPING tag to YES to allow class member groups of the same type
-# (for instance a group of public functions) to be put as a subgroup of that
-# type (e.g. under the Public Functions section). Set it to NO to prevent
-# subgrouping. Alternatively, this can be done per class using the
-# \nosubgrouping command.
-# The default value is: YES.
-
-SUBGROUPING = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
-# are shown inside the group in which they are included (e.g. using \ingroup)
-# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
-# and RTF).
-#
-# Note that this feature does not work in combination with
-# SEPARATE_MEMBER_PAGES.
-# The default value is: NO.
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
-# with only public data fields or simple typedef fields will be shown inline in
-# the documentation of the scope in which they are defined (i.e. file,
-# namespace, or group documentation), provided this scope is documented. If set
-# to NO, structs, classes, and unions are shown on a separate page (for HTML and
-# Man pages) or section (for LaTeX and RTF).
-# The default value is: NO.
-
-INLINE_SIMPLE_STRUCTS = NO
-
-# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
-# enum is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically be
-# useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-# The default value is: NO.
-
-TYPEDEF_HIDES_STRUCT = NO
-
-# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
-# cache is used to resolve symbols given their name and scope. Since this can be
-# an expensive process and often the same symbol appears multiple times in the
-# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
-# doxygen will become slower. If the cache is too large, memory is wasted. The
-# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
-# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
-# symbols. At the end of a run doxygen will report the cache usage and suggest
-# the optimal cache size from a speed point of view.
-# Minimum value: 0, maximum value: 9, default value: 0.
-
-LOOKUP_CACHE_SIZE = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available. Private
-# class members and static file members will be hidden unless the
-# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
-# Note: This will also disable the warnings about undocumented members that are
-# normally produced when WARNINGS is set to YES.
-# The default value is: NO.
-
-EXTRACT_ALL = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
-# be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PRIVATE = NO
-
-# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
-# scope will be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PACKAGE = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
-# included in the documentation.
-# The default value is: NO.
-
-EXTRACT_STATIC = YES
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
-# locally in source files will be included in the documentation. If set to NO
-# only classes defined in header files are included. Does not have any effect
-# for Java sources.
-# The default value is: YES.
-
-EXTRACT_LOCAL_CLASSES = NO
-
-# This flag is only useful for Objective-C code. When set to YES local methods,
-# which are defined in the implementation section but not in the interface are
-# included in the documentation. If set to NO only methods in the interface are
-# included.
-# The default value is: NO.
-
-EXTRACT_LOCAL_METHODS = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base name of
-# the file that contains the anonymous namespace. By default anonymous namespace
-# are hidden.
-# The default value is: NO.
-
-EXTRACT_ANON_NSPACES = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
-# undocumented members inside documented classes or files. If set to NO these
-# members will be included in the various overviews, but no documentation
-# section is generated. This option has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_MEMBERS = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy. If set
-# to NO these classes will be included in the various overviews. This option has
-# no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
-# (class|struct|union) declarations. If set to NO these declarations will be
-# included in the documentation.
-# The default value is: NO.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
-# documentation blocks found inside the body of a function. If set to NO these
-# blocks will be appended to the function's detailed documentation block.
-# The default value is: NO.
-
-HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation that is typed after a
-# \internal command is included. If the tag is set to NO then the documentation
-# will be excluded. Set it to YES to include the internal documentation.
-# The default value is: NO.
-
-INTERNAL_DOCS = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
-# names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-# The default value is: system dependent.
-
-CASE_SENSE_NAMES = NO
-
-# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
-# their full class and namespace scopes in the documentation. If set to YES the
-# scope will be hidden.
-# The default value is: NO.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
-# the files that are included by a file in the documentation of that file.
-# The default value is: YES.
-
-SHOW_INCLUDE_FILES = YES
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
-# files with double quotes in the documentation rather than with sharp brackets.
-# The default value is: NO.
-
-FORCE_LOCAL_INCLUDES = NO
-
-# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
-# documentation for inline members.
-# The default value is: YES.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
-# (detailed) documentation of file and class members alphabetically by member
-# name. If set to NO the members will appear in declaration order.
-# The default value is: YES.
-
-SORT_MEMBER_DOCS = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
-# descriptions of file, namespace and class members alphabetically by member
-# name. If set to NO the members will appear in declaration order.
-# The default value is: NO.
-
-SORT_BRIEF_DOCS = YES
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
-# (brief and detailed) documentation of class members so that constructors and
-# destructors are listed first. If set to NO the constructors will appear in the
-# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
-# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
-# member documentation.
-# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
-# detailed member documentation.
-# The default value is: NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
-# of group names into alphabetical order. If set to NO the group names will
-# appear in their defined order.
-# The default value is: NO.
-
-SORT_GROUP_NAMES = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
-# fully-qualified names, including namespaces. If set to NO, the class list will
-# be sorted only by class name, not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the alphabetical
-# list.
-# The default value is: NO.
-
-SORT_BY_SCOPE_NAME = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
-# type resolution of all parameters of a function it will reject a match between
-# the prototype and the implementation of a member function even if there is
-# only one candidate or it is obvious which candidate to choose by doing a
-# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
-# accept a match between prototype and implementation in such cases.
-# The default value is: NO.
-
-STRICT_PROTO_MATCHING = NO
-
-# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
-# todo list. This list is created by putting \todo commands in the
-# documentation.
-# The default value is: YES.
-
-GENERATE_TODOLIST = NO
-
-# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
-# test list. This list is created by putting \test commands in the
-# documentation.
-# The default value is: YES.
-
-GENERATE_TESTLIST = NO
-
-# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
-# list. This list is created by putting \bug commands in the documentation.
-# The default value is: YES.
-
-GENERATE_BUGLIST = NO
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
-# the deprecated list. This list is created by putting \deprecated commands in
-# the documentation.
-# The default value is: YES.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional documentation
-# sections, marked by \if <section_label> ... \endif and \cond <section_label>
-# ... \endcond blocks.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
-# initial value of a variable or macro / define can have for it to appear in the
-# documentation. If the initializer consists of more lines than specified here
-# it will be hidden. Use a value of 0 to hide initializers completely. The
-# appearance of the value of individual variables and macros / defines can be
-# controlled using \showinitializer or \hideinitializer command in the
-# documentation regardless of this setting.
-# Minimum value: 0, maximum value: 10000, default value: 30.
-
-MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
-# the bottom of the documentation of classes and structs. If set to YES the list
-# will mention the files that were used to generate the documentation.
-# The default value is: YES.
-
-SHOW_USED_FILES = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
-# will remove the Files entry from the Quick Index and from the Folder Tree View
-# (if specified).
-# The default value is: YES.
-
-SHOW_FILES = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
-# page. This will remove the Namespaces entry from the Quick Index and from the
-# Folder Tree View (if specified).
-# The default value is: YES.
-
-SHOW_NAMESPACES = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command command input-file, where command is the value of the
-# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
-# by doxygen. Whatever the program writes to standard output is used as the file
-# version. For an example see the documentation.
-
-FILE_VERSION_FILTER =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option. You can
-# optionally specify a file name after the option, if omitted DoxygenLayout.xml
-# will be used as the name of the layout file.
-#
-# Note that if you run doxygen from a directory containing a file called
-# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
-# tag is left empty.
-
-LAYOUT_FILE = doxygen_layout.xml
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
-# the reference definitions. This must be a list of .bib files. The .bib
-# extension is automatically appended if omitted. This requires the bibtex tool
-# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
-# For LaTeX the style of the bibliography can be controlled using
-# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
-# search path. Do not use file names with spaces, bibtex cannot handle them. See
-# also \cite for info how to create references.
-
-CITE_BIB_FILES =
-
-#---------------------------------------------------------------------------
-# Configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated to
-# standard output by doxygen. If QUIET is set to YES this implies that the
-# messages are off.
-# The default value is: NO.
-
-QUIET = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
-# this implies that the warnings are on.
-#
-# Tip: Turn warnings on while writing the documentation.
-# The default value is: YES.
-
-WARNINGS = YES
-
-# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
-# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
-# will automatically be disabled.
-# The default value is: YES.
-
-WARN_IF_UNDOCUMENTED = YES
-
-# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some parameters
-# in a documented function, or documenting parameters that don't exist or using
-# markup commands wrongly.
-# The default value is: YES.
-
-WARN_IF_DOC_ERROR = NO
-
-# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
-# are documented, but have no documentation for their parameters or return
-# value. If set to NO doxygen will only warn about wrong or incomplete parameter
-# documentation, but not about the absence of documentation.
-# The default value is: NO.
-
-WARN_NO_PARAMDOC = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that doxygen
-# can produce. The string should contain the $file, $line, and $text tags, which
-# will be replaced by the file and line number from which the warning originated
-# and the warning text. Optionally the format may contain $version, which will
-# be replaced by the version of the file (if it could be obtained via
-# FILE_VERSION_FILTER)
-# The default value is: $file:$line: $text.
-
-WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning and error
-# messages should be written. If left blank the output is written to standard
-# error (stderr).
-
-WARN_LOGFILE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag is used to specify the files and/or directories that contain
-# documented source files. You may enter file names like myfile.cpp or
-# directories like /usr/src/myproject. Separate the files or directories with
-# spaces.
-# Note: If this tag is empty the current directory is searched.
-
-INPUT = "FlatBuffers.md" \
- "Building.md" \
- "Compiler.md" \
- "Schemas.md" \
- "CppUsage.md" \
- "CUsage.md" \
- "GoUsage.md" \
- "JavaCsharpUsage.md" \
- "JavaScriptUsage.md" \
- "PHPUsage.md" \
- "PythonUsage.md" \
- "Support.md" \
- "Benchmarks.md" \
- "WhitePaper.md" \
- "FlexBuffers.md" \
- "Internals.md" \
- "Grammar.md" \
- "../../CONTRIBUTING.md" \
- "Tutorial.md" \
- "GoApi.md" \
- "groups" \
- "../../java/com/google/flatbuffers" \
- "../../python/flatbuffers/builder.py" \
- "../../js/flatbuffers.js" \
- "../../php/FlatbufferBuilder.php" \
- "../../net/FlatBuffers/FlatBufferBuilder.cs" \
- "../../include/flatbuffers/flatbuffers.h" \
- "../../go/builder.go"
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
-# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
-# documentation (see: http://www.gnu.org/software/libiconv) for the list of
-# possible encodings.
-# The default value is: UTF-8.
-
-INPUT_ENCODING = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank the
-# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
-# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
-# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
-# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
-# *.qsf, *.as and *.js.
-
-FILE_PATTERNS = *.c \
- *.cc \
- *.cxx \
- *.cpp \
- *.c++ \
- *.java \
- *.ii \
- *.ixx \
- *.ipp \
- *.i++ \
- *.inl \
- *.idl \
- *.ddl \
- *.odl \
- *.h \
- *.hh \
- *.hxx \
- *.hpp \
- *.h++ \
- *.cs \
- *.d \
- *.php \
- *.php4 \
- *.php5 \
- *.phtml \
- *.inc \
- *.m \
- *.markdown \
- *.md \
- *.mm \
- *.dox \
- *.py \
- *.f90 \
- *.f \
- *.for \
- *.tcl \
- *.vhd \
- *.vhdl \
- *.ucf \
- *.qsf \
- *.as \
- *.js \
- *.go
-
-# The RECURSIVE tag can be used to specify whether or not subdirectories should
-# be searched for input files as well.
-# The default value is: NO.
-
-RECURSIVE = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-#
-# Note that relative paths are relative to the directory from which doxygen is
-# run.
-
-EXCLUDE =
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
-# The default value is: NO.
-
-EXCLUDE_SYMLINKS = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories.
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories for example use the pattern */test/*
-
-EXCLUDE_PATTERNS = *_test.py |
- __init__.py
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories use the pattern */test/*
-
-EXCLUDE_SYMBOLS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or directories
-# that contain example code fragments that are included (see the \include
-# command).
-
-EXAMPLE_PATH = "GoApi_generated.txt"
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank all
-# files are included.
-
-EXAMPLE_PATTERNS = *
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude commands
-# irrespective of the value of the RECURSIVE tag.
-# The default value is: NO.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or directories
-# that contain images that are to be included in the documentation (see the
-# \image command).
-
-IMAGE_PATH =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command:
-#
-# <filter> <input-file>
-#
-# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
-# name of an input file. Doxygen will then use the output that the filter
-# program writes to standard output. If FILTER_PATTERNS is specified, this tag
-# will be ignored.
-#
-# Note that the filter must not add or remove lines; it is applied before the
-# code is scanned, but not when the output code is generated. If lines are added
-# or removed, the anchors will not be placed correctly.
-
-INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form: pattern=filter
-# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
-# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
-# patterns match the file name, INPUT_FILTER is applied.
-
-FILTER_PATTERNS = *.py=py_filter
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER ) will also be used to filter the input files that are used for
-# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
-# The default value is: NO.
-
-FILTER_SOURCE_FILES = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
-# it is also possible to disable source filtering for a specific pattern using
-# *.ext= (so without naming a filter).
-# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
-
-FILTER_SOURCE_PATTERNS =
-
-# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
-# is part of the input, its contents will be placed on the main page
-# (index.html). This can be useful if you have a project on for instance GitHub
-# and want to reuse the introduction page also for the doxygen output.
-
-USE_MDFILE_AS_MAINPAGE = FlatBuffers.md
-
-#---------------------------------------------------------------------------
-# Configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
-# generated. Documented entities will be cross-referenced with these sources.
-#
-# Note: To get rid of all source code in the generated output, make sure that
-# also VERBATIM_HEADERS is set to NO.
-# The default value is: NO.
-
-SOURCE_BROWSER = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body of functions,
-# classes and enums directly into the documentation.
-# The default value is: NO.
-
-INLINE_SOURCES = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
-# special comment blocks from generated source code fragments. Normal C, C++ and
-# Fortran comments will always remain visible.
-# The default value is: YES.
-
-STRIP_CODE_COMMENTS = NO
-
-# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
-# function all documented functions referencing it will be listed.
-# The default value is: NO.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES then for each documented function
-# all documented entities called/used by that function will be listed.
-# The default value is: NO.
-
-REFERENCES_RELATION = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
-# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
-# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
-# link to the documentation.
-# The default value is: YES.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
-# source code will show a tooltip with additional information such as prototype,
-# brief description and links to the definition and documentation. Since this
-# will make the HTML file larger and loading of large files a bit slower, you
-# can opt to disable this feature.
-# The default value is: YES.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-SOURCE_TOOLTIPS = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code will
-# point to the HTML generated by the htags(1) tool instead of doxygen built-in
-# source browser. The htags tool is part of GNU's global source tagging system
-# (see http://www.gnu.org/software/global/global.html). You will need version
-# 4.8.6 or higher.
-#
-# To use it do the following:
-# - Install the latest version of global
-# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
-# - Make sure the INPUT points to the root of the source tree
-# - Run doxygen as normal
-#
-# Doxygen will invoke htags (and that will in turn invoke gtags), so these
-# tools must be available from the command line (i.e. in the search path).
-#
-# The result: instead of the source browser generated by doxygen, the links to
-# source code will now point to the output of htags.
-# The default value is: NO.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
-# verbatim copy of the header file for each class for which an include is
-# specified. Set to NO to disable this.
-# See also: Section \class.
-# The default value is: YES.
-
-VERBATIM_HEADERS = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
-# compounds will be generated. Enable this if the project contains a lot of
-# classes, structs, unions or interfaces.
-# The default value is: YES.
-
-ALPHABETICAL_INDEX = YES
-
-# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
-# which the alphabetical index list will be split.
-# Minimum value: 1, maximum value: 20, default value: 5.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all classes will
-# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
-# can be used to specify a prefix (or a list of prefixes) that should be ignored
-# while generating the index headers.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-IGNORE_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
-# The default value is: YES.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_OUTPUT = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
-# generated HTML page (for example: .htm, .php, .asp).
-# The default value is: .html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
-# each generated HTML page. If the tag is left blank doxygen will generate a
-# standard header.
-#
-# To get valid HTML the header file that includes any scripts and style sheets
-# that doxygen needs, which is dependent on the configuration options used (e.g.
-# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
-# default header using
-# doxygen -w html new_header.html new_footer.html new_stylesheet.css
-# YourConfigFile
-# and then modify the file new_header.html. See also section "Doxygen usage"
-# for information on how to generate the default header that doxygen normally
-# uses.
-# Note: The header is subject to change so you typically have to regenerate the
-# default header when upgrading to a newer version of doxygen. For a description
-# of the possible markers and block names see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_HEADER = ../header.html
-
-# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
-# generated HTML page. If the tag is left blank doxygen will generate a standard
-# footer. See HTML_HEADER for more information on how to generate a default
-# footer and what special commands can be used inside the footer. See also
-# section "Doxygen usage" for information on how to generate the default footer
-# that doxygen normally uses.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FOOTER = ../footer.html
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
-# sheet that is used by each HTML page. It can be used to fine-tune the look of
-# the HTML output. If left blank doxygen will generate a default style sheet.
-# See also section "Doxygen usage" for information on how to generate the style
-# sheet that doxygen normally uses.
-# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
-# it is more robust and this tag (HTML_STYLESHEET) will in the future become
-# obsolete.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_STYLESHEET =
-
-# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
-# defined cascading style sheet that is included after the standard style sheets
-# created by doxygen. Using this option one can overrule certain style aspects.
-# This is preferred over using HTML_STYLESHEET since it does not replace the
-# standard style sheet and is therefor more robust against future updates.
-# Doxygen will copy the style sheet file to the output directory. For an example
-# see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_STYLESHEET = style.css
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
-# files will be copied as-is; there are no commands or markers available.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_FILES = "../images/fpl_logo_small.png" \
- "../images/ftv2mnode.png" \
- "../images/ftv2pnode.png"
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
-# will adjust the colors in the stylesheet and background images according to
-# this color. Hue is specified as an angle on a colorwheel, see
-# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
-# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
-# purple, and 360 is red again.
-# Minimum value: 0, maximum value: 359, default value: 220.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_HUE = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
-# in the HTML output. For a value of 0 the output will use grayscales only. A
-# value of 255 will produce the most vivid colors.
-# Minimum value: 0, maximum value: 255, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_SAT = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
-# luminance component of the colors in the HTML output. Values below 100
-# gradually make the output lighter, whereas values above 100 make the output
-# darker. The value divided by 100 is the actual gamma applied, so 80 represents
-# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
-# change the gamma.
-# Minimum value: 40, maximum value: 240, default value: 80.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_GAMMA = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting this
-# to NO can help when comparing the output of multiple runs.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_TIMESTAMP = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_DYNAMIC_SECTIONS = NO
-
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
-# shown in the various tree structured indices initially; the user can expand
-# and collapse entries dynamically later on. Doxygen will expand the tree to
-# such a level that at most the specified number of entries are visible (unless
-# a fully collapsed tree already exceeds this amount). So setting the number of
-# entries 1 will produce a full collapsed tree by default. 0 is a special value
-# representing an infinite number of entries and will result in a full expanded
-# tree by default.
-# Minimum value: 0, maximum value: 9999, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_INDEX_NUM_ENTRIES = 100
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files will be
-# generated that can be used as input for Apple's Xcode 3 integrated development
-# environment (see: http://developer.apple.com/tools/xcode/), introduced with
-# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
-# Makefile in the HTML output directory. Running make will produce the docset in
-# that directory and running make install will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
-# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-# for more information.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_DOCSET = NO
-
-# This tag determines the name of the docset feed. A documentation feed provides
-# an umbrella under which multiple documentation sets from a single provider
-# (such as a company or product suite) can be grouped.
-# The default value is: Doxygen generated docs.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_FEEDNAME = "Doxygen generated docs"
-
-# This tag specifies a string that should uniquely identify the documentation
-# set bundle. This should be a reverse domain-name style string, e.g.
-# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_BUNDLE_ID = org.doxygen.Project
-
-# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
-# The default value is: org.doxygen.Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_ID = org.doxygen.Publisher
-
-# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
-# The default value is: Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_NAME = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
-# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
-# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
-# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
-# Windows.
-#
-# The HTML Help Workshop contains a compiler that can convert all HTML output
-# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
-# files are now used as the Windows 98 help format, and will replace the old
-# Windows help format (.hlp) on all Windows platforms in the future. Compressed
-# HTML files also contain an index, a table of contents, and you can search for
-# words in the documentation. The HTML workshop also contains a viewer for
-# compressed HTML files.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_HTMLHELP = NO
-
-# The CHM_FILE tag can be used to specify the file name of the resulting .chm
-# file. You can add a path in front of the file if the result should not be
-# written to the html output directory.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_FILE =
-
-# The HHC_LOCATION tag can be used to specify the location (absolute path
-# including file name) of the HTML help compiler ( hhc.exe). If non-empty
-# doxygen will try to run the HTML help compiler on the generated index.hhp.
-# The file has to be specified with full path.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-HHC_LOCATION =
-
-# The GENERATE_CHI flag controls if a separate .chi index file is generated (
-# YES) or that it should be included in the master .chm file ( NO).
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-GENERATE_CHI = NO
-
-# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
-# and project file content.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_INDEX_ENCODING =
-
-# The BINARY_TOC flag controls whether a binary table of contents is generated (
-# YES) or a normal table of contents ( NO) in the .chm file.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members to
-# the table of contents of the HTML help documentation and to the tree view.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-TOC_EXPAND = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
-# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
-# (.qch) of the generated HTML documentation.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_QHP = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
-# the file name of the resulting .qch file. The path specified is relative to
-# the HTML output folder.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QCH_FILE =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
-# Project output. For more information please see Qt Help Project / Namespace
-# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_NAMESPACE = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
-# Help Project output. For more information please see Qt Help Project / Virtual
-# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
-# folders).
-# The default value is: doc.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_VIRTUAL_FOLDER = doc
-
-# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
-# filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_NAME =
-
-# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_ATTRS =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's filter section matches. Qt Help Project / Filter Attributes (see:
-# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_SECT_FILTER_ATTRS =
-
-# The QHG_LOCATION tag can be used to specify the location of Qt's
-# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
-# generated .qhp file.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHG_LOCATION =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
-# generated, together with the HTML files, they form an Eclipse help plugin. To
-# install this plugin and make it available under the help contents menu in
-# Eclipse, the contents of the directory containing the HTML and XML files needs
-# to be copied into the plugins directory of eclipse. The name of the directory
-# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
-# After copying Eclipse needs to be restarted before the help appears.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_ECLIPSEHELP = NO
-
-# A unique identifier for the Eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have this
-# name. Each documentation set should have its own identifier.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
-
-ECLIPSE_DOC_ID = org.doxygen.Project
-
-# If you want full control over the layout of the generated HTML pages it might
-# be necessary to disable the index and replace it with your own. The
-# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
-# of each HTML page. A value of NO enables the index and the value YES disables
-# it. Since the tabs in the index contain the same information as the navigation
-# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-DISABLE_INDEX = NO
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information. If the tag
-# value is set to YES, a side panel will be generated containing a tree-like
-# index structure (just like the one that is generated for HTML Help). For this
-# to work a browser that supports JavaScript, DHTML, CSS and frames is required
-# (i.e. any modern browser). Windows users are probably better off using the
-# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
-# further fine-tune the look of the index. As an example, the default style
-# sheet generated by doxygen has an example that shows how to put an image at
-# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
-# the same information as the tab index, you could consider setting
-# DISABLE_INDEX to YES when enabling this option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_TREEVIEW = YES
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
-# doxygen will group on one line in the generated HTML documentation.
-#
-# Note that a value of 0 will completely suppress the enum values from appearing
-# in the overview section.
-# Minimum value: 0, maximum value: 20, default value: 4.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-ENUM_VALUES_PER_LINE = 4
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
-# to set the initial width (in pixels) of the frame in which the tree is shown.
-# Minimum value: 0, maximum value: 1500, default value: 250.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-TREEVIEW_WIDTH = 250
-
-# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
-# external symbols imported via tag files in a separate window.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-EXT_LINKS_IN_WINDOW = NO
-
-# Use this tag to change the font size of LaTeX formulas included as images in
-# the HTML documentation. When you change the font size after a successful
-# doxygen run you need to manually remove any form_*.png images from the HTML
-# output directory to force them to be regenerated.
-# Minimum value: 8, maximum value: 50, default value: 10.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_FONTSIZE = 10
-
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are not
-# supported properly for IE 6.0, but are supported on all modern browsers.
-#
-# Note that when changing this option you need to delete any form_*.png files in
-# the HTML output directory before the changes have effect.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_TRANSPARENT = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
-# http://www.mathjax.org) which uses client side Javascript for the rendering
-# instead of using prerendered bitmaps. Use this if you do not have LaTeX
-# installed or if you want to formulas look prettier in the HTML output. When
-# enabled you may also need to install MathJax separately and configure the path
-# to it using the MATHJAX_RELPATH option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-USE_MATHJAX = NO
-
-# When MathJax is enabled you can set the default output format to be used for
-# the MathJax output. See the MathJax site (see:
-# http://docs.mathjax.org/en/latest/output.html) for more details.
-# Possible values are: HTML-CSS (which is slower, but has the best
-# compatibility), NativeMML (i.e. MathML) and SVG.
-# The default value is: HTML-CSS.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_FORMAT = HTML-CSS
-
-# When MathJax is enabled you need to specify the location relative to the HTML
-# output directory using the MATHJAX_RELPATH option. The destination directory
-# should contain the MathJax.js script. For instance, if the mathjax directory
-# is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
-# Content Delivery Network so you can quickly see the result without installing
-# MathJax. However, it is strongly recommended to install a local copy of
-# MathJax from http://www.mathjax.org before deployment.
-# The default value is: http://cdn.mathjax.org/mathjax/latest.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
-# extension names that should be enabled during MathJax rendering. For example
-# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_EXTENSIONS =
-
-# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
-# of code that will be used on startup of the MathJax code. See the MathJax site
-# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
-# example see the documentation.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_CODEFILE =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
-# the HTML output. The underlying search engine uses javascript and DHTML and
-# should work on any modern browser. Note that when using HTML help
-# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
-# there is already a search function so this one should typically be disabled.
-# For large projects the javascript based search engine can be slow, then
-# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
-# search using the keyboard; to jump to the search box use <access key> + S
-# (what the <access key> is depends on the OS and browser, but it is typically
-# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
-# key> to jump into the search results window, the results can be navigated
-# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
-# the search. The filter options can be selected when the cursor is inside the
-# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
-# to select a filter and <Enter> or <escape> to activate or cancel the filter
-# option.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-SEARCHENGINE = YES
-
-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a web server instead of a web client using Javascript. There
-# are two flavours of web server based searching depending on the
-# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
-# searching and an index file used by the script. When EXTERNAL_SEARCH is
-# enabled the indexing and searching needs to be provided by external tools. See
-# the section "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SERVER_BASED_SEARCH = NO
-
-# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
-# script for searching. Instead the search results are written to an XML file
-# which needs to be processed by an external indexer. Doxygen will invoke an
-# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
-# search results.
-#
-# Doxygen ships with an example indexer ( doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/).
-#
-# See the section "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH = NO
-
-# The SEARCHENGINE_URL should point to a search engine hosted by a web server
-# which will return the search results when EXTERNAL_SEARCH is enabled.
-#
-# Doxygen ships with an example indexer ( doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/). See the section "External Indexing and
-# Searching" for details.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHENGINE_URL =
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
-# search data is written to a file for indexing by an external tool. With the
-# SEARCHDATA_FILE tag the name of this file can be specified.
-# The default file is: searchdata.xml.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHDATA_FILE = searchdata.xml
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
-# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
-# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
-# projects and redirect the results back to the right project.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH_ID =
-
-# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
-# projects other than the one defined by this configuration file, but that are
-# all added to the same external search index. Each project needs to have a
-# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
-# to a relative location where the documentation can be found. The format is:
-# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTRA_SEARCH_MAPPINGS =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
-# The default value is: YES.
-
-GENERATE_LATEX = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_OUTPUT = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked.
-#
-# Note that when enabling USE_PDFLATEX this option is only used for generating
-# bitmaps for formulas in the HTML output, but not in the Makefile that is
-# written to the output directory.
-# The default file is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
-# index for LaTeX.
-# The default file is: makeindex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used by the
-# printer.
-# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
-# 14 inches) and executive (7.25 x 10.5 inches).
-# The default value is: a4.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PAPER_TYPE = a4
-
-# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
-# that should be included in the LaTeX output. To get the times font for
-# instance you can specify
-# EXTRA_PACKAGES=times
-# If left blank no extra packages will be included.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
-# generated LaTeX document. The header should contain everything until the first
-# chapter. If it is left blank doxygen will generate a standard header. See
-# section "Doxygen usage" for information on how to let doxygen write the
-# default header to a separate file.
-#
-# Note: Only use a user-defined header if you know what you are doing! The
-# following commands have a special meaning inside the header: $title,
-# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
-# replace them by respectively the title of the page, the current date and time,
-# only the current date, the version number of doxygen, the project name (see
-# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HEADER =
-
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
-# generated LaTeX document. The footer should contain everything after the last
-# chapter. If it is left blank doxygen will generate a standard footer.
-#
-# Note: Only use a user-defined footer if you know what you are doing!
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_FOOTER =
-
-# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the LATEX_OUTPUT output
-# directory. Note that the files will be copied as-is; there are no commands or
-# markers available.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EXTRA_FILES =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
-# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
-# contain links (just like the HTML output) instead of page references. This
-# makes the output suitable for online browsing using a PDF viewer.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PDF_HYPERLINKS = YES
-
-# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
-# the PDF file directly from the LaTeX files. Set this option to YES to get a
-# higher quality PDF documentation.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-USE_PDFLATEX = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
-# command to the generated LaTeX files. This will instruct LaTeX to keep running
-# if errors occur, instead of asking the user for help. This option is also used
-# when generating formulas in HTML.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BATCHMODE = NO
-
-# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
-# index chapters (such as File Index, Compound Index, etc.) in the output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HIDE_INDICES = NO
-
-# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
-# code with syntax highlighting in the LaTeX output.
-#
-# Note that which sources are shown also depends on other settings such as
-# SOURCE_BROWSER.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_SOURCE_CODE = NO
-
-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
-# bibliography, e.g. plainnat, or ieeetr. See
-# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
-# The default value is: plain.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BIB_STYLE = plain
-
-#---------------------------------------------------------------------------
-# Configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The
-# RTF output is optimized for Word 97 and may not look too pretty with other RTF
-# readers/editors.
-# The default value is: NO.
-
-GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: rtf.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
-# contain hyperlink fields. The RTF file will contain links (just like the HTML
-# output) instead of page references. This makes the output suitable for online
-# browsing using Word or some other Word compatible readers that support those
-# fields.
-#
-# Note: WordPad (write) and others do not support links.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's config
-# file, i.e. a series of assignments. You only have to provide replacements,
-# missing definitions are set to their default value.
-#
-# See also section "Doxygen usage" for information on how to generate the
-# default style sheet that doxygen normally uses.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an RTF document. Syntax is
-# similar to doxygen's config file. A template extensions file can be generated
-# using doxygen -e rtf extensionFile.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_EXTENSIONS_FILE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for
-# classes and files.
-# The default value is: NO.
-
-GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it. A directory man3 will be created inside the directory specified by
-# MAN_OUTPUT.
-# The default directory is: man.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to the generated
-# man pages. In case the manual section does not start with a number, the number
-# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
-# optional.
-# The default value is: .3.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_EXTENSION = .3
-
-# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
-# will generate one additional man file for each entity documented in the real
-# man page(s). These additional files only source the real man page, but without
-# them the man command would be unable to find the correct page.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_LINKS = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that
-# captures the structure of the code including all documentation.
-# The default value is: NO.
-
-GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: xml.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_OUTPUT = xml
-
-# The XML_SCHEMA tag can be used to specify a XML schema, which can be used by a
-# validating XML parser to check the syntax of the XML files.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify a XML DTD, which can be used by a
-# validating XML parser to check the syntax of the XML files.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_DTD =
-
-# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
-# listings (including syntax highlighting and cross-referencing information) to
-# the XML output. Note that enabling this will significantly increase the size
-# of the XML output.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_PROGRAMLISTING = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to the DOCBOOK output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files
-# that can be used to generate PDF.
-# The default value is: NO.
-
-GENERATE_DOCBOOK = NO
-
-# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
-# front of it.
-# The default directory is: docbook.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_OUTPUT = docbook
-
-#---------------------------------------------------------------------------
-# Configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen
-# Definitions (see http://autogen.sf.net) file that captures the structure of
-# the code including all documentation. Note that this feature is still
-# experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_AUTOGEN_DEF = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module
-# file that captures the structure of the code including all documentation.
-#
-# Note that this feature is still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary
-# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
-# output from the Perl module output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely
-# formatted so it can be parsed by a human reader. This is useful if you want to
-# understand what is going on. On the other hand, if this tag is set to NO the
-# size of the Perl module output will be much smaller and Perl will parse it
-# just the same.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file are
-# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
-# so different doxyrules.make files included by the same Makefile don't
-# overwrite each other's variables.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all
-# C-preprocessor directives found in the sources and include files.
-# The default value is: YES.
-
-ENABLE_PREPROCESSING = NO
-
-# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names
-# in the source code. If set to NO only conditional compilation will be
-# performed. Macro expansion can be done in a controlled way by setting
-# EXPAND_ONLY_PREDEF to YES.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-MACRO_EXPANSION = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
-# the macro expansion is limited to the macros specified with the PREDEFINED and
-# EXPAND_AS_DEFINED tags.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_ONLY_PREDEF = NO
-
-# If the SEARCH_INCLUDES tag is set to YES the includes files in the
-# INCLUDE_PATH will be searched if a #include is found.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by the
-# preprocessor.
-# This tag requires that the tag SEARCH_INCLUDES is set to YES.
-
-INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will be
-# used.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that are
-# defined before the preprocessor is started (similar to the -D option of e.g.
-# gcc). The argument of the tag is a list of macros of the form: name or
-# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
-# is assumed. To prevent a macro definition from being undefined via #undef or
-# recursively expanded use the := operator instead of the = operator.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-PREDEFINED =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
-# tag can be used to specify a list of macro names that should be expanded. The
-# macro definition that is found in the sources will be used. Use the PREDEFINED
-# tag if you want to use a different macro definition that overrules the
-# definition found in the source code.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
-# remove all refrences to function-like macros that are alone on a line, have an
-# all uppercase name, and do not end with a semicolon. Such function macros are
-# typically used for boiler-plate code, and will confuse the parser if not
-# removed.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SKIP_FUNCTION_MACROS = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES tag can be used to specify one or more tag files. For each tag
-# file the location of the external documentation should be added. The format of
-# a tag file without this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where loc1 and loc2 can be relative or absolute paths or URLs. See the
-# section "Linking to external documentation" for more information about the use
-# of tag files.
-# Note: Each tag file must have an unique name (where the name does NOT include
-# the path). If a tag file is not located in the directory in which doxygen is
-# run, you must also specify the path to the tagfile here.
-
-TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
-# tag file that is based on the input files it reads. See section "Linking to
-# external documentation" for more information about the usage of tag files.
-
-GENERATE_TAGFILE =
-
-# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
-# class index. If set to NO only the inherited external classes will be listed.
-# The default value is: NO.
-
-ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in
-# the modules index. If set to NO, only the current project's groups will be
-# listed.
-# The default value is: YES.
-
-EXTERNAL_GROUPS = NO
-
-# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
-# the related pages index. If set to NO, only the current project's pages will
-# be listed.
-# The default value is: YES.
-
-EXTERNAL_PAGES = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of 'which perl').
-# The default file (with absolute path) is: /usr/bin/perl.
-
-PERL_PATH = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram
-# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
-# NO turns the diagrams off. Note that this option also works with HAVE_DOT
-# disabled, but it is recommended to install and use dot, since it yields more
-# powerful graphs.
-# The default value is: YES.
-
-CLASS_DIAGRAMS = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see:
-# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH =
-
-# If set to YES, the inheritance and collaboration graphs will hide inheritance
-# and usage relations if the target is undocumented or is not a class.
-# The default value is: YES.
-
-HIDE_UNDOC_RELATIONS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz (see:
-# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
-# Bell Labs. The other options in this section have no effect if this option is
-# set to NO
-# The default value is: NO.
-
-HAVE_DOT = NO
-
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
-# to run in parallel. When set to 0 doxygen will base this on the number of
-# processors available in the system. You can set it explicitly to a value
-# larger than 0 to get control over the balance between CPU load and processing
-# speed.
-# Minimum value: 0, maximum value: 32, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_NUM_THREADS = 0
-
-# When you want a differently looking font n the dot files that doxygen
-# generates you can specify the font name using DOT_FONTNAME. You need to make
-# sure dot is able to find the font, which can be done by putting it in a
-# standard location or by setting the DOTFONTPATH environment variable or by
-# setting DOT_FONTPATH to the directory containing the font.
-# The default value is: Helvetica.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTNAME = Helvetica
-
-# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
-# dot graphs.
-# Minimum value: 4, maximum value: 24, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTSIZE = 10
-
-# By default doxygen will tell dot to use the default font as specified with
-# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
-# the path where dot can find it using this tag.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTPATH =
-
-# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
-# each documented class showing the direct and indirect inheritance relations.
-# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
-# graph for each documented class showing the direct and indirect implementation
-# dependencies (inheritance, containment, and class references variables) of the
-# class with other documented classes.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-COLLABORATION_GRAPH = YES
-
-# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
-# groups, showing the direct groups dependencies.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GROUP_GRAPHS = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LOOK = NO
-
-# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
-# class node. If there are many fields or methods and many nodes the graph may
-# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
-# number of items for each type to make the size more manageable. Set this to 0
-# for no limit. Note that the threshold may be exceeded by 50% before the limit
-# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
-# but if the number exceeds 15, the total amount of fields shown is limited to
-# 10.
-# Minimum value: 0, maximum value: 100, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LIMIT_NUM_FIELDS = 10
-
-# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
-# collaboration graphs will show the relations between templates and their
-# instances.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-TEMPLATE_RELATIONS = NO
-
-# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
-# YES then doxygen will generate a graph for each documented file showing the
-# direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDE_GRAPH = YES
-
-# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
-# set to YES then doxygen will generate a graph for each documented file showing
-# the direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALL_GRAPH = NO
-
-# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALLER_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
-# hierarchy of all classes instead of a textual one.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GRAPHICAL_HIERARCHY = YES
-
-# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
-# dependencies a directory has on other directories in a graphical way. The
-# dependency relations are determined by the #include relations between the
-# files in the directories.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DIRECTORY_GRAPH = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot.
-# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
-# to make the SVG files visible in IE 9+ (other browsers do not have this
-# requirement).
-# Possible values are: png, jpg, gif and svg.
-# The default value is: png.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_IMAGE_FORMAT = png
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
-#
-# Note that this requires a modern browser other than Internet Explorer. Tested
-# and working are Firefox, Chrome, Safari, and Opera.
-# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
-# the SVG files visible. Older versions of IE do not have SVG support.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INTERACTIVE_SVG = NO
-
-# The DOT_PATH tag can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the \dotfile
-# command).
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOTFILE_DIRS =
-
-# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the \mscfile
-# command).
-
-MSCFILE_DIRS =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
-# that will be shown in the graph. If the number of nodes in a graph becomes
-# larger than this value, doxygen will truncate the graph, which is visualized
-# by representing a node as a red box. Note that doxygen if the number of direct
-# children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
-# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-# Minimum value: 0, maximum value: 10000, default value: 50.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_GRAPH_MAX_NODES = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
-# generated by dot. A depth value of 3 means that only nodes reachable from the
-# root by following a path via at most 3 edges will be shown. Nodes that lay
-# further from the root node will be omitted. Note that setting this option to 1
-# or 2 may greatly reduce the computation time needed for large code bases. Also
-# note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-# Minimum value: 0, maximum value: 1000, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-MAX_DOT_GRAPH_DEPTH = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not seem
-# to support this out of the box.
-#
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_TRANSPARENT = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10) support
-# this, this feature is disabled by default.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_MULTI_TARGETS = NO
-
-# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
-# explaining the meaning of the various boxes and arrows in the dot generated
-# graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
-# files that are used to generate the various graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_CLEANUP = YES
diff --git a/third_party/flatbuffers/docs/source/doxygen_layout.xml b/third_party/flatbuffers/docs/source/doxygen_layout.xml
deleted file mode 100644
index 77866df..0000000
--- a/third_party/flatbuffers/docs/source/doxygen_layout.xml
+++ /dev/null
@@ -1,234 +0,0 @@
-<!-- Copyright 2015 Google Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
-<doxygenlayout version="1.0">
- <navindex>
- <tab type="mainpage" visible="no" title=""/>
- <tab type="usergroup" url="" title="Programmer's Guide">
- <tab type="user" url="@ref flatbuffers_guide_building"
- title="Building"/>
- <tab type="user" url="@ref flatbuffers_guide_tutorial" title="Tutorial"/>
- <tab type="user" url="@ref flatbuffers_guide_using_schema_compiler"
- title="Using the schema compiler"/>
- <tab type="user" url="@ref flatbuffers_guide_writing_schema"
- title="Writing a schema"/>
- <tab type="user" url="@ref flatbuffers_guide_use_cpp"
- title="Use in C++"/>
- <tab type="user" url="@ref flatbuffers_guide_use_c"
- title="Use in C"/>
- <tab type="user" url="@ref flatbuffers_guide_use_go"
- title="Use in Go"/>
- <tab type="user" url="@ref flatbuffers_guide_use_java_c-sharp"
- title="Use in Java/C#"/>
- <tab type="user" url="@ref flatbuffers_guide_use_javascript"
- title="Use in JavaScript"/>
- <tab type="user" url="@ref flatbuffers_guide_use_php"
- title="Use in PHP"/>
- <tab type="user" url="@ref flatbuffers_guide_use_python"
- title="Use in Python"/>
- <tab type="user" url="@ref flexbuffers"
- title="Schema-less version"/>
- </tab>
- <tab type="user" url="@ref flatbuffers_support"
- title="Platform / Language / Feature support"/>
- <tab type="user" url="@ref flatbuffers_benchmarks"
- title="Benchmarks"/>
- <tab type="user" url="@ref flatbuffers_white_paper"
- title="FlatBuffers white paper"/>
- <tab type="user" url="@ref flatbuffers_internals"
- title="FlatBuffers internals"/>
- <tab type="user" url="@ref flatbuffers_grammar"
- title="Grammar of the schema language"/>
- <tab type="usergroup" url="" title="API Reference">
- <tab type="modules" visible="yes" title="APIs" intro=""/>
- <tab type="classes" visible="yes" title="">
- <tab type="classlist" visible="yes" title="" intro=""/>
- <tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
- <tab type="hierarchy" visible="yes" title="" intro=""/>
- <tab type="classmembers" visible="yes" title="" intro=""/>
- </tab>
- </tab>
- <tab type="user" url="@ref contributing" title="Contributing"/>
- </navindex>
-
- <!-- Layout definition for a class page -->
- <class>
- <briefdescription visible="yes"/>
- <includes visible="$SHOW_INCLUDE_FILES"/>
- <inheritancegraph visible="$CLASS_GRAPH"/>
- <collaborationgraph visible="$COLLABORATION_GRAPH"/>
- <detaileddescription title=""/>
- <memberdecl>
- <nestedclasses visible="yes" title=""/>
- <publictypes title=""/>
- <services title=""/>
- <interfaces title=""/>
- <publicslots title=""/>
- <signals title=""/>
- <publicmethods title=""/>
- <publicstaticmethods title=""/>
- <publicattributes title=""/>
- <publicstaticattributes title=""/>
- <protectedtypes title=""/>
- <protectedslots title=""/>
- <protectedmethods title=""/>
- <protectedstaticmethods title=""/>
- <protectedattributes title=""/>
- <protectedstaticattributes title=""/>
- <packagetypes title=""/>
- <packagemethods title=""/>
- <packagestaticmethods title=""/>
- <packageattributes title=""/>
- <packagestaticattributes title=""/>
- <properties title=""/>
- <events title=""/>
- <privatetypes title=""/>
- <privateslots title=""/>
- <privatemethods title=""/>
- <privatestaticmethods title=""/>
- <privateattributes title=""/>
- <privatestaticattributes title=""/>
- <friends title=""/>
- <related title="" subtitle=""/>
- <membergroups visible="yes"/>
- </memberdecl>
- <memberdef>
- <inlineclasses title=""/>
- <typedefs title=""/>
- <enums title=""/>
- <services title=""/>
- <interfaces title=""/>
- <constructors title=""/>
- <functions title=""/>
- <related title=""/>
- <variables title=""/>
- <properties title=""/>
- <events title=""/>
- </memberdef>
- <allmemberslink visible="yes"/>
- <usedfiles visible="$SHOW_USED_FILES"/>
- <authorsection visible="yes"/>
- </class>
-
- <!-- Layout definition for a namespace page -->
- <namespace>
- <briefdescription visible="yes"/>
- <memberdecl>
- <nestednamespaces visible="yes" title=""/>
- <constantgroups visible="yes" title=""/>
- <classes visible="yes" title=""/>
- <typedefs title=""/>
- <enums title=""/>
- <functions title=""/>
- <variables title=""/>
- <membergroups visible="yes"/>
- </memberdecl>
- <detaileddescription title=""/>
- <memberdef>
- <inlineclasses title=""/>
- <typedefs title=""/>
- <enums title=""/>
- <functions title=""/>
- <variables title=""/>
- </memberdef>
- <authorsection visible="yes"/>
- </namespace>
-
- <!-- Layout definition for a file page -->
- <file>
- <briefdescription visible="yes"/>
- <includes visible="$SHOW_INCLUDE_FILES"/>
- <includegraph visible="$INCLUDE_GRAPH"/>
- <includedbygraph visible="$INCLUDED_BY_GRAPH"/>
- <sourcelink visible="yes"/>
- <detaileddescription title=""/>
- <memberdecl>
- <classes visible="yes" title=""/>
- <namespaces visible="yes" title=""/>
- <constantgroups visible="yes" title=""/>
- <defines title=""/>
- <typedefs title=""/>
- <enums title=""/>
- <functions title=""/>
- <variables title=""/>
- <membergroups visible="yes"/>
- </memberdecl>
- <memberdef>
- <inlineclasses title=""/>
- <defines title=""/>
- <typedefs title=""/>
- <enums title=""/>
- <functions title=""/>
- <variables title=""/>
- </memberdef>
- <authorsection/>
- </file>
-
- <!-- Layout definition for a group page -->
- <group>
- <briefdescription visible="yes"/>
- <groupgraph visible="$GROUP_GRAPHS"/>
- <detaileddescription title=""/>
- <memberdecl>
- <nestedgroups visible="yes" title=""/>
- <dirs visible="yes" title=""/>
- <files visible="yes" title=""/>
- <namespaces visible="yes" title=""/>
- <classes visible="yes" title=""/>
- <defines title=""/>
- <typedefs title=""/>
- <enums title=""/>
- <enumvalues title=""/>
- <functions title=""/>
- <variables title=""/>
- <signals title=""/>
- <publicslots title=""/>
- <protectedslots title=""/>
- <privateslots title=""/>
- <events title=""/>
- <properties title=""/>
- <friends title=""/>
- <membergroups visible="yes"/>
- </memberdecl>
- <memberdef>
- <pagedocs/>
- <inlineclasses title=""/>
- <defines title=""/>
- <typedefs title=""/>
- <enums title=""/>
- <enumvalues title=""/>
- <functions title=""/>
- <variables title=""/>
- <signals title=""/>
- <publicslots title=""/>
- <protectedslots title=""/>
- <privateslots title=""/>
- <events title=""/>
- <properties title=""/>
- <friends title=""/>
- </memberdef>
- <authorsection visible="yes"/>
- </group>
-
- <!-- Layout definition for a directory page -->
- <directory>
- <briefdescription visible="yes"/>
- <directorygraph visible="yes"/>
- <memberdecl>
- <dirs visible="yes"/>
- <files visible="yes"/>
- </memberdecl>
- <detaileddescription title=""/>
- </directory>
-</doxygenlayout>
diff --git a/third_party/flatbuffers/docs/source/groups b/third_party/flatbuffers/docs/source/groups
deleted file mode 100644
index e0d97a7..0000000
--- a/third_party/flatbuffers/docs/source/groups
+++ /dev/null
@@ -1,20 +0,0 @@
-/// @defgroup flatbuffers_cpp_api C++ API
-/// @brief FlatBuffers API for C++
-
-/// @defgroup flatbuffers_csharp_api C# API
-/// @brief FlatBuffers API for C#
-
-/// @defgroup flatbuffers_go_api Go API
-/// @brief FlatBuffers API for Go
-
-/// @defgroup flatbuffers_java_api Java API
-/// @brief FlatBuffers API for Java
-
-/// @defgroup flatbuffers_javascript_api JavaScript API
-/// @brief FlatBuffers API for JavaScript
-
-/// @defgroup flatbuffers_php_api PHP API
-/// @brief FlatBuffers API for PHP
-
-/// @defgroup flatbuffers_python_api Python API
-/// @brief FlatBuffers API for Python
diff --git a/third_party/flatbuffers/docs/source/style.css b/third_party/flatbuffers/docs/source/style.css
deleted file mode 100644
index 6045a97..0000000
--- a/third_party/flatbuffers/docs/source/style.css
+++ /dev/null
@@ -1,396 +0,0 @@
-body,
-#projectname,
-table,
-div,
-p,
-dl,
-.title,
-.tabs,
-.tabs2,
-.tabs3,
-#nav-tree .label {
- font-family: roboto, sans-serif;
-}
-
-#commonprojectlogo {
- padding: 5px 0px 5px 15px;
-}
-
-#projectname {
- color: #00bcd4;
- font-size: 280%;
- padding: 15px 0px;
- font-weight: 300;
-}
-
-#titlearea {
- border-bottom: 2px solid #e5e5e5;
-}
-
-.title {
- color: #212121;
- font: 300 34px/40px Roboto,sans-serif;
-}
-
-#nav-tree {
- background-color: #fff;
-}
-
-#navrow1, #navrow2 {
- border-bottom: 2px solid #e7e7e7;
-}
-
-.tabs, .tabs2, .tabs3 {
- font-size: 14px;
-}
-
-.tabs,
-.tabs2,
-.tabs3,
-.tablist li,
-.tablist li.current a {
- background-image: none;
-}
-
-.tablist {
- list-style: none;
-}
-
-.tablist li, .tablist li p {
- margin: 0;
-}
-
-.tablist li a,
-.tablist li.current a {
- color: #757575;
- text-shadow: none;
-}
-
-.tablist li.current a {
- background: #00bcd4;
- color: #fff;
-}
-
-.tablist a {
- background-image: none;
- border-right: 2px solid #e5e5e5;
- font-weight: normal;
-}
-
-.tablist a:hover,
-.tablist li.current a:hover {
- background-image: none;
- text-decoration: underline;
- text-shadow: none;
-}
-
-.tablist a:hover {
- color: #00bcd4;
-}
-
-.tablist li.current a:hover {
- color: #fff;
-}
-
-div.header {
- background-color: #f7f7f7;
- background-image: none;
- border-bottom: none;
-}
-
-#MSearchBox {
- border: 1px solid #ccc;
- border-radius: 5px;
- display: inline-block;
- height: 20px;
- right: 10px;
-}
-
-#MSearchBox .left,
-#MSearchBox .right,
-#MSearchField {
- background: none;
-}
-
-a.SelectItem:hover {
- background-color: #00bcd4;
-}
-
-#nav-tree {
- background-image: none;
-}
-
-#nav-tree .selected {
- background-image: none;
- text-shadow: none;
- background-color: #f7f7f7;
-}
-
-#nav-tree a {
- color: #212121;
-}
-
-#nav-tree .selected a {
- color: #0288d1;
-}
-
-#nav-tree .item:hover {
- background-color: #f7f7f7;
-}
-
-#nav-tree .item:hover a {
- color: #0288d1;
-}
-
-#nav-tree .label {
- font-size: 13px;
-}
-
-#nav-sync {
- display: none;
-}
-
-.ui-resizable-e {
- background: #ebebeb;
- border-left: 1px solid #ddd;
- border-right: 1px solid #ddd;
-}
-
-.contents tr td .image {
- margin-top: 24px;
-}
-
-.image {
- text-align: left;
- margin-bottom: 8px;
-}
-
-a:link,
-a:visited,
-.contents a:link,
-.contents a:visited,
-a.el {
- color: #0288d1;
- font-weight: normal;
- text-decoration: none;
-}
-
-div.contents {
- margin-right: 12px;
-}
-
-.directory tr, .directory tr.even {
- background: #7cb342;
- border-top: 1px solid #7cb342;
-}
-
-.directory td,
-.directory td.entry,
-.directory td.desc {
- background: rgba(255,255,255,.95);
- border-left: none;
- color: #212121;
- padding-top: 10px;
- padding-bottom: 10px;
- padding-left: 8px;
- padding-right: 8px;
-}
-
-.directory tr#row_0_ {
- border-top-color: #7cb342;
-}
-
-.directory tr#row_0_ td {
- background: #7cb342;
- color: #fff;
- font-size: 18px;
-}
-
-.memSeparator {
- border-bottom: none;
-}
-
-.memitem {
- background: #7cb342;
-}
-
-.memproto, dl.reflist dt {
- background: #7cb342;
- background-image: none;
- border: none;
- box-shadow: none;
- -webkit-box-shadow: none;
- color: #fff;
- text-shadow: none;
-}
-
-.memproto .memtemplate,
-.memproto a.el,
-.memproto .paramname {
- color: #fff;
-}
-
-.memdoc, dl.reflist dd {
- border: none;
- background-color: rgba(255,255,255,.95);
- background-image: none;
- box-shadow: none;
- -webkit-box-shadow: none;
- -webkit-border-bottom-left-radius: 0;
- -webkit-border-bottom-right-radius: 0;
-}
-
-.memitem, table.doxtable, table.memberdecls {
- margin-bottom: 24px;
-}
-
-table.doxtable th {
- background: #7cb342;
-}
-
-table.doxtable tr {
- background: #7cb342;
- border-top: 1px solid #7cb342;
-}
-
-table.doxtable td, table.doxtable th {
- border: none;
- padding: 10px 8px;
-}
-
-table.doxtable td {
- background-color: rgba(255,255,255,.95);
-}
-
-.memberdecls {
- background: #7cb342;
- border-top: 1px solid #7cb342;
-}
-
-.memberdecls .heading h2 {
- border-bottom: none;
- color: #fff;
- font-size: 110%;
- font-weight: bold;
- margin: 0 0 0 6px;
-}
-
-.memberdecls tr:not(.heading) td {
- background-color: rgba(255,255,255,.95);
-}
-
-h1, h2, h2.groupheader, h3, h4, h5, h6 {
- color: #212121;
-}
-
-h1 {
- border-bottom: 1px solid #ebebeb;
- font: 400 28px/32px Roboto,sans-serif;
- letter-spacing: -.01em;
- margin: 40px 0 20px;
- padding-bottom: 3px;
-}
-
-h2, h2.groupheader {
- border-bottom: 1px solid #ebebeb;
- font: 400 23px/32px Roboto,sans-serif;
- letter-spacing: -.01em;
- margin: 40px 0 20px;
- padding-bottom: 3px;
-}
-
-h3 {
- font: 500 20px/32px Roboto,sans-serif;
- margin: 32px 0 16px;
-}
-
-h4 {
- font: 500 18px/32px Roboto,sans-serif;
- margin: 32px 0 16px;
-}
-
-ol,
-ul {
- margin: 0;
- padding-left: 40px;
-}
-
-ol {
- list-style: decimal outside;
-}
-
-ol ol {
- list-style-type: lower-alpha;
-}
-
-ol ol ol {
- list-style-type: lower-roman;
-}
-
-ul {
- list-style: disc outside;
-}
-
-li,
-li p {
- margin: 8px 0;
- padding: 0;
-}
-
-div.summary
-{
- float: none;
- font-size: 8pt;
- padding-left: 5px;
- width: calc(100% - 10px);
- text-align: left;
- display: block;
-}
-
-div.ingroups {
- margin-top: 8px;
-}
-
-div.fragment {
- border: 1px solid #ddd;
- color: #455a64;
- font: 14px/20px Roboto Mono, monospace;
- padding: 8px;
-}
-
-div.line {
- line-height: 1.5;
- font-size: inherit;
-}
-
-code, pre {
- color: #455a64;
- background: #f7f7f7;
- font: 400 100% Roboto Mono,monospace;
- padding: 1px 4px;
-}
-
-span.preprocessor, span.comment {
- color: #0b8043;
-}
-
-span.keywordtype {
- color: #0097a7;
-}
-
-.paramname {
- color: #ef6c00;
-}
-
-.memTemplParams {
- color: #ef6c00;
-}
-
-span.mlabel {
- background: rgba(255,255,255,.25);
- border: none;
-}
-
-blockquote {
- border: 1px solid #ddd;
-}
diff --git a/third_party/flatbuffers/go/builder.go b/third_party/flatbuffers/go/builder.go
deleted file mode 100644
index cf21dd5..0000000
--- a/third_party/flatbuffers/go/builder.go
+++ /dev/null
@@ -1,747 +0,0 @@
-package flatbuffers
-
-// Builder is a state machine for creating FlatBuffer objects.
-// Use a Builder to construct object(s) starting from leaf nodes.
-//
-// A Builder constructs byte buffers in a last-first manner for simplicity and
-// performance.
-type Builder struct {
- // `Bytes` gives raw access to the buffer. Most users will want to use
- // FinishedBytes() instead.
- Bytes []byte
-
- minalign int
- vtable []UOffsetT
- objectEnd UOffsetT
- vtables []UOffsetT
- head UOffsetT
- nested bool
- finished bool
-}
-
-// NewBuilder initializes a Builder of size `initial_size`.
-// The internal buffer is grown as needed.
-func NewBuilder(initialSize int) *Builder {
- if initialSize <= 0 {
- initialSize = 0
- }
-
- b := &Builder{}
- b.Bytes = make([]byte, initialSize)
- b.head = UOffsetT(initialSize)
- b.minalign = 1
- b.vtables = make([]UOffsetT, 0, 16) // sensible default capacity
-
- return b
-}
-
-// Reset truncates the underlying Builder buffer, facilitating alloc-free
-// reuse of a Builder. It also resets bookkeeping data.
-func (b *Builder) Reset() {
- if b.Bytes != nil {
- b.Bytes = b.Bytes[:cap(b.Bytes)]
- }
-
- if b.vtables != nil {
- b.vtables = b.vtables[:0]
- }
-
- if b.vtable != nil {
- b.vtable = b.vtable[:0]
- }
-
- b.head = UOffsetT(len(b.Bytes))
- b.minalign = 1
- b.nested = false
- b.finished = false
-}
-
-// FinishedBytes returns a pointer to the written data in the byte buffer.
-// Panics if the builder is not in a finished state (which is caused by calling
-// `Finish()`).
-func (b *Builder) FinishedBytes() []byte {
- b.assertFinished()
- return b.Bytes[b.Head():]
-}
-
-// StartObject initializes bookkeeping for writing a new object.
-func (b *Builder) StartObject(numfields int) {
- b.assertNotNested()
- b.nested = true
-
- // use 32-bit offsets so that arithmetic doesn't overflow.
- if cap(b.vtable) < numfields || b.vtable == nil {
- b.vtable = make([]UOffsetT, numfields)
- } else {
- b.vtable = b.vtable[:numfields]
- for i := 0; i < len(b.vtable); i++ {
- b.vtable[i] = 0
- }
- }
-
- b.objectEnd = b.Offset()
- b.minalign = 1
-}
-
-// WriteVtable serializes the vtable for the current object, if applicable.
-//
-// Before writing out the vtable, this checks pre-existing vtables for equality
-// to this one. If an equal vtable is found, point the object to the existing
-// vtable and return.
-//
-// Because vtable values are sensitive to alignment of object data, not all
-// logically-equal vtables will be deduplicated.
-//
-// A vtable has the following format:
-// <VOffsetT: size of the vtable in bytes, including this value>
-// <VOffsetT: size of the object in bytes, including the vtable offset>
-// <VOffsetT: offset for a field> * N, where N is the number of fields in
-// the schema for this type. Includes deprecated fields.
-// Thus, a vtable is made of 2 + N elements, each SizeVOffsetT bytes wide.
-//
-// An object has the following format:
-// <SOffsetT: offset to this object's vtable (may be negative)>
-// <byte: data>+
-func (b *Builder) WriteVtable() (n UOffsetT) {
- // Prepend a zero scalar to the object. Later in this function we'll
- // write an offset here that points to the object's vtable:
- b.PrependSOffsetT(0)
-
- objectOffset := b.Offset()
- existingVtable := UOffsetT(0)
-
- // Search backwards through existing vtables, because similar vtables
- // are likely to have been recently appended. See
- // BenchmarkVtableDeduplication for a case in which this heuristic
- // saves about 30% of the time used in writing objects with duplicate
- // tables.
- for i := len(b.vtables) - 1; i >= 0; i-- {
- // Find the other vtable, which is associated with `i`:
- vt2Offset := b.vtables[i]
- vt2Start := len(b.Bytes) - int(vt2Offset)
- vt2Len := GetVOffsetT(b.Bytes[vt2Start:])
-
- metadata := VtableMetadataFields * SizeVOffsetT
- vt2End := vt2Start + int(vt2Len)
- vt2 := b.Bytes[vt2Start+metadata : vt2End]
-
- // Compare the other vtable to the one under consideration.
- // If they are equal, store the offset and break:
- if vtableEqual(b.vtable, objectOffset, vt2) {
- existingVtable = vt2Offset
- break
- }
- }
-
- if existingVtable == 0 {
- // Did not find a vtable, so write this one to the buffer.
-
- // Write out the current vtable in reverse , because
- // serialization occurs in last-first order:
- for i := len(b.vtable) - 1; i >= 0; i-- {
- var off UOffsetT
- if b.vtable[i] != 0 {
- // Forward reference to field;
- // use 32bit number to assert no overflow:
- off = objectOffset - b.vtable[i]
- }
-
- b.PrependVOffsetT(VOffsetT(off))
- }
-
- // The two metadata fields are written last.
-
- // First, store the object bytesize:
- objectSize := objectOffset - b.objectEnd
- b.PrependVOffsetT(VOffsetT(objectSize))
-
- // Second, store the vtable bytesize:
- vBytes := (len(b.vtable) + VtableMetadataFields) * SizeVOffsetT
- b.PrependVOffsetT(VOffsetT(vBytes))
-
- // Next, write the offset to the new vtable in the
- // already-allocated SOffsetT at the beginning of this object:
- objectStart := SOffsetT(len(b.Bytes)) - SOffsetT(objectOffset)
- WriteSOffsetT(b.Bytes[objectStart:],
- SOffsetT(b.Offset())-SOffsetT(objectOffset))
-
- // Finally, store this vtable in memory for future
- // deduplication:
- b.vtables = append(b.vtables, b.Offset())
- } else {
- // Found a duplicate vtable.
-
- objectStart := SOffsetT(len(b.Bytes)) - SOffsetT(objectOffset)
- b.head = UOffsetT(objectStart)
-
- // Write the offset to the found vtable in the
- // already-allocated SOffsetT at the beginning of this object:
- WriteSOffsetT(b.Bytes[b.head:],
- SOffsetT(existingVtable)-SOffsetT(objectOffset))
- }
-
- b.vtable = b.vtable[:0]
- return objectOffset
-}
-
-// EndObject writes data necessary to finish object construction.
-func (b *Builder) EndObject() UOffsetT {
- b.assertNested()
- n := b.WriteVtable()
- b.nested = false
- return n
-}
-
-// Doubles the size of the byteslice, and copies the old data towards the
-// end of the new byteslice (since we build the buffer backwards).
-func (b *Builder) growByteBuffer() {
- if (int64(len(b.Bytes)) & int64(0xC0000000)) != 0 {
- panic("cannot grow buffer beyond 2 gigabytes")
- }
- newLen := len(b.Bytes) * 2
- if newLen == 0 {
- newLen = 1
- }
-
- if cap(b.Bytes) >= newLen {
- b.Bytes = b.Bytes[:newLen]
- } else {
- extension := make([]byte, newLen-len(b.Bytes))
- b.Bytes = append(b.Bytes, extension...)
- }
-
- middle := newLen / 2
- copy(b.Bytes[middle:], b.Bytes[:middle])
-}
-
-// Head gives the start of useful data in the underlying byte buffer.
-// Note: unlike other functions, this value is interpreted as from the left.
-func (b *Builder) Head() UOffsetT {
- return b.head
-}
-
-// Offset relative to the end of the buffer.
-func (b *Builder) Offset() UOffsetT {
- return UOffsetT(len(b.Bytes)) - b.head
-}
-
-// Pad places zeros at the current offset.
-func (b *Builder) Pad(n int) {
- for i := 0; i < n; i++ {
- b.PlaceByte(0)
- }
-}
-
-// Prep prepares to write an element of `size` after `additional_bytes`
-// have been written, e.g. if you write a string, you need to align such
-// the int length field is aligned to SizeInt32, and the string data follows it
-// directly.
-// If all you need to do is align, `additionalBytes` will be 0.
-func (b *Builder) Prep(size, additionalBytes int) {
- // Track the biggest thing we've ever aligned to.
- if size > b.minalign {
- b.minalign = size
- }
- // Find the amount of alignment needed such that `size` is properly
- // aligned after `additionalBytes`:
- alignSize := (^(len(b.Bytes) - int(b.Head()) + additionalBytes)) + 1
- alignSize &= (size - 1)
-
- // Reallocate the buffer if needed:
- for int(b.head) <= alignSize+size+additionalBytes {
- oldBufSize := len(b.Bytes)
- b.growByteBuffer()
- b.head += UOffsetT(len(b.Bytes) - oldBufSize)
- }
- b.Pad(alignSize)
-}
-
-// PrependSOffsetT prepends an SOffsetT, relative to where it will be written.
-func (b *Builder) PrependSOffsetT(off SOffsetT) {
- b.Prep(SizeSOffsetT, 0) // Ensure alignment is already done.
- if !(UOffsetT(off) <= b.Offset()) {
- panic("unreachable: off <= b.Offset()")
- }
- off2 := SOffsetT(b.Offset()) - off + SOffsetT(SizeSOffsetT)
- b.PlaceSOffsetT(off2)
-}
-
-// PrependUOffsetT prepends an UOffsetT, relative to where it will be written.
-func (b *Builder) PrependUOffsetT(off UOffsetT) {
- b.Prep(SizeUOffsetT, 0) // Ensure alignment is already done.
- if !(off <= b.Offset()) {
- panic("unreachable: off <= b.Offset()")
- }
- off2 := b.Offset() - off + UOffsetT(SizeUOffsetT)
- b.PlaceUOffsetT(off2)
-}
-
-// StartVector initializes bookkeeping for writing a new vector.
-//
-// A vector has the following format:
-// <UOffsetT: number of elements in this vector>
-// <T: data>+, where T is the type of elements of this vector.
-func (b *Builder) StartVector(elemSize, numElems, alignment int) UOffsetT {
- b.assertNotNested()
- b.nested = true
- b.Prep(SizeUint32, elemSize*numElems)
- b.Prep(alignment, elemSize*numElems) // Just in case alignment > int.
- return b.Offset()
-}
-
-// EndVector writes data necessary to finish vector construction.
-func (b *Builder) EndVector(vectorNumElems int) UOffsetT {
- b.assertNested()
-
- // we already made space for this, so write without PrependUint32
- b.PlaceUOffsetT(UOffsetT(vectorNumElems))
-
- b.nested = false
- return b.Offset()
-}
-
-// CreateString writes a null-terminated string as a vector.
-func (b *Builder) CreateString(s string) UOffsetT {
- b.assertNotNested()
- b.nested = true
-
- b.Prep(int(SizeUOffsetT), (len(s)+1)*SizeByte)
- b.PlaceByte(0)
-
- l := UOffsetT(len(s))
-
- b.head -= l
- copy(b.Bytes[b.head:b.head+l], s)
-
- return b.EndVector(len(s))
-}
-
-// CreateByteString writes a byte slice as a string (null-terminated).
-func (b *Builder) CreateByteString(s []byte) UOffsetT {
- b.assertNotNested()
- b.nested = true
-
- b.Prep(int(SizeUOffsetT), (len(s)+1)*SizeByte)
- b.PlaceByte(0)
-
- l := UOffsetT(len(s))
-
- b.head -= l
- copy(b.Bytes[b.head:b.head+l], s)
-
- return b.EndVector(len(s))
-}
-
-// CreateByteVector writes a ubyte vector
-func (b *Builder) CreateByteVector(v []byte) UOffsetT {
- b.assertNotNested()
- b.nested = true
-
- b.Prep(int(SizeUOffsetT), len(v)*SizeByte)
-
- l := UOffsetT(len(v))
-
- b.head -= l
- copy(b.Bytes[b.head:b.head+l], v)
-
- return b.EndVector(len(v))
-}
-
-func (b *Builder) assertNested() {
- // If you get this assert, you're in an object while trying to write
- // data that belongs outside of an object.
- // To fix this, write non-inline data (like vectors) before creating
- // objects.
- if !b.nested {
- panic("Incorrect creation order: must be inside object.")
- }
-}
-
-func (b *Builder) assertNotNested() {
- // If you hit this, you're trying to construct a Table/Vector/String
- // during the construction of its parent table (between the MyTableBuilder
- // and builder.Finish()).
- // Move the creation of these sub-objects to above the MyTableBuilder to
- // not get this assert.
- // Ignoring this assert may appear to work in simple cases, but the reason
- // it is here is that storing objects in-line may cause vtable offsets
- // to not fit anymore. It also leads to vtable duplication.
- if b.nested {
- panic("Incorrect creation order: object must not be nested.")
- }
-}
-
-func (b *Builder) assertFinished() {
- // If you get this assert, you're attempting to get access a buffer
- // which hasn't been finished yet. Be sure to call builder.Finish()
- // with your root table.
- // If you really need to access an unfinished buffer, use the Bytes
- // buffer directly.
- if !b.finished {
- panic("Incorrect use of FinishedBytes(): must call 'Finish' first.")
- }
-}
-
-// PrependBoolSlot prepends a bool onto the object at vtable slot `o`.
-// If value `x` equals default `d`, then the slot will be set to zero and no
-// other data will be written.
-func (b *Builder) PrependBoolSlot(o int, x, d bool) {
- val := byte(0)
- if x {
- val = 1
- }
- def := byte(0)
- if d {
- def = 1
- }
- b.PrependByteSlot(o, val, def)
-}
-
-// PrependByteSlot prepends a byte onto the object at vtable slot `o`.
-// If value `x` equals default `d`, then the slot will be set to zero and no
-// other data will be written.
-func (b *Builder) PrependByteSlot(o int, x, d byte) {
- if x != d {
- b.PrependByte(x)
- b.Slot(o)
- }
-}
-
-// PrependUint8Slot prepends a uint8 onto the object at vtable slot `o`.
-// If value `x` equals default `d`, then the slot will be set to zero and no
-// other data will be written.
-func (b *Builder) PrependUint8Slot(o int, x, d uint8) {
- if x != d {
- b.PrependUint8(x)
- b.Slot(o)
- }
-}
-
-// PrependUint16Slot prepends a uint16 onto the object at vtable slot `o`.
-// If value `x` equals default `d`, then the slot will be set to zero and no
-// other data will be written.
-func (b *Builder) PrependUint16Slot(o int, x, d uint16) {
- if x != d {
- b.PrependUint16(x)
- b.Slot(o)
- }
-}
-
-// PrependUint32Slot prepends a uint32 onto the object at vtable slot `o`.
-// If value `x` equals default `d`, then the slot will be set to zero and no
-// other data will be written.
-func (b *Builder) PrependUint32Slot(o int, x, d uint32) {
- if x != d {
- b.PrependUint32(x)
- b.Slot(o)
- }
-}
-
-// PrependUint64Slot prepends a uint64 onto the object at vtable slot `o`.
-// If value `x` equals default `d`, then the slot will be set to zero and no
-// other data will be written.
-func (b *Builder) PrependUint64Slot(o int, x, d uint64) {
- if x != d {
- b.PrependUint64(x)
- b.Slot(o)
- }
-}
-
-// PrependInt8Slot prepends a int8 onto the object at vtable slot `o`.
-// If value `x` equals default `d`, then the slot will be set to zero and no
-// other data will be written.
-func (b *Builder) PrependInt8Slot(o int, x, d int8) {
- if x != d {
- b.PrependInt8(x)
- b.Slot(o)
- }
-}
-
-// PrependInt16Slot prepends a int16 onto the object at vtable slot `o`.
-// If value `x` equals default `d`, then the slot will be set to zero and no
-// other data will be written.
-func (b *Builder) PrependInt16Slot(o int, x, d int16) {
- if x != d {
- b.PrependInt16(x)
- b.Slot(o)
- }
-}
-
-// PrependInt32Slot prepends a int32 onto the object at vtable slot `o`.
-// If value `x` equals default `d`, then the slot will be set to zero and no
-// other data will be written.
-func (b *Builder) PrependInt32Slot(o int, x, d int32) {
- if x != d {
- b.PrependInt32(x)
- b.Slot(o)
- }
-}
-
-// PrependInt64Slot prepends a int64 onto the object at vtable slot `o`.
-// If value `x` equals default `d`, then the slot will be set to zero and no
-// other data will be written.
-func (b *Builder) PrependInt64Slot(o int, x, d int64) {
- if x != d {
- b.PrependInt64(x)
- b.Slot(o)
- }
-}
-
-// PrependFloat32Slot prepends a float32 onto the object at vtable slot `o`.
-// If value `x` equals default `d`, then the slot will be set to zero and no
-// other data will be written.
-func (b *Builder) PrependFloat32Slot(o int, x, d float32) {
- if x != d {
- b.PrependFloat32(x)
- b.Slot(o)
- }
-}
-
-// PrependFloat64Slot prepends a float64 onto the object at vtable slot `o`.
-// If value `x` equals default `d`, then the slot will be set to zero and no
-// other data will be written.
-func (b *Builder) PrependFloat64Slot(o int, x, d float64) {
- if x != d {
- b.PrependFloat64(x)
- b.Slot(o)
- }
-}
-
-// PrependUOffsetTSlot prepends an UOffsetT onto the object at vtable slot `o`.
-// If value `x` equals default `d`, then the slot will be set to zero and no
-// other data will be written.
-func (b *Builder) PrependUOffsetTSlot(o int, x, d UOffsetT) {
- if x != d {
- b.PrependUOffsetT(x)
- b.Slot(o)
- }
-}
-
-// PrependStructSlot prepends a struct onto the object at vtable slot `o`.
-// Structs are stored inline, so nothing additional is being added.
-// In generated code, `d` is always 0.
-func (b *Builder) PrependStructSlot(voffset int, x, d UOffsetT) {
- if x != d {
- b.assertNested()
- if x != b.Offset() {
- panic("inline data write outside of object")
- }
- b.Slot(voffset)
- }
-}
-
-// Slot sets the vtable key `voffset` to the current location in the buffer.
-func (b *Builder) Slot(slotnum int) {
- b.vtable[slotnum] = UOffsetT(b.Offset())
-}
-
-// Finish finalizes a buffer, pointing to the given `rootTable`.
-func (b *Builder) Finish(rootTable UOffsetT) {
- b.assertNotNested()
- b.Prep(b.minalign, SizeUOffsetT)
- b.PrependUOffsetT(rootTable)
- b.finished = true
-}
-
-// vtableEqual compares an unwritten vtable to a written vtable.
-func vtableEqual(a []UOffsetT, objectStart UOffsetT, b []byte) bool {
- if len(a)*SizeVOffsetT != len(b) {
- return false
- }
-
- for i := 0; i < len(a); i++ {
- x := GetVOffsetT(b[i*SizeVOffsetT : (i+1)*SizeVOffsetT])
-
- // Skip vtable entries that indicate a default value.
- if x == 0 && a[i] == 0 {
- continue
- }
-
- y := SOffsetT(objectStart) - SOffsetT(a[i])
- if SOffsetT(x) != y {
- return false
- }
- }
- return true
-}
-
-// PrependBool prepends a bool to the Builder buffer.
-// Aligns and checks for space.
-func (b *Builder) PrependBool(x bool) {
- b.Prep(SizeBool, 0)
- b.PlaceBool(x)
-}
-
-// PrependUint8 prepends a uint8 to the Builder buffer.
-// Aligns and checks for space.
-func (b *Builder) PrependUint8(x uint8) {
- b.Prep(SizeUint8, 0)
- b.PlaceUint8(x)
-}
-
-// PrependUint16 prepends a uint16 to the Builder buffer.
-// Aligns and checks for space.
-func (b *Builder) PrependUint16(x uint16) {
- b.Prep(SizeUint16, 0)
- b.PlaceUint16(x)
-}
-
-// PrependUint32 prepends a uint32 to the Builder buffer.
-// Aligns and checks for space.
-func (b *Builder) PrependUint32(x uint32) {
- b.Prep(SizeUint32, 0)
- b.PlaceUint32(x)
-}
-
-// PrependUint64 prepends a uint64 to the Builder buffer.
-// Aligns and checks for space.
-func (b *Builder) PrependUint64(x uint64) {
- b.Prep(SizeUint64, 0)
- b.PlaceUint64(x)
-}
-
-// PrependInt8 prepends a int8 to the Builder buffer.
-// Aligns and checks for space.
-func (b *Builder) PrependInt8(x int8) {
- b.Prep(SizeInt8, 0)
- b.PlaceInt8(x)
-}
-
-// PrependInt16 prepends a int16 to the Builder buffer.
-// Aligns and checks for space.
-func (b *Builder) PrependInt16(x int16) {
- b.Prep(SizeInt16, 0)
- b.PlaceInt16(x)
-}
-
-// PrependInt32 prepends a int32 to the Builder buffer.
-// Aligns and checks for space.
-func (b *Builder) PrependInt32(x int32) {
- b.Prep(SizeInt32, 0)
- b.PlaceInt32(x)
-}
-
-// PrependInt64 prepends a int64 to the Builder buffer.
-// Aligns and checks for space.
-func (b *Builder) PrependInt64(x int64) {
- b.Prep(SizeInt64, 0)
- b.PlaceInt64(x)
-}
-
-// PrependFloat32 prepends a float32 to the Builder buffer.
-// Aligns and checks for space.
-func (b *Builder) PrependFloat32(x float32) {
- b.Prep(SizeFloat32, 0)
- b.PlaceFloat32(x)
-}
-
-// PrependFloat64 prepends a float64 to the Builder buffer.
-// Aligns and checks for space.
-func (b *Builder) PrependFloat64(x float64) {
- b.Prep(SizeFloat64, 0)
- b.PlaceFloat64(x)
-}
-
-// PrependByte prepends a byte to the Builder buffer.
-// Aligns and checks for space.
-func (b *Builder) PrependByte(x byte) {
- b.Prep(SizeByte, 0)
- b.PlaceByte(x)
-}
-
-// PrependVOffsetT prepends a VOffsetT to the Builder buffer.
-// Aligns and checks for space.
-func (b *Builder) PrependVOffsetT(x VOffsetT) {
- b.Prep(SizeVOffsetT, 0)
- b.PlaceVOffsetT(x)
-}
-
-// PlaceBool prepends a bool to the Builder, without checking for space.
-func (b *Builder) PlaceBool(x bool) {
- b.head -= UOffsetT(SizeBool)
- WriteBool(b.Bytes[b.head:], x)
-}
-
-// PlaceUint8 prepends a uint8 to the Builder, without checking for space.
-func (b *Builder) PlaceUint8(x uint8) {
- b.head -= UOffsetT(SizeUint8)
- WriteUint8(b.Bytes[b.head:], x)
-}
-
-// PlaceUint16 prepends a uint16 to the Builder, without checking for space.
-func (b *Builder) PlaceUint16(x uint16) {
- b.head -= UOffsetT(SizeUint16)
- WriteUint16(b.Bytes[b.head:], x)
-}
-
-// PlaceUint32 prepends a uint32 to the Builder, without checking for space.
-func (b *Builder) PlaceUint32(x uint32) {
- b.head -= UOffsetT(SizeUint32)
- WriteUint32(b.Bytes[b.head:], x)
-}
-
-// PlaceUint64 prepends a uint64 to the Builder, without checking for space.
-func (b *Builder) PlaceUint64(x uint64) {
- b.head -= UOffsetT(SizeUint64)
- WriteUint64(b.Bytes[b.head:], x)
-}
-
-// PlaceInt8 prepends a int8 to the Builder, without checking for space.
-func (b *Builder) PlaceInt8(x int8) {
- b.head -= UOffsetT(SizeInt8)
- WriteInt8(b.Bytes[b.head:], x)
-}
-
-// PlaceInt16 prepends a int16 to the Builder, without checking for space.
-func (b *Builder) PlaceInt16(x int16) {
- b.head -= UOffsetT(SizeInt16)
- WriteInt16(b.Bytes[b.head:], x)
-}
-
-// PlaceInt32 prepends a int32 to the Builder, without checking for space.
-func (b *Builder) PlaceInt32(x int32) {
- b.head -= UOffsetT(SizeInt32)
- WriteInt32(b.Bytes[b.head:], x)
-}
-
-// PlaceInt64 prepends a int64 to the Builder, without checking for space.
-func (b *Builder) PlaceInt64(x int64) {
- b.head -= UOffsetT(SizeInt64)
- WriteInt64(b.Bytes[b.head:], x)
-}
-
-// PlaceFloat32 prepends a float32 to the Builder, without checking for space.
-func (b *Builder) PlaceFloat32(x float32) {
- b.head -= UOffsetT(SizeFloat32)
- WriteFloat32(b.Bytes[b.head:], x)
-}
-
-// PlaceFloat64 prepends a float64 to the Builder, without checking for space.
-func (b *Builder) PlaceFloat64(x float64) {
- b.head -= UOffsetT(SizeFloat64)
- WriteFloat64(b.Bytes[b.head:], x)
-}
-
-// PlaceByte prepends a byte to the Builder, without checking for space.
-func (b *Builder) PlaceByte(x byte) {
- b.head -= UOffsetT(SizeByte)
- WriteByte(b.Bytes[b.head:], x)
-}
-
-// PlaceVOffsetT prepends a VOffsetT to the Builder, without checking for space.
-func (b *Builder) PlaceVOffsetT(x VOffsetT) {
- b.head -= UOffsetT(SizeVOffsetT)
- WriteVOffsetT(b.Bytes[b.head:], x)
-}
-
-// PlaceSOffsetT prepends a SOffsetT to the Builder, without checking for space.
-func (b *Builder) PlaceSOffsetT(x SOffsetT) {
- b.head -= UOffsetT(SizeSOffsetT)
- WriteSOffsetT(b.Bytes[b.head:], x)
-}
-
-// PlaceUOffsetT prepends a UOffsetT to the Builder, without checking for space.
-func (b *Builder) PlaceUOffsetT(x UOffsetT) {
- b.head -= UOffsetT(SizeUOffsetT)
- WriteUOffsetT(b.Bytes[b.head:], x)
-}
diff --git a/third_party/flatbuffers/go/doc.go b/third_party/flatbuffers/go/doc.go
deleted file mode 100644
index 694edc7..0000000
--- a/third_party/flatbuffers/go/doc.go
+++ /dev/null
@@ -1,3 +0,0 @@
-// Package flatbuffers provides facilities to read and write flatbuffers
-// objects.
-package flatbuffers
diff --git a/third_party/flatbuffers/go/encode.go b/third_party/flatbuffers/go/encode.go
deleted file mode 100644
index 48ff36e..0000000
--- a/third_party/flatbuffers/go/encode.go
+++ /dev/null
@@ -1,216 +0,0 @@
-package flatbuffers
-
-import (
- "math"
-)
-
-type (
- // A SOffsetT stores a signed offset into arbitrary data.
- SOffsetT int32
- // A UOffsetT stores an unsigned offset into vector data.
- UOffsetT uint32
- // A VOffsetT stores an unsigned offset in a vtable.
- VOffsetT uint16
-)
-
-const (
- // VtableMetadataFields is the count of metadata fields in each vtable.
- VtableMetadataFields = 2
-)
-
-// GetByte decodes a little-endian byte from a byte slice.
-func GetByte(buf []byte) byte {
- return byte(GetUint8(buf))
-}
-
-// GetBool decodes a little-endian bool from a byte slice.
-func GetBool(buf []byte) bool {
- return buf[0] == 1
-}
-
-// GetUint8 decodes a little-endian uint8 from a byte slice.
-func GetUint8(buf []byte) (n uint8) {
- n = uint8(buf[0])
- return
-}
-
-// GetUint16 decodes a little-endian uint16 from a byte slice.
-func GetUint16(buf []byte) (n uint16) {
- n |= uint16(buf[0])
- n |= uint16(buf[1]) << 8
- return
-}
-
-// GetUint32 decodes a little-endian uint32 from a byte slice.
-func GetUint32(buf []byte) (n uint32) {
- n |= uint32(buf[0])
- n |= uint32(buf[1]) << 8
- n |= uint32(buf[2]) << 16
- n |= uint32(buf[3]) << 24
- return
-}
-
-// GetUint64 decodes a little-endian uint64 from a byte slice.
-func GetUint64(buf []byte) (n uint64) {
- n |= uint64(buf[0])
- n |= uint64(buf[1]) << 8
- n |= uint64(buf[2]) << 16
- n |= uint64(buf[3]) << 24
- n |= uint64(buf[4]) << 32
- n |= uint64(buf[5]) << 40
- n |= uint64(buf[6]) << 48
- n |= uint64(buf[7]) << 56
- return
-}
-
-// GetInt8 decodes a little-endian int8 from a byte slice.
-func GetInt8(buf []byte) (n int8) {
- n = int8(buf[0])
- return
-}
-
-// GetInt16 decodes a little-endian int16 from a byte slice.
-func GetInt16(buf []byte) (n int16) {
- n |= int16(buf[0])
- n |= int16(buf[1]) << 8
- return
-}
-
-// GetInt32 decodes a little-endian int32 from a byte slice.
-func GetInt32(buf []byte) (n int32) {
- n |= int32(buf[0])
- n |= int32(buf[1]) << 8
- n |= int32(buf[2]) << 16
- n |= int32(buf[3]) << 24
- return
-}
-
-// GetInt64 decodes a little-endian int64 from a byte slice.
-func GetInt64(buf []byte) (n int64) {
- n |= int64(buf[0])
- n |= int64(buf[1]) << 8
- n |= int64(buf[2]) << 16
- n |= int64(buf[3]) << 24
- n |= int64(buf[4]) << 32
- n |= int64(buf[5]) << 40
- n |= int64(buf[6]) << 48
- n |= int64(buf[7]) << 56
- return
-}
-
-// GetFloat32 decodes a little-endian float32 from a byte slice.
-func GetFloat32(buf []byte) float32 {
- x := GetUint32(buf)
- return math.Float32frombits(x)
-}
-
-// GetFloat64 decodes a little-endian float64 from a byte slice.
-func GetFloat64(buf []byte) float64 {
- x := GetUint64(buf)
- return math.Float64frombits(x)
-}
-
-// GetUOffsetT decodes a little-endian UOffsetT from a byte slice.
-func GetUOffsetT(buf []byte) UOffsetT {
- return UOffsetT(GetInt32(buf))
-}
-
-// GetSOffsetT decodes a little-endian SOffsetT from a byte slice.
-func GetSOffsetT(buf []byte) SOffsetT {
- return SOffsetT(GetInt32(buf))
-}
-
-// GetVOffsetT decodes a little-endian VOffsetT from a byte slice.
-func GetVOffsetT(buf []byte) VOffsetT {
- return VOffsetT(GetUint16(buf))
-}
-
-// WriteByte encodes a little-endian uint8 into a byte slice.
-func WriteByte(buf []byte, n byte) {
- WriteUint8(buf, uint8(n))
-}
-
-// WriteBool encodes a little-endian bool into a byte slice.
-func WriteBool(buf []byte, b bool) {
- buf[0] = 0
- if b {
- buf[0] = 1
- }
-}
-
-// WriteUint8 encodes a little-endian uint8 into a byte slice.
-func WriteUint8(buf []byte, n uint8) {
- buf[0] = byte(n)
-}
-
-// WriteUint16 encodes a little-endian uint16 into a byte slice.
-func WriteUint16(buf []byte, n uint16) {
- buf[0] = byte(n)
- buf[1] = byte(n >> 8)
-}
-
-// WriteUint32 encodes a little-endian uint32 into a byte slice.
-func WriteUint32(buf []byte, n uint32) {
- buf[0] = byte(n)
- buf[1] = byte(n >> 8)
- buf[2] = byte(n >> 16)
- buf[3] = byte(n >> 24)
-}
-
-// WriteUint64 encodes a little-endian uint64 into a byte slice.
-func WriteUint64(buf []byte, n uint64) {
- for i := uint(0); i < uint(SizeUint64); i++ {
- buf[i] = byte(n >> (i * 8))
- }
-}
-
-// WriteInt8 encodes a little-endian int8 into a byte slice.
-func WriteInt8(buf []byte, n int8) {
- buf[0] = byte(n)
-}
-
-// WriteInt16 encodes a little-endian int16 into a byte slice.
-func WriteInt16(buf []byte, n int16) {
- buf[0] = byte(n)
- buf[1] = byte(n >> 8)
-}
-
-// WriteInt32 encodes a little-endian int32 into a byte slice.
-func WriteInt32(buf []byte, n int32) {
- buf[0] = byte(n)
- buf[1] = byte(n >> 8)
- buf[2] = byte(n >> 16)
- buf[3] = byte(n >> 24)
-}
-
-// WriteInt64 encodes a little-endian int64 into a byte slice.
-func WriteInt64(buf []byte, n int64) {
- for i := uint(0); i < uint(SizeInt64); i++ {
- buf[i] = byte(n >> (i * 8))
- }
-}
-
-// WriteFloat32 encodes a little-endian float32 into a byte slice.
-func WriteFloat32(buf []byte, n float32) {
- WriteUint32(buf, math.Float32bits(n))
-}
-
-// WriteFloat64 encodes a little-endian float64 into a byte slice.
-func WriteFloat64(buf []byte, n float64) {
- WriteUint64(buf, math.Float64bits(n))
-}
-
-// WriteVOffsetT encodes a little-endian VOffsetT into a byte slice.
-func WriteVOffsetT(buf []byte, n VOffsetT) {
- WriteUint16(buf, uint16(n))
-}
-
-// WriteSOffsetT encodes a little-endian SOffsetT into a byte slice.
-func WriteSOffsetT(buf []byte, n SOffsetT) {
- WriteInt32(buf, int32(n))
-}
-
-// WriteUOffsetT encodes a little-endian UOffsetT into a byte slice.
-func WriteUOffsetT(buf []byte, n UOffsetT) {
- WriteUint32(buf, uint32(n))
-}
diff --git a/third_party/flatbuffers/go/grpc.go b/third_party/flatbuffers/go/grpc.go
deleted file mode 100644
index e7dabd3..0000000
--- a/third_party/flatbuffers/go/grpc.go
+++ /dev/null
@@ -1,23 +0,0 @@
-package flatbuffers
-
-// Codec implements gRPC-go Codec which is used to encode and decode messages.
-var Codec = "flatbuffers"
-
-type FlatbuffersCodec struct{}
-
-func (FlatbuffersCodec) Marshal(v interface{}) ([]byte, error) {
- return v.(*Builder).FinishedBytes(), nil
-}
-
-func (FlatbuffersCodec) Unmarshal(data []byte, v interface{}) error {
- v.(flatbuffersInit).Init(data, GetUOffsetT(data))
- return nil
-}
-
-func (FlatbuffersCodec) String() string {
- return Codec
-}
-
-type flatbuffersInit interface {
- Init(data []byte, i UOffsetT)
-}
diff --git a/third_party/flatbuffers/go/lib.go b/third_party/flatbuffers/go/lib.go
deleted file mode 100644
index adfce52..0000000
--- a/third_party/flatbuffers/go/lib.go
+++ /dev/null
@@ -1,13 +0,0 @@
-package flatbuffers
-
-// FlatBuffer is the interface that represents a flatbuffer.
-type FlatBuffer interface {
- Table() Table
- Init(buf []byte, i UOffsetT)
-}
-
-// GetRootAs is a generic helper to initialize a FlatBuffer with the provided buffer bytes and its data offset.
-func GetRootAs(buf []byte, offset UOffsetT, fb FlatBuffer) {
- n := GetUOffsetT(buf[offset:])
- fb.Init(buf, n+offset)
-}
diff --git a/third_party/flatbuffers/go/sizes.go b/third_party/flatbuffers/go/sizes.go
deleted file mode 100644
index ba22169..0000000
--- a/third_party/flatbuffers/go/sizes.go
+++ /dev/null
@@ -1,55 +0,0 @@
-package flatbuffers
-
-import (
- "unsafe"
-)
-
-const (
- // See http://golang.org/ref/spec#Numeric_types
-
- // SizeUint8 is the byte size of a uint8.
- SizeUint8 = 1
- // SizeUint16 is the byte size of a uint16.
- SizeUint16 = 2
- // SizeUint32 is the byte size of a uint32.
- SizeUint32 = 4
- // SizeUint64 is the byte size of a uint64.
- SizeUint64 = 8
-
- // SizeInt8 is the byte size of a int8.
- SizeInt8 = 1
- // SizeInt16 is the byte size of a int16.
- SizeInt16 = 2
- // SizeInt32 is the byte size of a int32.
- SizeInt32 = 4
- // SizeInt64 is the byte size of a int64.
- SizeInt64 = 8
-
- // SizeFloat32 is the byte size of a float32.
- SizeFloat32 = 4
- // SizeFloat64 is the byte size of a float64.
- SizeFloat64 = 8
-
- // SizeByte is the byte size of a byte.
- // The `byte` type is aliased (by Go definition) to uint8.
- SizeByte = 1
-
- // SizeBool is the byte size of a bool.
- // The `bool` type is aliased (by flatbuffers convention) to uint8.
- SizeBool = 1
-
- // SizeSOffsetT is the byte size of an SOffsetT.
- // The `SOffsetT` type is aliased (by flatbuffers convention) to int32.
- SizeSOffsetT = 4
- // SizeUOffsetT is the byte size of an UOffsetT.
- // The `UOffsetT` type is aliased (by flatbuffers convention) to uint32.
- SizeUOffsetT = 4
- // SizeVOffsetT is the byte size of an VOffsetT.
- // The `VOffsetT` type is aliased (by flatbuffers convention) to uint16.
- SizeVOffsetT = 2
-)
-
-// byteSliceToString converts a []byte to string without a heap allocation.
-func byteSliceToString(b []byte) string {
- return *(*string)(unsafe.Pointer(&b))
-}
diff --git a/third_party/flatbuffers/go/struct.go b/third_party/flatbuffers/go/struct.go
deleted file mode 100644
index 11258f7..0000000
--- a/third_party/flatbuffers/go/struct.go
+++ /dev/null
@@ -1,8 +0,0 @@
-package flatbuffers
-
-// Struct wraps a byte slice and provides read access to its data.
-//
-// Structs do not have a vtable.
-type Struct struct {
- Table
-}
diff --git a/third_party/flatbuffers/go/table.go b/third_party/flatbuffers/go/table.go
deleted file mode 100644
index b273146..0000000
--- a/third_party/flatbuffers/go/table.go
+++ /dev/null
@@ -1,505 +0,0 @@
-package flatbuffers
-
-// Table wraps a byte slice and provides read access to its data.
-//
-// The variable `Pos` indicates the root of the FlatBuffers object therein.
-type Table struct {
- Bytes []byte
- Pos UOffsetT // Always < 1<<31.
-}
-
-// Offset provides access into the Table's vtable.
-//
-// Fields which are deprecated are ignored by checking against the vtable's length.
-func (t *Table) Offset(vtableOffset VOffsetT) VOffsetT {
- vtable := UOffsetT(SOffsetT(t.Pos) - t.GetSOffsetT(t.Pos))
- if vtableOffset < t.GetVOffsetT(vtable) {
- return t.GetVOffsetT(vtable + UOffsetT(vtableOffset))
- }
- return 0
-}
-
-// Indirect retrieves the relative offset stored at `offset`.
-func (t *Table) Indirect(off UOffsetT) UOffsetT {
- return off + GetUOffsetT(t.Bytes[off:])
-}
-
-// String gets a string from data stored inside the flatbuffer.
-func (t *Table) String(off UOffsetT) string {
- b := t.ByteVector(off)
- return byteSliceToString(b)
-}
-
-// ByteVector gets a byte slice from data stored inside the flatbuffer.
-func (t *Table) ByteVector(off UOffsetT) []byte {
- off += GetUOffsetT(t.Bytes[off:])
- start := off + UOffsetT(SizeUOffsetT)
- length := GetUOffsetT(t.Bytes[off:])
- return t.Bytes[start : start+length]
-}
-
-// VectorLen retrieves the length of the vector whose offset is stored at
-// "off" in this object.
-func (t *Table) VectorLen(off UOffsetT) int {
- off += t.Pos
- off += GetUOffsetT(t.Bytes[off:])
- return int(GetUOffsetT(t.Bytes[off:]))
-}
-
-// Vector retrieves the start of data of the vector whose offset is stored
-// at "off" in this object.
-func (t *Table) Vector(off UOffsetT) UOffsetT {
- off += t.Pos
- x := off + GetUOffsetT(t.Bytes[off:])
- // data starts after metadata containing the vector length
- x += UOffsetT(SizeUOffsetT)
- return x
-}
-
-// Union initializes any Table-derived type to point to the union at the given
-// offset.
-func (t *Table) Union(t2 *Table, off UOffsetT) {
- off += t.Pos
- t2.Pos = off + t.GetUOffsetT(off)
- t2.Bytes = t.Bytes
-}
-
-// GetBool retrieves a bool at the given offset.
-func (t *Table) GetBool(off UOffsetT) bool {
- return GetBool(t.Bytes[off:])
-}
-
-// GetByte retrieves a byte at the given offset.
-func (t *Table) GetByte(off UOffsetT) byte {
- return GetByte(t.Bytes[off:])
-}
-
-// GetUint8 retrieves a uint8 at the given offset.
-func (t *Table) GetUint8(off UOffsetT) uint8 {
- return GetUint8(t.Bytes[off:])
-}
-
-// GetUint16 retrieves a uint16 at the given offset.
-func (t *Table) GetUint16(off UOffsetT) uint16 {
- return GetUint16(t.Bytes[off:])
-}
-
-// GetUint32 retrieves a uint32 at the given offset.
-func (t *Table) GetUint32(off UOffsetT) uint32 {
- return GetUint32(t.Bytes[off:])
-}
-
-// GetUint64 retrieves a uint64 at the given offset.
-func (t *Table) GetUint64(off UOffsetT) uint64 {
- return GetUint64(t.Bytes[off:])
-}
-
-// GetInt8 retrieves a int8 at the given offset.
-func (t *Table) GetInt8(off UOffsetT) int8 {
- return GetInt8(t.Bytes[off:])
-}
-
-// GetInt16 retrieves a int16 at the given offset.
-func (t *Table) GetInt16(off UOffsetT) int16 {
- return GetInt16(t.Bytes[off:])
-}
-
-// GetInt32 retrieves a int32 at the given offset.
-func (t *Table) GetInt32(off UOffsetT) int32 {
- return GetInt32(t.Bytes[off:])
-}
-
-// GetInt64 retrieves a int64 at the given offset.
-func (t *Table) GetInt64(off UOffsetT) int64 {
- return GetInt64(t.Bytes[off:])
-}
-
-// GetFloat32 retrieves a float32 at the given offset.
-func (t *Table) GetFloat32(off UOffsetT) float32 {
- return GetFloat32(t.Bytes[off:])
-}
-
-// GetFloat64 retrieves a float64 at the given offset.
-func (t *Table) GetFloat64(off UOffsetT) float64 {
- return GetFloat64(t.Bytes[off:])
-}
-
-// GetUOffsetT retrieves a UOffsetT at the given offset.
-func (t *Table) GetUOffsetT(off UOffsetT) UOffsetT {
- return GetUOffsetT(t.Bytes[off:])
-}
-
-// GetVOffsetT retrieves a VOffsetT at the given offset.
-func (t *Table) GetVOffsetT(off UOffsetT) VOffsetT {
- return GetVOffsetT(t.Bytes[off:])
-}
-
-// GetSOffsetT retrieves a SOffsetT at the given offset.
-func (t *Table) GetSOffsetT(off UOffsetT) SOffsetT {
- return GetSOffsetT(t.Bytes[off:])
-}
-
-// GetBoolSlot retrieves the bool that the given vtable location
-// points to. If the vtable value is zero, the default value `d`
-// will be returned.
-func (t *Table) GetBoolSlot(slot VOffsetT, d bool) bool {
- off := t.Offset(slot)
- if off == 0 {
- return d
- }
-
- return t.GetBool(t.Pos + UOffsetT(off))
-}
-
-// GetByteSlot retrieves the byte that the given vtable location
-// points to. If the vtable value is zero, the default value `d`
-// will be returned.
-func (t *Table) GetByteSlot(slot VOffsetT, d byte) byte {
- off := t.Offset(slot)
- if off == 0 {
- return d
- }
-
- return t.GetByte(t.Pos + UOffsetT(off))
-}
-
-// GetInt8Slot retrieves the int8 that the given vtable location
-// points to. If the vtable value is zero, the default value `d`
-// will be returned.
-func (t *Table) GetInt8Slot(slot VOffsetT, d int8) int8 {
- off := t.Offset(slot)
- if off == 0 {
- return d
- }
-
- return t.GetInt8(t.Pos + UOffsetT(off))
-}
-
-// GetUint8Slot retrieves the uint8 that the given vtable location
-// points to. If the vtable value is zero, the default value `d`
-// will be returned.
-func (t *Table) GetUint8Slot(slot VOffsetT, d uint8) uint8 {
- off := t.Offset(slot)
- if off == 0 {
- return d
- }
-
- return t.GetUint8(t.Pos + UOffsetT(off))
-}
-
-// GetInt16Slot retrieves the int16 that the given vtable location
-// points to. If the vtable value is zero, the default value `d`
-// will be returned.
-func (t *Table) GetInt16Slot(slot VOffsetT, d int16) int16 {
- off := t.Offset(slot)
- if off == 0 {
- return d
- }
-
- return t.GetInt16(t.Pos + UOffsetT(off))
-}
-
-// GetUint16Slot retrieves the uint16 that the given vtable location
-// points to. If the vtable value is zero, the default value `d`
-// will be returned.
-func (t *Table) GetUint16Slot(slot VOffsetT, d uint16) uint16 {
- off := t.Offset(slot)
- if off == 0 {
- return d
- }
-
- return t.GetUint16(t.Pos + UOffsetT(off))
-}
-
-// GetInt32Slot retrieves the int32 that the given vtable location
-// points to. If the vtable value is zero, the default value `d`
-// will be returned.
-func (t *Table) GetInt32Slot(slot VOffsetT, d int32) int32 {
- off := t.Offset(slot)
- if off == 0 {
- return d
- }
-
- return t.GetInt32(t.Pos + UOffsetT(off))
-}
-
-// GetUint32Slot retrieves the uint32 that the given vtable location
-// points to. If the vtable value is zero, the default value `d`
-// will be returned.
-func (t *Table) GetUint32Slot(slot VOffsetT, d uint32) uint32 {
- off := t.Offset(slot)
- if off == 0 {
- return d
- }
-
- return t.GetUint32(t.Pos + UOffsetT(off))
-}
-
-// GetInt64Slot retrieves the int64 that the given vtable location
-// points to. If the vtable value is zero, the default value `d`
-// will be returned.
-func (t *Table) GetInt64Slot(slot VOffsetT, d int64) int64 {
- off := t.Offset(slot)
- if off == 0 {
- return d
- }
-
- return t.GetInt64(t.Pos + UOffsetT(off))
-}
-
-// GetUint64Slot retrieves the uint64 that the given vtable location
-// points to. If the vtable value is zero, the default value `d`
-// will be returned.
-func (t *Table) GetUint64Slot(slot VOffsetT, d uint64) uint64 {
- off := t.Offset(slot)
- if off == 0 {
- return d
- }
-
- return t.GetUint64(t.Pos + UOffsetT(off))
-}
-
-// GetFloat32Slot retrieves the float32 that the given vtable location
-// points to. If the vtable value is zero, the default value `d`
-// will be returned.
-func (t *Table) GetFloat32Slot(slot VOffsetT, d float32) float32 {
- off := t.Offset(slot)
- if off == 0 {
- return d
- }
-
- return t.GetFloat32(t.Pos + UOffsetT(off))
-}
-
-// GetFloat64Slot retrieves the float64 that the given vtable location
-// points to. If the vtable value is zero, the default value `d`
-// will be returned.
-func (t *Table) GetFloat64Slot(slot VOffsetT, d float64) float64 {
- off := t.Offset(slot)
- if off == 0 {
- return d
- }
-
- return t.GetFloat64(t.Pos + UOffsetT(off))
-}
-
-// GetVOffsetTSlot retrieves the VOffsetT that the given vtable location
-// points to. If the vtable value is zero, the default value `d`
-// will be returned.
-func (t *Table) GetVOffsetTSlot(slot VOffsetT, d VOffsetT) VOffsetT {
- off := t.Offset(slot)
- if off == 0 {
- return d
- }
- return VOffsetT(off)
-}
-
-// MutateBool updates a bool at the given offset.
-func (t *Table) MutateBool(off UOffsetT, n bool) bool {
- WriteBool(t.Bytes[off:], n)
- return true
-}
-
-// MutateByte updates a Byte at the given offset.
-func (t *Table) MutateByte(off UOffsetT, n byte) bool {
- WriteByte(t.Bytes[off:], n)
- return true
-}
-
-// MutateUint8 updates a Uint8 at the given offset.
-func (t *Table) MutateUint8(off UOffsetT, n uint8) bool {
- WriteUint8(t.Bytes[off:], n)
- return true
-}
-
-// MutateUint16 updates a Uint16 at the given offset.
-func (t *Table) MutateUint16(off UOffsetT, n uint16) bool {
- WriteUint16(t.Bytes[off:], n)
- return true
-}
-
-// MutateUint32 updates a Uint32 at the given offset.
-func (t *Table) MutateUint32(off UOffsetT, n uint32) bool {
- WriteUint32(t.Bytes[off:], n)
- return true
-}
-
-// MutateUint64 updates a Uint64 at the given offset.
-func (t *Table) MutateUint64(off UOffsetT, n uint64) bool {
- WriteUint64(t.Bytes[off:], n)
- return true
-}
-
-// MutateInt8 updates a Int8 at the given offset.
-func (t *Table) MutateInt8(off UOffsetT, n int8) bool {
- WriteInt8(t.Bytes[off:], n)
- return true
-}
-
-// MutateInt16 updates a Int16 at the given offset.
-func (t *Table) MutateInt16(off UOffsetT, n int16) bool {
- WriteInt16(t.Bytes[off:], n)
- return true
-}
-
-// MutateInt32 updates a Int32 at the given offset.
-func (t *Table) MutateInt32(off UOffsetT, n int32) bool {
- WriteInt32(t.Bytes[off:], n)
- return true
-}
-
-// MutateInt64 updates a Int64 at the given offset.
-func (t *Table) MutateInt64(off UOffsetT, n int64) bool {
- WriteInt64(t.Bytes[off:], n)
- return true
-}
-
-// MutateFloat32 updates a Float32 at the given offset.
-func (t *Table) MutateFloat32(off UOffsetT, n float32) bool {
- WriteFloat32(t.Bytes[off:], n)
- return true
-}
-
-// MutateFloat64 updates a Float64 at the given offset.
-func (t *Table) MutateFloat64(off UOffsetT, n float64) bool {
- WriteFloat64(t.Bytes[off:], n)
- return true
-}
-
-// MutateUOffsetT updates a UOffsetT at the given offset.
-func (t *Table) MutateUOffsetT(off UOffsetT, n UOffsetT) bool {
- WriteUOffsetT(t.Bytes[off:], n)
- return true
-}
-
-// MutateVOffsetT updates a VOffsetT at the given offset.
-func (t *Table) MutateVOffsetT(off UOffsetT, n VOffsetT) bool {
- WriteVOffsetT(t.Bytes[off:], n)
- return true
-}
-
-// MutateSOffsetT updates a SOffsetT at the given offset.
-func (t *Table) MutateSOffsetT(off UOffsetT, n SOffsetT) bool {
- WriteSOffsetT(t.Bytes[off:], n)
- return true
-}
-
-// MutateBoolSlot updates the bool at given vtable location
-func (t *Table) MutateBoolSlot(slot VOffsetT, n bool) bool {
- if off := t.Offset(slot); off != 0 {
- t.MutateBool(t.Pos+UOffsetT(off), n)
- return true
- }
-
- return false
-}
-
-// MutateByteSlot updates the byte at given vtable location
-func (t *Table) MutateByteSlot(slot VOffsetT, n byte) bool {
- if off := t.Offset(slot); off != 0 {
- t.MutateByte(t.Pos+UOffsetT(off), n)
- return true
- }
-
- return false
-}
-
-// MutateInt8Slot updates the int8 at given vtable location
-func (t *Table) MutateInt8Slot(slot VOffsetT, n int8) bool {
- if off := t.Offset(slot); off != 0 {
- t.MutateInt8(t.Pos+UOffsetT(off), n)
- return true
- }
-
- return false
-}
-
-// MutateUint8Slot updates the uint8 at given vtable location
-func (t *Table) MutateUint8Slot(slot VOffsetT, n uint8) bool {
- if off := t.Offset(slot); off != 0 {
- t.MutateUint8(t.Pos+UOffsetT(off), n)
- return true
- }
-
- return false
-}
-
-// MutateInt16Slot updates the int16 at given vtable location
-func (t *Table) MutateInt16Slot(slot VOffsetT, n int16) bool {
- if off := t.Offset(slot); off != 0 {
- t.MutateInt16(t.Pos+UOffsetT(off), n)
- return true
- }
-
- return false
-}
-
-// MutateUint16Slot updates the uint16 at given vtable location
-func (t *Table) MutateUint16Slot(slot VOffsetT, n uint16) bool {
- if off := t.Offset(slot); off != 0 {
- t.MutateUint16(t.Pos+UOffsetT(off), n)
- return true
- }
-
- return false
-}
-
-// MutateInt32Slot updates the int32 at given vtable location
-func (t *Table) MutateInt32Slot(slot VOffsetT, n int32) bool {
- if off := t.Offset(slot); off != 0 {
- t.MutateInt32(t.Pos+UOffsetT(off), n)
- return true
- }
-
- return false
-}
-
-// MutateUint32Slot updates the uint32 at given vtable location
-func (t *Table) MutateUint32Slot(slot VOffsetT, n uint32) bool {
- if off := t.Offset(slot); off != 0 {
- t.MutateUint32(t.Pos+UOffsetT(off), n)
- return true
- }
-
- return false
-}
-
-// MutateInt64Slot updates the int64 at given vtable location
-func (t *Table) MutateInt64Slot(slot VOffsetT, n int64) bool {
- if off := t.Offset(slot); off != 0 {
- t.MutateInt64(t.Pos+UOffsetT(off), n)
- return true
- }
-
- return false
-}
-
-// MutateUint64Slot updates the uint64 at given vtable location
-func (t *Table) MutateUint64Slot(slot VOffsetT, n uint64) bool {
- if off := t.Offset(slot); off != 0 {
- t.MutateUint64(t.Pos+UOffsetT(off), n)
- return true
- }
-
- return false
-}
-
-// MutateFloat32Slot updates the float32 at given vtable location
-func (t *Table) MutateFloat32Slot(slot VOffsetT, n float32) bool {
- if off := t.Offset(slot); off != 0 {
- t.MutateFloat32(t.Pos+UOffsetT(off), n)
- return true
- }
-
- return false
-}
-
-// MutateFloat64Slot updates the float64 at given vtable location
-func (t *Table) MutateFloat64Slot(slot VOffsetT, n float64) bool {
- if off := t.Offset(slot); off != 0 {
- t.MutateFloat64(t.Pos+UOffsetT(off), n)
- return true
- }
-
- return false
-}
diff --git a/third_party/flatbuffers/grpc/README.md b/third_party/flatbuffers/grpc/README.md
deleted file mode 100644
index 1348519..0000000
--- a/third_party/flatbuffers/grpc/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-GRPC implementation and test
-============================
-
-NOTE: files in `src/` are shared with the GRPC project, and maintained there
-(any changes should be submitted to GRPC instead). These files are copied
-from GRPC, and work with both the Protobuf and FlatBuffers code generator.
-
-`tests/` contains a GRPC specific test, you need to have built and installed
-the GRPC libraries for this to compile. This test will build using the
-`FLATBUFFERS_BUILD_GRPCTEST` option to the main FlatBuffers CMake project.
-
diff --git a/third_party/flatbuffers/grpc/src/compiler/cpp_generator.cc b/third_party/flatbuffers/grpc/src/compiler/cpp_generator.cc
deleted file mode 100644
index da58ee0..0000000
--- a/third_party/flatbuffers/grpc/src/compiler/cpp_generator.cc
+++ /dev/null
@@ -1,1203 +0,0 @@
-/*
- *
- * Copyright 2015, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#include <map>
-
-#include "src/compiler/cpp_generator.h"
-
-#include <sstream>
-
-namespace grpc_cpp_generator {
-namespace {
-
-template <class T>
-grpc::string as_string(T x) {
- std::ostringstream out;
- out << x;
- return out.str();
-}
-
-grpc::string FilenameIdentifier(const grpc::string &filename) {
- grpc::string result;
- for (unsigned i = 0; i < filename.size(); i++) {
- char c = filename[i];
- if (isalnum(c)) {
- result.push_back(c);
- } else {
- static char hex[] = "0123456789abcdef";
- result.push_back('_');
- result.push_back(hex[(c >> 4) & 0xf]);
- result.push_back(hex[c & 0xf]);
- }
- }
- return result;
-}
-} // namespace
-
-template<class T, size_t N>
-T *array_end(T (&array)[N]) { return array + N; }
-
-void PrintIncludes(grpc_generator::Printer *printer,
- const std::vector<grpc::string>& headers, const Parameters ¶ms) {
- std::map<grpc::string, grpc::string> vars;
-
- vars["l"] = params.use_system_headers ? '<' : '"';
- vars["r"] = params.use_system_headers ? '>' : '"';
-
- if (!params.grpc_search_path.empty()) {
- vars["l"] += params.grpc_search_path;
- if (params.grpc_search_path.back() != '/') {
- vars["l"] += '/';
- }
- }
-
- for (auto i = headers.begin(); i != headers.end(); i++) {
- vars["h"] = *i;
- printer->Print(vars, "#include $l$$h$$r$\n");
- }
-}
-
-grpc::string GetHeaderPrologue(grpc_generator::File *file, const Parameters & /*params*/) {
- grpc::string output;
- {
- // Scope the output stream so it closes and finalizes output to the string.
- auto printer = file->CreatePrinter(&output);
- std::map<grpc::string, grpc::string> vars;
-
- vars["filename"] = file->filename();
- vars["filename_identifier"] = FilenameIdentifier(file->filename());
- vars["filename_base"] = file->filename_without_ext();
- vars["message_header_ext"] = file->message_header_ext();
-
- printer->Print(vars, "// Generated by the gRPC protobuf plugin.\n");
- printer->Print(vars,
- "// If you make any local change, they will be lost.\n");
- printer->Print(vars, "// source: $filename$\n");
- printer->Print(vars, "#ifndef GRPC_$filename_identifier$__INCLUDED\n");
- printer->Print(vars, "#define GRPC_$filename_identifier$__INCLUDED\n");
- printer->Print(vars, "\n");
- printer->Print(vars, "#include \"$filename_base$$message_header_ext$\"\n");
- printer->Print(vars, file->additional_headers().c_str());
- printer->Print(vars, "\n");
- }
- return output;
-}
-
-grpc::string GetHeaderIncludes(grpc_generator::File *file,
- const Parameters ¶ms) {
- grpc::string output;
- {
- // Scope the output stream so it closes and finalizes output to the string.
- auto printer = file->CreatePrinter(&output);
- std::map<grpc::string, grpc::string> vars;
-
- static const char *headers_strs[] = {
- "grpc++/impl/codegen/async_stream.h",
- "grpc++/impl/codegen/async_unary_call.h",
- "grpc++/impl/codegen/rpc_method.h",
- "grpc++/impl/codegen/service_type.h",
- "grpc++/impl/codegen/status.h",
- "grpc++/impl/codegen/stub_options.h",
- "grpc++/impl/codegen/sync_stream.h"
- };
- std::vector<grpc::string> headers(headers_strs, array_end(headers_strs));
- PrintIncludes(printer.get(), headers, params);
- printer->Print(vars, "\n");
- printer->Print(vars, "namespace grpc {\n");
- printer->Print(vars, "class CompletionQueue;\n");
- printer->Print(vars, "class Channel;\n");
- printer->Print(vars, "class RpcService;\n");
- printer->Print(vars, "class ServerCompletionQueue;\n");
- printer->Print(vars, "class ServerContext;\n");
- printer->Print(vars, "} // namespace grpc\n\n");
-
- if (!file->package().empty()) {
- std::vector<grpc::string> parts = file->package_parts();
-
- for (auto part = parts.begin(); part != parts.end(); part++) {
- vars["part"] = *part;
- printer->Print(vars, "namespace $part$ {\n");
- }
- printer->Print(vars, "\n");
- }
- }
- return output;
-}
-
-void PrintHeaderClientMethodInterfaces(
- grpc_generator::Printer *printer, const grpc_generator::Method *method,
- std::map<grpc::string, grpc::string> *vars, bool is_public) {
- (*vars)["Method"] = method->name();
- (*vars)["Request"] = method->input_type_name();
- (*vars)["Response"] = method->output_type_name();
-
- if (is_public) {
- if (method->NoStreaming()) {
- printer->Print(
- *vars,
- "virtual ::grpc::Status $Method$(::grpc::ClientContext* context, "
- "const $Request$& request, $Response$* response) = 0;\n");
- printer->Print(*vars,
- "std::unique_ptr< "
- "::grpc::ClientAsyncResponseReaderInterface< $Response$>> "
- "Async$Method$(::grpc::ClientContext* context, "
- "const $Request$& request, "
- "::grpc::CompletionQueue* cq) {\n");
- printer->Indent();
- printer->Print(*vars,
- "return std::unique_ptr< "
- "::grpc::ClientAsyncResponseReaderInterface< $Response$>>("
- "Async$Method$Raw(context, request, cq));\n");
- printer->Outdent();
- printer->Print("}\n");
- } else if (method->ClientOnlyStreaming()) {
- printer->Print(
- *vars,
- "std::unique_ptr< ::grpc::ClientWriterInterface< $Request$>>"
- " $Method$("
- "::grpc::ClientContext* context, $Response$* response) {\n");
- printer->Indent();
- printer->Print(
- *vars,
- "return std::unique_ptr< ::grpc::ClientWriterInterface< $Request$>>"
- "($Method$Raw(context, response));\n");
- printer->Outdent();
- printer->Print("}\n");
- printer->Print(
- *vars,
- "std::unique_ptr< ::grpc::ClientAsyncWriterInterface< $Request$>>"
- " Async$Method$(::grpc::ClientContext* context, $Response$* "
- "response, "
- "::grpc::CompletionQueue* cq, void* tag) {\n");
- printer->Indent();
- printer->Print(*vars,
- "return std::unique_ptr< "
- "::grpc::ClientAsyncWriterInterface< $Request$>>("
- "Async$Method$Raw(context, response, cq, tag));\n");
- printer->Outdent();
- printer->Print("}\n");
- } else if (method->ServerOnlyStreaming()) {
- printer->Print(
- *vars,
- "std::unique_ptr< ::grpc::ClientReaderInterface< $Response$>>"
- " $Method$(::grpc::ClientContext* context, const $Request$& request)"
- " {\n");
- printer->Indent();
- printer->Print(
- *vars,
- "return std::unique_ptr< ::grpc::ClientReaderInterface< $Response$>>"
- "($Method$Raw(context, request));\n");
- printer->Outdent();
- printer->Print("}\n");
- printer->Print(
- *vars,
- "std::unique_ptr< ::grpc::ClientAsyncReaderInterface< $Response$>> "
- "Async$Method$("
- "::grpc::ClientContext* context, const $Request$& request, "
- "::grpc::CompletionQueue* cq, void* tag) {\n");
- printer->Indent();
- printer->Print(*vars,
- "return std::unique_ptr< "
- "::grpc::ClientAsyncReaderInterface< $Response$>>("
- "Async$Method$Raw(context, request, cq, tag));\n");
- printer->Outdent();
- printer->Print("}\n");
- } else if (method->BidiStreaming()) {
- printer->Print(*vars,
- "std::unique_ptr< ::grpc::ClientReaderWriterInterface< "
- "$Request$, $Response$>> "
- "$Method$(::grpc::ClientContext* context) {\n");
- printer->Indent();
- printer->Print(
- *vars,
- "return std::unique_ptr< "
- "::grpc::ClientReaderWriterInterface< $Request$, $Response$>>("
- "$Method$Raw(context));\n");
- printer->Outdent();
- printer->Print("}\n");
- printer->Print(
- *vars,
- "std::unique_ptr< "
- "::grpc::ClientAsyncReaderWriterInterface< $Request$, $Response$>> "
- "Async$Method$(::grpc::ClientContext* context, "
- "::grpc::CompletionQueue* cq, void* tag) {\n");
- printer->Indent();
- printer->Print(
- *vars,
- "return std::unique_ptr< "
- "::grpc::ClientAsyncReaderWriterInterface< $Request$, $Response$>>("
- "Async$Method$Raw(context, cq, tag));\n");
- printer->Outdent();
- printer->Print("}\n");
- }
- } else {
- if (method->NoStreaming()) {
- printer->Print(
- *vars,
- "virtual ::grpc::ClientAsyncResponseReaderInterface< $Response$>* "
- "Async$Method$Raw(::grpc::ClientContext* context, "
- "const $Request$& request, "
- "::grpc::CompletionQueue* cq) = 0;\n");
- } else if (method->ClientOnlyStreaming()) {
- printer->Print(
- *vars,
- "virtual ::grpc::ClientWriterInterface< $Request$>*"
- " $Method$Raw("
- "::grpc::ClientContext* context, $Response$* response) = 0;\n");
- printer->Print(*vars,
- "virtual ::grpc::ClientAsyncWriterInterface< $Request$>*"
- " Async$Method$Raw(::grpc::ClientContext* context, "
- "$Response$* response, "
- "::grpc::CompletionQueue* cq, void* tag) = 0;\n");
- } else if (method->ServerOnlyStreaming()) {
- printer->Print(
- *vars,
- "virtual ::grpc::ClientReaderInterface< $Response$>* $Method$Raw("
- "::grpc::ClientContext* context, const $Request$& request) = 0;\n");
- printer->Print(
- *vars,
- "virtual ::grpc::ClientAsyncReaderInterface< $Response$>* "
- "Async$Method$Raw("
- "::grpc::ClientContext* context, const $Request$& request, "
- "::grpc::CompletionQueue* cq, void* tag) = 0;\n");
- } else if (method->BidiStreaming()) {
- printer->Print(*vars,
- "virtual ::grpc::ClientReaderWriterInterface< $Request$, "
- "$Response$>* "
- "$Method$Raw(::grpc::ClientContext* context) = 0;\n");
- printer->Print(*vars,
- "virtual ::grpc::ClientAsyncReaderWriterInterface< "
- "$Request$, $Response$>* "
- "Async$Method$Raw(::grpc::ClientContext* context, "
- "::grpc::CompletionQueue* cq, void* tag) = 0;\n");
- }
- }
-}
-
-void PrintHeaderClientMethod(grpc_generator::Printer *printer,
- const grpc_generator::Method *method,
- std::map<grpc::string, grpc::string> *vars,
- bool is_public) {
- (*vars)["Method"] = method->name();
- (*vars)["Request"] = method->input_type_name();
- (*vars)["Response"] = method->output_type_name();
- if (is_public) {
- if (method->NoStreaming()) {
- printer->Print(
- *vars,
- "::grpc::Status $Method$(::grpc::ClientContext* context, "
- "const $Request$& request, $Response$* response) GRPC_OVERRIDE;\n");
- printer->Print(
- *vars,
- "std::unique_ptr< ::grpc::ClientAsyncResponseReader< $Response$>> "
- "Async$Method$(::grpc::ClientContext* context, "
- "const $Request$& request, "
- "::grpc::CompletionQueue* cq) {\n");
- printer->Indent();
- printer->Print(*vars,
- "return std::unique_ptr< "
- "::grpc::ClientAsyncResponseReader< $Response$>>("
- "Async$Method$Raw(context, request, cq));\n");
- printer->Outdent();
- printer->Print("}\n");
- } else if (method->ClientOnlyStreaming()) {
- printer->Print(
- *vars,
- "std::unique_ptr< ::grpc::ClientWriter< $Request$>>"
- " $Method$("
- "::grpc::ClientContext* context, $Response$* response) {\n");
- printer->Indent();
- printer->Print(*vars,
- "return std::unique_ptr< ::grpc::ClientWriter< $Request$>>"
- "($Method$Raw(context, response));\n");
- printer->Outdent();
- printer->Print("}\n");
- printer->Print(*vars,
- "std::unique_ptr< ::grpc::ClientAsyncWriter< $Request$>>"
- " Async$Method$(::grpc::ClientContext* context, "
- "$Response$* response, "
- "::grpc::CompletionQueue* cq, void* tag) {\n");
- printer->Indent();
- printer->Print(
- *vars,
- "return std::unique_ptr< ::grpc::ClientAsyncWriter< $Request$>>("
- "Async$Method$Raw(context, response, cq, tag));\n");
- printer->Outdent();
- printer->Print("}\n");
- } else if (method->ServerOnlyStreaming()) {
- printer->Print(
- *vars,
- "std::unique_ptr< ::grpc::ClientReader< $Response$>>"
- " $Method$(::grpc::ClientContext* context, const $Request$& request)"
- " {\n");
- printer->Indent();
- printer->Print(
- *vars,
- "return std::unique_ptr< ::grpc::ClientReader< $Response$>>"
- "($Method$Raw(context, request));\n");
- printer->Outdent();
- printer->Print("}\n");
- printer->Print(
- *vars,
- "std::unique_ptr< ::grpc::ClientAsyncReader< $Response$>> "
- "Async$Method$("
- "::grpc::ClientContext* context, const $Request$& request, "
- "::grpc::CompletionQueue* cq, void* tag) {\n");
- printer->Indent();
- printer->Print(
- *vars,
- "return std::unique_ptr< ::grpc::ClientAsyncReader< $Response$>>("
- "Async$Method$Raw(context, request, cq, tag));\n");
- printer->Outdent();
- printer->Print("}\n");
- } else if (method->BidiStreaming()) {
- printer->Print(
- *vars,
- "std::unique_ptr< ::grpc::ClientReaderWriter< $Request$, $Response$>>"
- " $Method$(::grpc::ClientContext* context) {\n");
- printer->Indent();
- printer->Print(*vars,
- "return std::unique_ptr< "
- "::grpc::ClientReaderWriter< $Request$, $Response$>>("
- "$Method$Raw(context));\n");
- printer->Outdent();
- printer->Print("}\n");
- printer->Print(*vars,
- "std::unique_ptr< ::grpc::ClientAsyncReaderWriter< "
- "$Request$, $Response$>> "
- "Async$Method$(::grpc::ClientContext* context, "
- "::grpc::CompletionQueue* cq, void* tag) {\n");
- printer->Indent();
- printer->Print(*vars,
- "return std::unique_ptr< "
- "::grpc::ClientAsyncReaderWriter< $Request$, $Response$>>("
- "Async$Method$Raw(context, cq, tag));\n");
- printer->Outdent();
- printer->Print("}\n");
- }
- } else {
- if (method->NoStreaming()) {
- printer->Print(*vars,
- "::grpc::ClientAsyncResponseReader< $Response$>* "
- "Async$Method$Raw(::grpc::ClientContext* context, "
- "const $Request$& request, "
- "::grpc::CompletionQueue* cq) GRPC_OVERRIDE;\n");
- } else if (method->ClientOnlyStreaming()) {
- printer->Print(*vars,
- "::grpc::ClientWriter< $Request$>* $Method$Raw("
- "::grpc::ClientContext* context, $Response$* response) "
- "GRPC_OVERRIDE;\n");
- printer->Print(
- *vars,
- "::grpc::ClientAsyncWriter< $Request$>* Async$Method$Raw("
- "::grpc::ClientContext* context, $Response$* response, "
- "::grpc::CompletionQueue* cq, void* tag) GRPC_OVERRIDE;\n");
- } else if (method->ServerOnlyStreaming()) {
- printer->Print(*vars,
- "::grpc::ClientReader< $Response$>* $Method$Raw("
- "::grpc::ClientContext* context, const $Request$& request)"
- " GRPC_OVERRIDE;\n");
- printer->Print(
- *vars,
- "::grpc::ClientAsyncReader< $Response$>* Async$Method$Raw("
- "::grpc::ClientContext* context, const $Request$& request, "
- "::grpc::CompletionQueue* cq, void* tag) GRPC_OVERRIDE;\n");
- } else if (method->BidiStreaming()) {
- printer->Print(
- *vars,
- "::grpc::ClientReaderWriter< $Request$, $Response$>* "
- "$Method$Raw(::grpc::ClientContext* context) GRPC_OVERRIDE;\n");
- printer->Print(
- *vars,
- "::grpc::ClientAsyncReaderWriter< $Request$, $Response$>* "
- "Async$Method$Raw(::grpc::ClientContext* context, "
- "::grpc::CompletionQueue* cq, void* tag) GRPC_OVERRIDE;\n");
- }
- }
-}
-
-void PrintHeaderClientMethodData(grpc_generator::Printer *printer, const grpc_generator::Method *method,
- std::map<grpc::string, grpc::string> *vars) {
- (*vars)["Method"] = method->name();
- printer->Print(*vars, "const ::grpc::RpcMethod rpcmethod_$Method$_;\n");
-}
-
-void PrintHeaderServerMethodSync(grpc_generator::Printer *printer, const grpc_generator::Method *method,
- std::map<grpc::string, grpc::string> *vars) {
- (*vars)["Method"] = method->name();
- (*vars)["Request"] = method->input_type_name();
- (*vars)["Response"] = method->output_type_name();
- if (method->NoStreaming()) {
- printer->Print(*vars,
- "virtual ::grpc::Status $Method$("
- "::grpc::ServerContext* context, const $Request$* request, "
- "$Response$* response);\n");
- } else if (method->ClientOnlyStreaming()) {
- printer->Print(*vars,
- "virtual ::grpc::Status $Method$("
- "::grpc::ServerContext* context, "
- "::grpc::ServerReader< $Request$>* reader, "
- "$Response$* response);\n");
- } else if (method->ServerOnlyStreaming()) {
- printer->Print(*vars,
- "virtual ::grpc::Status $Method$("
- "::grpc::ServerContext* context, const $Request$* request, "
- "::grpc::ServerWriter< $Response$>* writer);\n");
- } else if (method->BidiStreaming()) {
- printer->Print(
- *vars,
- "virtual ::grpc::Status $Method$("
- "::grpc::ServerContext* context, "
- "::grpc::ServerReaderWriter< $Response$, $Request$>* stream);"
- "\n");
- }
-}
-
-void PrintHeaderServerMethodAsync(
- grpc_generator::Printer *printer,
- const grpc_generator::Method *method,
- std::map<grpc::string, grpc::string> *vars) {
- (*vars)["Method"] = method->name();
- (*vars)["Request"] = method->input_type_name();
- (*vars)["Response"] = method->output_type_name();
- printer->Print(*vars, "template <class BaseClass>\n");
- printer->Print(*vars,
- "class WithAsyncMethod_$Method$ : public BaseClass {\n");
- printer->Print(
- " private:\n"
- " void BaseClassMustBeDerivedFromService(const Service *service) {}\n");
- printer->Print(" public:\n");
- printer->Indent();
- printer->Print(*vars,
- "WithAsyncMethod_$Method$() {\n"
- " ::grpc::Service::MarkMethodAsync($Idx$);\n"
- "}\n");
- printer->Print(*vars,
- "~WithAsyncMethod_$Method$() GRPC_OVERRIDE {\n"
- " BaseClassMustBeDerivedFromService(this);\n"
- "}\n");
- if (method->NoStreaming()) {
- printer->Print(
- *vars,
- "// disable synchronous version of this method\n"
- "::grpc::Status $Method$("
- "::grpc::ServerContext* context, const $Request$* request, "
- "$Response$* response) GRPC_FINAL GRPC_OVERRIDE {\n"
- " abort();\n"
- " return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, \"\");\n"
- "}\n");
- printer->Print(
- *vars,
- "void Request$Method$("
- "::grpc::ServerContext* context, $Request$* request, "
- "::grpc::ServerAsyncResponseWriter< $Response$>* response, "
- "::grpc::CompletionQueue* new_call_cq, "
- "::grpc::ServerCompletionQueue* notification_cq, void *tag) {\n");
- printer->Print(*vars,
- " ::grpc::Service::RequestAsyncUnary($Idx$, context, "
- "request, response, new_call_cq, notification_cq, tag);\n");
- printer->Print("}\n");
- } else if (method->ClientOnlyStreaming()) {
- printer->Print(
- *vars,
- "// disable synchronous version of this method\n"
- "::grpc::Status $Method$("
- "::grpc::ServerContext* context, "
- "::grpc::ServerReader< $Request$>* reader, "
- "$Response$* response) GRPC_FINAL GRPC_OVERRIDE {\n"
- " abort();\n"
- " return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, \"\");\n"
- "}\n");
- printer->Print(
- *vars,
- "void Request$Method$("
- "::grpc::ServerContext* context, "
- "::grpc::ServerAsyncReader< $Response$, $Request$>* reader, "
- "::grpc::CompletionQueue* new_call_cq, "
- "::grpc::ServerCompletionQueue* notification_cq, void *tag) {\n");
- printer->Print(*vars,
- " ::grpc::Service::RequestAsyncClientStreaming($Idx$, "
- "context, reader, new_call_cq, notification_cq, tag);\n");
- printer->Print("}\n");
- } else if (method->ServerOnlyStreaming()) {
- printer->Print(
- *vars,
- "// disable synchronous version of this method\n"
- "::grpc::Status $Method$("
- "::grpc::ServerContext* context, const $Request$* request, "
- "::grpc::ServerWriter< $Response$>* writer) GRPC_FINAL GRPC_OVERRIDE "
- "{\n"
- " abort();\n"
- " return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, \"\");\n"
- "}\n");
- printer->Print(
- *vars,
- "void Request$Method$("
- "::grpc::ServerContext* context, $Request$* request, "
- "::grpc::ServerAsyncWriter< $Response$>* writer, "
- "::grpc::CompletionQueue* new_call_cq, "
- "::grpc::ServerCompletionQueue* notification_cq, void *tag) {\n");
- printer->Print(
- *vars,
- " ::grpc::Service::RequestAsyncServerStreaming($Idx$, "
- "context, request, writer, new_call_cq, notification_cq, tag);\n");
- printer->Print("}\n");
- } else if (method->BidiStreaming()) {
- printer->Print(
- *vars,
- "// disable synchronous version of this method\n"
- "::grpc::Status $Method$("
- "::grpc::ServerContext* context, "
- "::grpc::ServerReaderWriter< $Response$, $Request$>* stream) "
- "GRPC_FINAL GRPC_OVERRIDE {\n"
- " abort();\n"
- " return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, \"\");\n"
- "}\n");
- printer->Print(
- *vars,
- "void Request$Method$("
- "::grpc::ServerContext* context, "
- "::grpc::ServerAsyncReaderWriter< $Response$, $Request$>* stream, "
- "::grpc::CompletionQueue* new_call_cq, "
- "::grpc::ServerCompletionQueue* notification_cq, void *tag) {\n");
- printer->Print(*vars,
- " ::grpc::Service::RequestAsyncBidiStreaming($Idx$, "
- "context, stream, new_call_cq, notification_cq, tag);\n");
- printer->Print("}\n");
- }
- printer->Outdent();
- printer->Print(*vars, "};\n");
-}
-
-void PrintHeaderServerMethodGeneric(
- grpc_generator::Printer *printer,
- const grpc_generator::Method *method,
- std::map<grpc::string, grpc::string> *vars) {
- (*vars)["Method"] = method->name();
- (*vars)["Request"] = method->input_type_name();
- (*vars)["Response"] = method->output_type_name();
- printer->Print(*vars, "template <class BaseClass>\n");
- printer->Print(*vars,
- "class WithGenericMethod_$Method$ : public BaseClass {\n");
- printer->Print(
- " private:\n"
- " void BaseClassMustBeDerivedFromService(const Service *service) {}\n");
- printer->Print(" public:\n");
- printer->Indent();
- printer->Print(*vars,
- "WithGenericMethod_$Method$() {\n"
- " ::grpc::Service::MarkMethodGeneric($Idx$);\n"
- "}\n");
- printer->Print(*vars,
- "~WithGenericMethod_$Method$() GRPC_OVERRIDE {\n"
- " BaseClassMustBeDerivedFromService(this);\n"
- "}\n");
- if (method->NoStreaming()) {
- printer->Print(
- *vars,
- "// disable synchronous version of this method\n"
- "::grpc::Status $Method$("
- "::grpc::ServerContext* context, const $Request$* request, "
- "$Response$* response) GRPC_FINAL GRPC_OVERRIDE {\n"
- " abort();\n"
- " return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, \"\");\n"
- "}\n");
- } else if (method->ClientOnlyStreaming()) {
- printer->Print(
- *vars,
- "// disable synchronous version of this method\n"
- "::grpc::Status $Method$("
- "::grpc::ServerContext* context, "
- "::grpc::ServerReader< $Request$>* reader, "
- "$Response$* response) GRPC_FINAL GRPC_OVERRIDE {\n"
- " abort();\n"
- " return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, \"\");\n"
- "}\n");
- } else if (method->ServerOnlyStreaming()) {
- printer->Print(
- *vars,
- "// disable synchronous version of this method\n"
- "::grpc::Status $Method$("
- "::grpc::ServerContext* context, const $Request$* request, "
- "::grpc::ServerWriter< $Response$>* writer) GRPC_FINAL GRPC_OVERRIDE "
- "{\n"
- " abort();\n"
- " return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, \"\");\n"
- "}\n");
- } else if (method->BidiStreaming()) {
- printer->Print(
- *vars,
- "// disable synchronous version of this method\n"
- "::grpc::Status $Method$("
- "::grpc::ServerContext* context, "
- "::grpc::ServerReaderWriter< $Response$, $Request$>* stream) "
- "GRPC_FINAL GRPC_OVERRIDE {\n"
- " abort();\n"
- " return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, \"\");\n"
- "}\n");
- }
- printer->Outdent();
- printer->Print(*vars, "};\n");
-}
-
-void PrintHeaderService(grpc_generator::Printer *printer,
- const grpc_generator::Service *service,
- std::map<grpc::string, grpc::string> *vars) {
- (*vars)["Service"] = service->name();
-
- printer->Print(*vars,
- "class $Service$ GRPC_FINAL {\n"
- " public:\n");
- printer->Indent();
-
- // Client side
- printer->Print(
- "class StubInterface {\n"
- " public:\n");
- printer->Indent();
- printer->Print("virtual ~StubInterface() {}\n");
- for (int i = 0; i < service->method_count(); ++i) {
- PrintHeaderClientMethodInterfaces(printer, service->method(i).get(), vars, true);
- }
- printer->Outdent();
- printer->Print("private:\n");
- printer->Indent();
- for (int i = 0; i < service->method_count(); ++i) {
- PrintHeaderClientMethodInterfaces(printer, service->method(i).get(), vars, false);
- }
- printer->Outdent();
- printer->Print("};\n");
- printer->Print(
- "class Stub GRPC_FINAL : public StubInterface"
- " {\n public:\n");
- printer->Indent();
- printer->Print("Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel);\n");
- for (int i = 0; i < service->method_count(); ++i) {
- PrintHeaderClientMethod(printer, service->method(i).get(), vars, true);
- }
- printer->Outdent();
- printer->Print("\n private:\n");
- printer->Indent();
- printer->Print("std::shared_ptr< ::grpc::ChannelInterface> channel_;\n");
- for (int i = 0; i < service->method_count(); ++i) {
- PrintHeaderClientMethod(printer, service->method(i).get(), vars, false);
- }
- for (int i = 0; i < service->method_count(); ++i) {
- PrintHeaderClientMethodData(printer, service->method(i).get(), vars);
- }
- printer->Outdent();
- printer->Print("};\n");
- printer->Print(
- "static std::unique_ptr<Stub> NewStub(const std::shared_ptr< "
- "::grpc::ChannelInterface>& channel, "
- "const ::grpc::StubOptions& options = ::grpc::StubOptions());\n");
-
- printer->Print("\n");
-
- // Server side - base
- printer->Print(
- "class Service : public ::grpc::Service {\n"
- " public:\n");
- printer->Indent();
- printer->Print("Service();\n");
- printer->Print("virtual ~Service();\n");
- for (int i = 0; i < service->method_count(); ++i) {
- PrintHeaderServerMethodSync(printer, service->method(i).get(), vars);
- }
- printer->Outdent();
- printer->Print("};\n");
-
- // Server side - Asynchronous
- for (int i = 0; i < service->method_count(); ++i) {
- (*vars)["Idx"] = as_string(i);
- PrintHeaderServerMethodAsync(printer, service->method(i).get(), vars);
- }
-
- printer->Print("typedef ");
-
- for (int i = 0; i < service->method_count(); ++i) {
- (*vars)["method_name"] = service->method(i).get()->name();
- printer->Print(*vars, "WithAsyncMethod_$method_name$<");
- }
- printer->Print("Service");
- for (int i = 0; i < service->method_count(); ++i) {
- printer->Print(" >");
- }
- printer->Print(" AsyncService;\n");
-
- // Server side - Generic
- for (int i = 0; i < service->method_count(); ++i) {
- (*vars)["Idx"] = as_string(i);
- PrintHeaderServerMethodGeneric(printer, service->method(i).get(), vars);
- }
-
- printer->Outdent();
- printer->Print("};\n");
-}
-
-grpc::string GetHeaderServices(grpc_generator::File *file,
- const Parameters ¶ms) {
- grpc::string output;
- {
- // Scope the output stream so it closes and finalizes output to the string.
- auto printer = file->CreatePrinter(&output);
- std::map<grpc::string, grpc::string> vars;
- // Package string is empty or ends with a dot. It is used to fully qualify
- // method names.
- vars["Package"] = file->package();
- if (!file->package().empty()) {
- vars["Package"].append(".");
- }
-
- if (!params.services_namespace.empty()) {
- vars["services_namespace"] = params.services_namespace;
- printer->Print(vars, "\nnamespace $services_namespace$ {\n\n");
- }
-
- for (int i = 0; i < file->service_count(); ++i) {
- PrintHeaderService(printer.get(), file->service(i).get(), &vars);
- printer->Print("\n");
- }
-
- if (!params.services_namespace.empty()) {
- printer->Print(vars, "} // namespace $services_namespace$\n\n");
- }
- }
- return output;
-}
-
-grpc::string GetHeaderEpilogue(grpc_generator::File *file, const Parameters & /*params*/) {
- grpc::string output;
- {
- // Scope the output stream so it closes and finalizes output to the string.
- auto printer = file->CreatePrinter(&output);
- std::map<grpc::string, grpc::string> vars;
-
- vars["filename"] = file->filename();
- vars["filename_identifier"] = FilenameIdentifier(file->filename());
-
- if (!file->package().empty()) {
- std::vector<grpc::string> parts = file->package_parts();
-
- for (auto part = parts.rbegin(); part != parts.rend(); part++) {
- vars["part"] = *part;
- printer->Print(vars, "} // namespace $part$\n");
- }
- printer->Print(vars, "\n");
- }
-
- printer->Print(vars, "\n");
- printer->Print(vars, "#endif // GRPC_$filename_identifier$__INCLUDED\n");
- }
- return output;
-}
-
-grpc::string GetSourcePrologue(grpc_generator::File *file, const Parameters & /*params*/) {
- grpc::string output;
- {
- // Scope the output stream so it closes and finalizes output to the string.
- auto printer = file->CreatePrinter(&output);
- std::map<grpc::string, grpc::string> vars;
-
- vars["filename"] = file->filename();
- vars["filename_base"] = file->filename_without_ext();
- vars["message_header_ext"] = file->message_header_ext();
- vars["service_header_ext"] = file->service_header_ext();
-
- printer->Print(vars, "// Generated by the gRPC protobuf plugin.\n");
- printer->Print(vars,
- "// If you make any local change, they will be lost.\n");
- printer->Print(vars, "// source: $filename$\n\n");
- printer->Print(vars, "#include \"$filename_base$$message_header_ext$\"\n");
- printer->Print(vars, "#include \"$filename_base$$service_header_ext$\"\n");
- printer->Print("\n");
- }
- return output;
-}
-
-grpc::string GetSourceIncludes(grpc_generator::File *file,
- const Parameters ¶ms) {
- grpc::string output;
- {
- // Scope the output stream so it closes and finalizes output to the string.
- auto printer = file->CreatePrinter(&output);
- std::map<grpc::string, grpc::string> vars;
-
- static const char *headers_strs[] = {
- "grpc++/impl/codegen/async_stream.h",
- "grpc++/impl/codegen/async_unary_call.h",
- "grpc++/impl/codegen/channel_interface.h",
- "grpc++/impl/codegen/client_unary_call.h",
- "grpc++/impl/codegen/method_handler_impl.h",
- "grpc++/impl/codegen/rpc_service_method.h",
- "grpc++/impl/codegen/service_type.h",
- "grpc++/impl/codegen/sync_stream.h"
- };
- std::vector<grpc::string> headers(headers_strs, array_end(headers_strs));
- PrintIncludes(printer.get(), headers, params);
-
- if (!file->package().empty()) {
- printer->Print("\n");
- std::vector<grpc::string> parts = file->package_parts();
-
- for (auto part = parts.begin(); part != parts.end(); part++) {
- vars["part"] = *part;
- printer->Print(vars, "namespace $part$ {\n");
- }
- }
-
- printer->Print(vars, "\n");
- }
- return output;
-}
-
-void PrintSourceClientMethod(grpc_generator::Printer *printer,
- const grpc_generator::Method *method,
- std::map<grpc::string, grpc::string> *vars) {
- (*vars)["Method"] = method->name();
- (*vars)["Request"] = method->input_type_name();
- (*vars)["Response"] = method->output_type_name();
- if (method->NoStreaming()) {
- printer->Print(*vars,
- "::grpc::Status $ns$$Service$::Stub::$Method$("
- "::grpc::ClientContext* context, "
- "const $Request$& request, $Response$* response) {\n");
- printer->Print(*vars,
- " return ::grpc::BlockingUnaryCall(channel_.get(), "
- "rpcmethod_$Method$_, "
- "context, request, response);\n"
- "}\n\n");
- printer->Print(
- *vars,
- "::grpc::ClientAsyncResponseReader< $Response$>* "
- "$ns$$Service$::Stub::Async$Method$Raw(::grpc::ClientContext* context, "
- "const $Request$& request, "
- "::grpc::CompletionQueue* cq) {\n");
- printer->Print(*vars,
- " return new "
- "::grpc::ClientAsyncResponseReader< $Response$>("
- "channel_.get(), cq, "
- "rpcmethod_$Method$_, "
- "context, request);\n"
- "}\n\n");
- } else if (method->ClientOnlyStreaming()) {
- printer->Print(*vars,
- "::grpc::ClientWriter< $Request$>* "
- "$ns$$Service$::Stub::$Method$Raw("
- "::grpc::ClientContext* context, $Response$* response) {\n");
- printer->Print(*vars,
- " return new ::grpc::ClientWriter< $Request$>("
- "channel_.get(), "
- "rpcmethod_$Method$_, "
- "context, response);\n"
- "}\n\n");
- printer->Print(*vars,
- "::grpc::ClientAsyncWriter< $Request$>* "
- "$ns$$Service$::Stub::Async$Method$Raw("
- "::grpc::ClientContext* context, $Response$* response, "
- "::grpc::CompletionQueue* cq, void* tag) {\n");
- printer->Print(*vars,
- " return new ::grpc::ClientAsyncWriter< $Request$>("
- "channel_.get(), cq, "
- "rpcmethod_$Method$_, "
- "context, response, tag);\n"
- "}\n\n");
- } else if (method->ServerOnlyStreaming()) {
- printer->Print(
- *vars,
- "::grpc::ClientReader< $Response$>* "
- "$ns$$Service$::Stub::$Method$Raw("
- "::grpc::ClientContext* context, const $Request$& request) {\n");
- printer->Print(*vars,
- " return new ::grpc::ClientReader< $Response$>("
- "channel_.get(), "
- "rpcmethod_$Method$_, "
- "context, request);\n"
- "}\n\n");
- printer->Print(*vars,
- "::grpc::ClientAsyncReader< $Response$>* "
- "$ns$$Service$::Stub::Async$Method$Raw("
- "::grpc::ClientContext* context, const $Request$& request, "
- "::grpc::CompletionQueue* cq, void* tag) {\n");
- printer->Print(*vars,
- " return new ::grpc::ClientAsyncReader< $Response$>("
- "channel_.get(), cq, "
- "rpcmethod_$Method$_, "
- "context, request, tag);\n"
- "}\n\n");
- } else if (method->BidiStreaming()) {
- printer->Print(
- *vars,
- "::grpc::ClientReaderWriter< $Request$, $Response$>* "
- "$ns$$Service$::Stub::$Method$Raw(::grpc::ClientContext* context) {\n");
- printer->Print(*vars,
- " return new ::grpc::ClientReaderWriter< "
- "$Request$, $Response$>("
- "channel_.get(), "
- "rpcmethod_$Method$_, "
- "context);\n"
- "}\n\n");
- printer->Print(
- *vars,
- "::grpc::ClientAsyncReaderWriter< $Request$, $Response$>* "
- "$ns$$Service$::Stub::Async$Method$Raw(::grpc::ClientContext* context, "
- "::grpc::CompletionQueue* cq, void* tag) {\n");
- printer->Print(*vars,
- " return new "
- "::grpc::ClientAsyncReaderWriter< $Request$, $Response$>("
- "channel_.get(), cq, "
- "rpcmethod_$Method$_, "
- "context, tag);\n"
- "}\n\n");
- }
-}
-
-void PrintSourceServerMethod(grpc_generator::Printer *printer,
- const grpc_generator::Method *method,
- std::map<grpc::string, grpc::string> *vars) {
- (*vars)["Method"] = method->name();
- (*vars)["Request"] = method->input_type_name();
- (*vars)["Response"] = method->output_type_name();
- if (method->NoStreaming()) {
- printer->Print(*vars,
- "::grpc::Status $ns$$Service$::Service::$Method$("
- "::grpc::ServerContext* context, "
- "const $Request$* request, $Response$* response) {\n");
- printer->Print(" (void) context;\n");
- printer->Print(" (void) request;\n");
- printer->Print(" (void) response;\n");
- printer->Print(
- " return ::grpc::Status("
- "::grpc::StatusCode::UNIMPLEMENTED, \"\");\n");
- printer->Print("}\n\n");
- } else if (method->ClientOnlyStreaming()) {
- printer->Print(*vars,
- "::grpc::Status $ns$$Service$::Service::$Method$("
- "::grpc::ServerContext* context, "
- "::grpc::ServerReader< $Request$>* reader, "
- "$Response$* response) {\n");
- printer->Print(" (void) context;\n");
- printer->Print(" (void) reader;\n");
- printer->Print(" (void) response;\n");
- printer->Print(
- " return ::grpc::Status("
- "::grpc::StatusCode::UNIMPLEMENTED, \"\");\n");
- printer->Print("}\n\n");
- } else if (method->ServerOnlyStreaming()) {
- printer->Print(*vars,
- "::grpc::Status $ns$$Service$::Service::$Method$("
- "::grpc::ServerContext* context, "
- "const $Request$* request, "
- "::grpc::ServerWriter< $Response$>* writer) {\n");
- printer->Print(" (void) context;\n");
- printer->Print(" (void) request;\n");
- printer->Print(" (void) writer;\n");
- printer->Print(
- " return ::grpc::Status("
- "::grpc::StatusCode::UNIMPLEMENTED, \"\");\n");
- printer->Print("}\n\n");
- } else if (method->BidiStreaming()) {
- printer->Print(*vars,
- "::grpc::Status $ns$$Service$::Service::$Method$("
- "::grpc::ServerContext* context, "
- "::grpc::ServerReaderWriter< $Response$, $Request$>* "
- "stream) {\n");
- printer->Print(" (void) context;\n");
- printer->Print(" (void) stream;\n");
- printer->Print(
- " return ::grpc::Status("
- "::grpc::StatusCode::UNIMPLEMENTED, \"\");\n");
- printer->Print("}\n\n");
- }
-}
-
-void PrintSourceService(grpc_generator::Printer *printer,
- const grpc_generator::Service *service,
- std::map<grpc::string, grpc::string> *vars) {
- (*vars)["Service"] = service->name();
-
- printer->Print(*vars,
- "static const char* $prefix$$Service$_method_names[] = {\n");
- for (int i = 0; i < service->method_count(); ++i) {
- (*vars)["Method"] = service->method(i).get()->name();
- printer->Print(*vars, " \"/$Package$$Service$/$Method$\",\n");
- }
- printer->Print(*vars, "};\n\n");
-
- printer->Print(*vars,
- "std::unique_ptr< $ns$$Service$::Stub> $ns$$Service$::NewStub("
- "const std::shared_ptr< ::grpc::ChannelInterface>& channel, "
- "const ::grpc::StubOptions& options) {\n"
- " std::unique_ptr< $ns$$Service$::Stub> stub(new "
- "$ns$$Service$::Stub(channel));\n"
- " return stub;\n"
- "}\n\n");
- printer->Print(*vars,
- "$ns$$Service$::Stub::Stub(const std::shared_ptr< "
- "::grpc::ChannelInterface>& channel)\n");
- printer->Indent();
- printer->Print(": channel_(channel)");
- for (int i = 0; i < service->method_count(); ++i) {
- auto method = service->method(i);
- (*vars)["Method"] = method->name();
- (*vars)["Idx"] = as_string(i);
- if (method->NoStreaming()) {
- (*vars)["StreamingType"] = "NORMAL_RPC";
- } else if (method->ClientOnlyStreaming()) {
- (*vars)["StreamingType"] = "CLIENT_STREAMING";
- } else if (method->ServerOnlyStreaming()) {
- (*vars)["StreamingType"] = "SERVER_STREAMING";
- } else {
- (*vars)["StreamingType"] = "BIDI_STREAMING";
- }
- printer->Print(*vars,
- ", rpcmethod_$Method$_("
- "$prefix$$Service$_method_names[$Idx$], "
- "::grpc::RpcMethod::$StreamingType$, "
- "channel"
- ")\n");
- }
- printer->Print("{}\n\n");
- printer->Outdent();
-
- for (int i = 0; i < service->method_count(); ++i) {
- (*vars)["Idx"] = as_string(i);
- PrintSourceClientMethod(printer, service->method(i).get(), vars);
- }
-
- printer->Print(*vars, "$ns$$Service$::Service::Service() {\n");
- printer->Indent();
- printer->Print(*vars, "(void)$prefix$$Service$_method_names;\n");
- for (int i = 0; i < service->method_count(); ++i) {
- auto method = service->method(i);
- (*vars)["Idx"] = as_string(i);
- (*vars)["Method"] = method->name();
- (*vars)["Request"] = method->input_type_name();
- (*vars)["Response"] = method->output_type_name();
- if (method->NoStreaming()) {
- printer->Print(
- *vars,
- "AddMethod(new ::grpc::RpcServiceMethod(\n"
- " $prefix$$Service$_method_names[$Idx$],\n"
- " ::grpc::RpcMethod::NORMAL_RPC,\n"
- " new ::grpc::RpcMethodHandler< $ns$$Service$::Service, "
- "$Request$, "
- "$Response$>(\n"
- " std::mem_fn(&$ns$$Service$::Service::$Method$), this)));\n");
- } else if (method->ClientOnlyStreaming()) {
- printer->Print(
- *vars,
- "AddMethod(new ::grpc::RpcServiceMethod(\n"
- " $prefix$$Service$_method_names[$Idx$],\n"
- " ::grpc::RpcMethod::CLIENT_STREAMING,\n"
- " new ::grpc::ClientStreamingHandler< "
- "$ns$$Service$::Service, $Request$, $Response$>(\n"
- " std::mem_fn(&$ns$$Service$::Service::$Method$), this)));\n");
- } else if (method->ServerOnlyStreaming()) {
- printer->Print(
- *vars,
- "AddMethod(new ::grpc::RpcServiceMethod(\n"
- " $prefix$$Service$_method_names[$Idx$],\n"
- " ::grpc::RpcMethod::SERVER_STREAMING,\n"
- " new ::grpc::ServerStreamingHandler< "
- "$ns$$Service$::Service, $Request$, $Response$>(\n"
- " std::mem_fn(&$ns$$Service$::Service::$Method$), this)));\n");
- } else if (method->BidiStreaming()) {
- printer->Print(
- *vars,
- "AddMethod(new ::grpc::RpcServiceMethod(\n"
- " $prefix$$Service$_method_names[$Idx$],\n"
- " ::grpc::RpcMethod::BIDI_STREAMING,\n"
- " new ::grpc::BidiStreamingHandler< "
- "$ns$$Service$::Service, $Request$, $Response$>(\n"
- " std::mem_fn(&$ns$$Service$::Service::$Method$), this)));\n");
- }
- }
- printer->Outdent();
- printer->Print(*vars, "}\n\n");
- printer->Print(*vars,
- "$ns$$Service$::Service::~Service() {\n"
- "}\n\n");
- for (int i = 0; i < service->method_count(); ++i) {
- (*vars)["Idx"] = as_string(i);
- PrintSourceServerMethod(printer, service->method(i).get(), vars);
- }
-}
-
-grpc::string GetSourceServices(grpc_generator::File *file,
- const Parameters ¶ms) {
- grpc::string output;
- {
- // Scope the output stream so it closes and finalizes output to the string.
- auto printer = file->CreatePrinter(&output);
- std::map<grpc::string, grpc::string> vars;
- // Package string is empty or ends with a dot. It is used to fully qualify
- // method names.
- vars["Package"] = file->package();
- if (!file->package().empty()) {
- vars["Package"].append(".");
- }
- if (!params.services_namespace.empty()) {
- vars["ns"] = params.services_namespace + "::";
- vars["prefix"] = params.services_namespace;
- } else {
- vars["ns"] = "";
- vars["prefix"] = "";
- }
-
- for (int i = 0; i < file->service_count(); ++i) {
- PrintSourceService(printer.get(), file->service(i).get(), &vars);
- printer->Print("\n");
- }
- }
- return output;
-}
-
-grpc::string GetSourceEpilogue(grpc_generator::File *file, const Parameters & /*params*/) {
- grpc::string temp;
-
- if (!file->package().empty()) {
- std::vector<grpc::string> parts = file->package_parts();
-
- for (auto part = parts.begin(); part != parts.end(); part++) {
- temp.append("} // namespace ");
- temp.append(*part);
- temp.append("\n");
- }
- temp.append("\n");
- }
-
- return temp;
-}
-
-} // namespace grpc_cpp_generator
diff --git a/third_party/flatbuffers/grpc/src/compiler/cpp_generator.h b/third_party/flatbuffers/grpc/src/compiler/cpp_generator.h
deleted file mode 100644
index a4adee7..0000000
--- a/third_party/flatbuffers/grpc/src/compiler/cpp_generator.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- *
- * Copyright 2015, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#ifndef GRPC_INTERNAL_COMPILER_CPP_GENERATOR_H
-#define GRPC_INTERNAL_COMPILER_CPP_GENERATOR_H
-
-// cpp_generator.h/.cc do not directly depend on GRPC/ProtoBuf, such that they
-// can be used to generate code for other serialization systems, such as
-// FlatBuffers.
-
-#include <memory>
-#include <vector>
-
-#include "src/compiler/schema_interface.h"
-
-namespace grpc_cpp_generator {
-
-// Contains all the parameters that are parsed from the command line.
-struct Parameters {
- // Puts the service into a namespace
- grpc::string services_namespace;
- // Use system includes (<>) or local includes ("")
- bool use_system_headers;
- // Prefix to any grpc include
- grpc::string grpc_search_path;
-};
-
-// Return the prologue of the generated header file.
-grpc::string GetHeaderPrologue(grpc_generator::File *file, const Parameters ¶ms);
-
-// Return the includes needed for generated header file.
-grpc::string GetHeaderIncludes(grpc_generator::File *file, const Parameters ¶ms);
-
-// Return the includes needed for generated source file.
-grpc::string GetSourceIncludes(grpc_generator::File *file, const Parameters ¶ms);
-
-// Return the epilogue of the generated header file.
-grpc::string GetHeaderEpilogue(grpc_generator::File *file, const Parameters ¶ms);
-
-// Return the prologue of the generated source file.
-grpc::string GetSourcePrologue(grpc_generator::File *file, const Parameters ¶ms);
-
-// Return the services for generated header file.
-grpc::string GetHeaderServices(grpc_generator::File *file, const Parameters ¶ms);
-
-// Return the services for generated source file.
-grpc::string GetSourceServices(grpc_generator::File *file, const Parameters ¶ms);
-
-// Return the epilogue of the generated source file.
-grpc::string GetSourceEpilogue(grpc_generator::File *file, const Parameters ¶ms);
-
-} // namespace grpc_cpp_generator
-
-#endif // GRPC_INTERNAL_COMPILER_CPP_GENERATOR_H
diff --git a/third_party/flatbuffers/grpc/src/compiler/go_generator.cc b/third_party/flatbuffers/grpc/src/compiler/go_generator.cc
deleted file mode 100644
index ce4223d..0000000
--- a/third_party/flatbuffers/grpc/src/compiler/go_generator.cc
+++ /dev/null
@@ -1,437 +0,0 @@
-/*
- *
- * Copyright 2015, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation AN/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#include <map>
-#include <cctype>
-#include <sstream>
-
-#include "src/compiler/go_generator.h"
-
-template <class T>
-grpc::string as_string(T x) {
- std::ostringstream out;
- out << x;
- return out.str();
-}
-
-namespace grpc_go_generator {
-
-// Returns string with first letter to lowerCase
-grpc::string unexportName(grpc::string s) {
- if (s.empty())
- return s;
- s[0] = static_cast<char>(std::tolower(s[0]));
- return s;
-}
-
-// Returns string with first letter to uppercase
-grpc::string exportName(grpc::string s) {
- if (s.empty())
- return s;
- s[0] = static_cast<char>(std::toupper(s[0]));
- return s;
-}
-
-// Generates imports for the service
-void GenerateImports(grpc_generator::File *file, grpc_generator::Printer *printer,
- std::map<grpc::string, grpc::string> vars) {
- vars["filename"] = file->filename();
- printer->Print("//Generated by gRPC Go plugin\n");
- printer->Print("//If you make any local changes, they will be lost\n");
- printer->Print(vars, "//source: $filename$\n\n");
- printer->Print(vars, "package $Package$\n\n");
- if (file->additional_imports() != "") {
- printer->Print(file->additional_imports().c_str());
- printer->Print("\n\n");
- }
- printer->Print("import (\n");
- printer->Indent();
- printer->Print(vars, "$context$ \"golang.org/x/net/context\"\n");
- printer->Print(vars, "$grpc$ \"google.golang.org/grpc\"\n");
- printer->Outdent();
- printer->Print(")\n\n");
-}
-
-// Generates Server method signature source
-void GenerateServerMethodSignature(const grpc_generator::Method *method, grpc_generator::Printer *printer,
- std::map<grpc::string, grpc::string> vars) {
- vars["Method"] = exportName(method->name());
- vars["Request"] = method->input_name();
- vars["Response"] = (vars["CustomMethodIO"] == "") ? method->output_name() : vars["CustomMethodIO"];
- if (method->NoStreaming()) {
- printer->Print(vars, "$Method$($context$.Context, *$Request$) (*$Response$, error)");
- } else if (method->ServerOnlyStreaming()) {
- printer->Print(vars, "$Method$(*$Request$, $Service$_$Method$Server) error");
- } else {
- printer->Print(vars, "$Method$($Service$_$Method$Server) error");
- }
-}
-
-void GenerateServerMethod(const grpc_generator::Method *method, grpc_generator::Printer *printer,
- std::map<grpc::string, grpc::string> vars) {
- vars["Method"] = exportName(method->name());
- vars["Request"] = method->input_name();
- vars["Response"] = (vars["CustomMethodIO"] == "") ? method->output_name() : vars["CustomMethodIO"];
- vars["FullMethodName"] = "/" + vars["Package"] + "." + vars["Service"] + "/" + vars["Method"];
- vars["Handler"] = "_" + vars["Service"] + "_" + vars["Method"] + "_Handler";
- if (method->NoStreaming()) {
- printer->Print(vars, "func $Handler$(srv interface{}, ctx $context$.Context,\n\tdec func(interface{}) error, interceptor $grpc$.UnaryServerInterceptor) (interface{}, error) {\n");
- printer->Indent();
- printer->Print(vars, "in := new($Request$)\n");
- printer->Print("if err := dec(in); err != nil { return nil, err }\n");
- printer->Print(vars, "if interceptor == nil { return srv.($Service$Server).$Method$(ctx, in) }\n");
- printer->Print(vars, "info := &$grpc$.UnaryServerInfo{\n");
- printer->Indent();
- printer->Print("Server: srv,\n");
- printer->Print(vars, "FullMethod: \"$FullMethodName$\",\n");
- printer->Outdent();
- printer->Print("}\n\n");
- printer->Print(vars, "handler := func(ctx $context$.Context, req interface{}) (interface{}, error) {\n");
- printer->Indent();
- printer->Print(vars, "return srv.($Service$Server).$Method$(ctx, req.(* $Request$))\n");
- printer->Outdent();
- printer->Print("}\n");
- printer->Print("return interceptor(ctx, in, info, handler)\n");
- printer->Outdent();
- printer->Print("}\n\n");
- return;
- }
- vars["StreamType"] = vars["ServiceUnexported"] + vars["Method"] + "Server";
- printer->Print(vars, "func $Handler$(srv interface{}, stream $grpc$.ServerStream) error {\n");
- printer->Indent();
- if (method->ServerOnlyStreaming()) {
- printer->Print(vars, "m := new($Request$)\n");
- printer->Print(vars, "if err := stream.RecvMsg(m); err != nil { return err }\n");
- printer->Print(vars, "return srv.($Service$Server).$Method$(m, &$StreamType${stream})\n");
- } else {
- printer->Print(vars, "return srv.($Service$Server).$Method$(&$StreamType${stream})\n");
- }
- printer->Outdent();
- printer->Print("}\n\n");
-
- bool genSend = method->BidiStreaming() || method->ServerOnlyStreaming();
- bool genRecv = method->BidiStreaming() || method->ClientOnlyStreaming();
- bool genSendAndClose = method->ClientOnlyStreaming();
-
- printer->Print(vars, "type $Service$_$Method$Server interface { \n");
- printer->Indent();
- if (genSend) {
- printer->Print(vars, "Send(* $Response$) error\n");
- }
- if (genRecv) {
- printer->Print(vars, "Recv() (* $Request$, error)\n");
- }
- if (genSendAndClose) {
- printer->Print(vars, "SendAndClose(* $Response$) error\n");
- }
- printer->Print(vars, "$grpc$.ServerStream\n");
- printer->Outdent();
- printer->Print("}\n\n");
-
- printer->Print(vars, "type $StreamType$ struct {\n");
- printer->Indent();
- printer->Print(vars, "$grpc$.ServerStream\n");
- printer->Outdent();
- printer->Print("}\n\n");
-
- if (genSend) {
- printer->Print(vars, "func (x *$StreamType$) Send(m *$Response$) error {\n");
- printer->Indent();
- printer->Print("return x.ServerStream.SendMsg(m)\n");
- printer->Outdent();
- printer->Print("}\n\n");
- }
- if (genRecv) {
- printer->Print(vars, "func (x *$StreamType$) Recv() (*$Request$, error) {\n");
- printer->Indent();
- printer->Print(vars, "m := new($Request$)\n");
- printer->Print("if err := x.ServerStream.RecvMsg(m); err != nil { return nil, err }\n");
- printer->Print("return m, nil\n");
- printer->Outdent();
- printer->Print("}\n\n");
- }
- if (genSendAndClose) {
- printer->Print(vars, "func (x *$StreamType$) SendAndClose(m *$Response$) error {\n");
- printer->Indent();
- printer->Print("return x.ServerStream.SendMsg(m)\n");
- printer->Outdent();
- printer->Print("}\n\n");
- }
-
-}
-
-// Generates Client method signature source
-void GenerateClientMethodSignature(const grpc_generator::Method *method, grpc_generator::Printer *printer,
- std::map<grpc::string, grpc::string> vars) {
- vars["Method"] = exportName(method->name());
- vars["Request"] = ", in *" + ((vars["CustomMethodIO"] == "") ? method->input_name() : vars["CustomMethodIO"]);
- if (method->ClientOnlyStreaming() || method->BidiStreaming()) {
- vars["Request"] = "";
- }
- vars["Response"] = "* " + method->output_name();
- if (method->ClientOnlyStreaming() || method->BidiStreaming() || method->ServerOnlyStreaming()) {
- vars["Response"] = vars["Service"] + "_" + vars["Method"] + "Client" ;
- }
- printer->Print(vars, "$Method$(ctx $context$.Context$Request$, \n\topts... $grpc$.CallOption) ($Response$, error)");
-}
-
-// Generates Client method source
-void GenerateClientMethod(const grpc_generator::Method *method, grpc_generator::Printer *printer,
- std::map<grpc::string, grpc::string> vars) {
- printer->Print(vars, "func (c *$ServiceUnexported$Client) ");
- GenerateClientMethodSignature(method, printer, vars);
- printer->Print(" {\n");
- printer->Indent();
- vars["Method"] = exportName(method->name());
- vars["Request"] = (vars["CustomMethodIO"] == "") ? method->input_name() : vars["CustomMethodIO"];
- vars["Response"] = method->output_name();
- vars["FullMethodName"] = "/" + vars["Package"] + "." + vars["Service"] + "/" + vars["Method"];
- if (method->NoStreaming()) {
- printer->Print(vars, "out := new($Response$)\n");
- printer->Print(vars, "err := $grpc$.Invoke(ctx, \"$FullMethodName$\", in, out, c.cc, opts...)\n");
- printer->Print("if err != nil { return nil, err }\n");
- printer->Print("return out, nil\n");
- printer->Outdent();
- printer->Print("}\n\n");
- return;
- }
- vars["StreamType"] = vars["ServiceUnexported"] + vars["Method"] + "Client";
- printer->Print(vars, "stream, err := $grpc$.NewClientStream(ctx, &$MethodDesc$, c.cc, \"$FullMethodName$\", opts...)\n");
- printer->Print("if err != nil { return nil, err }\n");
-
- printer->Print(vars, "x := &$StreamType${stream}\n");
- if (method->ServerOnlyStreaming()) {
- printer->Print("if err := x.ClientStream.SendMsg(in); err != nil { return nil, err }\n");
- printer->Print("if err := x.ClientStream.CloseSend(); err != nil { return nil, err }\n");
- }
- printer->Print("return x,nil\n");
- printer->Outdent();
- printer->Print("}\n\n");
-
- bool genSend = method->BidiStreaming() || method->ClientOnlyStreaming();
- bool genRecv = method->BidiStreaming() || method->ServerOnlyStreaming();
- bool genCloseAndRecv = method->ClientOnlyStreaming();
-
- //Stream interface
- printer->Print(vars, "type $Service$_$Method$Client interface {\n");
- printer->Indent();
- if (genSend) {
- printer->Print(vars, "Send(*$Request$) error\n");
- }
- if (genRecv) {
- printer->Print(vars, "Recv() (*$Response$, error)\n");
- }
- if (genCloseAndRecv) {
- printer->Print(vars, "CloseAndRecv() (*$Response$, error)\n");
- }
- printer->Print(vars, "$grpc$.ClientStream\n");
- printer->Outdent();
- printer->Print("}\n\n");
-
- //Stream Client
- printer->Print(vars, "type $StreamType$ struct{\n");
- printer->Indent();
- printer->Print(vars, "$grpc$.ClientStream\n");
- printer->Outdent();
- printer->Print("}\n\n");
-
- if (genSend) {
- printer->Print(vars, "func (x *$StreamType$) Send(m *$Request$) error {\n");
- printer->Indent();
- printer->Print("return x.ClientStream.SendMsg(m)\n");
- printer->Outdent();
- printer->Print("}\n\n");
- }
-
- if (genRecv) {
- printer->Print(vars, "func (x *$StreamType$) Recv() (*$Response$, error) {\n");
- printer->Indent();
- printer->Print(vars, "m := new($Response$)\n");
- printer->Print("if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err }\n");
- printer->Print("return m, nil\n");
- printer->Outdent();
- printer->Print("}\n\n");
- }
-
- if (genCloseAndRecv) {
- printer->Print(vars, "func (x *$StreamType$) CloseAndRecv() (*$Response$, error) {\n");
- printer->Indent();
- printer->Print("if err := x.ClientStream.CloseSend(); err != nil { return nil, err }\n");
- printer->Print(vars, "m := new ($Response$)\n");
- printer->Print("if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err }\n");
- printer->Print("return m, nil\n");
- printer->Outdent();
- printer->Print("}\n\n");
- }
-}
-
-// Generates client API for the service
-void GenerateService(const grpc_generator::Service *service, grpc_generator::Printer* printer,
- std::map<grpc::string, grpc::string> vars) {
- vars["Service"] = exportName(service->name());
- // Client Interface
- printer->Print(vars, "// Client API for $Service$ service\n");
- printer->Print(vars, "type $Service$Client interface{\n");
- printer->Indent();
- for (int i = 0; i < service->method_count(); i++) {
- GenerateClientMethodSignature(service->method(i).get(), printer, vars);
- printer->Print("\n");
- }
- printer->Outdent();
- printer->Print("}\n\n");
-
- // Client structure
- vars["ServiceUnexported"] = unexportName(vars["Service"]);
- printer->Print(vars, "type $ServiceUnexported$Client struct {\n");
- printer->Indent();
- printer->Print(vars, "cc *$grpc$.ClientConn\n");
- printer->Outdent();
- printer->Print("}\n\n");
-
- // NewClient
- printer->Print(vars, "func New$Service$Client(cc *$grpc$.ClientConn) $Service$Client {\n");
- printer->Indent();
- printer->Print(vars, "return &$ServiceUnexported$Client{cc}");
- printer->Outdent();
- printer->Print("\n}\n\n");
-
- int unary_methods = 0, streaming_methods = 0;
- vars["ServiceDesc"] = "_" + vars["Service"] + "_serviceDesc";
- for (int i = 0; i < service->method_count(); i++) {
- auto method = service->method(i);
- if (method->NoStreaming()) {
- vars["MethodDesc"] = vars["ServiceDesc"] + ".Method[" + as_string(unary_methods) + "]";
- unary_methods++;
- } else {
- vars["MethodDesc"] = vars["ServiceDesc"] + ".Streams[" + as_string(streaming_methods) + "]";
- streaming_methods++;
- }
- GenerateClientMethod(method.get(), printer, vars);
- }
-
- //Server Interface
- printer->Print(vars, "// Server API for $Service$ service\n");
- printer->Print(vars, "type $Service$Server interface {\n");
- printer->Indent();
- for (int i = 0; i < service->method_count(); i++) {
- GenerateServerMethodSignature(service->method(i).get(), printer, vars);
- printer->Print("\n");
- }
- printer->Outdent();
- printer->Print("}\n\n");
-
- // Server registration.
- printer->Print(vars, "func Register$Service$Server(s *$grpc$.Server, srv $Service$Server) {\n");
- printer->Indent();
- printer->Print(vars, "s.RegisterService(&$ServiceDesc$, srv)\n");
- printer->Outdent();
- printer->Print("}\n\n");
-
- for (int i = 0; i < service->method_count(); i++) {
- GenerateServerMethod(service->method(i).get(), printer, vars);
- printer->Print("\n");
- }
-
-
- //Service Descriptor
- printer->Print(vars, "var $ServiceDesc$ = $grpc$.ServiceDesc{\n");
- printer->Indent();
- printer->Print(vars, "ServiceName: \"$Package$.$Service$\",\n");
- printer->Print(vars, "HandlerType: (*$Service$Server)(nil),\n");
- printer->Print(vars, "Methods: []$grpc$.MethodDesc{\n");
- printer->Indent();
- for (int i = 0; i < service->method_count(); i++) {
- auto method = service->method(i);
- vars["Method"] = method->name();
- vars["Handler"] = "_" + vars["Service"] + "_" + vars["Method"] + "_Handler";
- if (method->NoStreaming()) {
- printer->Print("{\n");
- printer->Indent();
- printer->Print(vars, "MethodName: \"$Method$\",\n");
- printer->Print(vars, "Handler: $Handler$, \n");
- printer->Outdent();
- printer->Print("},\n");
- }
- }
- printer->Outdent();
- printer->Print("},\n");
- printer->Print(vars, "Streams: []$grpc$.StreamDesc{\n");
- printer->Indent();
- for (int i = 0; i < service->method_count(); i++) {
- auto method = service->method(i);
- vars["Method"] = method->name();
- vars["Handler"] = "_" + vars["Service"] + "_" + vars["Method"] + "_Handler";
- if (!method->NoStreaming()) {
- printer->Print("{\n");
- printer->Indent();
- printer->Print(vars, "StreamName: \"$Method$\",\n");
- printer->Print(vars, "Handler: $Handler$, \n");
- if (method->ClientOnlyStreaming()) {
- printer->Print("ClientStreams: true,\n");
- } else if (method->ServerOnlyStreaming()) {
- printer->Print("ServerStreams: true,\n");
- } else {
- printer->Print("ServerStreams: true,\n");
- printer->Print("ClientStreams: true,\n");
- }
- printer->Outdent();
- printer->Print("},\n");
- }
- }
- printer->Outdent();
- printer->Print("},\n");
- printer->Outdent();
- printer->Print("}\n\n");
-
-}
-
-
-// Returns source for the service
-grpc::string GenerateServiceSource(grpc_generator::File *file,
- const grpc_generator::Service *service,
- grpc_go_generator::Parameters *parameters) {
- grpc::string out;
- auto p = file->CreatePrinter(&out);
- auto printer = p.get();
- std::map<grpc::string, grpc::string> vars;
- vars["Package"] = parameters->package_name;
- vars["grpc"] = "grpc";
- vars["context"] = "context";
- GenerateImports(file, printer, vars);
- if (parameters->custom_method_io_type != "") {
- vars["CustomMethodIO"] = parameters->custom_method_io_type;
- }
- GenerateService(service, printer, vars);
- return out;
-}
-}// Namespace grpc_go_generator
diff --git a/third_party/flatbuffers/grpc/src/compiler/go_generator.h b/third_party/flatbuffers/grpc/src/compiler/go_generator.h
deleted file mode 100644
index a8f7a3d..0000000
--- a/third_party/flatbuffers/grpc/src/compiler/go_generator.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- *
- * Copyright 2015, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#ifndef GRPC_INTERNAL_COMPILER_GO_GENERATOR_H
-#define GRPC_INTERNAL_COMPILER_GO_GENERATOR_H
-
-//go generator is used to generate GRPC code for serialization system, such as flatbuffers
-#include <memory>
-#include <vector>
-
-#include "src/compiler/schema_interface.h"
-
-namespace grpc_go_generator {
-
-struct Parameters {
- //Defines the custom parameter types for methods
- //eg: flatbuffers uses flatbuffers.Builder as input for the client and output for the server
- grpc::string custom_method_io_type;
-
- //Package name for the service
- grpc::string package_name;
-};
-
-// Return the source of the generated service file.
-grpc::string GenerateServiceSource(grpc_generator::File *file,
- const grpc_generator::Service *service,
- grpc_go_generator::Parameters *parameters);
-
-}
-
-#endif // GRPC_INTERNAL_COMPILER_GO_GENERATOR_H
diff --git a/third_party/flatbuffers/grpc/src/compiler/schema_interface.h b/third_party/flatbuffers/grpc/src/compiler/schema_interface.h
deleted file mode 100644
index c9b7f46..0000000
--- a/third_party/flatbuffers/grpc/src/compiler/schema_interface.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- *
- * Copyright 2015, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#ifndef GRPC_INTERNAL_COMPILER_SCHEMA_INTERFACE_H
-#define GRPC_INTERNAL_COMPILER_SCHEMA_INTERFACE_H
-
-#include <map>
-#include <memory>
-#include <vector>
-
- #ifndef GRPC_CUSTOM_STRING
- #include <string>
- #define GRPC_CUSTOM_STRING std::string
- #endif
-
-namespace grpc {
-
- typedef GRPC_CUSTOM_STRING string;
-
-} // namespace grpc
-
-namespace grpc_generator {
-
- // An abstract interface representing a method.
- struct Method {
- virtual ~Method() {}
-
- virtual grpc::string name() const = 0;
-
- virtual grpc::string input_type_name() const = 0;
- virtual grpc::string output_type_name() const = 0;
- virtual grpc::string input_name() const = 0;
- virtual grpc::string output_name() const = 0;
-
- virtual bool NoStreaming() const = 0;
- virtual bool ClientOnlyStreaming() const = 0;
- virtual bool ServerOnlyStreaming() const = 0;
- virtual bool BidiStreaming() const = 0;
- };
-
- // An abstract interface representing a service.
- struct Service {
- virtual ~Service() {}
-
- virtual grpc::string name() const = 0;
-
- virtual int method_count() const = 0;
- virtual std::unique_ptr<const Method> method(int i) const = 0;
- };
-
- struct Printer {
- virtual ~Printer() {}
-
- virtual void Print(const std::map<grpc::string, grpc::string> &vars,
- const char *template_string) = 0;
- virtual void Print(const char *string) = 0;
- virtual void Indent() = 0;
- virtual void Outdent() = 0;
- };
-
- // An interface that allows the source generated to be output using various
- // libraries/idls/serializers.
- struct File {
- virtual ~File() {}
-
- virtual grpc::string filename() const = 0;
- virtual grpc::string filename_without_ext() const = 0;
- virtual grpc::string message_header_ext() const = 0;
- virtual grpc::string service_header_ext() const = 0;
- virtual grpc::string package() const = 0;
- virtual std::vector<grpc::string> package_parts() const = 0;
- virtual grpc::string additional_headers() const = 0;
- virtual grpc::string additional_imports() const = 0;
-
- virtual int service_count() const = 0;
- virtual std::unique_ptr<const Service> service(int i) const = 0;
-
- virtual std::unique_ptr<Printer> CreatePrinter(grpc::string *str) const = 0;
- };
-} // namespace grpc_generator
-
-#endif // GRPC_INTERNAL_COMPILER_SCHEMA_INTERFACE_H
diff --git a/third_party/flatbuffers/grpc/tests/go_test.go b/third_party/flatbuffers/grpc/tests/go_test.go
deleted file mode 100644
index 7192f97..0000000
--- a/third_party/flatbuffers/grpc/tests/go_test.go
+++ /dev/null
@@ -1,93 +0,0 @@
-package testing
-
-import (
- "../../tests/MyGame/Example"
-
- "net"
- "testing"
-
- "golang.org/x/net/context"
- "google.golang.org/grpc"
-)
-
-type server struct{}
-
-// test used to send and receive in grpc methods
-var test = "Flatbuffers"
-var addr = "0.0.0.0:50051"
-
-// gRPC server store method
-func (s *server) Store(context context.Context, in *Example.Monster) (*flatbuffers.Builder, error) {
- b := flatbuffers.NewBuilder(0)
- i := b.CreateString(test)
- Example.StatStart(b)
- Example.StatAddId(b, i)
- b.Finish(Example.StatEnd(b))
- return b, nil
-
-}
-
-// gRPC server retrieve method
-func (s *server) Retrieve(context context.Context, in *Example.Stat) (*flatbuffers.Builder, error) {
- b := flatbuffers.NewBuilder(0)
- i := b.CreateString(test)
- Example.MonsterStart(b)
- Example.MonsterAddName(b, i)
- b.Finish(Example.MonsterEnd(b))
- return b, nil
-}
-
-func StoreClient(c Example.MonsterStorageClient, t *testing.T) {
- b := flatbuffers.NewBuilder(0)
- i := b.CreateString(test)
- Example.MonsterStart(b)
- Example.MonsterAddName(b, i)
- b.Finish(Example.MonsterEnd(b))
- out, err := c.Store(context.Background(), b)
- if err != nil {
- t.Fatalf("Store client failed: %v", err)
- }
- if string(out.Id()) != test {
- t.Errorf("StoreClient failed: expected=%s, got=%s\n", test, out.Id())
- t.Fail()
- }
-}
-
-func RetrieveClient(c Example.MonsterStorageClient, t *testing.T) {
- b := flatbuffers.NewBuilder(0)
- i := b.CreateString(test)
- Example.StatStart(b)
- Example.StatAddId(b, i)
- b.Finish(Example.StatEnd(b))
- out, err := c.Retrieve(context.Background(), b)
- if err != nil {
- t.Fatalf("Retrieve client failed: %v", err)
- }
- if string(out.Name()) != test {
- t.Errorf("RetrieveClient failed: expected=%s, got=%s\n", test, out.Name())
- t.Fail()
- }
-}
-
-func TestGRPC(t *testing.T) {
- lis, err := net.Listen("tcp", addr)
- if err != nil {
- t.Fatalf("Failed to listen: %v", err)
- }
- ser := grpc.NewServer(grpc.CustomCodec(flatbuffers.FlatbuffersCodec{}))
- Example.RegisterMonsterStorageServer(ser, &server{})
- go func() {
- if err := ser.Serve(lis); err != nil {
- t.Fatalf("Failed to serve: %v", err)
- t.FailNow()
- }
- }()
- conn, err := grpc.Dial(addr, grpc.WithInsecure(), grpc.WithCodec(flatbuffers.FlatbuffersCodec{}))
- if err != nil {
- t.Fatalf("Failed to connect: %v", err)
- }
- defer conn.Close()
- client := Example.NewMonsterStorageClient(conn)
- StoreClient(client, t)
- RetrieveClient(client, t)
-}
diff --git a/third_party/flatbuffers/grpc/tests/grpctest.cpp b/third_party/flatbuffers/grpc/tests/grpctest.cpp
deleted file mode 100644
index 77b79fc..0000000
--- a/third_party/flatbuffers/grpc/tests/grpctest.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <thread>
-
-#include <grpc++/grpc++.h>
-
-#include "monster_test_generated.h"
-#include "monster_test.grpc.fb.h"
-
-using namespace MyGame::Example;
-
-// The callback implementation of our server, that derives from the generated
-// code. It implements all rpcs specified in the FlatBuffers schema.
-class ServiceImpl final : public MyGame::Example::MonsterStorage::Service {
- virtual ::grpc::Status Store(::grpc::ServerContext* context,
- const flatbuffers::BufferRef<Monster> *request,
- flatbuffers::BufferRef<Stat> *response)
- override {
- // Create a response from the incoming request name.
- fbb_.Clear();
- auto stat_offset = CreateStat(fbb_, fbb_.CreateString("Hello, " +
- request->GetRoot()->name()->str()));
- fbb_.Finish(stat_offset);
- // Since we keep reusing the same FlatBufferBuilder, the memory it owns
- // remains valid until the next call (this BufferRef doesn't own the
- // memory it points to).
- *response = flatbuffers::BufferRef<Stat>(fbb_.GetBufferPointer(),
- fbb_.GetSize());
- return grpc::Status::OK;
- }
- virtual ::grpc::Status Retrieve(::grpc::ServerContext *context,
- const flatbuffers::BufferRef<Stat> *request,
- ::grpc::ServerWriter< flatbuffers::BufferRef<Monster>>* writer)
- override {
- assert(false); // We're not actually using this RPC.
- return grpc::Status::CANCELLED;
- }
-
- private:
- flatbuffers::FlatBufferBuilder fbb_;
-};
-
-// Track the server instance, so we can terminate it later.
-grpc::Server *server_instance = nullptr;
-// Mutex to protec this variable.
-std::mutex wait_for_server;
-std::condition_variable server_instance_cv;
-
-// This function implements the server thread.
-void RunServer() {
- auto server_address = "0.0.0.0:50051";
- // Callback interface we implemented above.
- ServiceImpl service;
- grpc::ServerBuilder builder;
- builder.AddListeningPort(server_address, grpc::InsecureServerCredentials());
- builder.RegisterService(&service);
-
- // Start the server. Lock to change the variable we're changing.
- wait_for_server.lock();
- server_instance = builder.BuildAndStart().release();
- wait_for_server.unlock();
- server_instance_cv.notify_one();
-
- std::cout << "Server listening on " << server_address << std::endl;
- // This will block the thread and serve requests.
- server_instance->Wait();
-}
-
-int main(int /*argc*/, const char * /*argv*/[]) {
- // Launch server.
- std::thread server_thread(RunServer);
-
- // wait for server to spin up.
- std::unique_lock<std::mutex> lock(wait_for_server);
- while (!server_instance) server_instance_cv.wait(lock);
-
- // Now connect the client.
- auto channel = grpc::CreateChannel("localhost:50051",
- grpc::InsecureChannelCredentials());
- auto stub = MyGame::Example::MonsterStorage::NewStub(channel);
-
- grpc::ClientContext context;
-
- // Build a request with the name set.
- flatbuffers::FlatBufferBuilder fbb;
- auto monster_offset = CreateMonster(fbb, 0, 0, 0, fbb.CreateString("Fred"));
- fbb.Finish(monster_offset);
- auto request = flatbuffers::BufferRef<Monster>(fbb.GetBufferPointer(),
- fbb.GetSize());
- flatbuffers::BufferRef<Stat> response;
-
- // The actual RPC.
- auto status = stub->Store(&context, request, &response);
-
- if (status.ok()) {
- auto resp = response.GetRoot()->id();
- std::cout << "RPC response: " << resp->str() << std::endl;
- } else {
- std::cout << "RPC failed" << std::endl;
- }
-
- server_instance->Shutdown();
-
- server_thread.join();
-
- delete server_instance;
-
- return 0;
-}
-
diff --git a/third_party/flatbuffers/include/flatbuffers/code_generators.h b/third_party/flatbuffers/include/flatbuffers/code_generators.h
deleted file mode 100644
index 3e85df2..0000000
--- a/third_party/flatbuffers/include/flatbuffers/code_generators.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef FLATBUFFERS_CODE_GENERATORS_H_
-#define FLATBUFFERS_CODE_GENERATORS_H_
-
-#include <map>
-#include <sstream>
-#include "flatbuffers/idl.h"
-
-namespace flatbuffers {
-
-// Utility class to assist in generating code through use of text templates.
-//
-// Example code:
-// CodeWriter code;
-// code.SetValue("NAME", "Foo");
-// code += "void {{NAME}}() { printf("%s", "{{NAME}}"); }";
-// code.SetValue("NAME", "Bar");
-// code += "void {{NAME}}() { printf("%s", "{{NAME}}"); }";
-// std::cout << code.ToString() << std::endl;
-//
-// Output:
-// void Foo() { printf("%s", "Foo"); }
-// void Bar() { printf("%s", "Bar"); }
-class CodeWriter {
- public:
- CodeWriter() {}
-
- // Clears the current "written" code.
- void Clear() {
- stream_.str("");
- stream_.clear();
- }
-
- // Associates a key with a value. All subsequent calls to operator+=, where
- // the specified key is contained in {{ and }} delimiters will be replaced by
- // the given value.
- void SetValue(const std::string& key, const std::string& value) {
- value_map_[key] = value;
- }
-
- // Appends the given text to the generated code as well as a newline
- // character. Any text within {{ and }} delimeters is replaced by values
- // previously stored in the CodeWriter by calling SetValue above. The newline
- // will be suppressed if the text ends with the \\ character.
- void operator+=(std::string text);
-
- // Returns the current contents of the CodeWriter as a std::string.
- std::string ToString() const { return stream_.str(); }
-
- private:
- std::map<std::string, std::string> value_map_;
- std::stringstream stream_;
-};
-
-class BaseGenerator {
- public:
- virtual bool generate() = 0;
-
- static std::string NamespaceDir(const Parser &parser,
- const std::string &path,
- const Namespace &ns);
-
- protected:
- BaseGenerator(const Parser &parser, const std::string &path,
- const std::string &file_name,
- const std::string qualifying_start,
- const std::string qualifying_separator)
- : parser_(parser),
- path_(path),
- file_name_(file_name),
- qualifying_start_(qualifying_start),
- qualifying_separator_(qualifying_separator) {}
- virtual ~BaseGenerator() {}
-
- // No copy/assign.
- BaseGenerator &operator=(const BaseGenerator &);
- BaseGenerator(const BaseGenerator &);
-
- std::string NamespaceDir(const Namespace &ns) const;
-
- static const char *FlatBuffersGeneratedWarning();
-
- bool IsEverythingGenerated() const;
-
- static std::string FullNamespace(const char *separator, const Namespace &ns);
-
- static std::string LastNamespacePart(const Namespace &ns);
-
- // tracks the current namespace for early exit in WrapInNameSpace
- // c++, java and csharp returns a different namespace from
- // the following default (no early exit, always fully qualify),
- // which works for js and php
- virtual const Namespace *CurrentNameSpace() const { return nullptr; }
-
- // Ensure that a type is prefixed with its namespace whenever it is used
- // outside of its namespace.
- std::string WrapInNameSpace(const Namespace *ns,
- const std::string &name) const;
-
- std::string WrapInNameSpace(const Definition &def) const;
-
- std::string GetNameSpace(const Definition &def) const;
-
- const Parser &parser_;
- const std::string &path_;
- const std::string &file_name_;
- const std::string qualifying_start_;
- const std::string qualifying_separator_;
-};
-
-struct CommentConfig {
- const char *first_line;
- const char *content_line_prefix;
- const char *last_line;
-};
-
-extern void GenComment(const std::vector<std::string> &dc,
- std::string *code_ptr,
- const CommentConfig *config,
- const char *prefix = "");
-
-} // namespace flatbuffers
-
-#endif // FLATBUFFERS_CODE_GENERATORS_H_
diff --git a/third_party/flatbuffers/include/flatbuffers/flatbuffers.h b/third_party/flatbuffers/include/flatbuffers/flatbuffers.h
deleted file mode 100644
index e38e552..0000000
--- a/third_party/flatbuffers/include/flatbuffers/flatbuffers.h
+++ /dev/null
@@ -1,2037 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef FLATBUFFERS_H_
-#define FLATBUFFERS_H_
-
-#include <assert.h>
-
-#ifndef ARDUINO
-#include <cstdint>
-#endif
-#include <cstddef>
-#include <cstdlib>
-#include <cstring>
-#include <string>
-#ifndef ARDUINO
-#include <utility>
-#else
-#include <utility.h>
-#endif
-#include <type_traits>
-#include <vector>
-#include <set>
-#include <algorithm>
-#include <memory>
-
-#ifdef _STLPORT_VERSION
- #define FLATBUFFERS_CPP98_STL
-#endif
-#ifndef FLATBUFFERS_CPP98_STL
- #include <functional>
-#endif
-
-/// @cond FLATBUFFERS_INTERNAL
-#if __cplusplus <= 199711L && \
- (!defined(_MSC_VER) || _MSC_VER < 1600) && \
- (!defined(__GNUC__) || \
- (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__ < 40400))
- #error A C++11 compatible compiler with support for the auto typing is \
- required for FlatBuffers.
- #error __cplusplus _MSC_VER __GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__
-#endif
-
-#if !defined(__clang__) && \
- defined(__GNUC__) && \
- (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__ < 40600)
- // Backwards compatability for g++ 4.4, and 4.5 which don't have the nullptr
- // and constexpr keywords. Note the __clang__ check is needed, because clang
- // presents itself as an older GNUC compiler.
- #ifndef nullptr_t
- const class nullptr_t {
- public:
- template<class T> inline operator T*() const { return 0; }
- private:
- void operator&() const;
- } nullptr = {};
- #endif
- #ifndef constexpr
- #define constexpr const
- #endif
-#endif
-
-// The wire format uses a little endian encoding (since that's efficient for
-// the common platforms).
-#if !defined(FLATBUFFERS_LITTLEENDIAN)
- #if defined(__GNUC__) || defined(__clang__)
- #ifdef __BIG_ENDIAN__
- #define FLATBUFFERS_LITTLEENDIAN 0
- #else
- #define FLATBUFFERS_LITTLEENDIAN 1
- #endif // __BIG_ENDIAN__
- #elif defined(_MSC_VER)
- #if defined(_M_PPC)
- #define FLATBUFFERS_LITTLEENDIAN 0
- #else
- #define FLATBUFFERS_LITTLEENDIAN 1
- #endif
- #else
- #error Unable to determine endianness, define FLATBUFFERS_LITTLEENDIAN.
- #endif
-#endif // !defined(FLATBUFFERS_LITTLEENDIAN)
-
-#define FLATBUFFERS_VERSION_MAJOR 1
-#define FLATBUFFERS_VERSION_MINOR 6
-#define FLATBUFFERS_VERSION_REVISION 0
-#define FLATBUFFERS_STRING_EXPAND(X) #X
-#define FLATBUFFERS_STRING(X) FLATBUFFERS_STRING_EXPAND(X)
-
-#if (!defined(_MSC_VER) || _MSC_VER > 1600) && \
- (!defined(__GNUC__) || (__GNUC__ * 100 + __GNUC_MINOR__ >= 407))
- #define FLATBUFFERS_FINAL_CLASS final
-#else
- #define FLATBUFFERS_FINAL_CLASS
-#endif
-
-#if (!defined(_MSC_VER) || _MSC_VER >= 1900) && \
- (!defined(__GNUC__) || (__GNUC__ * 100 + __GNUC_MINOR__ >= 406))
- #define FLATBUFFERS_CONSTEXPR constexpr
-#else
- #define FLATBUFFERS_CONSTEXPR
-#endif
-
-#if defined(__GXX_EXPERIMENTAL_CXX0X__) && __GNUC__ * 10 + __GNUC_MINOR__ >= 46 || \
- defined(_MSC_FULL_VER) && _MSC_FULL_VER >= 190023026
- #define FLATBUFFERS_NOEXCEPT noexcept
-#else
- #define FLATBUFFERS_NOEXCEPT
-#endif
-
-#if defined(_MSC_VER)
-#pragma warning(push)
-#pragma warning(disable: 4127) // C4127: conditional expression is constant
-#endif
-
-/// @endcond
-
-/// @file
-namespace flatbuffers {
-
-/// @cond FLATBUFFERS_INTERNAL
-// Our default offset / size type, 32bit on purpose on 64bit systems.
-// Also, using a consistent offset type maintains compatibility of serialized
-// offset values between 32bit and 64bit systems.
-typedef uint32_t uoffset_t;
-
-// Signed offsets for references that can go in both directions.
-typedef int32_t soffset_t;
-
-// Offset/index used in v-tables, can be changed to uint8_t in
-// format forks to save a bit of space if desired.
-typedef uint16_t voffset_t;
-
-typedef uintmax_t largest_scalar_t;
-
-// In 32bits, this evaluates to 2GB - 1
-#define FLATBUFFERS_MAX_BUFFER_SIZE ((1ULL << (sizeof(soffset_t) * 8 - 1)) - 1)
-
-// We support aligning the contents of buffers up to this size.
-#define FLATBUFFERS_MAX_ALIGNMENT 16
-
-#ifndef FLATBUFFERS_CPP98_STL
-// Pointer to relinquished memory.
-typedef std::unique_ptr<uint8_t, std::function<void(uint8_t * /* unused */)>>
- unique_ptr_t;
-#endif
-
-// Wrapper for uoffset_t to allow safe template specialization.
-template<typename T> struct Offset {
- uoffset_t o;
- Offset() : o(0) {}
- Offset(uoffset_t _o) : o(_o) {}
- Offset<void> Union() const { return Offset<void>(o); }
-};
-
-inline void EndianCheck() {
- int endiantest = 1;
- // If this fails, see FLATBUFFERS_LITTLEENDIAN above.
- assert(*reinterpret_cast<char *>(&endiantest) == FLATBUFFERS_LITTLEENDIAN);
- (void)endiantest;
-}
-
-template<typename T> T EndianSwap(T t) {
- #if defined(_MSC_VER)
- #define FLATBUFFERS_BYTESWAP16 _byteswap_ushort
- #define FLATBUFFERS_BYTESWAP32 _byteswap_ulong
- #define FLATBUFFERS_BYTESWAP64 _byteswap_uint64
- #else
- #if defined(__GNUC__) && __GNUC__ * 100 + __GNUC_MINOR__ < 408
- // __builtin_bswap16 was missing prior to GCC 4.8.
- #define FLATBUFFERS_BYTESWAP16(x) \
- static_cast<uint16_t>(__builtin_bswap32(static_cast<uint32_t>(x) << 16))
- #else
- #define FLATBUFFERS_BYTESWAP16 __builtin_bswap16
- #endif
- #define FLATBUFFERS_BYTESWAP32 __builtin_bswap32
- #define FLATBUFFERS_BYTESWAP64 __builtin_bswap64
- #endif
- if (sizeof(T) == 1) { // Compile-time if-then's.
- return t;
- } else if (sizeof(T) == 2) {
- auto r = FLATBUFFERS_BYTESWAP16(*reinterpret_cast<uint16_t *>(&t));
- return *reinterpret_cast<T *>(&r);
- } else if (sizeof(T) == 4) {
- auto r = FLATBUFFERS_BYTESWAP32(*reinterpret_cast<uint32_t *>(&t));
- return *reinterpret_cast<T *>(&r);
- } else if (sizeof(T) == 8) {
- auto r = FLATBUFFERS_BYTESWAP64(*reinterpret_cast<uint64_t *>(&t));
- return *reinterpret_cast<T *>(&r);
- } else {
- assert(0);
- }
-}
-
-template<typename T> T EndianScalar(T t) {
- #if FLATBUFFERS_LITTLEENDIAN
- return t;
- #else
- return EndianSwap(t);
- #endif
-}
-
-template<typename T> T ReadScalar(const void *p) {
- return EndianScalar(*reinterpret_cast<const T *>(p));
-}
-
-template<typename T> void WriteScalar(void *p, T t) {
- *reinterpret_cast<T *>(p) = EndianScalar(t);
-}
-
-template<typename T> size_t AlignOf() {
- #ifdef _MSC_VER
- return __alignof(T);
- #else
- #ifndef alignof
- return __alignof__(T);
- #else
- return alignof(T);
- #endif
- #endif
-}
-
-// When we read serialized data from memory, in the case of most scalars,
-// we want to just read T, but in the case of Offset, we want to actually
-// perform the indirection and return a pointer.
-// The template specialization below does just that.
-// It is wrapped in a struct since function templates can't overload on the
-// return type like this.
-// The typedef is for the convenience of callers of this function
-// (avoiding the need for a trailing return decltype)
-template<typename T> struct IndirectHelper {
- typedef T return_type;
- typedef T mutable_return_type;
- static const size_t element_stride = sizeof(T);
- static return_type Read(const uint8_t *p, uoffset_t i) {
- return EndianScalar((reinterpret_cast<const T *>(p))[i]);
- }
-};
-template<typename T> struct IndirectHelper<Offset<T>> {
- typedef const T *return_type;
- typedef T *mutable_return_type;
- static const size_t element_stride = sizeof(uoffset_t);
- static return_type Read(const uint8_t *p, uoffset_t i) {
- p += i * sizeof(uoffset_t);
- return reinterpret_cast<return_type>(p + ReadScalar<uoffset_t>(p));
- }
-};
-template<typename T> struct IndirectHelper<const T *> {
- typedef const T *return_type;
- typedef T *mutable_return_type;
- static const size_t element_stride = sizeof(T);
- static return_type Read(const uint8_t *p, uoffset_t i) {
- return reinterpret_cast<const T *>(p + i * sizeof(T));
- }
-};
-
-// An STL compatible iterator implementation for Vector below, effectively
-// calling Get() for every element.
-template<typename T, typename IT>
-struct VectorIterator
- : public std::iterator<std::random_access_iterator_tag, IT, uoffset_t> {
-
- typedef std::iterator<std::random_access_iterator_tag, IT, uoffset_t> super_type;
-
-public:
- VectorIterator(const uint8_t *data, uoffset_t i) :
- data_(data + IndirectHelper<T>::element_stride * i) {}
- VectorIterator(const VectorIterator &other) : data_(other.data_) {}
- #ifndef FLATBUFFERS_CPP98_STL
- VectorIterator(VectorIterator &&other) : data_(std::move(other.data_)) {}
- #endif
-
- VectorIterator &operator=(const VectorIterator &other) {
- data_ = other.data_;
- return *this;
- }
-
- VectorIterator &operator=(VectorIterator &&other) {
- data_ = other.data_;
- return *this;
- }
-
- bool operator==(const VectorIterator &other) const {
- return data_ == other.data_;
- }
-
- bool operator<(const VectorIterator &other) const {
- return data_ < other.data_;
- }
-
- bool operator!=(const VectorIterator &other) const {
- return data_ != other.data_;
- }
-
- ptrdiff_t operator-(const VectorIterator &other) const {
- return (data_ - other.data_) / IndirectHelper<T>::element_stride;
- }
-
- typename super_type::value_type operator *() const {
- return IndirectHelper<T>::Read(data_, 0);
- }
-
- typename super_type::value_type operator->() const {
- return IndirectHelper<T>::Read(data_, 0);
- }
-
- VectorIterator &operator++() {
- data_ += IndirectHelper<T>::element_stride;
- return *this;
- }
-
- VectorIterator operator++(int) {
- VectorIterator temp(data_, 0);
- data_ += IndirectHelper<T>::element_stride;
- return temp;
- }
-
- VectorIterator operator+(const uoffset_t &offset) const {
- return VectorIterator(data_ + offset * IndirectHelper<T>::element_stride, 0);
- }
-
- VectorIterator& operator+=(const uoffset_t &offset) {
- data_ += offset * IndirectHelper<T>::element_stride;
- return *this;
- }
-
- VectorIterator &operator--() {
- data_ -= IndirectHelper<T>::element_stride;
- return *this;
- }
-
- VectorIterator operator--(int) {
- VectorIterator temp(data_, 0);
- data_ -= IndirectHelper<T>::element_stride;
- return temp;
- }
-
- VectorIterator operator-(const uoffset_t &offset) {
- return VectorIterator(data_ - offset * IndirectHelper<T>::element_stride, 0);
- }
-
- VectorIterator& operator-=(const uoffset_t &offset) {
- data_ -= offset * IndirectHelper<T>::element_stride;
- return *this;
- }
-
-private:
- const uint8_t *data_;
-};
-
-struct String;
-
-// This is used as a helper type for accessing vectors.
-// Vector::data() assumes the vector elements start after the length field.
-template<typename T> class Vector {
-public:
- typedef VectorIterator<T, typename IndirectHelper<T>::mutable_return_type>
- iterator;
- typedef VectorIterator<T, typename IndirectHelper<T>::return_type>
- const_iterator;
-
- uoffset_t size() const { return EndianScalar(length_); }
-
- // Deprecated: use size(). Here for backwards compatibility.
- uoffset_t Length() const { return size(); }
-
- typedef typename IndirectHelper<T>::return_type return_type;
- typedef typename IndirectHelper<T>::mutable_return_type mutable_return_type;
-
- return_type Get(uoffset_t i) const {
- assert(i < size());
- return IndirectHelper<T>::Read(Data(), i);
- }
-
- return_type operator[](uoffset_t i) const { return Get(i); }
-
- // If this is a Vector of enums, T will be its storage type, not the enum
- // type. This function makes it convenient to retrieve value with enum
- // type E.
- template<typename E> E GetEnum(uoffset_t i) const {
- return static_cast<E>(Get(i));
- }
-
- // If this a vector of unions, this does the cast for you. There's no check
- // to make sure this is the right type!
- template<typename U> const U *GetAs(uoffset_t i) const {
- return reinterpret_cast<const U *>(Get(i));
- }
-
- // If this a vector of unions, this does the cast for you. There's no check
- // to make sure this is actually a string!
- const String *GetAsString(uoffset_t i) const {
- return reinterpret_cast<const String *>(Get(i));
- }
-
- const void *GetStructFromOffset(size_t o) const {
- return reinterpret_cast<const void *>(Data() + o);
- }
-
- iterator begin() { return iterator(Data(), 0); }
- const_iterator begin() const { return const_iterator(Data(), 0); }
-
- iterator end() { return iterator(Data(), size()); }
- const_iterator end() const { return const_iterator(Data(), size()); }
-
- // Change elements if you have a non-const pointer to this object.
- // Scalars only. See reflection.h, and the documentation.
- void Mutate(uoffset_t i, const T& val) {
- assert(i < size());
- WriteScalar(data() + i, val);
- }
-
- // Change an element of a vector of tables (or strings).
- // "val" points to the new table/string, as you can obtain from
- // e.g. reflection::AddFlatBuffer().
- void MutateOffset(uoffset_t i, const uint8_t *val) {
- assert(i < size());
- assert(sizeof(T) == sizeof(uoffset_t));
- WriteScalar(data() + i,
- static_cast<uoffset_t>(val - (Data() + i * sizeof(uoffset_t))));
- }
-
- // Get a mutable pointer to tables/strings inside this vector.
- mutable_return_type GetMutableObject(uoffset_t i) const {
- assert(i < size());
- return const_cast<mutable_return_type>(IndirectHelper<T>::Read(Data(), i));
- }
-
- // The raw data in little endian format. Use with care.
- const uint8_t *Data() const {
- return reinterpret_cast<const uint8_t *>(&length_ + 1);
- }
-
- uint8_t *Data() {
- return reinterpret_cast<uint8_t *>(&length_ + 1);
- }
-
- // Similarly, but typed, much like std::vector::data
- const T *data() const { return reinterpret_cast<const T *>(Data()); }
- T *data() { return reinterpret_cast<T *>(Data()); }
-
- template<typename K> return_type LookupByKey(K key) const {
- void *search_result = std::bsearch(&key, Data(), size(),
- IndirectHelper<T>::element_stride, KeyCompare<K>);
-
- if (!search_result) {
- return nullptr; // Key not found.
- }
-
- const uint8_t *element = reinterpret_cast<const uint8_t *>(search_result);
-
- return IndirectHelper<T>::Read(element, 0);
- }
-
-protected:
- // This class is only used to access pre-existing data. Don't ever
- // try to construct these manually.
- Vector();
-
- uoffset_t length_;
-
-private:
- // This class is a pointer. Copying will therefore create an invalid object.
- // Private and unimplemented copy constructor.
- Vector(const Vector&);
-
- template<typename K> static int KeyCompare(const void *ap, const void *bp) {
- const K *key = reinterpret_cast<const K *>(ap);
- const uint8_t *data = reinterpret_cast<const uint8_t *>(bp);
- auto table = IndirectHelper<T>::Read(data, 0);
-
- // std::bsearch compares with the operands transposed, so we negate the
- // result here.
- return -table->KeyCompareWithValue(*key);
- }
-};
-
-// Represent a vector much like the template above, but in this case we
-// don't know what the element types are (used with reflection.h).
-class VectorOfAny {
-public:
- uoffset_t size() const { return EndianScalar(length_); }
-
- const uint8_t *Data() const {
- return reinterpret_cast<const uint8_t *>(&length_ + 1);
- }
- uint8_t *Data() {
- return reinterpret_cast<uint8_t *>(&length_ + 1);
- }
-protected:
- VectorOfAny();
-
- uoffset_t length_;
-
-private:
- VectorOfAny(const VectorOfAny&);
-};
-
-#ifndef FLATBUFFERS_CPP98_STL
-template<typename T, typename U>
-Vector<Offset<T>> *VectorCast(Vector<Offset<U>> *ptr) {
- static_assert(std::is_base_of<T, U>::value, "Unrelated types");
- return reinterpret_cast<Vector<Offset<T>> *>(ptr);
-}
-
-template<typename T, typename U>
-const Vector<Offset<T>> *VectorCast(const Vector<Offset<U>> *ptr) {
- static_assert(std::is_base_of<T, U>::value, "Unrelated types");
- return reinterpret_cast<const Vector<Offset<T>> *>(ptr);
-}
-#endif
-
-// Convenient helper function to get the length of any vector, regardless
-// of wether it is null or not (the field is not set).
-template<typename T> static inline size_t VectorLength(const Vector<T> *v) {
- return v ? v->Length() : 0;
-}
-
-struct String : public Vector<char> {
- const char *c_str() const { return reinterpret_cast<const char *>(Data()); }
- std::string str() const { return std::string(c_str(), Length()); }
-
- bool operator <(const String &o) const {
- return strcmp(c_str(), o.c_str()) < 0;
- }
-};
-
-// Simple indirection for buffer allocation, to allow this to be overridden
-// with custom allocation (see the FlatBufferBuilder constructor).
-class simple_allocator {
- public:
- virtual ~simple_allocator() {}
- virtual uint8_t *allocate(size_t size) const { return new uint8_t[size]; }
- virtual void deallocate(uint8_t *p) const { delete[] p; }
-};
-
-// This is a minimal replication of std::vector<uint8_t> functionality,
-// except growing from higher to lower addresses. i.e push_back() inserts data
-// in the lowest address in the vector.
-class vector_downward {
- public:
- explicit vector_downward(size_t initial_size,
- const simple_allocator &allocator)
- : reserved_((initial_size + sizeof(largest_scalar_t) - 1) &
- ~(sizeof(largest_scalar_t) - 1)),
- buf_(allocator.allocate(reserved_)),
- cur_(buf_ + reserved_),
- allocator_(allocator) {}
-
- ~vector_downward() {
- if (buf_)
- allocator_.deallocate(buf_);
- }
-
- void clear() {
- if (buf_ == nullptr)
- buf_ = allocator_.allocate(reserved_);
-
- cur_ = buf_ + reserved_;
- }
-
- #ifndef FLATBUFFERS_CPP98_STL
- // Relinquish the pointer to the caller.
- unique_ptr_t release() {
- // Actually deallocate from the start of the allocated memory.
- std::function<void(uint8_t *)> deleter(
- std::bind(&simple_allocator::deallocate, allocator_, buf_));
-
- // Point to the desired offset.
- unique_ptr_t retval(data(), deleter);
-
- // Don't deallocate when this instance is destroyed.
- buf_ = nullptr;
- cur_ = nullptr;
-
- return retval;
- }
- #endif
-
- size_t growth_policy(size_t bytes) {
- return (bytes / 2) & ~(sizeof(largest_scalar_t) - 1);
- }
-
- uint8_t *make_space(size_t len) {
- if (len > static_cast<size_t>(cur_ - buf_)) {
- reallocate(len);
- }
- cur_ -= len;
- // Beyond this, signed offsets may not have enough range:
- // (FlatBuffers > 2GB not supported).
- assert(size() < FLATBUFFERS_MAX_BUFFER_SIZE);
- return cur_;
- }
-
- uoffset_t size() const {
- assert(cur_ != nullptr && buf_ != nullptr);
- return static_cast<uoffset_t>(reserved_ - (cur_ - buf_));
- }
-
- uint8_t *data() const {
- assert(cur_ != nullptr);
- return cur_;
- }
-
- uint8_t *data_at(size_t offset) const { return buf_ + reserved_ - offset; }
-
- void push(const uint8_t *bytes, size_t num) {
- auto dest = make_space(num);
- memcpy(dest, bytes, num);
- }
-
- // Specialized version of push() that avoids memcpy call for small data.
- template<typename T> void push_small(const T& little_endian_t) {
- auto dest = make_space(sizeof(T));
- *reinterpret_cast<T *>(dest) = little_endian_t;
- }
-
- // fill() is most frequently called with small byte counts (<= 4),
- // which is why we're using loops rather than calling memset.
- void fill(size_t zero_pad_bytes) {
- auto dest = make_space(zero_pad_bytes);
- for (size_t i = 0; i < zero_pad_bytes; i++) dest[i] = 0;
- }
-
- // Version for when we know the size is larger.
- void fill_big(size_t zero_pad_bytes) {
- auto dest = make_space(zero_pad_bytes);
- memset(dest, 0, zero_pad_bytes);
- }
-
- void pop(size_t bytes_to_remove) { cur_ += bytes_to_remove; }
-
- private:
- // You shouldn't really be copying instances of this class.
- vector_downward(const vector_downward &);
- vector_downward &operator=(const vector_downward &);
-
- size_t reserved_;
- uint8_t *buf_;
- uint8_t *cur_; // Points at location between empty (below) and used (above).
- const simple_allocator &allocator_;
-
- void reallocate(size_t len) {
- auto old_size = size();
- auto largest_align = AlignOf<largest_scalar_t>();
- reserved_ += (std::max)(len, growth_policy(reserved_));
- // Round up to avoid undefined behavior from unaligned loads and stores.
- reserved_ = (reserved_ + (largest_align - 1)) & ~(largest_align - 1);
- auto new_buf = allocator_.allocate(reserved_);
- auto new_cur = new_buf + reserved_ - old_size;
- memcpy(new_cur, cur_, old_size);
- cur_ = new_cur;
- allocator_.deallocate(buf_);
- buf_ = new_buf;
- }
-};
-
-// Converts a Field ID to a virtual table offset.
-inline voffset_t FieldIndexToOffset(voffset_t field_id) {
- // Should correspond to what EndTable() below builds up.
- const int fixed_fields = 2; // Vtable size and Object Size.
- return static_cast<voffset_t>((field_id + fixed_fields) * sizeof(voffset_t));
-}
-
-// Computes how many bytes you'd have to pad to be able to write an
-// "scalar_size" scalar if the buffer had grown to "buf_size" (downwards in
-// memory).
-inline size_t PaddingBytes(size_t buf_size, size_t scalar_size) {
- return ((~buf_size) + 1) & (scalar_size - 1);
-}
-
-template <typename T> const T* data(const std::vector<T> &v) {
- return v.empty() ? nullptr : &v.front();
-}
-template <typename T> T* data(std::vector<T> &v) {
- return v.empty() ? nullptr : &v.front();
-}
-
-/// @endcond
-
-/// @addtogroup flatbuffers_cpp_api
-/// @{
-/// @class FlatBufferBuilder
-/// @brief Helper class to hold data needed in creation of a FlatBuffer.
-/// To serialize data, you typically call one of the `Create*()` functions in
-/// the generated code, which in turn call a sequence of `StartTable`/
-/// `PushElement`/`AddElement`/`EndTable`, or the builtin `CreateString`/
-/// `CreateVector` functions. Do this is depth-first order to build up a tree to
-/// the root. `Finish()` wraps up the buffer ready for transport.
-class FlatBufferBuilder
-/// @cond FLATBUFFERS_INTERNAL
-FLATBUFFERS_FINAL_CLASS
-/// @endcond
-{
- public:
- /// @brief Default constructor for FlatBufferBuilder.
- /// @param[in] initial_size The initial size of the buffer, in bytes. Defaults
- /// to`1024`.
- /// @param[in] allocator A pointer to the `simple_allocator` that should be
- /// used. Defaults to `nullptr`, which means the `default_allocator` will be
- /// be used.
- explicit FlatBufferBuilder(uoffset_t initial_size = 1024,
- const simple_allocator *allocator = nullptr)
- : buf_(initial_size, allocator ? *allocator : default_allocator),
- nested(false), finished(false), minalign_(1), force_defaults_(false),
- dedup_vtables_(true), string_pool(nullptr) {
- offsetbuf_.reserve(16); // Avoid first few reallocs.
- vtables_.reserve(16);
- EndianCheck();
- }
-
- ~FlatBufferBuilder() {
- if (string_pool) delete string_pool;
- }
-
- /// @brief Reset all the state in this FlatBufferBuilder so it can be reused
- /// to construct another buffer.
- void Clear() {
- buf_.clear();
- offsetbuf_.clear();
- nested = false;
- finished = false;
- vtables_.clear();
- minalign_ = 1;
- if (string_pool) string_pool->clear();
- }
-
- /// @brief The current size of the serialized buffer, counting from the end.
- /// @return Returns an `uoffset_t` with the current size of the buffer.
- uoffset_t GetSize() const { return buf_.size(); }
-
- /// @brief Get the serialized buffer (after you call `Finish()`).
- /// @return Returns an `uint8_t` pointer to the FlatBuffer data inside the
- /// buffer.
- uint8_t *GetBufferPointer() const {
- Finished();
- return buf_.data();
- }
-
- /// @brief Get a pointer to an unfinished buffer.
- /// @return Returns a `uint8_t` pointer to the unfinished buffer.
- uint8_t *GetCurrentBufferPointer() const { return buf_.data(); }
-
- #ifndef FLATBUFFERS_CPP98_STL
- /// @brief Get the released pointer to the serialized buffer.
- /// @warning Do NOT attempt to use this FlatBufferBuilder afterwards!
- /// @return The `unique_ptr` returned has a special allocator that knows how
- /// to deallocate this pointer (since it points to the middle of an
- /// allocation). Thus, do not mix this pointer with other `unique_ptr`'s, or
- /// call `release()`/`reset()` on it.
- unique_ptr_t ReleaseBufferPointer() {
- Finished();
- return buf_.release();
- }
- #endif
-
- /// @brief get the minimum alignment this buffer needs to be accessed
- /// properly. This is only known once all elements have been written (after
- /// you call Finish()). You can use this information if you need to embed
- /// a FlatBuffer in some other buffer, such that you can later read it
- /// without first having to copy it into its own buffer.
- size_t GetBufferMinAlignment() {
- Finished();
- return minalign_;
- }
-
- /// @cond FLATBUFFERS_INTERNAL
- void Finished() const {
- // If you get this assert, you're attempting to get access a buffer
- // which hasn't been finished yet. Be sure to call
- // FlatBufferBuilder::Finish with your root table.
- // If you really need to access an unfinished buffer, call
- // GetCurrentBufferPointer instead.
- assert(finished);
- }
- /// @endcond
-
- /// @brief In order to save space, fields that are set to their default value
- /// don't get serialized into the buffer.
- /// @param[in] bool fd When set to `true`, always serializes default values.
- void ForceDefaults(bool fd) { force_defaults_ = fd; }
-
- /// @brief By default vtables are deduped in order to save space.
- /// @param[in] bool dedup When set to `true`, dedup vtables.
- void DedupVtables(bool dedup) { dedup_vtables_ = dedup; }
-
- /// @cond FLATBUFFERS_INTERNAL
- void Pad(size_t num_bytes) { buf_.fill(num_bytes); }
-
- void Align(size_t elem_size) {
- if (elem_size > minalign_) minalign_ = elem_size;
- buf_.fill(PaddingBytes(buf_.size(), elem_size));
- }
-
- void PushFlatBuffer(const uint8_t *bytes, size_t size) {
- PushBytes(bytes, size);
- finished = true;
- }
-
- void PushBytes(const uint8_t *bytes, size_t size) {
- buf_.push(bytes, size);
- }
-
- void PopBytes(size_t amount) { buf_.pop(amount); }
-
- template<typename T> void AssertScalarT() {
- #ifndef FLATBUFFERS_CPP98_STL
- // The code assumes power of 2 sizes and endian-swap-ability.
- static_assert(std::is_scalar<T>::value
- // The Offset<T> type is essentially a scalar but fails is_scalar.
- || sizeof(T) == sizeof(Offset<void>),
- "T must be a scalar type");
- #endif
- }
-
- // Write a single aligned scalar to the buffer
- template<typename T> uoffset_t PushElement(T element) {
- AssertScalarT<T>();
- T litle_endian_element = EndianScalar(element);
- Align(sizeof(T));
- buf_.push_small(litle_endian_element);
- return GetSize();
- }
-
- template<typename T> uoffset_t PushElement(Offset<T> off) {
- // Special case for offsets: see ReferTo below.
- return PushElement(ReferTo(off.o));
- }
-
- // When writing fields, we track where they are, so we can create correct
- // vtables later.
- void TrackField(voffset_t field, uoffset_t off) {
- FieldLoc fl = { off, field };
- offsetbuf_.push_back(fl);
- }
-
- // Like PushElement, but additionally tracks the field this represents.
- template<typename T> void AddElement(voffset_t field, T e, T def) {
- // We don't serialize values equal to the default.
- if (e == def && !force_defaults_) return;
- auto off = PushElement(e);
- TrackField(field, off);
- }
-
- template<typename T> void AddOffset(voffset_t field, Offset<T> off) {
- if (!off.o) return; // An offset of 0 means NULL, don't store.
- AddElement(field, ReferTo(off.o), static_cast<uoffset_t>(0));
- }
-
- template<typename T> void AddStruct(voffset_t field, const T *structptr) {
- if (!structptr) return; // Default, don't store.
- Align(AlignOf<T>());
- buf_.push_small(*structptr);
- TrackField(field, GetSize());
- }
-
- void AddStructOffset(voffset_t field, uoffset_t off) {
- TrackField(field, off);
- }
-
- // Offsets initially are relative to the end of the buffer (downwards).
- // This function converts them to be relative to the current location
- // in the buffer (when stored here), pointing upwards.
- uoffset_t ReferTo(uoffset_t off) {
- // Align to ensure GetSize() below is correct.
- Align(sizeof(uoffset_t));
- // Offset must refer to something already in buffer.
- assert(off && off <= GetSize());
- return GetSize() - off + static_cast<uoffset_t>(sizeof(uoffset_t));
- }
-
- void NotNested() {
- // If you hit this, you're trying to construct a Table/Vector/String
- // during the construction of its parent table (between the MyTableBuilder
- // and table.Finish().
- // Move the creation of these sub-objects to above the MyTableBuilder to
- // not get this assert.
- // Ignoring this assert may appear to work in simple cases, but the reason
- // it is here is that storing objects in-line may cause vtable offsets
- // to not fit anymore. It also leads to vtable duplication.
- assert(!nested);
- }
-
- // From generated code (or from the parser), we call StartTable/EndTable
- // with a sequence of AddElement calls in between.
- uoffset_t StartTable() {
- NotNested();
- nested = true;
- return GetSize();
- }
-
- // This finishes one serialized object by generating the vtable if it's a
- // table, comparing it against existing vtables, and writing the
- // resulting vtable offset.
- uoffset_t EndTable(uoffset_t start, voffset_t numfields) {
- // If you get this assert, a corresponding StartTable wasn't called.
- assert(nested);
- // Write the vtable offset, which is the start of any Table.
- // We fill it's value later.
- auto vtableoffsetloc = PushElement<soffset_t>(0);
- // Write a vtable, which consists entirely of voffset_t elements.
- // It starts with the number of offsets, followed by a type id, followed
- // by the offsets themselves. In reverse:
- buf_.fill_big(numfields * sizeof(voffset_t));
- auto table_object_size = vtableoffsetloc - start;
- assert(table_object_size < 0x10000); // Vtable use 16bit offsets.
- PushElement<voffset_t>(static_cast<voffset_t>(table_object_size));
- PushElement<voffset_t>(FieldIndexToOffset(numfields));
- // Write the offsets into the table
- for (auto field_location = offsetbuf_.begin();
- field_location != offsetbuf_.end();
- ++field_location) {
- auto pos = static_cast<voffset_t>(vtableoffsetloc - field_location->off);
- // If this asserts, it means you've set a field twice.
- assert(!ReadScalar<voffset_t>(buf_.data() + field_location->id));
- WriteScalar<voffset_t>(buf_.data() + field_location->id, pos);
- }
- offsetbuf_.clear();
- auto vt1 = reinterpret_cast<voffset_t *>(buf_.data());
- auto vt1_size = ReadScalar<voffset_t>(vt1);
- auto vt_use = GetSize();
- // See if we already have generated a vtable with this exact same
- // layout before. If so, make it point to the old one, remove this one.
- if (dedup_vtables_) {
- for (auto it = vtables_.begin(); it != vtables_.end(); ++it) {
- auto vt2 = reinterpret_cast<voffset_t *>(buf_.data_at(*it));
- auto vt2_size = *vt2;
- if (vt1_size != vt2_size || memcmp(vt2, vt1, vt1_size)) continue;
- vt_use = *it;
- buf_.pop(GetSize() - vtableoffsetloc);
- break;
- }
- }
- // If this is a new vtable, remember it.
- if (vt_use == GetSize()) {
- vtables_.push_back(vt_use);
- }
- // Fill the vtable offset we created above.
- // The offset points from the beginning of the object to where the
- // vtable is stored.
- // Offsets default direction is downward in memory for future format
- // flexibility (storing all vtables at the start of the file).
- WriteScalar(buf_.data_at(vtableoffsetloc),
- static_cast<soffset_t>(vt_use) -
- static_cast<soffset_t>(vtableoffsetloc));
-
- nested = false;
- return vtableoffsetloc;
- }
-
- // This checks a required field has been set in a given table that has
- // just been constructed.
- template<typename T> void Required(Offset<T> table, voffset_t field) {
- auto table_ptr = buf_.data_at(table.o);
- auto vtable_ptr = table_ptr - ReadScalar<soffset_t>(table_ptr);
- bool ok = ReadScalar<voffset_t>(vtable_ptr + field) != 0;
- // If this fails, the caller will show what field needs to be set.
- assert(ok);
- (void)ok;
- }
-
- uoffset_t StartStruct(size_t alignment) {
- Align(alignment);
- return GetSize();
- }
-
- uoffset_t EndStruct() { return GetSize(); }
-
- void ClearOffsets() { offsetbuf_.clear(); }
-
- // Aligns such that when "len" bytes are written, an object can be written
- // after it with "alignment" without padding.
- void PreAlign(size_t len, size_t alignment) {
- buf_.fill(PaddingBytes(GetSize() + len, alignment));
- }
- template<typename T> void PreAlign(size_t len) {
- AssertScalarT<T>();
- PreAlign(len, sizeof(T));
- }
- /// @endcond
-
- /// @brief Store a string in the buffer, which can contain any binary data.
- /// @param[in] str A const char pointer to the data to be stored as a string.
- /// @param[in] len The number of bytes that should be stored from `str`.
- /// @return Returns the offset in the buffer where the string starts.
- Offset<String> CreateString(const char *str, size_t len) {
- NotNested();
- PreAlign<uoffset_t>(len + 1); // Always 0-terminated.
- buf_.fill(1);
- PushBytes(reinterpret_cast<const uint8_t *>(str), len);
- PushElement(static_cast<uoffset_t>(len));
- return Offset<String>(GetSize());
- }
-
- /// @brief Store a string in the buffer, which is null-terminated.
- /// @param[in] str A const char pointer to a C-string to add to the buffer.
- /// @return Returns the offset in the buffer where the string starts.
- Offset<String> CreateString(const char *str) {
- return CreateString(str, strlen(str));
- }
-
- /// @brief Store a string in the buffer, which can contain any binary data.
- /// @param[in] str A const reference to a std::string to store in the buffer.
- /// @return Returns the offset in the buffer where the string starts.
- Offset<String> CreateString(const std::string &str) {
- return CreateString(str.c_str(), str.length());
- }
-
- /// @brief Store a string in the buffer, which can contain any binary data.
- /// @param[in] str A const pointer to a `String` struct to add to the buffer.
- /// @return Returns the offset in the buffer where the string starts
- Offset<String> CreateString(const String *str) {
- return str ? CreateString(str->c_str(), str->Length()) : 0;
- }
-
- /// @brief Store a string in the buffer, which can contain any binary data.
- /// @param[in] str A const reference to a std::string like type with support
- /// of T::c_str() and T::length() to store in the buffer.
- /// @return Returns the offset in the buffer where the string starts.
- template<typename T>
- Offset<String> CreateString(const T &str) {
- return CreateString(str.c_str(), str.length());
- }
-
- /// @brief Store a string in the buffer, which can contain any binary data.
- /// If a string with this exact contents has already been serialized before,
- /// instead simply returns the offset of the existing string.
- /// @param[in] str A const char pointer to the data to be stored as a string.
- /// @param[in] len The number of bytes that should be stored from `str`.
- /// @return Returns the offset in the buffer where the string starts.
- Offset<String> CreateSharedString(const char *str, size_t len) {
- if (!string_pool)
- string_pool = new StringOffsetMap(StringOffsetCompare(buf_));
- auto size_before_string = buf_.size();
- // Must first serialize the string, since the set is all offsets into
- // buffer.
- auto off = CreateString(str, len);
- auto it = string_pool->find(off);
- // If it exists we reuse existing serialized data!
- if (it != string_pool->end()) {
- // We can remove the string we serialized.
- buf_.pop(buf_.size() - size_before_string);
- return *it;
- }
- // Record this string for future use.
- string_pool->insert(off);
- return off;
- }
-
- /// @brief Store a string in the buffer, which null-terminated.
- /// If a string with this exact contents has already been serialized before,
- /// instead simply returns the offset of the existing string.
- /// @param[in] str A const char pointer to a C-string to add to the buffer.
- /// @return Returns the offset in the buffer where the string starts.
- Offset<String> CreateSharedString(const char *str) {
- return CreateSharedString(str, strlen(str));
- }
-
- /// @brief Store a string in the buffer, which can contain any binary data.
- /// If a string with this exact contents has already been serialized before,
- /// instead simply returns the offset of the existing string.
- /// @param[in] str A const reference to a std::string to store in the buffer.
- /// @return Returns the offset in the buffer where the string starts.
- Offset<String> CreateSharedString(const std::string &str) {
- return CreateSharedString(str.c_str(), str.length());
- }
-
- /// @brief Store a string in the buffer, which can contain any binary data.
- /// If a string with this exact contents has already been serialized before,
- /// instead simply returns the offset of the existing string.
- /// @param[in] str A const pointer to a `String` struct to add to the buffer.
- /// @return Returns the offset in the buffer where the string starts
- Offset<String> CreateSharedString(const String *str) {
- return CreateSharedString(str->c_str(), str->Length());
- }
-
- /// @cond FLATBUFFERS_INTERNAL
- uoffset_t EndVector(size_t len) {
- assert(nested); // Hit if no corresponding StartVector.
- nested = false;
- return PushElement(static_cast<uoffset_t>(len));
- }
-
- void StartVector(size_t len, size_t elemsize) {
- NotNested();
- nested = true;
- PreAlign<uoffset_t>(len * elemsize);
- PreAlign(len * elemsize, elemsize); // Just in case elemsize > uoffset_t.
- }
-
- // Call this right before StartVector/CreateVector if you want to force the
- // alignment to be something different than what the element size would
- // normally dictate.
- // This is useful when storing a nested_flatbuffer in a vector of bytes,
- // or when storing SIMD floats, etc.
- void ForceVectorAlignment(size_t len, size_t elemsize, size_t alignment) {
- PreAlign(len * elemsize, alignment);
- }
-
- uint8_t *ReserveElements(size_t len, size_t elemsize) {
- return buf_.make_space(len * elemsize);
- }
- /// @endcond
-
- /// @brief Serialize an array into a FlatBuffer `vector`.
- /// @tparam T The data type of the array elements.
- /// @param[in] v A pointer to the array of type `T` to serialize into the
- /// buffer as a `vector`.
- /// @param[in] len The number of elements to serialize.
- /// @return Returns a typed `Offset` into the serialized data indicating
- /// where the vector is stored.
- template<typename T> Offset<Vector<T>> CreateVector(const T *v, size_t len) {
- StartVector(len, sizeof(T));
- if (sizeof(T) == 1) {
- PushBytes(reinterpret_cast<const uint8_t *>(v), len);
- } else {
- for (auto i = len; i > 0; ) {
- PushElement(v[--i]);
- }
- }
- return Offset<Vector<T>>(EndVector(len));
- }
-
- /// @brief Serialize a `std::vector` into a FlatBuffer `vector`.
- /// @tparam T The data type of the `std::vector` elements.
- /// @param v A const reference to the `std::vector` to serialize into the
- /// buffer as a `vector`.
- /// @return Returns a typed `Offset` into the serialized data indicating
- /// where the vector is stored.
- template<typename T> Offset<Vector<T>> CreateVector(const std::vector<T> &v) {
- return CreateVector(data(v), v.size());
- }
-
- // vector<bool> may be implemented using a bit-set, so we can't access it as
- // an array. Instead, read elements manually.
- // Background: https://isocpp.org/blog/2012/11/on-vectorbool
- Offset<Vector<uint8_t>> CreateVector(const std::vector<bool> &v) {
- StartVector(v.size(), sizeof(uint8_t));
- for (auto i = v.size(); i > 0; ) {
- PushElement(static_cast<uint8_t>(v[--i]));
- }
- return Offset<Vector<uint8_t>>(EndVector(v.size()));
- }
-
- #ifndef FLATBUFFERS_CPP98_STL
- /// @brief Serialize values returned by a function into a FlatBuffer `vector`.
- /// This is a convenience function that takes care of iteration for you.
- /// @tparam T The data type of the `std::vector` elements.
- /// @param f A function that takes the current iteration 0..vector_size-1 and
- /// returns any type that you can construct a FlatBuffers vector out of.
- /// @return Returns a typed `Offset` into the serialized data indicating
- /// where the vector is stored.
- template<typename T> Offset<Vector<T>> CreateVector(size_t vector_size,
- const std::function<T (size_t i)> &f) {
- std::vector<T> elems(vector_size);
- for (size_t i = 0; i < vector_size; i++) elems[i] = f(i);
- return CreateVector(elems);
- }
- #endif
-
- /// @brief Serialize a `std::vector<std::string>` into a FlatBuffer `vector`.
- /// This is a convenience function for a common case.
- /// @param v A const reference to the `std::vector` to serialize into the
- /// buffer as a `vector`.
- /// @return Returns a typed `Offset` into the serialized data indicating
- /// where the vector is stored.
- Offset<Vector<Offset<String>>> CreateVectorOfStrings(
- const std::vector<std::string> &v) {
- std::vector<Offset<String>> offsets(v.size());
- for (size_t i = 0; i < v.size(); i++) offsets[i] = CreateString(v[i]);
- return CreateVector(offsets);
- }
-
- /// @brief Serialize an array of structs into a FlatBuffer `vector`.
- /// @tparam T The data type of the struct array elements.
- /// @param[in] v A pointer to the array of type `T` to serialize into the
- /// buffer as a `vector`.
- /// @param[in] len The number of elements to serialize.
- /// @return Returns a typed `Offset` into the serialized data indicating
- /// where the vector is stored.
- template<typename T> Offset<Vector<const T *>> CreateVectorOfStructs(
- const T *v, size_t len) {
- StartVector(len * sizeof(T) / AlignOf<T>(), AlignOf<T>());
- PushBytes(reinterpret_cast<const uint8_t *>(v), sizeof(T) * len);
- return Offset<Vector<const T *>>(EndVector(len));
- }
-
- /// @brief Serialize an array of native structs into a FlatBuffer `vector`.
- /// @tparam T The data type of the struct array elements.
- /// @tparam S The data type of the native struct array elements.
- /// @param[in] v A pointer to the array of type `S` to serialize into the
- /// buffer as a `vector`.
- /// @param[in] len The number of elements to serialize.
- /// @return Returns a typed `Offset` into the serialized data indicating
- /// where the vector is stored.
- template<typename T, typename S> Offset<Vector<const T *>> CreateVectorOfNativeStructs(
- const S *v, size_t len) {
- extern T Pack(const S&);
- typedef T (*Pack_t)(const S&);
- std::vector<T> vv(len);
- std::transform(v, v+len, vv.begin(), *(Pack_t)&Pack);
- return CreateVectorOfStructs<T>(vv.data(), vv.size());
- }
-
-
- #ifndef FLATBUFFERS_CPP98_STL
- /// @brief Serialize an array of structs into a FlatBuffer `vector`.
- /// @tparam T The data type of the struct array elements.
- /// @param[in] f A function that takes the current iteration 0..vector_size-1
- /// and a pointer to the struct that must be filled.
- /// @return Returns a typed `Offset` into the serialized data indicating
- /// where the vector is stored.
- /// This is mostly useful when flatbuffers are generated with mutation
- /// accessors.
- template<typename T> Offset<Vector<const T *>> CreateVectorOfStructs(
- size_t vector_size, const std::function<void(size_t i, T *)> &filler) {
- StartVector(vector_size * sizeof(T) / AlignOf<T>(), AlignOf<T>());
- T *structs = reinterpret_cast<T *>(buf_.make_space(vector_size * sizeof(T)));
- for (size_t i = 0; i < vector_size; i++) {
- filler(i, structs);
- structs++;
- }
- return Offset<Vector<const T *>>(EndVector(vector_size));
- }
- #endif
-
- /// @brief Serialize a `std::vector` of structs into a FlatBuffer `vector`.
- /// @tparam T The data type of the `std::vector` struct elements.
- /// @param[in]] v A const reference to the `std::vector` of structs to
- /// serialize into the buffer as a `vector`.
- /// @return Returns a typed `Offset` into the serialized data indicating
- /// where the vector is stored.
- template<typename T> Offset<Vector<const T *>> CreateVectorOfStructs(
- const std::vector<T> &v) {
- return CreateVectorOfStructs(data(v), v.size());
- }
-
- /// @brief Serialize a `std::vector` of native structs into a FlatBuffer `vector`.
- /// @tparam T The data type of the `std::vector` struct elements.
- /// @tparam S The data type of the `std::vector` native struct elements.
- /// @param[in]] v A const reference to the `std::vector` of structs to
- /// serialize into the buffer as a `vector`.
- /// @return Returns a typed `Offset` into the serialized data indicating
- /// where the vector is stored.
- template<typename T, typename S> Offset<Vector<const T *>> CreateVectorOfNativeStructs(
- const std::vector<S> &v) {
- return CreateVectorOfNativeStructs<T, S>(data(v), v.size());
- }
-
-
- /// @cond FLATBUFFERS_INTERNAL
- template<typename T>
- struct StructKeyComparator {
- bool operator()(const T &a, const T &b) const {
- return a.KeyCompareLessThan(&b);
- }
-
- private:
- StructKeyComparator& operator= (const StructKeyComparator&);
- };
- /// @endcond
-
- /// @brief Serialize a `std::vector` of structs into a FlatBuffer `vector`
- /// in sorted order.
- /// @tparam T The data type of the `std::vector` struct elements.
- /// @param[in]] v A const reference to the `std::vector` of structs to
- /// serialize into the buffer as a `vector`.
- /// @return Returns a typed `Offset` into the serialized data indicating
- /// where the vector is stored.
- template<typename T> Offset<Vector<const T *>> CreateVectorOfSortedStructs(
- std::vector<T> *v) {
- return CreateVectorOfSortedStructs(data(*v), v->size());
- }
-
- /// @brief Serialize a `std::vector` of native structs into a FlatBuffer `vector`
- /// in sorted order.
- /// @tparam T The data type of the `std::vector` struct elements.
- /// @tparam S The data type of the `std::vector` native struct elements.
- /// @param[in]] v A const reference to the `std::vector` of structs to
- /// serialize into the buffer as a `vector`.
- /// @return Returns a typed `Offset` into the serialized data indicating
- /// where the vector is stored.
- template<typename T, typename S> Offset<Vector<const T *>> CreateVectorOfSortedNativeStructs(
- std::vector<S> *v) {
- return CreateVectorOfSortedNativeStructs<T, S>(data(*v), v->size());
- }
-
- /// @brief Serialize an array of structs into a FlatBuffer `vector` in sorted
- /// order.
- /// @tparam T The data type of the struct array elements.
- /// @param[in] v A pointer to the array of type `T` to serialize into the
- /// buffer as a `vector`.
- /// @param[in] len The number of elements to serialize.
- /// @return Returns a typed `Offset` into the serialized data indicating
- /// where the vector is stored.
- template<typename T> Offset<Vector<const T *>> CreateVectorOfSortedStructs(
- T *v, size_t len) {
- std::sort(v, v + len, StructKeyComparator<T>());
- return CreateVectorOfStructs(v, len);
- }
-
- /// @brief Serialize an array of native structs into a FlatBuffer `vector` in sorted
- /// order.
- /// @tparam T The data type of the struct array elements.
- /// @tparam S The data type of the native struct array elements.
- /// @param[in] v A pointer to the array of type `S` to serialize into the
- /// buffer as a `vector`.
- /// @param[in] len The number of elements to serialize.
- /// @return Returns a typed `Offset` into the serialized data indicating
- /// where the vector is stored.
- template<typename T, typename S> Offset<Vector<const T *>> CreateVectorOfSortedNativeStructs(
- S *v, size_t len) {
- extern T Pack(const S&);
- typedef T (*Pack_t)(const S&);
- std::vector<T> vv(len);
- std::transform(v, v+len, vv.begin(), *(Pack_t)&Pack);
- return CreateVectorOfSortedStructs<T>(vv, len);
- }
-
- /// @cond FLATBUFFERS_INTERNAL
- template<typename T>
- struct TableKeyComparator {
- TableKeyComparator(vector_downward& buf) : buf_(buf) {}
- bool operator()(const Offset<T> &a, const Offset<T> &b) const {
- auto table_a = reinterpret_cast<T *>(buf_.data_at(a.o));
- auto table_b = reinterpret_cast<T *>(buf_.data_at(b.o));
- return table_a->KeyCompareLessThan(table_b);
- }
- vector_downward& buf_;
-
- private:
- TableKeyComparator& operator= (const TableKeyComparator&);
- };
- /// @endcond
-
- /// @brief Serialize an array of `table` offsets as a `vector` in the buffer
- /// in sorted order.
- /// @tparam T The data type that the offset refers to.
- /// @param[in] v An array of type `Offset<T>` that contains the `table`
- /// offsets to store in the buffer in sorted order.
- /// @param[in] len The number of elements to store in the `vector`.
- /// @return Returns a typed `Offset` into the serialized data indicating
- /// where the vector is stored.
- template<typename T> Offset<Vector<Offset<T>>> CreateVectorOfSortedTables(
- Offset<T> *v, size_t len) {
- std::sort(v, v + len, TableKeyComparator<T>(buf_));
- return CreateVector(v, len);
- }
-
- /// @brief Serialize an array of `table` offsets as a `vector` in the buffer
- /// in sorted order.
- /// @tparam T The data type that the offset refers to.
- /// @param[in] v An array of type `Offset<T>` that contains the `table`
- /// offsets to store in the buffer in sorted order.
- /// @return Returns a typed `Offset` into the serialized data indicating
- /// where the vector is stored.
- template<typename T> Offset<Vector<Offset<T>>> CreateVectorOfSortedTables(
- std::vector<Offset<T>> *v) {
- return CreateVectorOfSortedTables(data(*v), v->size());
- }
-
- /// @brief Specialized version of `CreateVector` for non-copying use cases.
- /// Write the data any time later to the returned buffer pointer `buf`.
- /// @param[in] len The number of elements to store in the `vector`.
- /// @param[in] elemsize The size of each element in the `vector`.
- /// @param[out] buf A pointer to a `uint8_t` pointer that can be
- /// written to at a later time to serialize the data into a `vector`
- /// in the buffer.
- uoffset_t CreateUninitializedVector(size_t len, size_t elemsize,
- uint8_t **buf) {
- NotNested();
- StartVector(len, elemsize);
- buf_.make_space(len * elemsize);
- auto vec_start = GetSize();
- auto vec_end = EndVector(len);
- *buf = buf_.data_at(vec_start);
- return vec_end;
- }
-
- /// @brief Specialized version of `CreateVector` for non-copying use cases.
- /// Write the data any time later to the returned buffer pointer `buf`.
- /// @tparam T The data type of the data that will be stored in the buffer
- /// as a `vector`.
- /// @param[in] len The number of elements to store in the `vector`.
- /// @param[out] buf A pointer to a pointer of type `T` that can be
- /// written to at a later time to serialize the data into a `vector`
- /// in the buffer.
- template<typename T> Offset<Vector<T>> CreateUninitializedVector(
- size_t len, T **buf) {
- return CreateUninitializedVector(len, sizeof(T),
- reinterpret_cast<uint8_t **>(buf));
- }
-
- /// @brief Write a struct by itself, typically to be part of a union.
- template<typename T> Offset<const T *> CreateStruct(const T &structobj) {
- Align(AlignOf<T>());
- buf_.push_small(structobj);
- return Offset<const T *>(GetSize());
- }
-
- /// @brief The length of a FlatBuffer file header.
- static const size_t kFileIdentifierLength = 4;
-
- /// @brief Finish serializing a buffer by writing the root offset.
- /// @param[in] file_identifier If a `file_identifier` is given, the buffer
- /// will be prefixed with a standard FlatBuffers file header.
- template<typename T> void Finish(Offset<T> root,
- const char *file_identifier = nullptr) {
-
- Finish(root.o, file_identifier, false);
- }
-
- /// @brief Finish a buffer with a 32 bit size field pre-fixed (size of the
- /// buffer following the size field). These buffers are NOT compatible
- /// with standard buffers created by Finish, i.e. you can't call GetRoot
- /// on them, you have to use GetSizePrefixedRoot instead.
- /// All >32 bit quantities in this buffer will be aligned when the whole
- /// size pre-fixed buffer is aligned.
- /// These kinds of buffers are useful for creating a stream of FlatBuffers.
- template<typename T> void FinishSizePrefixed(Offset<T> root,
- const char *file_identifier = nullptr) {
- Finish(root.o, file_identifier, true);
- }
-
- private:
- // You shouldn't really be copying instances of this class.
- FlatBufferBuilder(const FlatBufferBuilder &);
- FlatBufferBuilder &operator=(const FlatBufferBuilder &);
-
- void Finish(uoffset_t root, const char *file_identifier, bool size_prefix) {
- NotNested();
- // This will cause the whole buffer to be aligned.
- PreAlign((size_prefix ? sizeof(uoffset_t) : 0) +
- sizeof(uoffset_t) +
- (file_identifier ? kFileIdentifierLength : 0),
- minalign_);
- if (file_identifier) {
- assert(strlen(file_identifier) == kFileIdentifierLength);
- PushBytes(reinterpret_cast<const uint8_t *>(file_identifier),
- kFileIdentifierLength);
- }
- PushElement(ReferTo(root)); // Location of root.
- if (size_prefix) {
- PushElement(GetSize());
- }
- finished = true;
- }
-
- struct FieldLoc {
- uoffset_t off;
- voffset_t id;
- };
-
- simple_allocator default_allocator;
-
- vector_downward buf_;
-
- // Accumulating offsets of table members while it is being built.
- std::vector<FieldLoc> offsetbuf_;
-
- // Ensure objects are not nested.
- bool nested;
-
- // Ensure the buffer is finished before it is being accessed.
- bool finished;
-
- std::vector<uoffset_t> vtables_; // todo: Could make this into a map?
-
- size_t minalign_;
-
- bool force_defaults_; // Serialize values equal to their defaults anyway.
-
- bool dedup_vtables_;
-
- struct StringOffsetCompare {
- StringOffsetCompare(const vector_downward &buf) : buf_(&buf) {}
- bool operator() (const Offset<String> &a, const Offset<String> &b) const {
- auto stra = reinterpret_cast<const String *>(buf_->data_at(a.o));
- auto strb = reinterpret_cast<const String *>(buf_->data_at(b.o));
- return strncmp(stra->c_str(), strb->c_str(),
- std::min(stra->size(), strb->size()) + 1) < 0;
- }
- const vector_downward *buf_;
- };
-
- // For use with CreateSharedString. Instantiated on first use only.
- typedef std::set<Offset<String>, StringOffsetCompare> StringOffsetMap;
- StringOffsetMap *string_pool;
-};
-/// @}
-
-/// @cond FLATBUFFERS_INTERNAL
-// Helpers to get a typed pointer to the root object contained in the buffer.
-template<typename T> T *GetMutableRoot(void *buf) {
- EndianCheck();
- return reinterpret_cast<T *>(reinterpret_cast<uint8_t *>(buf) +
- EndianScalar(*reinterpret_cast<uoffset_t *>(buf)));
-}
-
-template<typename T> const T *GetRoot(const void *buf) {
- return GetMutableRoot<T>(const_cast<void *>(buf));
-}
-
-template<typename T> const T *GetSizePrefixedRoot(const void *buf) {
- return GetRoot<T>(reinterpret_cast<const uint8_t *>(buf) + sizeof(uoffset_t));
-}
-
-/// Helpers to get a typed pointer to objects that are currently being built.
-/// @warning Creating new objects will lead to reallocations and invalidates
-/// the pointer!
-template<typename T> T *GetMutableTemporaryPointer(FlatBufferBuilder &fbb,
- Offset<T> offset) {
- return reinterpret_cast<T *>(fbb.GetCurrentBufferPointer() +
- fbb.GetSize() - offset.o);
-}
-
-template<typename T> const T *GetTemporaryPointer(FlatBufferBuilder &fbb,
- Offset<T> offset) {
- return GetMutableTemporaryPointer<T>(fbb, offset);
-}
-
-// Helper to see if the identifier in a buffer has the expected value.
-inline bool BufferHasIdentifier(const void *buf, const char *identifier) {
- return strncmp(reinterpret_cast<const char *>(buf) + sizeof(uoffset_t),
- identifier, FlatBufferBuilder::kFileIdentifierLength) == 0;
-}
-
-// Helper class to verify the integrity of a FlatBuffer
-class Verifier FLATBUFFERS_FINAL_CLASS {
- public:
- Verifier(const uint8_t *buf, size_t buf_len, uoffset_t _max_depth = 64,
- uoffset_t _max_tables = 1000000)
- : buf_(buf), end_(buf + buf_len), depth_(0), max_depth_(_max_depth),
- num_tables_(0), max_tables_(_max_tables)
- #ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE
- , upper_bound_(buf)
- #endif
- {}
-
- // Central location where any verification failures register.
- bool Check(bool ok) const {
- #ifdef FLATBUFFERS_DEBUG_VERIFICATION_FAILURE
- assert(ok);
- #endif
- #ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE
- if (!ok)
- upper_bound_ = buf_;
- #endif
- return ok;
- }
-
- // Verify any range within the buffer.
- bool Verify(const void *elem, size_t elem_len) const {
- #ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE
- auto upper_bound = reinterpret_cast<const uint8_t *>(elem) + elem_len;
- if (upper_bound_ < upper_bound)
- upper_bound_ = upper_bound;
- #endif
- return Check(elem_len <= (size_t) (end_ - buf_) &&
- elem >= buf_ &&
- elem <= end_ - elem_len);
- }
-
- // Verify a range indicated by sizeof(T).
- template<typename T> bool Verify(const void *elem) const {
- return Verify(elem, sizeof(T));
- }
-
- // Verify a pointer (may be NULL) of a table type.
- template<typename T> bool VerifyTable(const T *table) {
- return !table || table->Verify(*this);
- }
-
- // Verify a pointer (may be NULL) of any vector type.
- template<typename T> bool Verify(const Vector<T> *vec) const {
- const uint8_t *end;
- return !vec ||
- VerifyVector(reinterpret_cast<const uint8_t *>(vec), sizeof(T),
- &end);
- }
-
- // Verify a pointer (may be NULL) of a vector to struct.
- template<typename T> bool Verify(const Vector<const T *> *vec) const {
- return Verify(reinterpret_cast<const Vector<T> *>(vec));
- }
-
- // Verify a pointer (may be NULL) to string.
- bool Verify(const String *str) const {
- const uint8_t *end;
- return !str ||
- (VerifyVector(reinterpret_cast<const uint8_t *>(str), 1, &end) &&
- Verify(end, 1) && // Must have terminator
- Check(*end == '\0')); // Terminating byte must be 0.
- }
-
- // Common code between vectors and strings.
- bool VerifyVector(const uint8_t *vec, size_t elem_size,
- const uint8_t **end) const {
- // Check we can read the size field.
- if (!Verify<uoffset_t>(vec)) return false;
- // Check the whole array. If this is a string, the byte past the array
- // must be 0.
- auto size = ReadScalar<uoffset_t>(vec);
- auto max_elems = FLATBUFFERS_MAX_BUFFER_SIZE / elem_size;
- if (!Check(size < max_elems))
- return false; // Protect against byte_size overflowing.
- auto byte_size = sizeof(size) + elem_size * size;
- *end = vec + byte_size;
- return Verify(vec, byte_size);
- }
-
- // Special case for string contents, after the above has been called.
- bool VerifyVectorOfStrings(const Vector<Offset<String>> *vec) const {
- if (vec) {
- for (uoffset_t i = 0; i < vec->size(); i++) {
- if (!Verify(vec->Get(i))) return false;
- }
- }
- return true;
- }
-
- // Special case for table contents, after the above has been called.
- template<typename T> bool VerifyVectorOfTables(const Vector<Offset<T>> *vec) {
- if (vec) {
- for (uoffset_t i = 0; i < vec->size(); i++) {
- if (!vec->Get(i)->Verify(*this)) return false;
- }
- }
- return true;
- }
-
- template<typename T> bool VerifyBufferFromStart(const char *identifier,
- const uint8_t *start) {
- if (identifier &&
- (size_t(end_ - start) < 2 * sizeof(flatbuffers::uoffset_t) ||
- !BufferHasIdentifier(start, identifier))) {
- return false;
- }
-
- // Call T::Verify, which must be in the generated code for this type.
- return Verify<uoffset_t>(start) &&
- reinterpret_cast<const T *>(start + ReadScalar<uoffset_t>(start))->
- Verify(*this)
- #ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE
- && GetComputedSize()
- #endif
- ;
- }
-
- // Verify this whole buffer, starting with root type T.
- template<typename T> bool VerifyBuffer() {
- return VerifyBuffer<T>(nullptr);
- }
-
- template<typename T> bool VerifyBuffer(const char *identifier) {
- return VerifyBufferFromStart<T>(identifier, buf_);
- }
-
- template<typename T> bool VerifySizePrefixedBuffer(const char *identifier) {
- return Verify<uoffset_t>(buf_) &&
- ReadScalar<uoffset_t>(buf_) == end_ - buf_ - sizeof(uoffset_t) &&
- VerifyBufferFromStart<T>(identifier, buf_ + sizeof(uoffset_t));
- }
-
- // Called at the start of a table to increase counters measuring data
- // structure depth and amount, and possibly bails out with false if
- // limits set by the constructor have been hit. Needs to be balanced
- // with EndTable().
- bool VerifyComplexity() {
- depth_++;
- num_tables_++;
- return Check(depth_ <= max_depth_ && num_tables_ <= max_tables_);
- }
-
- // Called at the end of a table to pop the depth count.
- bool EndTable() {
- depth_--;
- return true;
- }
-
- #ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE
- // Returns the message size in bytes
- size_t GetComputedSize() const {
- uintptr_t size = upper_bound_ - buf_;
- // Align the size to uoffset_t
- size = (size - 1 + sizeof(uoffset_t)) & ~(sizeof(uoffset_t) - 1);
- return (buf_ + size > end_) ? 0 : size;
- }
- #endif
-
- private:
- const uint8_t *buf_;
- const uint8_t *end_;
- uoffset_t depth_;
- uoffset_t max_depth_;
- uoffset_t num_tables_;
- uoffset_t max_tables_;
-#ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE
- mutable const uint8_t *upper_bound_;
-#endif
-};
-
-// Convenient way to bundle a buffer and its length, to pass it around
-// typed by its root.
-// A BufferRef does not own its buffer.
-struct BufferRefBase {}; // for std::is_base_of
-template<typename T> struct BufferRef : BufferRefBase {
- BufferRef() : buf(nullptr), len(0), must_free(false) {}
- BufferRef(uint8_t *_buf, uoffset_t _len)
- : buf(_buf), len(_len), must_free(false) {}
-
- ~BufferRef() { if (must_free) free(buf); }
-
- const T *GetRoot() const { return flatbuffers::GetRoot<T>(buf); }
-
- bool Verify() {
- Verifier verifier(buf, len);
- return verifier.VerifyBuffer<T>(nullptr);
- }
-
- uint8_t *buf;
- uoffset_t len;
- bool must_free;
-};
-
-// "structs" are flat structures that do not have an offset table, thus
-// always have all members present and do not support forwards/backwards
-// compatible extensions.
-
-class Struct FLATBUFFERS_FINAL_CLASS {
- public:
- template<typename T> T GetField(uoffset_t o) const {
- return ReadScalar<T>(&data_[o]);
- }
-
- template<typename T> T GetStruct(uoffset_t o) const {
- return reinterpret_cast<T>(&data_[o]);
- }
-
- const uint8_t *GetAddressOf(uoffset_t o) const { return &data_[o]; }
- uint8_t *GetAddressOf(uoffset_t o) { return &data_[o]; }
-
- private:
- uint8_t data_[1];
-};
-
-// "tables" use an offset table (possibly shared) that allows fields to be
-// omitted and added at will, but uses an extra indirection to read.
-class Table {
- public:
- const uint8_t *GetVTable() const {
- return data_ - ReadScalar<soffset_t>(data_);
- }
-
- // This gets the field offset for any of the functions below it, or 0
- // if the field was not present.
- voffset_t GetOptionalFieldOffset(voffset_t field) const {
- // The vtable offset is always at the start.
- auto vtable = GetVTable();
- // The first element is the size of the vtable (fields + type id + itself).
- auto vtsize = ReadScalar<voffset_t>(vtable);
- // If the field we're accessing is outside the vtable, we're reading older
- // data, so it's the same as if the offset was 0 (not present).
- return field < vtsize ? ReadScalar<voffset_t>(vtable + field) : 0;
- }
-
- template<typename T> T GetField(voffset_t field, T defaultval) const {
- auto field_offset = GetOptionalFieldOffset(field);
- return field_offset ? ReadScalar<T>(data_ + field_offset) : defaultval;
- }
-
- template<typename P> P GetPointer(voffset_t field) {
- auto field_offset = GetOptionalFieldOffset(field);
- auto p = data_ + field_offset;
- return field_offset
- ? reinterpret_cast<P>(p + ReadScalar<uoffset_t>(p))
- : nullptr;
- }
- template<typename P> P GetPointer(voffset_t field) const {
- return const_cast<Table *>(this)->GetPointer<P>(field);
- }
-
- template<typename P> P GetStruct(voffset_t field) const {
- auto field_offset = GetOptionalFieldOffset(field);
- auto p = const_cast<uint8_t *>(data_ + field_offset);
- return field_offset ? reinterpret_cast<P>(p) : nullptr;
- }
-
- template<typename T> bool SetField(voffset_t field, T val, T def) {
- auto field_offset = GetOptionalFieldOffset(field);
- if (!field_offset) return val == def;
- WriteScalar(data_ + field_offset, val);
- return true;
- }
-
- bool SetPointer(voffset_t field, const uint8_t *val) {
- auto field_offset = GetOptionalFieldOffset(field);
- if (!field_offset) return false;
- WriteScalar(data_ + field_offset,
- static_cast<uoffset_t>(val - (data_ + field_offset)));
- return true;
- }
-
- uint8_t *GetAddressOf(voffset_t field) {
- auto field_offset = GetOptionalFieldOffset(field);
- return field_offset ? data_ + field_offset : nullptr;
- }
- const uint8_t *GetAddressOf(voffset_t field) const {
- return const_cast<Table *>(this)->GetAddressOf(field);
- }
-
- bool CheckField(voffset_t field) const {
- return GetOptionalFieldOffset(field) != 0;
- }
-
- // Verify the vtable of this table.
- // Call this once per table, followed by VerifyField once per field.
- bool VerifyTableStart(Verifier &verifier) const {
- // Check the vtable offset.
- if (!verifier.Verify<soffset_t>(data_)) return false;
- auto vtable = GetVTable();
- // Check the vtable size field, then check vtable fits in its entirety.
- return verifier.VerifyComplexity() &&
- verifier.Verify<voffset_t>(vtable) &&
- (ReadScalar<voffset_t>(vtable) & (sizeof(voffset_t) - 1)) == 0 &&
- verifier.Verify(vtable, ReadScalar<voffset_t>(vtable));
- }
-
- // Verify a particular field.
- template<typename T> bool VerifyField(const Verifier &verifier,
- voffset_t field) const {
- // Calling GetOptionalFieldOffset should be safe now thanks to
- // VerifyTable().
- auto field_offset = GetOptionalFieldOffset(field);
- // Check the actual field.
- return !field_offset || verifier.Verify<T>(data_ + field_offset);
- }
-
- // VerifyField for required fields.
- template<typename T> bool VerifyFieldRequired(const Verifier &verifier,
- voffset_t field) const {
- auto field_offset = GetOptionalFieldOffset(field);
- return verifier.Check(field_offset != 0) &&
- verifier.Verify<T>(data_ + field_offset);
- }
-
- private:
- // private constructor & copy constructor: you obtain instances of this
- // class by pointing to existing data only
- Table();
- Table(const Table &other);
-
- uint8_t data_[1];
-};
-
-/// @brief This can compute the start of a FlatBuffer from a root pointer, i.e.
-/// it is the opposite transformation of GetRoot().
-/// This may be useful if you want to pass on a root and have the recipient
-/// delete the buffer afterwards.
-inline const uint8_t *GetBufferStartFromRootPointer(const void *root) {
- auto table = reinterpret_cast<const Table *>(root);
- auto vtable = table->GetVTable();
- // Either the vtable is before the root or after the root.
- auto start = std::min(vtable, reinterpret_cast<const uint8_t *>(root));
- // Align to at least sizeof(uoffset_t).
- start = reinterpret_cast<const uint8_t *>(
- reinterpret_cast<uintptr_t>(start) & ~(sizeof(uoffset_t) - 1));
- // Additionally, there may be a file_identifier in the buffer, and the root
- // offset. The buffer may have been aligned to any size between
- // sizeof(uoffset_t) and FLATBUFFERS_MAX_ALIGNMENT (see "force_align").
- // Sadly, the exact alignment is only known when constructing the buffer,
- // since it depends on the presence of values with said alignment properties.
- // So instead, we simply look at the next uoffset_t values (root,
- // file_identifier, and alignment padding) to see which points to the root.
- // None of the other values can "impersonate" the root since they will either
- // be 0 or four ASCII characters.
- static_assert(FlatBufferBuilder::kFileIdentifierLength == sizeof(uoffset_t),
- "file_identifier is assumed to be the same size as uoffset_t");
- for (auto possible_roots = FLATBUFFERS_MAX_ALIGNMENT / sizeof(uoffset_t) + 1;
- possible_roots;
- possible_roots--) {
- start -= sizeof(uoffset_t);
- if (ReadScalar<uoffset_t>(start) + start ==
- reinterpret_cast<const uint8_t *>(root)) return start;
- }
- // We didn't find the root, either the "root" passed isn't really a root,
- // or the buffer is corrupt.
- // Assert, because calling this function with bad data may cause reads
- // outside of buffer boundaries.
- assert(false);
- return nullptr;
-}
-
-// Base class for native objects (FlatBuffer data de-serialized into native
-// C++ data structures).
-// Contains no functionality, purely documentative.
-struct NativeTable {
-};
-
-/// @brief Function types to be used with resolving hashes into objects and
-/// back again. The resolver gets a pointer to a field inside an object API
-/// object that is of the type specified in the schema using the attribute
-/// `cpp_type` (it is thus important whatever you write to this address
-/// matches that type). The value of this field is initially null, so you
-/// may choose to implement a delayed binding lookup using this function
-/// if you wish. The resolver does the opposite lookup, for when the object
-/// is being serialized again.
-typedef uint64_t hash_value_t;
-#ifdef FLATBUFFERS_CPP98_STL
- typedef void (*resolver_function_t)(void **pointer_adr, hash_value_t hash);
- typedef hash_value_t (*rehasher_function_t)(void *pointer);
-#else
- typedef std::function<void (void **pointer_adr, hash_value_t hash)>
- resolver_function_t;
- typedef std::function<hash_value_t (void *pointer)> rehasher_function_t;
-#endif
-
-// Helper function to test if a field is present, using any of the field
-// enums in the generated code.
-// `table` must be a generated table type. Since this is a template parameter,
-// this is not typechecked to be a subclass of Table, so beware!
-// Note: this function will return false for fields equal to the default
-// value, since they're not stored in the buffer (unless force_defaults was
-// used).
-template<typename T> bool IsFieldPresent(const T *table, voffset_t field) {
- // Cast, since Table is a private baseclass of any table types.
- return reinterpret_cast<const Table *>(table)->CheckField(field);
-}
-
-// Utility function for reverse lookups on the EnumNames*() functions
-// (in the generated C++ code)
-// names must be NULL terminated.
-inline int LookupEnum(const char **names, const char *name) {
- for (const char **p = names; *p; p++)
- if (!strcmp(*p, name))
- return static_cast<int>(p - names);
- return -1;
-}
-
-// These macros allow us to layout a struct with a guarantee that they'll end
-// up looking the same on different compilers and platforms.
-// It does this by disallowing the compiler to do any padding, and then
-// does padding itself by inserting extra padding fields that make every
-// element aligned to its own size.
-// Additionally, it manually sets the alignment of the struct as a whole,
-// which is typically its largest element, or a custom size set in the schema
-// by the force_align attribute.
-// These are used in the generated code only.
-
-#if defined(_MSC_VER)
- #define MANUALLY_ALIGNED_STRUCT(alignment) \
- __pragma(pack(1)); \
- struct __declspec(align(alignment))
- #define STRUCT_END(name, size) \
- __pragma(pack()); \
- static_assert(sizeof(name) == size, "compiler breaks packing rules")
-#elif defined(__GNUC__) || defined(__clang__)
- #define MANUALLY_ALIGNED_STRUCT(alignment) \
- _Pragma("pack(1)") \
- struct __attribute__((aligned(alignment)))
- #define STRUCT_END(name, size) \
- _Pragma("pack()") \
- static_assert(sizeof(name) == size, "compiler breaks packing rules")
-#else
- #error Unknown compiler, please define structure alignment macros
-#endif
-
-// String which identifies the current version of FlatBuffers.
-// flatbuffer_version_string is used by Google developers to identify which
-// applications uploaded to Google Play are using this library. This allows
-// the development team at Google to determine the popularity of the library.
-// How it works: Applications that are uploaded to the Google Play Store are
-// scanned for this version string. We track which applications are using it
-// to measure popularity. You are free to remove it (of course) but we would
-// appreciate if you left it in.
-
-// Weak linkage is culled by VS & doesn't work on cygwin.
-#if !defined(_WIN32) && !defined(__CYGWIN__)
-
-extern volatile __attribute__((weak)) const char *flatbuffer_version_string;
-volatile __attribute__((weak)) const char *flatbuffer_version_string =
- "FlatBuffers "
- FLATBUFFERS_STRING(FLATBUFFERS_VERSION_MAJOR) "."
- FLATBUFFERS_STRING(FLATBUFFERS_VERSION_MINOR) "."
- FLATBUFFERS_STRING(FLATBUFFERS_VERSION_REVISION);
-
-#endif // !defined(_WIN32) && !defined(__CYGWIN__)
-
-#define DEFINE_BITMASK_OPERATORS(E, T)\
- inline E operator | (E lhs, E rhs){\
- return E(T(lhs) | T(rhs));\
- }\
- inline E operator & (E lhs, E rhs){\
- return E(T(lhs) & T(rhs));\
- }\
- inline E operator ^ (E lhs, E rhs){\
- return E(T(lhs) ^ T(rhs));\
- }\
- inline E operator ~ (E lhs){\
- return E(~T(lhs));\
- }\
- inline E operator |= (E &lhs, E rhs){\
- lhs = lhs | rhs;\
- return lhs;\
- }\
- inline E operator &= (E &lhs, E rhs){\
- lhs = lhs & rhs;\
- return lhs;\
- }\
- inline E operator ^= (E &lhs, E rhs){\
- lhs = lhs ^ rhs;\
- return lhs;\
- }\
- inline bool operator !(E rhs) \
- {\
- return !bool(T(rhs)); \
- }
-/// @endcond
-} // namespace flatbuffers
-
-#if defined(_MSC_VER)
-#pragma warning(pop)
-#endif
-
-#endif // FLATBUFFERS_H_
diff --git a/third_party/flatbuffers/include/flatbuffers/flatc.h b/third_party/flatbuffers/include/flatbuffers/flatc.h
deleted file mode 100644
index e7bc835..0000000
--- a/third_party/flatbuffers/include/flatbuffers/flatc.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright 2017 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "flatbuffers/flatbuffers.h"
-#include "flatbuffers/idl.h"
-#include "flatbuffers/util.h"
-#include <functional>
-#include <limits>
-#include <string>
-
-#ifndef FLATC_H_
-#define FLATC_H_
-
-namespace flatbuffers {
-
-class FlatCompiler {
- public:
- // Output generator for the various programming languages and formats we
- // support.
- struct Generator {
- typedef bool (*GenerateFn)(const flatbuffers::Parser &parser,
- const std::string &path,
- const std::string &file_name);
- typedef std::string (*MakeRuleFn)(const flatbuffers::Parser &parser,
- const std::string &path,
- const std::string &file_name);
-
- GenerateFn generate;
- const char *generator_opt_short;
- const char *generator_opt_long;
- const char *lang_name;
- GenerateFn generateGRPC;
- flatbuffers::IDLOptions::Language lang;
- const char *generator_help;
- MakeRuleFn make_rule;
- };
-
- typedef void (*WarnFn)(const FlatCompiler *flatc,
- const std::string &warn,
- bool show_exe_name);
-
- typedef void (*ErrorFn)(const FlatCompiler *flatc,
- const std::string &err,
- bool usage, bool show_exe_name);
-
- // Parameters required to initialize the FlatCompiler.
- struct InitParams {
- InitParams()
- : generators(nullptr),
- num_generators(0),
- warn_fn(nullptr),
- error_fn(nullptr) {}
-
- const Generator* generators;
- size_t num_generators;
- WarnFn warn_fn;
- ErrorFn error_fn;
- };
-
- explicit FlatCompiler(const InitParams& params) : params_(params) {}
-
- int Compile(int argc, const char** argv);
-
- std::string GetUsageString(const char* program_name) const;
-
- private:
- void ParseFile(flatbuffers::Parser &parser,
- const std::string &filename,
- const std::string &contents,
- std::vector<const char *> &include_directories) const;
-
- void Warn(const std::string &warn, bool show_exe_name = true) const;
-
- void Error(const std::string &err, bool usage = true,
- bool show_exe_name = true) const;
-
- InitParams params_;
-};
-
-
-} // namespace flatbuffers
-
-#endif // FLATC_H_
diff --git a/third_party/flatbuffers/include/flatbuffers/flexbuffers.h b/third_party/flatbuffers/include/flatbuffers/flexbuffers.h
deleted file mode 100644
index 2c7a25e..0000000
--- a/third_party/flatbuffers/include/flatbuffers/flexbuffers.h
+++ /dev/null
@@ -1,1353 +0,0 @@
-/*
- * Copyright 2017 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef FLATBUFFERS_FLEXBUFFERS_H_
-#define FLATBUFFERS_FLEXBUFFERS_H_
-
-#include <map>
-// We use the basic binary writing functions from the regular FlatBuffers.
-#include "flatbuffers/flatbuffers.h"
-#include "flatbuffers/util.h"
-
-#ifdef _MSC_VER
-#include <intrin.h>
-#endif
-
-#if defined(_MSC_VER)
-#pragma warning(push)
-#pragma warning(disable: 4127) // C4127: conditional expression is constant
-#endif
-
-namespace flexbuffers {
-
-class Reference;
-class Map;
-
-// These are used in the lower 2 bits of a type field to determine the size of
-// the elements (and or size field) of the item pointed to (e.g. vector).
-enum BitWidth {
- BIT_WIDTH_8 = 0,
- BIT_WIDTH_16 = 1,
- BIT_WIDTH_32 = 2,
- BIT_WIDTH_64 = 3,
-};
-
-// These are used as the upper 6 bits of a type field to indicate the actual
-// type.
-enum Type {
- TYPE_NULL = 0,
- TYPE_INT = 1,
- TYPE_UINT = 2,
- TYPE_FLOAT = 3,
- // Types above stored inline, types below store an offset.
- TYPE_KEY = 4,
- TYPE_STRING = 5,
- TYPE_INDIRECT_INT = 6,
- TYPE_INDIRECT_UINT = 7,
- TYPE_INDIRECT_FLOAT = 8,
- TYPE_MAP = 9,
- TYPE_VECTOR = 10, // Untyped.
- TYPE_VECTOR_INT = 11, // Typed any size (stores no type table).
- TYPE_VECTOR_UINT = 12,
- TYPE_VECTOR_FLOAT = 13,
- TYPE_VECTOR_KEY = 14,
- TYPE_VECTOR_STRING = 15,
- TYPE_VECTOR_INT2 = 16, // Typed tuple (no type table, no size field).
- TYPE_VECTOR_UINT2 = 17,
- TYPE_VECTOR_FLOAT2 = 18,
- TYPE_VECTOR_INT3 = 19, // Typed triple (no type table, no size field).
- TYPE_VECTOR_UINT3 = 20,
- TYPE_VECTOR_FLOAT3 = 21,
- TYPE_VECTOR_INT4 = 22, // Typed quad (no type table, no size field).
- TYPE_VECTOR_UINT4 = 23,
- TYPE_VECTOR_FLOAT4 = 24,
- TYPE_BLOB = 25,
-};
-
-inline bool IsInline(Type t) { return t <= TYPE_FLOAT; }
-
-inline bool IsTypedVectorElementType(Type t) {
- return t >= TYPE_INT && t <= TYPE_STRING;
-}
-
-inline bool IsTypedVector(Type t) {
- return t >= TYPE_VECTOR_INT && t <= TYPE_VECTOR_STRING;
-}
-
-inline bool IsFixedTypedVector(Type t) {
- return t >= TYPE_VECTOR_INT2 && t <= TYPE_VECTOR_FLOAT4;
-}
-
-inline Type ToTypedVector(Type t, size_t fixed_len = 0) {
- assert(IsTypedVectorElementType(t));
- switch (fixed_len) {
- case 0: return static_cast<Type>(t - TYPE_INT + TYPE_VECTOR_INT);
- case 2: return static_cast<Type>(t - TYPE_INT + TYPE_VECTOR_INT2);
- case 3: return static_cast<Type>(t - TYPE_INT + TYPE_VECTOR_INT3);
- case 4: return static_cast<Type>(t - TYPE_INT + TYPE_VECTOR_INT4);
- default: assert(0); return TYPE_NULL;
- }
-}
-
-inline Type ToTypedVectorElementType(Type t) {
- assert(IsTypedVector(t));
- return static_cast<Type>(t - TYPE_VECTOR_INT + TYPE_INT);
-}
-
-inline Type ToFixedTypedVectorElementType(Type t, uint8_t *len) {
- assert(IsFixedTypedVector(t));
- auto fixed_type = t - TYPE_VECTOR_INT2;
- *len = static_cast<uint8_t>(fixed_type / 3 + 2); // 3 types each, starting from length 2.
- return static_cast<Type>(fixed_type % 3 + TYPE_INT);
-}
-
-// TODO: implement proper support for 8/16bit floats, or decide not to
-// support them.
-typedef int16_t half;
-typedef int8_t quarter;
-
-// TODO: can we do this without conditionals using intrinsics or inline asm
-// on some platforms? Given branch prediction the method below should be
-// decently quick, but it is the most frequently executed function.
-// We could do an (unaligned) 64-bit read if we ifdef out the platforms for
-// which that doesn't work (or where we'd read into un-owned memory).
-template <typename R, typename T1, typename T2, typename T4, typename T8>
-R ReadSizedScalar(const uint8_t *data, uint8_t byte_width) {
- return byte_width < 4
- ? (byte_width < 2 ? static_cast<R>(flatbuffers::ReadScalar<T1>(data))
- : static_cast<R>(flatbuffers::ReadScalar<T2>(data)))
- : (byte_width < 8 ? static_cast<R>(flatbuffers::ReadScalar<T4>(data))
- : static_cast<R>(flatbuffers::ReadScalar<T8>(data)));
-}
-
-
-inline int64_t ReadInt64(const uint8_t *data, uint8_t byte_width) {
- return ReadSizedScalar<int64_t, int8_t, int16_t, int32_t, int64_t>(data,
- byte_width);
-}
-
-inline uint64_t ReadUInt64(const uint8_t *data, uint8_t byte_width) {
- // This is the "hottest" function (all offset lookups use this), so worth
- // optimizing if possible.
- // TODO: GCC apparently replaces memcpy by a rep movsb, but only if count is a
- // constant, which here it isn't. Test if memcpy is still faster than
- // the conditionals in ReadSizedScalar. Can also use inline asm.
- #ifdef _MSC_VER
- uint64_t u = 0;
- __movsb(reinterpret_cast<uint8_t *>(&u),
- reinterpret_cast<const uint8_t *>(data), byte_width);
- return flatbuffers::EndianScalar(u);
- #else
- return ReadSizedScalar<uint64_t, uint8_t, uint16_t, uint32_t, uint64_t>(
- data, byte_width);
- #endif
-}
-
-inline double ReadDouble(const uint8_t *data, uint8_t byte_width) {
- return ReadSizedScalar<double, quarter, half, float, double>(data,
- byte_width);
-}
-
-inline const uint8_t *Indirect(const uint8_t *offset, uint8_t byte_width) {
- return offset - ReadUInt64(offset, byte_width);
-}
-
-template<typename T> const uint8_t *Indirect(const uint8_t *offset) {
- return offset - flatbuffers::ReadScalar<T>(offset);
-}
-
-inline BitWidth WidthU(uint64_t u) {
- #define FLATBUFFERS_GET_FIELD_BIT_WIDTH(value, width) { \
- if (!((u) & ~((1ULL << (width)) - 1ULL))) return BIT_WIDTH_##width; \
- }
- FLATBUFFERS_GET_FIELD_BIT_WIDTH(u, 8);
- FLATBUFFERS_GET_FIELD_BIT_WIDTH(u, 16);
- FLATBUFFERS_GET_FIELD_BIT_WIDTH(u, 32);
- #undef FLATBUFFERS_GET_FIELD_BIT_WIDTH
- return BIT_WIDTH_64;
-}
-
-inline BitWidth WidthI(int64_t i) {
- auto u = static_cast<uint64_t>(i) << 1;
- return WidthU(i >= 0 ? u : ~u);
-}
-
-inline BitWidth WidthF(double f) {
- return static_cast<double>(static_cast<float>(f)) == f ? BIT_WIDTH_32
- : BIT_WIDTH_64;
-}
-
-// Base class of all types below.
-// Points into the data buffer and allows access to one type.
-class Object {
- public:
- Object(const uint8_t *data, uint8_t byte_width)
- : data_(data), byte_width_(byte_width) {}
-
- protected:
- const uint8_t *data_;
- uint8_t byte_width_;
-};
-
-// Stores size in `byte_width_` bytes before data_ pointer.
-class Sized : public Object {
- public:
- Sized(const uint8_t *data, uint8_t byte_width) : Object(data, byte_width) {}
- size_t size() const {
- return static_cast<size_t>(ReadUInt64(data_ - byte_width_, byte_width_));
- }
-};
-
-class String : public Sized {
- public:
- String(const uint8_t *data, uint8_t byte_width)
- : Sized(data, byte_width) {}
-
- size_t length() const { return size(); }
- const char *c_str() const { return reinterpret_cast<const char *>(data_); }
- std::string str() const { return std::string(c_str(), length()); }
-
- static String EmptyString() {
- static const uint8_t empty_string[] = { 0/*len*/, 0/*terminator*/ };
- return String(empty_string + 1, 1);
- }
- bool IsTheEmptyString() const { return data_ == EmptyString().data_; }
-};
-
-class Blob : public Sized {
- public:
- Blob(const uint8_t *data, uint8_t byte_width)
- : Sized(data, byte_width) {}
-
- static Blob EmptyBlob() {
- static const uint8_t empty_blob[] = { 0/*len*/ };
- return Blob(empty_blob + 1, 1);
- }
- bool IsTheEmptyBlob() const { return data_ == EmptyBlob().data_; }
-};
-
-class Vector : public Sized {
- public:
- Vector(const uint8_t *data, uint8_t byte_width)
- : Sized(data, byte_width) {}
-
- Reference operator[](size_t i) const;
-
- static Vector EmptyVector() {
- static const uint8_t empty_vector[] = { 0/*len*/ };
- return Vector(empty_vector + 1, 1);
- }
- bool IsTheEmptyVector() const { return data_ == EmptyVector().data_; }
-};
-
-class TypedVector : public Sized {
- public:
- TypedVector(const uint8_t *data, uint8_t byte_width, Type element_type)
- : Sized(data, byte_width), type_(element_type) {}
-
- Reference operator[](size_t i) const;
-
- static TypedVector EmptyTypedVector() {
- static const uint8_t empty_typed_vector[] = { 0/*len*/ };
- return TypedVector(empty_typed_vector + 1, 1, TYPE_INT);
- }
- bool IsTheEmptyVector() const {
- return data_ == TypedVector::EmptyTypedVector().data_;
- }
-
- Type ElementType() { return type_; }
-
- private:
- Type type_;
-
- friend Map;
-};
-
-class FixedTypedVector : public Object {
- public:
- FixedTypedVector(const uint8_t *data, uint8_t byte_width, Type element_type,
- uint8_t len)
- : Object(data, byte_width), type_(element_type), len_(len) {}
-
- Reference operator[](size_t i) const;
-
- static FixedTypedVector EmptyFixedTypedVector() {
- static const uint8_t fixed_empty_vector[] = { 0/* unused */ };
- return FixedTypedVector(fixed_empty_vector, 1, TYPE_INT, 0);
- }
- bool IsTheEmptyFixedTypedVector() const {
- return data_ == FixedTypedVector::EmptyFixedTypedVector().data_;
- }
-
- Type ElementType() { return type_; }
- uint8_t size() { return len_; }
-
- private:
- Type type_;
- uint8_t len_;
-};
-
-class Map : public Vector {
- public:
- Map(const uint8_t *data, uint8_t byte_width)
- : Vector(data, byte_width) {}
-
- Reference operator[](const char *key) const;
- Reference operator[](const std::string &key) const;
-
- Vector Values() const { return Vector(data_, byte_width_); }
-
- TypedVector Keys() const {
- const size_t num_prefixed_fields = 3;
- auto keys_offset = data_ - byte_width_ * num_prefixed_fields;
- return TypedVector(Indirect(keys_offset, byte_width_),
- static_cast<uint8_t>(
- ReadUInt64(keys_offset + byte_width_, byte_width_)),
- TYPE_KEY);
- }
-
- static Map EmptyMap() {
- static const uint8_t empty_map[] = {
- 0/*keys_len*/, 0/*keys_offset*/, 1/*keys_width*/, 0/*len*/
- };
- return Map(empty_map + 4, 1);
- }
-
- bool IsTheEmptyMap() const {
- return data_ == EmptyMap().data_;
- }
-};
-
-class Reference {
- public:
- Reference(const uint8_t *data, uint8_t parent_width, uint8_t byte_width,
- Type type)
- : data_(data), parent_width_(parent_width), byte_width_(byte_width),
- type_(type) {}
-
- Reference(const uint8_t *data, uint8_t parent_width, uint8_t packed_type)
- : data_(data), parent_width_(parent_width) {
- byte_width_ = 1U << static_cast<BitWidth>(packed_type & 3);
- type_ = static_cast<Type>(packed_type >> 2);
- }
-
- Type GetType() const { return type_; }
-
- bool IsNull() const { return type_ == TYPE_NULL; }
- bool IsInt() const { return type_ == TYPE_INT ||
- type_ == TYPE_INDIRECT_INT; }
- bool IsUInt() const { return type_ == TYPE_UINT||
- type_ == TYPE_INDIRECT_UINT;; }
- bool IsIntOrUint() const { return IsInt() || IsUInt(); }
- bool IsFloat() const { return type_ == TYPE_FLOAT ||
- type_ == TYPE_INDIRECT_FLOAT; }
- bool IsNumeric() const { return IsIntOrUint() || IsFloat(); }
- bool IsString() const { return type_ == TYPE_STRING; }
- bool IsKey() const { return type_ == TYPE_KEY; }
- bool IsVector() const { return type_ == TYPE_VECTOR || type_ == TYPE_MAP; }
- bool IsMap() const { return type_ == TYPE_MAP; }
-
- // Reads any type as a int64_t. Never fails, does most sensible conversion.
- // Truncates floats, strings are attempted to be parsed for a number,
- // vectors/maps return their size. Returns 0 if all else fails.
- int64_t AsInt64() const {
- if (type_ == TYPE_INT) {
- // A fast path for the common case.
- return ReadInt64(data_, parent_width_);
- } else switch (type_) {
- case TYPE_INDIRECT_INT: return ReadInt64(Indirect(), byte_width_);
- case TYPE_UINT: return ReadUInt64(data_, parent_width_);
- case TYPE_INDIRECT_UINT: return ReadUInt64(Indirect(), byte_width_);
- case TYPE_FLOAT: return static_cast<int64_t>(
- ReadDouble(data_, parent_width_));
- case TYPE_INDIRECT_FLOAT: return static_cast<int64_t>(
- ReadDouble(Indirect(), byte_width_));
- case TYPE_NULL: return 0;
- case TYPE_STRING: return flatbuffers::StringToInt(AsString().c_str());
- case TYPE_VECTOR: return static_cast<int64_t>(AsVector().size());
- default:
- // Convert other things to int.
- return 0;
- }
- }
-
- // TODO: could specialize these to not use AsInt64() if that saves
- // extension ops in generated code, and use a faster op than ReadInt64.
- int32_t AsInt32() const { return static_cast<int32_t>(AsInt64()); }
- int16_t AsInt16() const { return static_cast<int16_t>(AsInt64()); }
- int8_t AsInt8() const { return static_cast<int8_t> (AsInt64()); }
-
- uint64_t AsUInt64() const {
- if (type_ == TYPE_UINT) {
- // A fast path for the common case.
- return ReadUInt64(data_, parent_width_);
- } else switch (type_) {
- case TYPE_INDIRECT_UINT: return ReadUInt64(Indirect(), byte_width_);
- case TYPE_INT: return ReadInt64(data_, parent_width_);
- case TYPE_INDIRECT_INT: return ReadInt64(Indirect(), byte_width_);
- case TYPE_FLOAT: return static_cast<uint64_t>(
- ReadDouble(data_, parent_width_));
- case TYPE_INDIRECT_FLOAT: return static_cast<uint64_t>(
- ReadDouble(Indirect(), byte_width_));
- case TYPE_NULL: return 0;
- case TYPE_STRING: return flatbuffers::StringToUInt(AsString().c_str());
- case TYPE_VECTOR: return static_cast<uint64_t>(AsVector().size());
- default:
- // Convert other things to uint.
- return 0;
- }
- }
-
- uint32_t AsUInt32() const { return static_cast<uint32_t>(AsUInt64()); }
- uint16_t AsUInt16() const { return static_cast<uint16_t>(AsUInt64()); }
- uint8_t AsUInt8() const { return static_cast<uint8_t> (AsUInt64()); }
-
- double AsDouble() const {
- if (type_ == TYPE_FLOAT) {
- // A fast path for the common case.
- return ReadDouble(data_, parent_width_);
- } else switch (type_) {
- case TYPE_INDIRECT_FLOAT: return ReadDouble(Indirect(), byte_width_);
- case TYPE_INT: return static_cast<double>(
- ReadInt64(data_, parent_width_));
- case TYPE_UINT: return static_cast<double>(
- ReadUInt64(data_, parent_width_));
- case TYPE_INDIRECT_INT: return static_cast<double>(
- ReadInt64(Indirect(), byte_width_));
- case TYPE_INDIRECT_UINT: return static_cast<double>(
- ReadUInt64(Indirect(), byte_width_));
- case TYPE_NULL: return 0.0;
- case TYPE_STRING: return strtod(AsString().c_str(), nullptr);
- case TYPE_VECTOR: return static_cast<double>(AsVector().size());
- default:
- // Convert strings and other things to float.
- return 0;
- }
- }
-
- float AsFloat() const { return static_cast<float>(AsDouble()); }
-
- const char *AsKey() const {
- if (type_ == TYPE_KEY) {
- return reinterpret_cast<const char *>(Indirect());
- } else {
- return "";
- }
- }
-
- // This function returns the empty string if you try to read a not-string.
- String AsString() const {
- if (type_ == TYPE_STRING) {
- return String(Indirect(), byte_width_);
- } else {
- return String::EmptyString();
- }
- }
-
- // Unlike AsString(), this will convert any type to a std::string.
- std::string ToString() const {
- if (type_ == TYPE_STRING) {
- return String(Indirect(), byte_width_).c_str();
- } else if (IsKey()) {
- return AsKey();
- } else if (IsInt()) {
- return flatbuffers::NumToString(AsInt64());
- } else if (IsUInt()) {
- return flatbuffers::NumToString(AsUInt64());
- } else if (IsFloat()) {
- return flatbuffers::NumToString(AsDouble());
- } else if (IsNull()) {
- return "null";
- } else if (IsMap()) {
- return "{..}"; // TODO: show elements.
- } else if (IsVector()) {
- return "[..]"; // TODO: show elements.
- } else {
- return "(?)";
- }
- }
-
- // This function returns the empty blob if you try to read a not-blob.
- // Strings can be viewed as blobs too.
- Blob AsBlob() const {
- if (type_ == TYPE_BLOB || type_ == TYPE_STRING) {
- return Blob(Indirect(), byte_width_);
- } else {
- return Blob::EmptyBlob();
- }
- }
-
- // This function returns the empty vector if you try to read a not-vector.
- // Maps can be viewed as vectors too.
- Vector AsVector() const {
- if (type_ == TYPE_VECTOR || type_ == TYPE_MAP) {
- return Vector(Indirect(), byte_width_);
- } else {
- return Vector::EmptyVector();
- }
- }
-
- TypedVector AsTypedVector() const {
- if (IsTypedVector(type_)) {
- return TypedVector(Indirect(), byte_width_,
- ToTypedVectorElementType(type_));
- } else {
- return TypedVector::EmptyTypedVector();
- }
- }
-
- FixedTypedVector AsFixedTypedVector() const {
- if (IsFixedTypedVector(type_)) {
- uint8_t len = 0;
- auto vtype = ToFixedTypedVectorElementType(type_, &len);
- return FixedTypedVector(Indirect(), byte_width_, vtype, len);
- } else {
- return FixedTypedVector::EmptyFixedTypedVector();
- }
- }
-
- Map AsMap() const {
- if (type_ == TYPE_MAP) {
- return Map(Indirect(), byte_width_);
- } else {
- return Map::EmptyMap();
- }
- }
-
- // Experimental: Mutation functions.
- // These allow scalars in an already created buffer to be updated in-place.
- // Since by default scalars are stored in the smallest possible space,
- // the new value may not fit, in which case these functions return false.
- // To avoid this, you can construct the values you intend to mutate using
- // Builder::ForceMinimumBitWidth.
- bool MutateInt(int64_t i) {
- if (type_ == TYPE_INT) {
- return Mutate(data_, i, parent_width_, WidthI(i));
- } else if (type_ == TYPE_INDIRECT_INT) {
- return Mutate(Indirect(), i, byte_width_, WidthI(i));
- } else if (type_ == TYPE_UINT) {
- auto u = static_cast<uint64_t>(i);
- return Mutate(data_, u, parent_width_, WidthU(u));
- } else if (type_ == TYPE_INDIRECT_UINT) {
- auto u = static_cast<uint64_t>(i);
- return Mutate(Indirect(), u, byte_width_, WidthU(u));
- } else {
- return false;
- }
- }
-
- bool MutateUInt(uint64_t u) {
- if (type_ == TYPE_UINT) {
- return Mutate(data_, u, parent_width_, WidthU(u));
- } else if (type_ == TYPE_INDIRECT_UINT) {
- return Mutate(Indirect(), u, byte_width_, WidthU(u));
- } else if (type_ == TYPE_INT) {
- auto i = static_cast<int64_t>(u);
- return Mutate(data_, i, parent_width_, WidthI(i));
- } else if (type_ == TYPE_INDIRECT_INT) {
- auto i = static_cast<int64_t>(u);
- return Mutate(Indirect(), i, byte_width_, WidthI(i));
- } else {
- return false;
- }
- }
-
- bool MutateFloat(float f) {
- if (type_ == TYPE_FLOAT) {
- return MutateF(data_, f, parent_width_, BIT_WIDTH_32);
- } else if (type_ == TYPE_INDIRECT_FLOAT) {
- return MutateF(Indirect(), f, byte_width_, BIT_WIDTH_32);
- } else {
- return false;
- }
- }
-
- bool MutateFloat(double d) {
- if (type_ == TYPE_FLOAT) {
- return MutateF(data_, d, parent_width_, WidthF(d));
- } else if (type_ == TYPE_INDIRECT_FLOAT) {
- return MutateF(Indirect(), d, byte_width_, WidthF(d));
- } else {
- return false;
- }
- }
-
- bool MutateString(const char *str, size_t len) {
- auto s = AsString();
- if (s.IsTheEmptyString()) return false;
- // This is very strict, could allow shorter strings, but that creates
- // garbage.
- if (s.length() != len) return false;
- memcpy(const_cast<char *>(s.c_str()), str, len);
- return true;
- }
- bool MutateString(const char *str) {
- return MutateString(str, strlen(str));
- }
- bool MutateString(const std::string &str) {
- return MutateString(str.data(), str.length());
- }
-
- private:
- const uint8_t *Indirect() const {
- return flexbuffers::Indirect(data_, parent_width_);
- }
-
- template<typename T> bool Mutate(const uint8_t *dest, T t, size_t byte_width,
- BitWidth value_width) {
- auto fits = static_cast<size_t>(static_cast<size_t>(1U) << value_width) <= byte_width;
- if (fits) {
- t = flatbuffers::EndianScalar(t);
- memcpy(const_cast<uint8_t *>(dest), &t, byte_width);
- }
- return fits;
- }
-
- template<typename T> bool MutateF(const uint8_t *dest, T t, size_t byte_width,
- BitWidth value_width) {
- if (byte_width == sizeof(double))
- return Mutate(dest, static_cast<double>(t), byte_width, value_width);
- if (byte_width == sizeof(float))
- return Mutate(dest, static_cast<float>(t), byte_width, value_width);
- assert(false);
- return false;
- }
-
- const uint8_t *data_;
- uint8_t parent_width_;
- uint8_t byte_width_;
- Type type_;
-};
-
-inline uint8_t PackedType(BitWidth bit_width, Type type) {
- return static_cast<uint8_t>(bit_width | (type << 2));
-}
-
-inline uint8_t NullPackedType() {
- return PackedType(BIT_WIDTH_8, TYPE_NULL);
-}
-
-// Vector accessors.
-// Note: if you try to access outside of bounds, you get a Null value back
-// instead. Normally this would be an assert, but since this is "dynamically
-// typed" data, you may not want that (someone sends you a 2d vector and you
-// wanted 3d).
-// The Null converts seamlessly into a default value for any other type.
-// TODO(wvo): Could introduce an #ifdef that makes this into an assert?
-inline Reference Vector::operator[](size_t i) const {
- auto len = size();
- if (i >= len) return Reference(nullptr, 1, NullPackedType());
- auto packed_type = (data_ + len * byte_width_)[i];
- auto elem = data_ + i * byte_width_;
- return Reference(elem, byte_width_, packed_type);
-}
-
-inline Reference TypedVector::operator[](size_t i) const {
- auto len = size();
- if (i >= len) return Reference(nullptr, 1, NullPackedType());
- auto elem = data_ + i * byte_width_;
- return Reference(elem, byte_width_, 1, type_);
-}
-
-inline Reference FixedTypedVector::operator[](size_t i) const {
- if (i >= len_) return Reference(nullptr, 1, NullPackedType());
- auto elem = data_ + i * byte_width_;
- return Reference(elem, byte_width_, 1, type_);
-}
-
-template<typename T> int KeyCompare(const void *key, const void *elem) {
- auto str_elem = reinterpret_cast<const char *>(
- Indirect<T>(reinterpret_cast<const uint8_t *>(elem)));
- auto skey = reinterpret_cast<const char *>(key);
- return strcmp(skey, str_elem);
-}
-
-inline Reference Map::operator[](const char *key) const {
- auto keys = Keys();
- // We can't pass keys.byte_width_ to the comparison function, so we have
- // to pick the right one ahead of time.
- int (*comp)(const void *, const void *) = nullptr;
- switch (keys.byte_width_) {
- case 1: comp = KeyCompare<uint8_t>; break;
- case 2: comp = KeyCompare<uint16_t>; break;
- case 4: comp = KeyCompare<uint32_t>; break;
- case 8: comp = KeyCompare<uint64_t>; break;
- }
- auto res = std::bsearch(key, keys.data_, keys.size(), keys.byte_width_, comp);
- if (!res)
- return Reference(nullptr, 1, NullPackedType());
- auto i = (reinterpret_cast<uint8_t *>(res) - keys.data_) / keys.byte_width_;
- return (*static_cast<const Vector *>(this))[i];
-}
-
-inline Reference Map::operator[](const std::string &key) const {
- return (*this)[key.c_str()];
-}
-
-inline Reference GetRoot(const uint8_t *buffer, size_t size) {
- // See Finish() below for the serialization counterpart of this.
- // The root starts at the end of the buffer, so we parse backwards from there.
- auto end = buffer + size;
- auto byte_width = *--end;
- auto packed_type = *--end;
- end -= byte_width; // The root data item.
- return Reference(end, byte_width, packed_type);
-}
-
-inline Reference GetRoot(const std::vector<uint8_t> &buffer) {
- return GetRoot(buffer.data(), buffer.size());
-}
-
-// Flags that configure how the Builder behaves.
-// The "Share" flags determine if the Builder automatically tries to pool
-// this type. Pooling can reduce the size of serialized data if there are
-// multiple maps of the same kind, at the expense of slightly slower
-// serialization (the cost of lookups) and more memory use (std::set).
-// By default this is on for keys, but off for strings.
-// Turn keys off if you have e.g. only one map.
-// Turn strings on if you expect many non-unique string values.
-// Additionally, sharing key vectors can save space if you have maps with
-// identical field populations.
-enum BuilderFlag {
- BUILDER_FLAG_NONE = 0,
- BUILDER_FLAG_SHARE_KEYS = 1,
- BUILDER_FLAG_SHARE_STRINGS = 2,
- BUILDER_FLAG_SHARE_KEYS_AND_STRINGS = 3,
- BUILDER_FLAG_SHARE_KEY_VECTORS = 4,
- BUILDER_FLAG_SHARE_ALL = 7,
-};
-
-class Builder FLATBUFFERS_FINAL_CLASS {
- public:
- Builder(size_t initial_size = 256,
- BuilderFlag flags = BUILDER_FLAG_SHARE_KEYS)
- : buf_(initial_size), finished_(false), flags_(flags),
- force_min_bit_width_(BIT_WIDTH_8), key_pool(KeyOffsetCompare(buf_)),
- string_pool(StringOffsetCompare(buf_)) {
- buf_.clear();
- }
-
- /// @brief Get the serialized buffer (after you call `Finish()`).
- /// @return Returns a vector owned by this class.
- const std::vector<uint8_t> &GetBuffer() const {
- Finished();
- return buf_;
- }
-
- // All value constructing functions below have two versions: one that
- // takes a key (for placement inside a map) and one that doesn't (for inside
- // vectors and elsewhere).
-
- void Null() { stack_.push_back(Value()); }
- void Null(const char *key) { Key(key); Null(); }
-
- void Int(int64_t i) { stack_.push_back(Value(i, TYPE_INT, WidthI(i))); }
- void Int(const char *key, int64_t i) { Key(key); Int(i); }
-
- void UInt(uint64_t u) { stack_.push_back(Value(u, TYPE_UINT, WidthU(u))); }
- void UInt(const char *key, uint64_t u) { Key(key); Int(u); }
-
- void Float(float f) { stack_.push_back(Value(f)); }
- void Float(const char *key, float f) { Key(key); Float(f); }
-
- void Double(double f) { stack_.push_back(Value(f)); }
- void Double(const char *key, double d) { Key(key); Double(d); }
-
- void Bool(bool b) { Int(static_cast<int64_t>(b)); }
- void Bool(const char *key, bool b) { Key(key); Bool(b); }
-
- void IndirectInt(int64_t i) {
- PushIndirect(i, TYPE_INDIRECT_INT, WidthI(i));
- }
- void IndirectInt(const char *key, int64_t i) {
- Key(key);
- IndirectInt(i);
- }
-
- void IndirectUInt(uint64_t u) {
- PushIndirect(u, TYPE_INDIRECT_UINT, WidthU(u));
- }
- void IndirectUInt(const char *key, uint64_t u) {
- Key(key);
- IndirectUInt(u);
- }
-
- void IndirectFloat(float f) {
- PushIndirect(f, TYPE_INDIRECT_FLOAT, BIT_WIDTH_32);
- }
- void IndirectFloat(const char *key, float f) {
- Key(key);
- IndirectFloat(f);
- }
-
- void IndirectDouble(double f) {
- PushIndirect(f, TYPE_INDIRECT_FLOAT, WidthF(f));
- }
- void IndirectDouble(const char *key, double d) {
- Key(key);
- IndirectDouble(d);
- }
-
- size_t Key(const char *str, size_t len) {
- auto sloc = buf_.size();
- WriteBytes(str, len + 1);
- if (flags_ & BUILDER_FLAG_SHARE_KEYS) {
- auto it = key_pool.find(sloc);
- if (it != key_pool.end()) {
- // Already in the buffer. Remove key we just serialized, and use
- // existing offset instead.
- buf_.resize(sloc);
- sloc = *it;
- } else {
- key_pool.insert(sloc);
- }
- }
- stack_.push_back(Value(static_cast<uint64_t>(sloc), TYPE_KEY, BIT_WIDTH_8));
- return sloc;
- }
-
- size_t Key(const char *str) { return Key(str, strlen(str)); }
- size_t Key(const std::string &str) { return Key(str.c_str(), str.size()); }
-
- size_t String(const char *str, size_t len) {
- auto reset_to = buf_.size();
- auto sloc = CreateBlob(str, len, 1, TYPE_STRING);
- if (flags_ & BUILDER_FLAG_SHARE_STRINGS) {
- StringOffset so(sloc, len);
- auto it = string_pool.find(so);
- if (it != string_pool.end()) {
- // Already in the buffer. Remove string we just serialized, and use
- // existing offset instead.
- buf_.resize(reset_to);
- sloc = it->first;
- stack_.back().u_ = sloc;
- } else {
- string_pool.insert(so);
- }
- }
- return sloc;
- }
- size_t String(const char *str) {
- return String(str, strlen(str));
- }
- size_t String(const std::string &str) {
- return String(str.c_str(), str.size());
- }
- void String(const flexbuffers::String &str) {
- String(str.c_str(), str.length());
- }
-
- void String(const char *key, const char *str) {
- Key(key);
- String(str);
- }
- void String(const char *key, const std::string &str) {
- Key(key);
- String(str);
- }
- void String(const char *key, const flexbuffers::String &str) {
- Key(key);
- String(str);
- }
-
- size_t Blob(const void *data, size_t len) {
- return CreateBlob(data, len, 0, TYPE_BLOB);
- }
- size_t Blob(const std::vector<uint8_t> &v) {
- return CreateBlob(v.data(), v.size(), 0, TYPE_BLOB);
- }
-
- // TODO(wvo): support all the FlexBuffer types (like flexbuffers::String),
- // e.g. Vector etc. Also in overloaded versions.
- // Also some FlatBuffers types?
-
- size_t StartVector() { return stack_.size(); }
- size_t StartVector(const char *key) { Key(key); return stack_.size(); }
- size_t StartMap() { return stack_.size(); }
- size_t StartMap(const char *key) { Key(key); return stack_.size(); }
-
- // TODO(wvo): allow this to specify an aligment greater than the natural
- // alignment.
- size_t EndVector(size_t start, bool typed, bool fixed) {
- auto vec = CreateVector(start, stack_.size() - start, 1, typed, fixed);
- // Remove temp elements and return vector.
- stack_.resize(start);
- stack_.push_back(vec);
- return static_cast<size_t>(vec.u_);
- }
-
- size_t EndMap(size_t start) {
- // We should have interleaved keys and values on the stack.
- // Make sure it is an even number:
- auto len = stack_.size() - start;
- assert(!(len & 1));
- len /= 2;
- // Make sure keys are all strings:
- for (auto key = start; key < stack_.size(); key += 2) {
- assert(stack_[key].type_ == TYPE_KEY);
- }
- // Now sort values, so later we can do a binary seach lookup.
- // We want to sort 2 array elements at a time.
- struct TwoValue { Value key; Value val; };
- // TODO(wvo): strict aliasing?
- // TODO(wvo): allow the caller to indicate the data is already sorted
- // for maximum efficiency? With an assert to check sortedness to make sure
- // we're not breaking binary search.
- // Or, we can track if the map is sorted as keys are added which would be
- // be quite cheap (cheaper than checking it here), so we can skip this
- // step automatically when appliccable, and encourage people to write in
- // sorted fashion.
- // std::sort is typically already a lot faster on sorted data though.
- auto dict = reinterpret_cast<TwoValue *>(stack_.data() + start);
- std::sort(dict, dict + len,
- [&](const TwoValue &a, const TwoValue &b) -> bool {
- auto as = reinterpret_cast<const char *>(buf_.data() + a.key.u_);
- auto bs = reinterpret_cast<const char *>(buf_.data() + b.key.u_);
- auto comp = strcmp(as, bs);
- // If this assertion hits, you've added two keys with the same value to
- // this map.
- // TODO: Have to check for pointer equality, as some sort implementation
- // apparently call this function with the same element?? Why?
- assert(comp || &a == &b);
- return comp < 0;
- });
- // First create a vector out of all keys.
- // TODO(wvo): if kBuilderFlagShareKeyVectors is true, see if we can share
- // the first vector.
- auto keys = CreateVector(start, len, 2, true, false);
- auto vec = CreateVector(start + 1, len, 2, false, false, &keys);
- // Remove temp elements and return map.
- stack_.resize(start);
- stack_.push_back(vec);
- return static_cast<size_t>(vec.u_);
- }
-
- template<typename F> size_t Vector(F f) {
- auto start = StartVector();
- f();
- return EndVector(start, false, false);
- }
- template<typename F> size_t Vector(const char *key, F f) {
- auto start = StartVector(key);
- f();
- return EndVector(start, false, false);
- }
- template<typename T> void Vector(const T *elems, size_t len) {
- if (std::is_scalar<T>::value) {
- // This path should be a lot quicker and use less space.
- ScalarVector(elems, len, false);
- } else {
- auto start = StartVector();
- for (size_t i = 0; i < len; i++) Add(elems[i]);
- EndVector(start, false, false);
- }
- }
- template<typename T> void Vector(const char *key, const T *elems,
- size_t len) {
- Key(key);
- Vector(elems, len);
- }
- template<typename T> void Vector(const std::vector<T> &vec) {
- Vector(vec.data(), vec.size());
- }
-
- template<typename F> size_t TypedVector(F f) {
- auto start = StartVector();
- f();
- return EndVector(start, true, false);
- }
- template<typename F> size_t TypedVector(const char *key, F f) {
- auto start = StartVector(key);
- f();
- return EndVector(start, true, false);
- }
-
- template<typename T> size_t FixedTypedVector(const T *elems, size_t len) {
- // We only support a few fixed vector lengths. Anything bigger use a
- // regular typed vector.
- assert(len >= 2 && len <= 4);
- // And only scalar values.
- assert(std::is_scalar<T>::value);
- return ScalarVector(elems, len, true);
- }
-
- template<typename T> size_t FixedTypedVector(const char *key, const T *elems,
- size_t len) {
- Key(key);
- return FixedTypedVector(elems, len);
- }
-
- template<typename F> size_t Map(F f) {
- auto start = StartMap();
- f();
- return EndMap(start);
- }
- template<typename F> size_t Map(const char *key, F f) {
- auto start = StartMap(key);
- f();
- return EndMap(start);
- }
- template<typename T> void Map(const std::map<std::string, T> &map) {
- auto start = StartMap();
- for (auto it = map.begin(); it != map.end(); ++it)
- Add(it->first.c_str(), it->second);
- EndMap(start);
- }
-
- // Overloaded Add that tries to call the correct function above.
- void Add(int8_t i) { Int(i); }
- void Add(int16_t i) { Int(i); }
- void Add(int32_t i) { Int(i); }
- void Add(int64_t i) { Int(i); }
- void Add(uint8_t u) { UInt(u); }
- void Add(uint16_t u) { UInt(u); }
- void Add(uint32_t u) { UInt(u); }
- void Add(uint64_t u) { UInt(u); }
- void Add(float f) { Float(f); }
- void Add(double d) { Double(d); }
- void Add(bool b) { Bool(b); }
- void Add(const char *str) { String(str); }
- void Add(const std::string &str) { String(str); }
- void Add(const flexbuffers::String &str) { String(str); }
-
- template<typename T> void Add(const std::vector<T> &vec) {
- Vector(vec);
- }
-
- template<typename T> void Add(const char *key, const T &t) {
- Key(key);
- Add(t);
- }
-
- template<typename T> void Add(const std::map<std::string, T> &map) {
- Map(map);
- }
-
- template<typename T> void operator+=(const T &t) {
- Add(t);
- }
-
- // This function is useful in combination with the Mutate* functions above.
- // It forces elements of vectors and maps to have a minimum size, such that
- // they can later be updated without failing.
- // Call with no arguments to reset.
- void ForceMinimumBitWidth(BitWidth bw = BIT_WIDTH_8) {
- force_min_bit_width_ = bw;
- }
-
- void Finish() {
- // If you hit this assert, you likely have objects that were never included
- // in a parent. You need to have exactly one root to finish a buffer.
- // Check your Start/End calls are matched, and all objects are inside
- // some other object.
- assert(stack_.size() == 1);
-
- // Write root value.
- auto byte_width = Align(stack_[0].ElemWidth(buf_.size(), 0));
- WriteAny(stack_[0], byte_width);
- // Write root type.
- Write(stack_[0].StoredPackedType(), 1);
- // Write root size. Normally determined by parent, but root has no parent :)
- Write(byte_width, 1);
-
- finished_ = true;
- }
-
- private:
- void Finished() const {
- // If you get this assert, you're attempting to get access a buffer
- // which hasn't been finished yet. Be sure to call
- // Builder::Finish with your root object.
- assert(finished_);
- }
-
- // Align to prepare for writing a scalar with a certain size.
- uint8_t Align(BitWidth alignment) {
- auto byte_width = 1U << alignment;
- buf_.insert(buf_.end(), flatbuffers::PaddingBytes(buf_.size(), byte_width),
- 0);
- return static_cast<uint8_t>(byte_width);
- }
-
- void WriteBytes(const void *val, size_t size) {
- buf_.insert(buf_.end(),
- reinterpret_cast<const uint8_t *>(val),
- reinterpret_cast<const uint8_t *>(val) + size);
- }
-
- template<typename T> void Write(T val, size_t byte_width) {
- assert(sizeof(T) >= byte_width);
- val = flatbuffers::EndianScalar(val);
- WriteBytes(&val, byte_width);
- }
-
- void WriteDouble(double f, uint8_t byte_width) {
- switch (byte_width) {
- case 8: Write(f, byte_width); break;
- case 4: Write(static_cast<float>(f), byte_width); break;
- //case 2: Write(static_cast<half>(f), byte_width); break;
- //case 1: Write(static_cast<quarter>(f), byte_width); break;
- default: assert(0);
- }
- }
-
- void WriteOffset(uint64_t o, uint8_t byte_width) {
- auto reloff = buf_.size() - o;
- assert(reloff < 1ULL << (byte_width * 8) || byte_width == 8);
- Write(reloff, byte_width);
- }
-
- template<typename T> void PushIndirect(T val, Type type, BitWidth bit_width) {
- auto byte_width = Align(bit_width);
- auto iloc = buf_.size();
- Write(val, byte_width);
- stack_.push_back(Value(static_cast<uint64_t>(iloc), type, bit_width));
- }
-
- static BitWidth WidthB(size_t byte_width) {
- switch (byte_width) {
- case 1: return BIT_WIDTH_8;
- case 2: return BIT_WIDTH_16;
- case 4: return BIT_WIDTH_32;
- case 8: return BIT_WIDTH_64;
- default: assert(false); return BIT_WIDTH_64;
- }
- }
-
- template<typename T> static Type GetScalarType() {
- assert(std::is_scalar<T>::value);
- return std::is_floating_point<T>::value
- ? TYPE_FLOAT
- : (std::is_unsigned<T>::value ? TYPE_UINT : TYPE_INT);
- }
-
- struct Value {
- union {
- int64_t i_;
- uint64_t u_;
- double f_;
- };
-
- Type type_;
-
- // For scalars: of itself, for vector: of its elements, for string: length.
- BitWidth min_bit_width_;
-
- Value() : i_(0), type_(TYPE_NULL), min_bit_width_(BIT_WIDTH_8) {}
-
- Value(int64_t i, Type t, BitWidth bw)
- : i_(i), type_(t), min_bit_width_(bw) {}
- Value(uint64_t u, Type t, BitWidth bw)
- : u_(u), type_(t), min_bit_width_(bw) {}
-
- Value(float f)
- : f_(f), type_(TYPE_FLOAT), min_bit_width_(BIT_WIDTH_32) {}
- Value(double f)
- : f_(f), type_(TYPE_FLOAT), min_bit_width_(WidthF(f)) {}
-
- uint8_t StoredPackedType(BitWidth parent_bit_width_= BIT_WIDTH_8) const {
- return PackedType(StoredWidth(parent_bit_width_), type_);
- }
-
- BitWidth ElemWidth(size_t buf_size, size_t elem_index) const {
- if (IsInline(type_)) {
- return min_bit_width_;
- } else {
- // We have an absolute offset, but want to store a relative offset
- // elem_index elements beyond the current buffer end. Since whether
- // the relative offset fits in a certain byte_width depends on
- // the size of the elements before it (and their alignment), we have
- // to test for each size in turn.
- for (size_t byte_width = 1;
- byte_width <= sizeof(flatbuffers::largest_scalar_t);
- byte_width *= 2) {
- // Where are we going to write this offset?
- auto offset_loc =
- buf_size +
- flatbuffers::PaddingBytes(buf_size, byte_width) +
- elem_index * byte_width;
- // Compute relative offset.
- auto offset = offset_loc - u_;
- // Does it fit?
- auto bit_width = WidthU(offset);
- if (static_cast<size_t>(static_cast<size_t>(1U) << bit_width) == byte_width)
- return bit_width;
- }
- assert(false); // Must match one of the sizes above.
- return BIT_WIDTH_64;
- }
- }
-
- BitWidth StoredWidth(BitWidth parent_bit_width_ = BIT_WIDTH_8) const {
- if (IsInline(type_)) {
- return std::max(min_bit_width_, parent_bit_width_);
- } else {
- return min_bit_width_;
- }
- }
- };
-
- void WriteAny(const Value &val, uint8_t byte_width) {
- switch (val.type_) {
- case TYPE_NULL:
- case TYPE_INT:
- Write(val.i_, byte_width);
- break;
- case TYPE_UINT:
- Write(val.u_, byte_width);
- break;
- case TYPE_FLOAT:
- WriteDouble(val.f_, byte_width);
- break;
- default:
- WriteOffset(val.u_, byte_width);
- break;
- }
- }
-
- size_t CreateBlob(const void *data, size_t len, size_t trailing, Type type) {
- auto bit_width = WidthU(len);
- auto byte_width = Align(bit_width);
- Write<uint64_t>(len, byte_width);
- auto sloc = buf_.size();
- WriteBytes(data, len + trailing);
- stack_.push_back(Value(static_cast<uint64_t>(sloc), type, bit_width));
- return sloc;
- }
-
- template<typename T> size_t ScalarVector(const T *elems, size_t len,
- bool fixed) {
- auto vector_type = GetScalarType<T>();
- auto byte_width = sizeof(T);
- auto bit_width = WidthB(byte_width);
- // If you get this assert, you're trying to write a vector with a size
- // field that is bigger than the scalars you're trying to write (e.g. a
- // byte vector > 255 elements). For such types, write a "blob" instead.
- // TODO: instead of asserting, could write vector with larger elements
- // instead, though that would be wasteful.
- assert(WidthU(len) <= bit_width);
- if (!fixed) Write<uint64_t>(len, byte_width);
- auto vloc = buf_.size();
- for (size_t i = 0; i < len; i++) Write(elems[i], byte_width);
- stack_.push_back(Value(static_cast<uint64_t>(vloc),
- ToTypedVector(vector_type, fixed ? len : 0),
- bit_width));
- return vloc;
- }
-
- Value CreateVector(size_t start, size_t vec_len, size_t step, bool typed,
- bool fixed, const Value *keys = nullptr) {
- // Figure out smallest bit width we can store this vector with.
- auto bit_width = std::max(force_min_bit_width_, WidthU(vec_len));
- auto prefix_elems = 1;
- if (keys) {
- // If this vector is part of a map, we will pre-fix an offset to the keys
- // to this vector.
- bit_width = std::max(bit_width, keys->ElemWidth(buf_.size(), 0));
- prefix_elems += 2;
- }
- Type vector_type = TYPE_KEY;
- // Check bit widths and types for all elements.
- for (size_t i = start; i < stack_.size(); i += step) {
- auto elem_width = stack_[i].ElemWidth(buf_.size(), i + prefix_elems);
- bit_width = std::max(bit_width, elem_width);
- if (typed) {
- if (i == start) {
- vector_type = stack_[i].type_;
- } else {
- // If you get this assert, you are writing a typed vector with
- // elements that are not all the same type.
- assert(vector_type == stack_[i].type_);
- }
- }
- }
- // If you get this assert, your fixed types are not one of:
- // Int / UInt / Float / Key.
- assert(IsTypedVectorElementType(vector_type));
- auto byte_width = Align(bit_width);
- // Write vector. First the keys width/offset if available, and size.
- if (keys) {
- WriteOffset(keys->u_, byte_width);
- Write<uint64_t>(1U << keys->min_bit_width_, byte_width);
- }
- if (!fixed) Write<uint64_t>(vec_len, byte_width);
- // Then the actual data.
- auto vloc = buf_.size();
- for (size_t i = start; i < stack_.size(); i += step) {
- WriteAny(stack_[i], byte_width);
- }
- // Then the types.
- if (!typed) {
- for (size_t i = start; i < stack_.size(); i += step) {
- buf_.push_back(stack_[i].StoredPackedType(bit_width));
- }
- }
- return Value(static_cast<uint64_t>(vloc), keys
- ? TYPE_MAP
- : (typed
- ? ToTypedVector(vector_type, fixed ? vec_len : 0)
- : TYPE_VECTOR),
- bit_width);
- }
-
- // You shouldn't really be copying instances of this class.
- Builder(const Builder &);
- Builder &operator=(const Builder &);
-
- std::vector<uint8_t> buf_;
- std::vector<Value> stack_;
-
- bool finished_;
-
- BuilderFlag flags_;
-
- BitWidth force_min_bit_width_;
-
- struct KeyOffsetCompare {
- KeyOffsetCompare(const std::vector<uint8_t> &buf) : buf_(&buf) {}
- bool operator() (size_t a, size_t b) const {
- auto stra = reinterpret_cast<const char *>(buf_->data() + a);
- auto strb = reinterpret_cast<const char *>(buf_->data() + b);
- return strcmp(stra, strb) < 0;
- }
- const std::vector<uint8_t> *buf_;
- };
-
- typedef std::pair<size_t, size_t> StringOffset;
- struct StringOffsetCompare {
- StringOffsetCompare(const std::vector<uint8_t> &buf) : buf_(&buf) {}
- bool operator() (const StringOffset &a, const StringOffset &b) const {
- auto stra = reinterpret_cast<const char *>(buf_->data() + a.first);
- auto strb = reinterpret_cast<const char *>(buf_->data() + b.first);
- return strncmp(stra, strb, std::min(a.second, b.second) + 1) < 0;
- }
- const std::vector<uint8_t> *buf_;
- };
-
- typedef std::set<size_t, KeyOffsetCompare> KeyOffsetMap;
- typedef std::set<StringOffset, StringOffsetCompare> StringOffsetMap;
-
- KeyOffsetMap key_pool;
- StringOffsetMap string_pool;
-};
-
-} // namespace flexbuffers
-
-#if defined(_MSC_VER)
-#pragma warning(pop)
-#endif
-
-#endif // FLATBUFFERS_FLEXBUFFERS_H_
diff --git a/third_party/flatbuffers/include/flatbuffers/grpc.h b/third_party/flatbuffers/include/flatbuffers/grpc.h
deleted file mode 100644
index 48ff3c8..0000000
--- a/third_party/flatbuffers/include/flatbuffers/grpc.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef FLATBUFFERS_GRPC_H_
-#define FLATBUFFERS_GRPC_H_
-
-// Helper functionality to glue FlatBuffers and GRPC.
-
-#include "grpc++/support/byte_buffer.h"
-#include "grpc/byte_buffer_reader.h"
-
-namespace grpc {
-
-template <class T>
-class SerializationTraits<T, typename std::enable_if<std::is_base_of<
- flatbuffers::BufferRefBase, T>::value>::type> {
- public:
- // The type we're passing here is a BufferRef, which is already serialized
- // FlatBuffer data, which then gets passed to GRPC.
- static grpc::Status Serialize(const T& msg,
- grpc_byte_buffer **buffer,
- bool *own_buffer) {
- // TODO(wvo): make this work without copying.
- auto slice = gpr_slice_from_copied_buffer(
- reinterpret_cast<const char *>(msg.buf), msg.len);
- *buffer = grpc_raw_byte_buffer_create(&slice, 1);
- *own_buffer = true;
- return grpc::Status();
- }
-
- // There is no de-serialization step in FlatBuffers, so we just receive
- // the data from GRPC.
- static grpc::Status Deserialize(grpc_byte_buffer *buffer, T *msg) {
- // TODO(wvo): make this more efficient / zero copy when possible.
- auto len = grpc_byte_buffer_length(buffer);
- msg->buf = reinterpret_cast<uint8_t *>(malloc(len));
- msg->len = static_cast<flatbuffers::uoffset_t>(len);
- msg->must_free = true;
- uint8_t *current = msg->buf;
- grpc_byte_buffer_reader reader;
- grpc_byte_buffer_reader_init(&reader, buffer);
- gpr_slice slice;
- while (grpc_byte_buffer_reader_next(&reader, &slice)) {
- memcpy(current, GPR_SLICE_START_PTR(slice), GPR_SLICE_LENGTH(slice));
- current += GPR_SLICE_LENGTH(slice);
- gpr_slice_unref(slice);
- }
- GPR_ASSERT(current == msg->buf + msg->len);
- grpc_byte_buffer_reader_destroy(&reader);
- grpc_byte_buffer_destroy(buffer);
- return grpc::Status();
- }
-};
-
-} // namespace grpc;
-
-#endif // FLATBUFFERS_GRPC_H_
diff --git a/third_party/flatbuffers/include/flatbuffers/hash.h b/third_party/flatbuffers/include/flatbuffers/hash.h
deleted file mode 100644
index 9ae37e5..0000000
--- a/third_party/flatbuffers/include/flatbuffers/hash.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright 2015 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef FLATBUFFERS_HASH_H_
-#define FLATBUFFERS_HASH_H_
-
-#include <cstdint>
-#include <cstring>
-
-#include "flatbuffers/flatbuffers.h"
-
-namespace flatbuffers {
-
-template <typename T>
-struct FnvTraits {
- static const T kFnvPrime;
- static const T kOffsetBasis;
-};
-
-template <>
-struct FnvTraits<uint32_t> {
- static const uint32_t kFnvPrime = 0x01000193;
- static const uint32_t kOffsetBasis = 0x811C9DC5;
-};
-
-template <>
-struct FnvTraits<uint64_t> {
- static const uint64_t kFnvPrime = 0x00000100000001b3ULL;
- static const uint64_t kOffsetBasis = 0xcbf29ce484222645ULL;
-};
-
-template <typename T>
-T HashFnv1(const char *input) {
- T hash = FnvTraits<T>::kOffsetBasis;
- for (const char *c = input; *c; ++c) {
- hash *= FnvTraits<T>::kFnvPrime;
- hash ^= static_cast<unsigned char>(*c);
- }
- return hash;
-}
-
-template <typename T>
-T HashFnv1a(const char *input) {
- T hash = FnvTraits<T>::kOffsetBasis;
- for (const char *c = input; *c; ++c) {
- hash ^= static_cast<unsigned char>(*c);
- hash *= FnvTraits<T>::kFnvPrime;
- }
- return hash;
-}
-
-template <typename T>
-struct NamedHashFunction {
- const char *name;
-
- typedef T (*HashFunction)(const char*);
- HashFunction function;
-};
-
-const NamedHashFunction<uint32_t> kHashFunctions32[] = {
- { "fnv1_32", HashFnv1<uint32_t> },
- { "fnv1a_32", HashFnv1a<uint32_t> },
-};
-
-const NamedHashFunction<uint64_t> kHashFunctions64[] = {
- { "fnv1_64", HashFnv1<uint64_t> },
- { "fnv1a_64", HashFnv1a<uint64_t> },
-};
-
-inline NamedHashFunction<uint32_t>::HashFunction FindHashFunction32(
- const char *name) {
- std::size_t size = sizeof(kHashFunctions32) / sizeof(kHashFunctions32[0]);
- for (std::size_t i = 0; i < size; ++i) {
- if (std::strcmp(name, kHashFunctions32[i].name) == 0) {
- return kHashFunctions32[i].function;
- }
- }
- return nullptr;
-}
-
-inline NamedHashFunction<uint64_t>::HashFunction FindHashFunction64(
- const char *name) {
- std::size_t size = sizeof(kHashFunctions64) / sizeof(kHashFunctions64[0]);
- for (std::size_t i = 0; i < size; ++i) {
- if (std::strcmp(name, kHashFunctions64[i].name) == 0) {
- return kHashFunctions64[i].function;
- }
- }
- return nullptr;
-}
-
-} // namespace flatbuffers
-
-#endif // FLATBUFFERS_HASH_H_
diff --git a/third_party/flatbuffers/include/flatbuffers/idl.h b/third_party/flatbuffers/include/flatbuffers/idl.h
deleted file mode 100644
index 94de836..0000000
--- a/third_party/flatbuffers/include/flatbuffers/idl.h
+++ /dev/null
@@ -1,755 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef FLATBUFFERS_IDL_H_
-#define FLATBUFFERS_IDL_H_
-
-#include <map>
-#include <stack>
-#include <memory>
-#include <functional>
-
-#include "flatbuffers/flatbuffers.h"
-#include "flatbuffers/hash.h"
-#include "flatbuffers/reflection.h"
-
-// This file defines the data types representing a parsed IDL (Interface
-// Definition Language) / schema file.
-
-namespace flatbuffers {
-
-// The order of these matters for Is*() functions below.
-// Additionally, Parser::ParseType assumes bool..string is a contiguous range
-// of type tokens.
-#define FLATBUFFERS_GEN_TYPES_SCALAR(TD) \
- TD(NONE, "", uint8_t, byte, byte, byte, uint8) \
- TD(UTYPE, "", uint8_t, byte, byte, byte, uint8) /* begin scalar/int */ \
- TD(BOOL, "bool", uint8_t, boolean,byte, bool, bool) \
- TD(CHAR, "byte", int8_t, byte, int8, sbyte, int8) \
- TD(UCHAR, "ubyte", uint8_t, byte, byte, byte, uint8) \
- TD(SHORT, "short", int16_t, short, int16, short, int16) \
- TD(USHORT, "ushort", uint16_t, short, uint16, ushort, uint16) \
- TD(INT, "int", int32_t, int, int32, int, int32) \
- TD(UINT, "uint", uint32_t, int, uint32, uint, uint32) \
- TD(LONG, "long", int64_t, long, int64, long, int64) \
- TD(ULONG, "ulong", uint64_t, long, uint64, ulong, uint64) /* end int */ \
- TD(FLOAT, "float", float, float, float32, float, float32) /* begin float */ \
- TD(DOUBLE, "double", double, double, float64, double, float64) /* end float/scalar */
-#define FLATBUFFERS_GEN_TYPES_POINTER(TD) \
- TD(STRING, "string", Offset<void>, int, int, StringOffset, int) \
- TD(VECTOR, "", Offset<void>, int, int, VectorOffset, int) \
- TD(STRUCT, "", Offset<void>, int, int, int, int) \
- TD(UNION, "", Offset<void>, int, int, int, int)
-
-// The fields are:
-// - enum
-// - FlatBuffers schema type.
-// - C++ type.
-// - Java type.
-// - Go type.
-// - C# / .Net type.
-// - Python type.
-
-// using these macros, we can now write code dealing with types just once, e.g.
-
-/*
-switch (type) {
- #define FLATBUFFERS_TD(ENUM, IDLTYPE, CTYPE, JTYPE, GTYPE, NTYPE, PTYPE) \
- case BASE_TYPE_ ## ENUM: \
- // do something specific to CTYPE here
- FLATBUFFERS_GEN_TYPES(FLATBUFFERS_TD)
- #undef FLATBUFFERS_TD
-}
-*/
-
-#define FLATBUFFERS_GEN_TYPES(TD) \
- FLATBUFFERS_GEN_TYPES_SCALAR(TD) \
- FLATBUFFERS_GEN_TYPES_POINTER(TD)
-
-// Create an enum for all the types above.
-#ifdef __GNUC__
-__extension__ // Stop GCC complaining about trailing comma with -Wpendantic.
-#endif
-enum BaseType {
- #define FLATBUFFERS_TD(ENUM, IDLTYPE, CTYPE, JTYPE, GTYPE, NTYPE, PTYPE) \
- BASE_TYPE_ ## ENUM,
- FLATBUFFERS_GEN_TYPES(FLATBUFFERS_TD)
- #undef FLATBUFFERS_TD
-};
-
-#define FLATBUFFERS_TD(ENUM, IDLTYPE, CTYPE, JTYPE, GTYPE, NTYPE, PTYPE) \
- static_assert(sizeof(CTYPE) <= sizeof(largest_scalar_t), \
- "define largest_scalar_t as " #CTYPE);
- FLATBUFFERS_GEN_TYPES(FLATBUFFERS_TD)
-#undef FLATBUFFERS_TD
-
-inline bool IsScalar (BaseType t) { return t >= BASE_TYPE_UTYPE &&
- t <= BASE_TYPE_DOUBLE; }
-inline bool IsInteger(BaseType t) { return t >= BASE_TYPE_UTYPE &&
- t <= BASE_TYPE_ULONG; }
-inline bool IsFloat (BaseType t) { return t == BASE_TYPE_FLOAT ||
- t == BASE_TYPE_DOUBLE; }
-inline bool IsLong (BaseType t) { return t == BASE_TYPE_LONG ||
- t == BASE_TYPE_ULONG; }
-
-extern const char *const kTypeNames[];
-extern const char kTypeSizes[];
-
-inline size_t SizeOf(BaseType t) {
- return kTypeSizes[t];
-}
-
-struct StructDef;
-struct EnumDef;
-class Parser;
-
-// Represents any type in the IDL, which is a combination of the BaseType
-// and additional information for vectors/structs_.
-struct Type {
- explicit Type(BaseType _base_type = BASE_TYPE_NONE,
- StructDef *_sd = nullptr, EnumDef *_ed = nullptr)
- : base_type(_base_type),
- element(BASE_TYPE_NONE),
- struct_def(_sd),
- enum_def(_ed)
- {}
-
- bool operator==(const Type &o) {
- return base_type == o.base_type && element == o.element &&
- struct_def == o.struct_def && enum_def == o.enum_def;
- }
-
- Type VectorType() const { return Type(element, struct_def, enum_def); }
-
- Offset<reflection::Type> Serialize(FlatBufferBuilder *builder) const;
-
- BaseType base_type;
- BaseType element; // only set if t == BASE_TYPE_VECTOR
- StructDef *struct_def; // only set if t or element == BASE_TYPE_STRUCT
- EnumDef *enum_def; // set if t == BASE_TYPE_UNION / BASE_TYPE_UTYPE,
- // or for an integral type derived from an enum.
-};
-
-// Represents a parsed scalar value, it's type, and field offset.
-struct Value {
- Value() : constant("0"), offset(static_cast<voffset_t>(
- ~(static_cast<voffset_t>(0U)))) {}
- Type type;
- std::string constant;
- voffset_t offset;
-};
-
-// Helper class that retains the original order of a set of identifiers and
-// also provides quick lookup.
-template<typename T> class SymbolTable {
- public:
- ~SymbolTable() {
- for (auto it = vec.begin(); it != vec.end(); ++it) {
- delete *it;
- }
- }
-
- bool Add(const std::string &name, T *e) {
- vec.emplace_back(e);
- auto it = dict.find(name);
- if (it != dict.end()) return true;
- dict[name] = e;
- return false;
- }
-
- void Move(const std::string &oldname, const std::string &newname) {
- auto it = dict.find(oldname);
- if (it != dict.end()) {
- auto obj = it->second;
- dict.erase(it);
- dict[newname] = obj;
- } else {
- assert(false);
- }
- }
-
- T *Lookup(const std::string &name) const {
- auto it = dict.find(name);
- return it == dict.end() ? nullptr : it->second;
- }
-
- public:
- std::map<std::string, T *> dict; // quick lookup
- std::vector<T *> vec; // Used to iterate in order of insertion
-};
-
-// A name space, as set in the schema.
-struct Namespace {
- std::vector<std::string> components;
-
- // Given a (potentally unqualified) name, return the "fully qualified" name
- // which has a full namespaced descriptor.
- // With max_components you can request less than the number of components
- // the current namespace has.
- std::string GetFullyQualifiedName(const std::string &name,
- size_t max_components = 1000) const;
-};
-
-// Base class for all definition types (fields, structs_, enums_).
-struct Definition {
- Definition() : generated(false), defined_namespace(nullptr),
- serialized_location(0), index(-1) {}
-
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<
- reflection::KeyValue>>>
- SerializeAttributes(FlatBufferBuilder *builder,
- const Parser &parser) const;
-
- std::string name;
- std::string file;
- std::vector<std::string> doc_comment;
- SymbolTable<Value> attributes;
- bool generated; // did we already output code for this definition?
- Namespace *defined_namespace; // Where it was defined.
-
- // For use with Serialize()
- uoffset_t serialized_location;
- int index; // Inside the vector it is stored.
-};
-
-struct FieldDef : public Definition {
- FieldDef() : deprecated(false), required(false), key(false), padding(0) {}
-
- Offset<reflection::Field> Serialize(FlatBufferBuilder *builder, uint16_t id,
- const Parser &parser) const;
-
- Value value;
- bool deprecated; // Field is allowed to be present in old data, but can't be
- // written in new data nor accessed in new code.
- bool required; // Field must always be present.
- bool key; // Field functions as a key for creating sorted vectors.
- bool native_inline; // Field will be defined inline (instead of as a pointer)
- // for native tables if field is a struct.
- size_t padding; // Bytes to always pad after this field.
-};
-
-struct StructDef : public Definition {
- StructDef()
- : fixed(false),
- predecl(true),
- sortbysize(true),
- has_key(false),
- minalign(1),
- bytesize(0)
- {}
-
- void PadLastField(size_t min_align) {
- auto padding = PaddingBytes(bytesize, min_align);
- bytesize += padding;
- if (fields.vec.size()) fields.vec.back()->padding = padding;
- }
-
- Offset<reflection::Object> Serialize(FlatBufferBuilder *builder,
- const Parser &parser) const;
-
- SymbolTable<FieldDef> fields;
- bool fixed; // If it's struct, not a table.
- bool predecl; // If it's used before it was defined.
- bool sortbysize; // Whether fields come in the declaration or size order.
- bool has_key; // It has a key field.
- size_t minalign; // What the whole object needs to be aligned to.
- size_t bytesize; // Size if fixed.
-};
-
-inline bool IsStruct(const Type &type) {
- return type.base_type == BASE_TYPE_STRUCT && type.struct_def->fixed;
-}
-
-inline size_t InlineSize(const Type &type) {
- return IsStruct(type) ? type.struct_def->bytesize : SizeOf(type.base_type);
-}
-
-inline size_t InlineAlignment(const Type &type) {
- return IsStruct(type) ? type.struct_def->minalign : SizeOf(type.base_type);
-}
-
-struct EnumVal {
- EnumVal(const std::string &_name, int64_t _val)
- : name(_name), value(_val) {}
-
- Offset<reflection::EnumVal> Serialize(FlatBufferBuilder *builder) const;
-
- std::string name;
- std::vector<std::string> doc_comment;
- int64_t value;
- Type union_type;
-};
-
-struct EnumDef : public Definition {
- EnumDef() : is_union(false), uses_type_aliases(false) {}
-
- EnumVal *ReverseLookup(int enum_idx, bool skip_union_default = true) {
- for (auto it = vals.vec.begin() + static_cast<int>(is_union &&
- skip_union_default);
- it != vals.vec.end(); ++it) {
- if ((*it)->value == enum_idx) {
- return *it;
- }
- }
- return nullptr;
- }
-
- Offset<reflection::Enum> Serialize(FlatBufferBuilder *builder,
- const Parser &parser) const;
-
- SymbolTable<EnumVal> vals;
- bool is_union;
- bool uses_type_aliases;
- Type underlying_type;
-};
-
-inline bool EqualByName(const Type &a, const Type &b) {
- return a.base_type == b.base_type && a.element == b.element &&
- (a.struct_def == b.struct_def ||
- a.struct_def->name == b.struct_def->name) &&
- (a.enum_def == b.enum_def ||
- a.enum_def->name == b.enum_def->name);
-}
-
-struct RPCCall {
- std::string name;
- SymbolTable<Value> attributes;
- StructDef *request, *response;
-};
-
-struct ServiceDef : public Definition {
- SymbolTable<RPCCall> calls;
-};
-
-// Container of options that may apply to any of the source/text generators.
-struct IDLOptions {
- bool strict_json;
- bool skip_js_exports;
- bool use_goog_js_export_format;
- bool output_default_scalars_in_json;
- int indent_step;
- bool output_enum_identifiers;
- bool prefixed_enums;
- bool scoped_enums;
- bool include_dependence_headers;
- bool mutable_buffer;
- bool one_file;
- bool proto_mode;
- bool generate_all;
- bool skip_unexpected_fields_in_json;
- bool generate_name_strings;
- bool escape_proto_identifiers;
- bool generate_object_based_api;
- std::string cpp_object_api_pointer_type;
- std::string cpp_object_api_string_type;
- bool union_value_namespacing;
- bool allow_non_utf8;
- std::string include_prefix;
- bool binary_schema_comments;
- bool skip_flatbuffers_import;
- std::string go_namespace;
- bool reexport_ts_modules;
-
- // Possible options for the more general generator below.
- enum Language {
- kJava = 1 << 0,
- kCSharp = 1 << 1,
- kGo = 1 << 2,
- kCpp = 1 << 3,
- kJs = 1 << 4,
- kPython = 1 << 5,
- kPhp = 1 << 6,
- kJson = 1 << 7,
- kBinary = 1 << 8,
- kTs = 1 << 9,
- kMAX
- };
-
- Language lang;
-
- // The corresponding language bit will be set if a language is included
- // for code generation.
- unsigned long lang_to_generate;
-
- IDLOptions()
- : strict_json(false),
- skip_js_exports(false),
- use_goog_js_export_format(false),
- output_default_scalars_in_json(false),
- indent_step(2),
- output_enum_identifiers(true), prefixed_enums(true), scoped_enums(false),
- include_dependence_headers(true),
- mutable_buffer(false),
- one_file(false),
- proto_mode(false),
- generate_all(false),
- skip_unexpected_fields_in_json(false),
- generate_name_strings(false),
- escape_proto_identifiers(false),
- generate_object_based_api(false),
- cpp_object_api_pointer_type("std::unique_ptr"),
- union_value_namespacing(true),
- allow_non_utf8(false),
- binary_schema_comments(false),
- skip_flatbuffers_import(false),
- reexport_ts_modules(true),
- lang(IDLOptions::kJava),
- lang_to_generate(0) {}
-};
-
-// This encapsulates where the parser is in the current source file.
-struct ParserState {
- ParserState() : cursor_(nullptr), line_(1), token_(-1) {}
-
- protected:
- const char *cursor_;
- int line_; // the current line being parsed
- int token_;
-
- std::string attribute_;
- std::vector<std::string> doc_comment_;
-};
-
-// A way to make error propagation less error prone by requiring values to be
-// checked.
-// Once you create a value of this type you must either:
-// - Call Check() on it.
-// - Copy or assign it to another value.
-// Failure to do so leads to an assert.
-// This guarantees that this as return value cannot be ignored.
-class CheckedError {
- public:
- explicit CheckedError(bool error)
- : is_error_(error), has_been_checked_(false) {}
-
- CheckedError &operator=(const CheckedError &other) {
- is_error_ = other.is_error_;
- has_been_checked_ = false;
- other.has_been_checked_ = true;
- return *this;
- }
-
- CheckedError(const CheckedError &other) {
- *this = other; // Use assignment operator.
- }
-
- ~CheckedError() { assert(has_been_checked_); }
-
- bool Check() { has_been_checked_ = true; return is_error_; }
-
- private:
- bool is_error_;
- mutable bool has_been_checked_;
-};
-
-// Additionally, in GCC we can get these errors statically, for additional
-// assurance:
-#ifdef __GNUC__
-#define FLATBUFFERS_CHECKED_ERROR CheckedError \
- __attribute__((warn_unused_result))
-#else
-#define FLATBUFFERS_CHECKED_ERROR CheckedError
-#endif
-
-class Parser : public ParserState {
- public:
- explicit Parser(const IDLOptions &options = IDLOptions())
- : root_struct_def_(nullptr),
- opts(options),
- source_(nullptr),
- anonymous_counter(0) {
- // Just in case none are declared:
- namespaces_.push_back(new Namespace());
- known_attributes_["deprecated"] = true;
- known_attributes_["required"] = true;
- known_attributes_["key"] = true;
- known_attributes_["hash"] = true;
- known_attributes_["id"] = true;
- known_attributes_["force_align"] = true;
- known_attributes_["bit_flags"] = true;
- known_attributes_["original_order"] = true;
- known_attributes_["nested_flatbuffer"] = true;
- known_attributes_["csharp_partial"] = true;
- known_attributes_["streaming"] = true;
- known_attributes_["idempotent"] = true;
- known_attributes_["cpp_type"] = true;
- known_attributes_["cpp_ptr_type"] = true;
- known_attributes_["cpp_str_type"] = true;
- known_attributes_["native_inline"] = true;
- known_attributes_["native_type"] = true;
- known_attributes_["native_default"] = true;
- }
-
- ~Parser() {
- for (auto it = namespaces_.begin(); it != namespaces_.end(); ++it) {
- delete *it;
- }
- }
-
- // Parse the string containing either schema or JSON data, which will
- // populate the SymbolTable's or the FlatBufferBuilder above.
- // include_paths is used to resolve any include statements, and typically
- // should at least include the project path (where you loaded source_ from).
- // include_paths must be nullptr terminated if specified.
- // If include_paths is nullptr, it will attempt to load from the current
- // directory.
- // If the source was loaded from a file and isn't an include file,
- // supply its name in source_filename.
- bool Parse(const char *_source, const char **include_paths = nullptr,
- const char *source_filename = nullptr);
-
- // Set the root type. May override the one set in the schema.
- bool SetRootType(const char *name);
-
- // Mark all definitions as already having code generated.
- void MarkGenerated();
-
- // Get the files recursively included by the given file. The returned
- // container will have at least the given file.
- std::set<std::string> GetIncludedFilesRecursive(
- const std::string &file_name) const;
-
- // Fills builder_ with a binary version of the schema parsed.
- // See reflection/reflection.fbs
- void Serialize();
-
- // Checks that the schema represented by this parser is a safe evolution
- // of the schema provided. Returns non-empty error on any problems.
- std::string ConformTo(const Parser &base);
-
- FLATBUFFERS_CHECKED_ERROR CheckInRange(int64_t val, int64_t min, int64_t max);
-
-private:
- FLATBUFFERS_CHECKED_ERROR Error(const std::string &msg);
- FLATBUFFERS_CHECKED_ERROR ParseHexNum(int nibbles, uint64_t *val);
- FLATBUFFERS_CHECKED_ERROR Next();
- FLATBUFFERS_CHECKED_ERROR SkipByteOrderMark();
- bool Is(int t);
- FLATBUFFERS_CHECKED_ERROR Expect(int t);
- std::string TokenToStringId(int t);
- EnumDef *LookupEnum(const std::string &id);
- FLATBUFFERS_CHECKED_ERROR ParseNamespacing(std::string *id,
- std::string *last);
- FLATBUFFERS_CHECKED_ERROR ParseTypeIdent(Type &type);
- FLATBUFFERS_CHECKED_ERROR ParseType(Type &type);
- FLATBUFFERS_CHECKED_ERROR AddField(StructDef &struct_def,
- const std::string &name, const Type &type,
- FieldDef **dest);
- FLATBUFFERS_CHECKED_ERROR ParseField(StructDef &struct_def);
- FLATBUFFERS_CHECKED_ERROR ParseString(Value &val);
- FLATBUFFERS_CHECKED_ERROR ParseAnyValue(Value &val, FieldDef *field,
- size_t parent_fieldn,
- const StructDef *parent_struct_def);
- FLATBUFFERS_CHECKED_ERROR ParseTable(const StructDef &struct_def,
- std::string *value, uoffset_t *ovalue);
- void SerializeStruct(const StructDef &struct_def, const Value &val);
- void AddVector(bool sortbysize, int count);
- FLATBUFFERS_CHECKED_ERROR ParseVector(const Type &type, uoffset_t *ovalue);
- FLATBUFFERS_CHECKED_ERROR ParseMetaData(SymbolTable<Value> *attributes);
- FLATBUFFERS_CHECKED_ERROR TryTypedValue(int dtoken, bool check, Value &e,
- BaseType req, bool *destmatch);
- FLATBUFFERS_CHECKED_ERROR ParseHash(Value &e, FieldDef* field);
- FLATBUFFERS_CHECKED_ERROR ParseSingleValue(Value &e);
- FLATBUFFERS_CHECKED_ERROR ParseEnumFromString(Type &type, int64_t *result);
- StructDef *LookupCreateStruct(const std::string &name,
- bool create_if_new = true,
- bool definition = false);
- FLATBUFFERS_CHECKED_ERROR ParseEnum(bool is_union, EnumDef **dest);
- FLATBUFFERS_CHECKED_ERROR ParseNamespace();
- FLATBUFFERS_CHECKED_ERROR StartStruct(const std::string &name,
- StructDef **dest);
- FLATBUFFERS_CHECKED_ERROR ParseDecl();
- FLATBUFFERS_CHECKED_ERROR ParseService();
- FLATBUFFERS_CHECKED_ERROR ParseProtoFields(StructDef *struct_def,
- bool isextend, bool inside_oneof);
- FLATBUFFERS_CHECKED_ERROR ParseProtoOption();
- FLATBUFFERS_CHECKED_ERROR ParseProtoKey();
- FLATBUFFERS_CHECKED_ERROR ParseProtoDecl();
- FLATBUFFERS_CHECKED_ERROR ParseProtoCurliesOrIdent();
- FLATBUFFERS_CHECKED_ERROR ParseTypeFromProtoType(Type *type);
- FLATBUFFERS_CHECKED_ERROR SkipAnyJsonValue();
- FLATBUFFERS_CHECKED_ERROR SkipJsonObject();
- FLATBUFFERS_CHECKED_ERROR SkipJsonArray();
- FLATBUFFERS_CHECKED_ERROR SkipJsonString();
- FLATBUFFERS_CHECKED_ERROR DoParse(const char *_source,
- const char **include_paths,
- const char *source_filename);
- FLATBUFFERS_CHECKED_ERROR CheckClash(std::vector<FieldDef*> &fields,
- StructDef *struct_def,
- const char *suffix,
- BaseType baseType);
-
- public:
- SymbolTable<Type> types_;
- SymbolTable<StructDef> structs_;
- SymbolTable<EnumDef> enums_;
- SymbolTable<ServiceDef> services_;
- std::vector<Namespace *> namespaces_;
- std::string error_; // User readable error_ if Parse() == false
-
- FlatBufferBuilder builder_; // any data contained in the file
- StructDef *root_struct_def_;
- std::string file_identifier_;
- std::string file_extension_;
-
- std::map<std::string, bool> included_files_;
- std::map<std::string, std::set<std::string>> files_included_per_file_;
- std::vector<std::string> native_included_files_;
-
- std::map<std::string, bool> known_attributes_;
-
- IDLOptions opts;
-
- private:
- const char *source_;
-
- std::string file_being_parsed_;
-
- std::vector<std::pair<Value, FieldDef *>> field_stack_;
-
- int anonymous_counter;
-};
-
-// Utility functions for multiple generators:
-
-extern std::string MakeCamel(const std::string &in, bool first = true);
-
-// Generate text (JSON) from a given FlatBuffer, and a given Parser
-// object that has been populated with the corresponding schema.
-// If ident_step is 0, no indentation will be generated. Additionally,
-// if it is less than 0, no linefeeds will be generated either.
-// See idl_gen_text.cpp.
-// strict_json adds "quotes" around field names if true.
-// If the flatbuffer cannot be encoded in JSON (e.g., it contains non-UTF-8
-// byte arrays in String values), returns false.
-extern bool GenerateText(const Parser &parser,
- const void *flatbuffer,
- std::string *text);
-extern bool GenerateTextFile(const Parser &parser,
- const std::string &path,
- const std::string &file_name);
-
-// Generate binary files from a given FlatBuffer, and a given Parser
-// object that has been populated with the corresponding schema.
-// See idl_gen_general.cpp.
-extern bool GenerateBinary(const Parser &parser,
- const std::string &path,
- const std::string &file_name);
-
-// Generate a C++ header from the definitions in the Parser object.
-// See idl_gen_cpp.
-extern std::string GenerateCPP(const Parser &parser,
- const std::string &include_guard_ident);
-extern bool GenerateCPP(const Parser &parser,
- const std::string &path,
- const std::string &file_name);
-
-// Generate JavaScript or TypeScript code from the definitions in the Parser object.
-// See idl_gen_js.
-extern std::string GenerateJS(const Parser &parser);
-extern bool GenerateJS(const Parser &parser,
- const std::string &path,
- const std::string &file_name);
-
-// Generate Go files from the definitions in the Parser object.
-// See idl_gen_go.cpp.
-extern bool GenerateGo(const Parser &parser,
- const std::string &path,
- const std::string &file_name);
-
-// Generate Java files from the definitions in the Parser object.
-// See idl_gen_java.cpp.
-extern bool GenerateJava(const Parser &parser,
- const std::string &path,
- const std::string &file_name);
-
-// Generate Php code from the definitions in the Parser object.
-// See idl_gen_php.
-extern bool GeneratePhp(const Parser &parser,
- const std::string &path,
- const std::string &file_name);
-
-// Generate Python files from the definitions in the Parser object.
-// See idl_gen_python.cpp.
-extern bool GeneratePython(const Parser &parser,
- const std::string &path,
- const std::string &file_name);
-
-// Generate C# files from the definitions in the Parser object.
-// See idl_gen_csharp.cpp.
-extern bool GenerateCSharp(const Parser &parser,
- const std::string &path,
- const std::string &file_name);
-
-// Generate Java/C#/.. files from the definitions in the Parser object.
-// See idl_gen_general.cpp.
-extern bool GenerateGeneral(const Parser &parser,
- const std::string &path,
- const std::string &file_name);
-
-// Generate a schema file from the internal representation, useful after
-// parsing a .proto schema.
-extern std::string GenerateFBS(const Parser &parser,
- const std::string &file_name);
-extern bool GenerateFBS(const Parser &parser,
- const std::string &path,
- const std::string &file_name);
-
-// Generate a make rule for the generated JavaScript or TypeScript code.
-// See idl_gen_js.cpp.
-extern std::string JSMakeRule(const Parser &parser,
- const std::string &path,
- const std::string &file_name);
-
-// Generate a make rule for the generated C++ header.
-// See idl_gen_cpp.cpp.
-extern std::string CPPMakeRule(const Parser &parser,
- const std::string &path,
- const std::string &file_name);
-
-// Generate a make rule for the generated Java/C#/... files.
-// See idl_gen_general.cpp.
-extern std::string GeneralMakeRule(const Parser &parser,
- const std::string &path,
- const std::string &file_name);
-
-// Generate a make rule for the generated text (JSON) files.
-// See idl_gen_text.cpp.
-extern std::string TextMakeRule(const Parser &parser,
- const std::string &path,
- const std::string &file_names);
-
-// Generate a make rule for the generated binary files.
-// See idl_gen_general.cpp.
-extern std::string BinaryMakeRule(const Parser &parser,
- const std::string &path,
- const std::string &file_name);
-
-// Generate GRPC Cpp interfaces.
-// See idl_gen_grpc.cpp.
-bool GenerateCppGRPC(const Parser &parser,
- const std::string &path,
- const std::string &file_name);
-
-// Generate GRPC Go interfaces.
-// See idl_gen_grpc.cpp.
-bool GenerateGoGRPC(const Parser &parser,
- const std::string &path,
- const std::string &file_name);
-
-} // namespace flatbuffers
-
-#endif // FLATBUFFERS_IDL_H_
diff --git a/third_party/flatbuffers/include/flatbuffers/reflection.h b/third_party/flatbuffers/include/flatbuffers/reflection.h
deleted file mode 100644
index aab9f20..0000000
--- a/third_party/flatbuffers/include/flatbuffers/reflection.h
+++ /dev/null
@@ -1,490 +0,0 @@
-/*
- * Copyright 2015 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef FLATBUFFERS_REFLECTION_H_
-#define FLATBUFFERS_REFLECTION_H_
-
-// This is somewhat of a circular dependency because flatc (and thus this
-// file) is needed to generate this header in the first place.
-// Should normally not be a problem since it can be generated by the
-// previous version of flatc whenever this code needs to change.
-// See reflection/generate_code.sh
-#include "flatbuffers/reflection_generated.h"
-
-// Helper functionality for reflection.
-
-namespace flatbuffers {
-
-// ------------------------- GETTERS -------------------------
-
-inline bool IsScalar (reflection::BaseType t) { return t >= reflection::UType &&
- t <= reflection::Double; }
-inline bool IsInteger(reflection::BaseType t) { return t >= reflection::UType &&
- t <= reflection::ULong; }
-inline bool IsFloat (reflection::BaseType t) { return t == reflection::Float ||
- t == reflection::Double; }
-inline bool IsLong (reflection::BaseType t) { return t == reflection::Long ||
- t == reflection::ULong; }
-
-// Size of a basic type, don't use with structs.
-inline size_t GetTypeSize(reflection::BaseType base_type) {
- // This needs to correspond to the BaseType enum.
- static size_t sizes[] = { 0, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 4, 8, 4, 4, 4, 4 };
- return sizes[base_type];
-}
-
-// Same as above, but now correctly returns the size of a struct if
-// the field (or vector element) is a struct.
-inline size_t GetTypeSizeInline(reflection::BaseType base_type,
- int type_index,
- const reflection::Schema &schema) {
- if (base_type == reflection::Obj &&
- schema.objects()->Get(type_index)->is_struct()) {
- return schema.objects()->Get(type_index)->bytesize();
- } else {
- return GetTypeSize(base_type);
- }
-}
-
-// Get the root, regardless of what type it is.
-inline Table *GetAnyRoot(uint8_t *flatbuf) {
- return GetMutableRoot<Table>(flatbuf);
-}
-inline const Table *GetAnyRoot(const uint8_t *flatbuf) {
- return GetRoot<Table>(flatbuf);
-}
-
-// Get a field's default, if you know it's an integer, and its exact type.
-template<typename T> T GetFieldDefaultI(const reflection::Field &field) {
- assert(sizeof(T) == GetTypeSize(field.type()->base_type()));
- return static_cast<T>(field.default_integer());
-}
-
-// Get a field's default, if you know it's floating point and its exact type.
-template<typename T> T GetFieldDefaultF(const reflection::Field &field) {
- assert(sizeof(T) == GetTypeSize(field.type()->base_type()));
- return static_cast<T>(field.default_real());
-}
-
-// Get a field, if you know it's an integer, and its exact type.
-template<typename T> T GetFieldI(const Table &table,
- const reflection::Field &field) {
- assert(sizeof(T) == GetTypeSize(field.type()->base_type()));
- return table.GetField<T>(field.offset(),
- static_cast<T>(field.default_integer()));
-}
-
-// Get a field, if you know it's floating point and its exact type.
-template<typename T> T GetFieldF(const Table &table,
- const reflection::Field &field) {
- assert(sizeof(T) == GetTypeSize(field.type()->base_type()));
- return table.GetField<T>(field.offset(),
- static_cast<T>(field.default_real()));
-}
-
-// Get a field, if you know it's a string.
-inline const String *GetFieldS(const Table &table,
- const reflection::Field &field) {
- assert(field.type()->base_type() == reflection::String);
- return table.GetPointer<const String *>(field.offset());
-}
-
-// Get a field, if you know it's a vector.
-template<typename T> Vector<T> *GetFieldV(const Table &table,
- const reflection::Field &field) {
- assert(field.type()->base_type() == reflection::Vector &&
- sizeof(T) == GetTypeSize(field.type()->element()));
- return table.GetPointer<Vector<T> *>(field.offset());
-}
-
-// Get a field, if you know it's a vector, generically.
-// To actually access elements, use the return value together with
-// field.type()->element() in any of GetAnyVectorElemI below etc.
-inline VectorOfAny *GetFieldAnyV(const Table &table,
- const reflection::Field &field) {
- return table.GetPointer<VectorOfAny *>(field.offset());
-}
-
-// Get a field, if you know it's a table.
-inline Table *GetFieldT(const Table &table,
- const reflection::Field &field) {
- assert(field.type()->base_type() == reflection::Obj ||
- field.type()->base_type() == reflection::Union);
- return table.GetPointer<Table *>(field.offset());
-}
-
-// Get a field, if you know it's a struct.
-inline const Struct *GetFieldStruct(const Table &table,
- const reflection::Field &field) {
- // TODO: This does NOT check if the field is a table or struct, but we'd need
- // access to the schema to check the is_struct flag.
- assert(field.type()->base_type() == reflection::Obj);
- return table.GetStruct<const Struct *>(field.offset());
-}
-
-// Get a structure's field, if you know it's a struct.
-inline const Struct *GetFieldStruct(const Struct &structure,
- const reflection::Field &field) {
- assert(field.type()->base_type() == reflection::Obj);
- return structure.GetStruct<const Struct *>(field.offset());
-}
-
-// Raw helper functions used below: get any value in memory as a 64bit int, a
-// double or a string.
-// All scalars get static_cast to an int64_t, strings use strtoull, every other
-// data type returns 0.
-int64_t GetAnyValueI(reflection::BaseType type, const uint8_t *data);
-// All scalars static cast to double, strings use strtod, every other data
-// type is 0.0.
-double GetAnyValueF(reflection::BaseType type, const uint8_t *data);
-// All scalars converted using stringstream, strings as-is, and all other
-// data types provide some level of debug-pretty-printing.
-std::string GetAnyValueS(reflection::BaseType type, const uint8_t *data,
- const reflection::Schema *schema,
- int type_index);
-
-// Get any table field as a 64bit int, regardless of what type it is.
-inline int64_t GetAnyFieldI(const Table &table,
- const reflection::Field &field) {
- auto field_ptr = table.GetAddressOf(field.offset());
- return field_ptr ? GetAnyValueI(field.type()->base_type(), field_ptr)
- : field.default_integer();
-}
-
-// Get any table field as a double, regardless of what type it is.
-inline double GetAnyFieldF(const Table &table,
- const reflection::Field &field) {
- auto field_ptr = table.GetAddressOf(field.offset());
- return field_ptr ? GetAnyValueF(field.type()->base_type(), field_ptr)
- : field.default_real();
-}
-
-
-// Get any table field as a string, regardless of what type it is.
-// You may pass nullptr for the schema if you don't care to have fields that
-// are of table type pretty-printed.
-inline std::string GetAnyFieldS(const Table &table,
- const reflection::Field &field,
- const reflection::Schema *schema) {
- auto field_ptr = table.GetAddressOf(field.offset());
- return field_ptr ? GetAnyValueS(field.type()->base_type(), field_ptr, schema,
- field.type()->index())
- : "";
-}
-
-// Get any struct field as a 64bit int, regardless of what type it is.
-inline int64_t GetAnyFieldI(const Struct &st,
- const reflection::Field &field) {
- return GetAnyValueI(field.type()->base_type(),
- st.GetAddressOf(field.offset()));
-}
-
-// Get any struct field as a double, regardless of what type it is.
-inline double GetAnyFieldF(const Struct &st,
- const reflection::Field &field) {
- return GetAnyValueF(field.type()->base_type(),
- st.GetAddressOf(field.offset()));
-}
-
-// Get any struct field as a string, regardless of what type it is.
-inline std::string GetAnyFieldS(const Struct &st,
- const reflection::Field &field) {
- return GetAnyValueS(field.type()->base_type(),
- st.GetAddressOf(field.offset()), nullptr, -1);
-}
-
-// Get any vector element as a 64bit int, regardless of what type it is.
-inline int64_t GetAnyVectorElemI(const VectorOfAny *vec,
- reflection::BaseType elem_type, size_t i) {
- return GetAnyValueI(elem_type, vec->Data() + GetTypeSize(elem_type) * i);
-}
-
-// Get any vector element as a double, regardless of what type it is.
-inline double GetAnyVectorElemF(const VectorOfAny *vec,
- reflection::BaseType elem_type, size_t i) {
- return GetAnyValueF(elem_type, vec->Data() + GetTypeSize(elem_type) * i);
-}
-
-// Get any vector element as a string, regardless of what type it is.
-inline std::string GetAnyVectorElemS(const VectorOfAny *vec,
- reflection::BaseType elem_type, size_t i) {
- return GetAnyValueS(elem_type, vec->Data() + GetTypeSize(elem_type) * i,
- nullptr, -1);
-}
-
-// Get a vector element that's a table/string/vector from a generic vector.
-// Pass Table/String/VectorOfAny as template parameter.
-// Warning: does no typechecking.
-template<typename T> T *GetAnyVectorElemPointer(const VectorOfAny *vec,
- size_t i) {
- auto elem_ptr = vec->Data() + sizeof(uoffset_t) * i;
- return (T *)(elem_ptr + ReadScalar<uoffset_t>(elem_ptr));
-}
-
-// Get the inline-address of a vector element. Useful for Structs (pass Struct
-// as template arg), or being able to address a range of scalars in-line.
-// Get elem_size from GetTypeSizeInline().
-// Note: little-endian data on all platforms, use EndianScalar() instead of
-// raw pointer access with scalars).
-template<typename T> T *GetAnyVectorElemAddressOf(const VectorOfAny *vec,
- size_t i,
- size_t elem_size) {
- // C-cast to allow const conversion.
- return (T *)(vec->Data() + elem_size * i);
-}
-
-// Similarly, for elements of tables.
-template<typename T> T *GetAnyFieldAddressOf(const Table &table,
- const reflection::Field &field) {
- return (T *)table.GetAddressOf(field.offset());
-}
-
-// Similarly, for elements of structs.
-template<typename T> T *GetAnyFieldAddressOf(const Struct &st,
- const reflection::Field &field) {
- return (T *)st.GetAddressOf(field.offset());
-}
-
-// ------------------------- SETTERS -------------------------
-
-// Set any scalar field, if you know its exact type.
-template<typename T> bool SetField(Table *table, const reflection::Field &field,
- T val) {
- reflection::BaseType type = field.type()->base_type();
- if (!IsScalar(type)) {
- return false;
- }
- assert(sizeof(T) == GetTypeSize(type));
- T def;
- if (IsInteger(type)) {
- def = GetFieldDefaultI<T>(field);
- } else {
- assert(IsFloat(type));
- def = GetFieldDefaultF<T>(field);
- }
- return table->SetField(field.offset(), val, def);
-}
-
-// Raw helper functions used below: set any value in memory as a 64bit int, a
-// double or a string.
-// These work for all scalar values, but do nothing for other data types.
-// To set a string, see SetString below.
-void SetAnyValueI(reflection::BaseType type, uint8_t *data, int64_t val);
-void SetAnyValueF(reflection::BaseType type, uint8_t *data, double val);
-void SetAnyValueS(reflection::BaseType type, uint8_t *data, const char *val);
-
-// Set any table field as a 64bit int, regardless of type what it is.
-inline bool SetAnyFieldI(Table *table, const reflection::Field &field,
- int64_t val) {
- auto field_ptr = table->GetAddressOf(field.offset());
- if (!field_ptr) return val == GetFieldDefaultI<int64_t>(field);
- SetAnyValueI(field.type()->base_type(), field_ptr, val);
- return true;
-}
-
-// Set any table field as a double, regardless of what type it is.
-inline bool SetAnyFieldF(Table *table, const reflection::Field &field,
- double val) {
- auto field_ptr = table->GetAddressOf(field.offset());
- if (!field_ptr) return val == GetFieldDefaultF<double>(field);
- SetAnyValueF(field.type()->base_type(), field_ptr, val);
- return true;
-}
-
-// Set any table field as a string, regardless of what type it is.
-inline bool SetAnyFieldS(Table *table, const reflection::Field &field,
- const char *val) {
- auto field_ptr = table->GetAddressOf(field.offset());
- if (!field_ptr) return false;
- SetAnyValueS(field.type()->base_type(), field_ptr, val);
- return true;
-}
-
-// Set any struct field as a 64bit int, regardless of type what it is.
-inline void SetAnyFieldI(Struct *st, const reflection::Field &field,
- int64_t val) {
- SetAnyValueI(field.type()->base_type(), st->GetAddressOf(field.offset()),
- val);
-}
-
-// Set any struct field as a double, regardless of type what it is.
-inline void SetAnyFieldF(Struct *st, const reflection::Field &field,
- double val) {
- SetAnyValueF(field.type()->base_type(), st->GetAddressOf(field.offset()),
- val);
-}
-
-// Set any struct field as a string, regardless of type what it is.
-inline void SetAnyFieldS(Struct *st, const reflection::Field &field,
- const char *val) {
- SetAnyValueS(field.type()->base_type(), st->GetAddressOf(field.offset()),
- val);
-}
-
-// Set any vector element as a 64bit int, regardless of type what it is.
-inline void SetAnyVectorElemI(VectorOfAny *vec, reflection::BaseType elem_type,
- size_t i, int64_t val) {
- SetAnyValueI(elem_type, vec->Data() + GetTypeSize(elem_type) * i, val);
-}
-
-// Set any vector element as a double, regardless of type what it is.
-inline void SetAnyVectorElemF(VectorOfAny *vec, reflection::BaseType elem_type,
- size_t i, double val) {
- SetAnyValueF(elem_type, vec->Data() + GetTypeSize(elem_type) * i, val);
-}
-
-// Set any vector element as a string, regardless of type what it is.
-inline void SetAnyVectorElemS(VectorOfAny *vec, reflection::BaseType elem_type,
- size_t i, const char *val) {
- SetAnyValueS(elem_type, vec->Data() + GetTypeSize(elem_type) * i, val);
-}
-
-
-// ------------------------- RESIZING SETTERS -------------------------
-
-// "smart" pointer for use with resizing vectors: turns a pointer inside
-// a vector into a relative offset, such that it is not affected by resizes.
-template<typename T, typename U> class pointer_inside_vector {
- public:
- pointer_inside_vector(T *ptr, std::vector<U> &vec)
- : offset_(reinterpret_cast<uint8_t *>(ptr) -
- reinterpret_cast<uint8_t *>(vec.data())),
- vec_(vec) {}
-
- T *operator*() const {
- return reinterpret_cast<T *>(
- reinterpret_cast<uint8_t *>(vec_.data()) + offset_);
- }
- T *operator->() const {
- return operator*();
- }
- void operator=(const pointer_inside_vector &piv);
- private:
- size_t offset_;
- std::vector<U> &vec_;
-};
-
-// Helper to create the above easily without specifying template args.
-template<typename T, typename U> pointer_inside_vector<T, U> piv(T *ptr,
- std::vector<U> &vec) {
- return pointer_inside_vector<T, U>(ptr, vec);
-}
-
-inline const char *UnionTypeFieldSuffix() { return "_type"; }
-
-// Helper to figure out the actual table type a union refers to.
-inline const reflection::Object &GetUnionType(
- const reflection::Schema &schema, const reflection::Object &parent,
- const reflection::Field &unionfield, const Table &table) {
- auto enumdef = schema.enums()->Get(unionfield.type()->index());
- // TODO: this is clumsy and slow, but no other way to find it?
- auto type_field = parent.fields()->LookupByKey(
- (unionfield.name()->str() + UnionTypeFieldSuffix()).c_str());
- assert(type_field);
- auto union_type = GetFieldI<uint8_t>(table, *type_field);
- auto enumval = enumdef->values()->LookupByKey(union_type);
- return *enumval->object();
-}
-
-// Changes the contents of a string inside a FlatBuffer. FlatBuffer must
-// live inside a std::vector so we can resize the buffer if needed.
-// "str" must live inside "flatbuf" and may be invalidated after this call.
-// If your FlatBuffer's root table is not the schema's root table, you should
-// pass in your root_table type as well.
-void SetString(const reflection::Schema &schema, const std::string &val,
- const String *str, std::vector<uint8_t> *flatbuf,
- const reflection::Object *root_table = nullptr);
-
-// Resizes a flatbuffers::Vector inside a FlatBuffer. FlatBuffer must
-// live inside a std::vector so we can resize the buffer if needed.
-// "vec" must live inside "flatbuf" and may be invalidated after this call.
-// If your FlatBuffer's root table is not the schema's root table, you should
-// pass in your root_table type as well.
-uint8_t *ResizeAnyVector(const reflection::Schema &schema, uoffset_t newsize,
- const VectorOfAny *vec, uoffset_t num_elems,
- uoffset_t elem_size, std::vector<uint8_t> *flatbuf,
- const reflection::Object *root_table = nullptr);
-
-#ifndef FLATBUFFERS_CPP98_STL
-template <typename T>
-void ResizeVector(const reflection::Schema &schema, uoffset_t newsize, T val,
- const Vector<T> *vec, std::vector<uint8_t> *flatbuf,
- const reflection::Object *root_table = nullptr) {
- auto delta_elem = static_cast<int>(newsize) - static_cast<int>(vec->size());
- auto newelems = ResizeAnyVector(schema, newsize,
- reinterpret_cast<const VectorOfAny *>(vec),
- vec->size(),
- static_cast<uoffset_t>(sizeof(T)), flatbuf,
- root_table);
- // Set new elements to "val".
- for (int i = 0; i < delta_elem; i++) {
- auto loc = newelems + i * sizeof(T);
- auto is_scalar = std::is_scalar<T>::value;
- if (is_scalar) {
- WriteScalar(loc, val);
- } else { // struct
- *reinterpret_cast<T *>(loc) = val;
- }
- }
-}
-#endif
-
-// Adds any new data (in the form of a new FlatBuffer) to an existing
-// FlatBuffer. This can be used when any of the above methods are not
-// sufficient, in particular for adding new tables and new fields.
-// This is potentially slightly less efficient than a FlatBuffer constructed
-// in one piece, since the new FlatBuffer doesn't share any vtables with the
-// existing one.
-// The return value can now be set using Vector::MutateOffset or SetFieldT
-// below.
-const uint8_t *AddFlatBuffer(std::vector<uint8_t> &flatbuf,
- const uint8_t *newbuf, size_t newlen);
-
-inline bool SetFieldT(Table *table, const reflection::Field &field,
- const uint8_t *val) {
- assert(sizeof(uoffset_t) == GetTypeSize(field.type()->base_type()));
- return table->SetPointer(field.offset(), val);
-}
-
-// ------------------------- COPYING -------------------------
-
-// Generic copying of tables from a FlatBuffer into a FlatBuffer builder.
-// Can be used to do any kind of merging/selecting you may want to do out
-// of existing buffers. Also useful to reconstruct a whole buffer if the
-// above resizing functionality has introduced garbage in a buffer you want
-// to remove.
-// Note: this does not deal with DAGs correctly. If the table passed forms a
-// DAG, the copy will be a tree instead (with duplicates). Strings can be
-// shared however, by passing true for use_string_pooling.
-
-Offset<const Table *> CopyTable(FlatBufferBuilder &fbb,
- const reflection::Schema &schema,
- const reflection::Object &objectdef,
- const Table &table,
- bool use_string_pooling = false);
-
-// Verifies the provided flatbuffer using reflection.
-// root should point to the root type for this flatbuffer.
-// buf should point to the start of flatbuffer data.
-// length specifies the size of the flatbuffer data.
-bool Verify(const reflection::Schema &schema,
- const reflection::Object &root,
- const uint8_t *buf,
- size_t length);
-
-} // namespace flatbuffers
-
-#endif // FLATBUFFERS_REFLECTION_H_
diff --git a/third_party/flatbuffers/include/flatbuffers/reflection_generated.h b/third_party/flatbuffers/include/flatbuffers/reflection_generated.h
deleted file mode 100644
index b76814e..0000000
--- a/third_party/flatbuffers/include/flatbuffers/reflection_generated.h
+++ /dev/null
@@ -1,881 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-
-#ifndef FLATBUFFERS_GENERATED_REFLECTION_REFLECTION_H_
-#define FLATBUFFERS_GENERATED_REFLECTION_REFLECTION_H_
-
-#include "flatbuffers/flatbuffers.h"
-
-namespace reflection {
-
-struct Type;
-
-struct KeyValue;
-
-struct EnumVal;
-
-struct Enum;
-
-struct Field;
-
-struct Object;
-
-struct Schema;
-
-enum BaseType {
- None = 0,
- UType = 1,
- Bool = 2,
- Byte = 3,
- UByte = 4,
- Short = 5,
- UShort = 6,
- Int = 7,
- UInt = 8,
- Long = 9,
- ULong = 10,
- Float = 11,
- Double = 12,
- String = 13,
- Vector = 14,
- Obj = 15,
- Union = 16
-};
-
-inline const char **EnumNamesBaseType() {
- static const char *names[] = {
- "None",
- "UType",
- "Bool",
- "Byte",
- "UByte",
- "Short",
- "UShort",
- "Int",
- "UInt",
- "Long",
- "ULong",
- "Float",
- "Double",
- "String",
- "Vector",
- "Obj",
- "Union",
- nullptr
- };
- return names;
-}
-
-inline const char *EnumNameBaseType(BaseType e) {
- const size_t index = static_cast<int>(e);
- return EnumNamesBaseType()[index];
-}
-
-struct Type FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum {
- VT_BASE_TYPE = 4,
- VT_ELEMENT = 6,
- VT_INDEX = 8
- };
- BaseType base_type() const {
- return static_cast<BaseType>(GetField<int8_t>(VT_BASE_TYPE, 0));
- }
- BaseType element() const {
- return static_cast<BaseType>(GetField<int8_t>(VT_ELEMENT, 0));
- }
- int32_t index() const {
- return GetField<int32_t>(VT_INDEX, -1);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyField<int8_t>(verifier, VT_BASE_TYPE) &&
- VerifyField<int8_t>(verifier, VT_ELEMENT) &&
- VerifyField<int32_t>(verifier, VT_INDEX) &&
- verifier.EndTable();
- }
-};
-
-struct TypeBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_base_type(BaseType base_type) {
- fbb_.AddElement<int8_t>(Type::VT_BASE_TYPE, static_cast<int8_t>(base_type), 0);
- }
- void add_element(BaseType element) {
- fbb_.AddElement<int8_t>(Type::VT_ELEMENT, static_cast<int8_t>(element), 0);
- }
- void add_index(int32_t index) {
- fbb_.AddElement<int32_t>(Type::VT_INDEX, index, -1);
- }
- TypeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- TypeBuilder &operator=(const TypeBuilder &);
- flatbuffers::Offset<Type> Finish() {
- const auto end = fbb_.EndTable(start_, 3);
- auto o = flatbuffers::Offset<Type>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<Type> CreateType(
- flatbuffers::FlatBufferBuilder &_fbb,
- BaseType base_type = None,
- BaseType element = None,
- int32_t index = -1) {
- TypeBuilder builder_(_fbb);
- builder_.add_index(index);
- builder_.add_element(element);
- builder_.add_base_type(base_type);
- return builder_.Finish();
-}
-
-struct KeyValue FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum {
- VT_KEY = 4,
- VT_VALUE = 6
- };
- const flatbuffers::String *key() const {
- return GetPointer<const flatbuffers::String *>(VT_KEY);
- }
- bool KeyCompareLessThan(const KeyValue *o) const {
- return *key() < *o->key();
- }
- int KeyCompareWithValue(const char *val) const {
- return strcmp(key()->c_str(), val);
- }
- const flatbuffers::String *value() const {
- return GetPointer<const flatbuffers::String *>(VT_VALUE);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyFieldRequired<flatbuffers::uoffset_t>(verifier, VT_KEY) &&
- verifier.Verify(key()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_VALUE) &&
- verifier.Verify(value()) &&
- verifier.EndTable();
- }
-};
-
-struct KeyValueBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_key(flatbuffers::Offset<flatbuffers::String> key) {
- fbb_.AddOffset(KeyValue::VT_KEY, key);
- }
- void add_value(flatbuffers::Offset<flatbuffers::String> value) {
- fbb_.AddOffset(KeyValue::VT_VALUE, value);
- }
- KeyValueBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- KeyValueBuilder &operator=(const KeyValueBuilder &);
- flatbuffers::Offset<KeyValue> Finish() {
- const auto end = fbb_.EndTable(start_, 2);
- auto o = flatbuffers::Offset<KeyValue>(end);
- fbb_.Required(o, KeyValue::VT_KEY);
- return o;
- }
-};
-
-inline flatbuffers::Offset<KeyValue> CreateKeyValue(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<flatbuffers::String> key = 0,
- flatbuffers::Offset<flatbuffers::String> value = 0) {
- KeyValueBuilder builder_(_fbb);
- builder_.add_value(value);
- builder_.add_key(key);
- return builder_.Finish();
-}
-
-inline flatbuffers::Offset<KeyValue> CreateKeyValueDirect(
- flatbuffers::FlatBufferBuilder &_fbb,
- const char *key = nullptr,
- const char *value = nullptr) {
- return reflection::CreateKeyValue(
- _fbb,
- key ? _fbb.CreateString(key) : 0,
- value ? _fbb.CreateString(value) : 0);
-}
-
-struct EnumVal FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum {
- VT_NAME = 4,
- VT_VALUE = 6,
- VT_OBJECT = 8,
- VT_UNION_TYPE = 10
- };
- const flatbuffers::String *name() const {
- return GetPointer<const flatbuffers::String *>(VT_NAME);
- }
- int64_t value() const {
- return GetField<int64_t>(VT_VALUE, 0);
- }
- bool KeyCompareLessThan(const EnumVal *o) const {
- return value() < o->value();
- }
- int KeyCompareWithValue(int64_t val) const {
- const auto key = value();
- if (key < val) {
- return -1;
- } else if (key > val) {
- return 1;
- } else {
- return 0;
- }
- }
- const Object *object() const {
- return GetPointer<const Object *>(VT_OBJECT);
- }
- const Type *union_type() const {
- return GetPointer<const Type *>(VT_UNION_TYPE);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyFieldRequired<flatbuffers::uoffset_t>(verifier, VT_NAME) &&
- verifier.Verify(name()) &&
- VerifyField<int64_t>(verifier, VT_VALUE) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_OBJECT) &&
- verifier.VerifyTable(object()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_UNION_TYPE) &&
- verifier.VerifyTable(union_type()) &&
- verifier.EndTable();
- }
-};
-
-struct EnumValBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_name(flatbuffers::Offset<flatbuffers::String> name) {
- fbb_.AddOffset(EnumVal::VT_NAME, name);
- }
- void add_value(int64_t value) {
- fbb_.AddElement<int64_t>(EnumVal::VT_VALUE, value, 0);
- }
- void add_object(flatbuffers::Offset<Object> object) {
- fbb_.AddOffset(EnumVal::VT_OBJECT, object);
- }
- void add_union_type(flatbuffers::Offset<Type> union_type) {
- fbb_.AddOffset(EnumVal::VT_UNION_TYPE, union_type);
- }
- EnumValBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- EnumValBuilder &operator=(const EnumValBuilder &);
- flatbuffers::Offset<EnumVal> Finish() {
- const auto end = fbb_.EndTable(start_, 4);
- auto o = flatbuffers::Offset<EnumVal>(end);
- fbb_.Required(o, EnumVal::VT_NAME);
- return o;
- }
-};
-
-inline flatbuffers::Offset<EnumVal> CreateEnumVal(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<flatbuffers::String> name = 0,
- int64_t value = 0,
- flatbuffers::Offset<Object> object = 0,
- flatbuffers::Offset<Type> union_type = 0) {
- EnumValBuilder builder_(_fbb);
- builder_.add_value(value);
- builder_.add_union_type(union_type);
- builder_.add_object(object);
- builder_.add_name(name);
- return builder_.Finish();
-}
-
-inline flatbuffers::Offset<EnumVal> CreateEnumValDirect(
- flatbuffers::FlatBufferBuilder &_fbb,
- const char *name = nullptr,
- int64_t value = 0,
- flatbuffers::Offset<Object> object = 0,
- flatbuffers::Offset<Type> union_type = 0) {
- return reflection::CreateEnumVal(
- _fbb,
- name ? _fbb.CreateString(name) : 0,
- value,
- object,
- union_type);
-}
-
-struct Enum FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum {
- VT_NAME = 4,
- VT_VALUES = 6,
- VT_IS_UNION = 8,
- VT_UNDERLYING_TYPE = 10,
- VT_ATTRIBUTES = 12,
- VT_DOCUMENTATION = 14
- };
- const flatbuffers::String *name() const {
- return GetPointer<const flatbuffers::String *>(VT_NAME);
- }
- bool KeyCompareLessThan(const Enum *o) const {
- return *name() < *o->name();
- }
- int KeyCompareWithValue(const char *val) const {
- return strcmp(name()->c_str(), val);
- }
- const flatbuffers::Vector<flatbuffers::Offset<EnumVal>> *values() const {
- return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<EnumVal>> *>(VT_VALUES);
- }
- bool is_union() const {
- return GetField<uint8_t>(VT_IS_UNION, 0) != 0;
- }
- const Type *underlying_type() const {
- return GetPointer<const Type *>(VT_UNDERLYING_TYPE);
- }
- const flatbuffers::Vector<flatbuffers::Offset<KeyValue>> *attributes() const {
- return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<KeyValue>> *>(VT_ATTRIBUTES);
- }
- const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *documentation() const {
- return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_DOCUMENTATION);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyFieldRequired<flatbuffers::uoffset_t>(verifier, VT_NAME) &&
- verifier.Verify(name()) &&
- VerifyFieldRequired<flatbuffers::uoffset_t>(verifier, VT_VALUES) &&
- verifier.Verify(values()) &&
- verifier.VerifyVectorOfTables(values()) &&
- VerifyField<uint8_t>(verifier, VT_IS_UNION) &&
- VerifyFieldRequired<flatbuffers::uoffset_t>(verifier, VT_UNDERLYING_TYPE) &&
- verifier.VerifyTable(underlying_type()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_ATTRIBUTES) &&
- verifier.Verify(attributes()) &&
- verifier.VerifyVectorOfTables(attributes()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_DOCUMENTATION) &&
- verifier.Verify(documentation()) &&
- verifier.VerifyVectorOfStrings(documentation()) &&
- verifier.EndTable();
- }
-};
-
-struct EnumBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_name(flatbuffers::Offset<flatbuffers::String> name) {
- fbb_.AddOffset(Enum::VT_NAME, name);
- }
- void add_values(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<EnumVal>>> values) {
- fbb_.AddOffset(Enum::VT_VALUES, values);
- }
- void add_is_union(bool is_union) {
- fbb_.AddElement<uint8_t>(Enum::VT_IS_UNION, static_cast<uint8_t>(is_union), 0);
- }
- void add_underlying_type(flatbuffers::Offset<Type> underlying_type) {
- fbb_.AddOffset(Enum::VT_UNDERLYING_TYPE, underlying_type);
- }
- void add_attributes(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<KeyValue>>> attributes) {
- fbb_.AddOffset(Enum::VT_ATTRIBUTES, attributes);
- }
- void add_documentation(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> documentation) {
- fbb_.AddOffset(Enum::VT_DOCUMENTATION, documentation);
- }
- EnumBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- EnumBuilder &operator=(const EnumBuilder &);
- flatbuffers::Offset<Enum> Finish() {
- const auto end = fbb_.EndTable(start_, 6);
- auto o = flatbuffers::Offset<Enum>(end);
- fbb_.Required(o, Enum::VT_NAME);
- fbb_.Required(o, Enum::VT_VALUES);
- fbb_.Required(o, Enum::VT_UNDERLYING_TYPE);
- return o;
- }
-};
-
-inline flatbuffers::Offset<Enum> CreateEnum(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<flatbuffers::String> name = 0,
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<EnumVal>>> values = 0,
- bool is_union = false,
- flatbuffers::Offset<Type> underlying_type = 0,
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<KeyValue>>> attributes = 0,
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> documentation = 0) {
- EnumBuilder builder_(_fbb);
- builder_.add_documentation(documentation);
- builder_.add_attributes(attributes);
- builder_.add_underlying_type(underlying_type);
- builder_.add_values(values);
- builder_.add_name(name);
- builder_.add_is_union(is_union);
- return builder_.Finish();
-}
-
-inline flatbuffers::Offset<Enum> CreateEnumDirect(
- flatbuffers::FlatBufferBuilder &_fbb,
- const char *name = nullptr,
- const std::vector<flatbuffers::Offset<EnumVal>> *values = nullptr,
- bool is_union = false,
- flatbuffers::Offset<Type> underlying_type = 0,
- const std::vector<flatbuffers::Offset<KeyValue>> *attributes = nullptr,
- const std::vector<flatbuffers::Offset<flatbuffers::String>> *documentation = nullptr) {
- return reflection::CreateEnum(
- _fbb,
- name ? _fbb.CreateString(name) : 0,
- values ? _fbb.CreateVector<flatbuffers::Offset<EnumVal>>(*values) : 0,
- is_union,
- underlying_type,
- attributes ? _fbb.CreateVector<flatbuffers::Offset<KeyValue>>(*attributes) : 0,
- documentation ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*documentation) : 0);
-}
-
-struct Field FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum {
- VT_NAME = 4,
- VT_TYPE = 6,
- VT_ID = 8,
- VT_OFFSET = 10,
- VT_DEFAULT_INTEGER = 12,
- VT_DEFAULT_REAL = 14,
- VT_DEPRECATED = 16,
- VT_REQUIRED = 18,
- VT_KEY = 20,
- VT_ATTRIBUTES = 22,
- VT_DOCUMENTATION = 24
- };
- const flatbuffers::String *name() const {
- return GetPointer<const flatbuffers::String *>(VT_NAME);
- }
- bool KeyCompareLessThan(const Field *o) const {
- return *name() < *o->name();
- }
- int KeyCompareWithValue(const char *val) const {
- return strcmp(name()->c_str(), val);
- }
- const Type *type() const {
- return GetPointer<const Type *>(VT_TYPE);
- }
- uint16_t id() const {
- return GetField<uint16_t>(VT_ID, 0);
- }
- uint16_t offset() const {
- return GetField<uint16_t>(VT_OFFSET, 0);
- }
- int64_t default_integer() const {
- return GetField<int64_t>(VT_DEFAULT_INTEGER, 0);
- }
- double default_real() const {
- return GetField<double>(VT_DEFAULT_REAL, 0.0);
- }
- bool deprecated() const {
- return GetField<uint8_t>(VT_DEPRECATED, 0) != 0;
- }
- bool required() const {
- return GetField<uint8_t>(VT_REQUIRED, 0) != 0;
- }
- bool key() const {
- return GetField<uint8_t>(VT_KEY, 0) != 0;
- }
- const flatbuffers::Vector<flatbuffers::Offset<KeyValue>> *attributes() const {
- return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<KeyValue>> *>(VT_ATTRIBUTES);
- }
- const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *documentation() const {
- return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_DOCUMENTATION);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyFieldRequired<flatbuffers::uoffset_t>(verifier, VT_NAME) &&
- verifier.Verify(name()) &&
- VerifyFieldRequired<flatbuffers::uoffset_t>(verifier, VT_TYPE) &&
- verifier.VerifyTable(type()) &&
- VerifyField<uint16_t>(verifier, VT_ID) &&
- VerifyField<uint16_t>(verifier, VT_OFFSET) &&
- VerifyField<int64_t>(verifier, VT_DEFAULT_INTEGER) &&
- VerifyField<double>(verifier, VT_DEFAULT_REAL) &&
- VerifyField<uint8_t>(verifier, VT_DEPRECATED) &&
- VerifyField<uint8_t>(verifier, VT_REQUIRED) &&
- VerifyField<uint8_t>(verifier, VT_KEY) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_ATTRIBUTES) &&
- verifier.Verify(attributes()) &&
- verifier.VerifyVectorOfTables(attributes()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_DOCUMENTATION) &&
- verifier.Verify(documentation()) &&
- verifier.VerifyVectorOfStrings(documentation()) &&
- verifier.EndTable();
- }
-};
-
-struct FieldBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_name(flatbuffers::Offset<flatbuffers::String> name) {
- fbb_.AddOffset(Field::VT_NAME, name);
- }
- void add_type(flatbuffers::Offset<Type> type) {
- fbb_.AddOffset(Field::VT_TYPE, type);
- }
- void add_id(uint16_t id) {
- fbb_.AddElement<uint16_t>(Field::VT_ID, id, 0);
- }
- void add_offset(uint16_t offset) {
- fbb_.AddElement<uint16_t>(Field::VT_OFFSET, offset, 0);
- }
- void add_default_integer(int64_t default_integer) {
- fbb_.AddElement<int64_t>(Field::VT_DEFAULT_INTEGER, default_integer, 0);
- }
- void add_default_real(double default_real) {
- fbb_.AddElement<double>(Field::VT_DEFAULT_REAL, default_real, 0.0);
- }
- void add_deprecated(bool deprecated) {
- fbb_.AddElement<uint8_t>(Field::VT_DEPRECATED, static_cast<uint8_t>(deprecated), 0);
- }
- void add_required(bool required) {
- fbb_.AddElement<uint8_t>(Field::VT_REQUIRED, static_cast<uint8_t>(required), 0);
- }
- void add_key(bool key) {
- fbb_.AddElement<uint8_t>(Field::VT_KEY, static_cast<uint8_t>(key), 0);
- }
- void add_attributes(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<KeyValue>>> attributes) {
- fbb_.AddOffset(Field::VT_ATTRIBUTES, attributes);
- }
- void add_documentation(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> documentation) {
- fbb_.AddOffset(Field::VT_DOCUMENTATION, documentation);
- }
- FieldBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- FieldBuilder &operator=(const FieldBuilder &);
- flatbuffers::Offset<Field> Finish() {
- const auto end = fbb_.EndTable(start_, 11);
- auto o = flatbuffers::Offset<Field>(end);
- fbb_.Required(o, Field::VT_NAME);
- fbb_.Required(o, Field::VT_TYPE);
- return o;
- }
-};
-
-inline flatbuffers::Offset<Field> CreateField(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<flatbuffers::String> name = 0,
- flatbuffers::Offset<Type> type = 0,
- uint16_t id = 0,
- uint16_t offset = 0,
- int64_t default_integer = 0,
- double default_real = 0.0,
- bool deprecated = false,
- bool required = false,
- bool key = false,
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<KeyValue>>> attributes = 0,
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> documentation = 0) {
- FieldBuilder builder_(_fbb);
- builder_.add_default_real(default_real);
- builder_.add_default_integer(default_integer);
- builder_.add_documentation(documentation);
- builder_.add_attributes(attributes);
- builder_.add_type(type);
- builder_.add_name(name);
- builder_.add_offset(offset);
- builder_.add_id(id);
- builder_.add_key(key);
- builder_.add_required(required);
- builder_.add_deprecated(deprecated);
- return builder_.Finish();
-}
-
-inline flatbuffers::Offset<Field> CreateFieldDirect(
- flatbuffers::FlatBufferBuilder &_fbb,
- const char *name = nullptr,
- flatbuffers::Offset<Type> type = 0,
- uint16_t id = 0,
- uint16_t offset = 0,
- int64_t default_integer = 0,
- double default_real = 0.0,
- bool deprecated = false,
- bool required = false,
- bool key = false,
- const std::vector<flatbuffers::Offset<KeyValue>> *attributes = nullptr,
- const std::vector<flatbuffers::Offset<flatbuffers::String>> *documentation = nullptr) {
- return reflection::CreateField(
- _fbb,
- name ? _fbb.CreateString(name) : 0,
- type,
- id,
- offset,
- default_integer,
- default_real,
- deprecated,
- required,
- key,
- attributes ? _fbb.CreateVector<flatbuffers::Offset<KeyValue>>(*attributes) : 0,
- documentation ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*documentation) : 0);
-}
-
-struct Object FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum {
- VT_NAME = 4,
- VT_FIELDS = 6,
- VT_IS_STRUCT = 8,
- VT_MINALIGN = 10,
- VT_BYTESIZE = 12,
- VT_ATTRIBUTES = 14,
- VT_DOCUMENTATION = 16
- };
- const flatbuffers::String *name() const {
- return GetPointer<const flatbuffers::String *>(VT_NAME);
- }
- bool KeyCompareLessThan(const Object *o) const {
- return *name() < *o->name();
- }
- int KeyCompareWithValue(const char *val) const {
- return strcmp(name()->c_str(), val);
- }
- const flatbuffers::Vector<flatbuffers::Offset<Field>> *fields() const {
- return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<Field>> *>(VT_FIELDS);
- }
- bool is_struct() const {
- return GetField<uint8_t>(VT_IS_STRUCT, 0) != 0;
- }
- int32_t minalign() const {
- return GetField<int32_t>(VT_MINALIGN, 0);
- }
- int32_t bytesize() const {
- return GetField<int32_t>(VT_BYTESIZE, 0);
- }
- const flatbuffers::Vector<flatbuffers::Offset<KeyValue>> *attributes() const {
- return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<KeyValue>> *>(VT_ATTRIBUTES);
- }
- const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *documentation() const {
- return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_DOCUMENTATION);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyFieldRequired<flatbuffers::uoffset_t>(verifier, VT_NAME) &&
- verifier.Verify(name()) &&
- VerifyFieldRequired<flatbuffers::uoffset_t>(verifier, VT_FIELDS) &&
- verifier.Verify(fields()) &&
- verifier.VerifyVectorOfTables(fields()) &&
- VerifyField<uint8_t>(verifier, VT_IS_STRUCT) &&
- VerifyField<int32_t>(verifier, VT_MINALIGN) &&
- VerifyField<int32_t>(verifier, VT_BYTESIZE) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_ATTRIBUTES) &&
- verifier.Verify(attributes()) &&
- verifier.VerifyVectorOfTables(attributes()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_DOCUMENTATION) &&
- verifier.Verify(documentation()) &&
- verifier.VerifyVectorOfStrings(documentation()) &&
- verifier.EndTable();
- }
-};
-
-struct ObjectBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_name(flatbuffers::Offset<flatbuffers::String> name) {
- fbb_.AddOffset(Object::VT_NAME, name);
- }
- void add_fields(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Field>>> fields) {
- fbb_.AddOffset(Object::VT_FIELDS, fields);
- }
- void add_is_struct(bool is_struct) {
- fbb_.AddElement<uint8_t>(Object::VT_IS_STRUCT, static_cast<uint8_t>(is_struct), 0);
- }
- void add_minalign(int32_t minalign) {
- fbb_.AddElement<int32_t>(Object::VT_MINALIGN, minalign, 0);
- }
- void add_bytesize(int32_t bytesize) {
- fbb_.AddElement<int32_t>(Object::VT_BYTESIZE, bytesize, 0);
- }
- void add_attributes(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<KeyValue>>> attributes) {
- fbb_.AddOffset(Object::VT_ATTRIBUTES, attributes);
- }
- void add_documentation(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> documentation) {
- fbb_.AddOffset(Object::VT_DOCUMENTATION, documentation);
- }
- ObjectBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- ObjectBuilder &operator=(const ObjectBuilder &);
- flatbuffers::Offset<Object> Finish() {
- const auto end = fbb_.EndTable(start_, 7);
- auto o = flatbuffers::Offset<Object>(end);
- fbb_.Required(o, Object::VT_NAME);
- fbb_.Required(o, Object::VT_FIELDS);
- return o;
- }
-};
-
-inline flatbuffers::Offset<Object> CreateObject(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<flatbuffers::String> name = 0,
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Field>>> fields = 0,
- bool is_struct = false,
- int32_t minalign = 0,
- int32_t bytesize = 0,
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<KeyValue>>> attributes = 0,
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> documentation = 0) {
- ObjectBuilder builder_(_fbb);
- builder_.add_documentation(documentation);
- builder_.add_attributes(attributes);
- builder_.add_bytesize(bytesize);
- builder_.add_minalign(minalign);
- builder_.add_fields(fields);
- builder_.add_name(name);
- builder_.add_is_struct(is_struct);
- return builder_.Finish();
-}
-
-inline flatbuffers::Offset<Object> CreateObjectDirect(
- flatbuffers::FlatBufferBuilder &_fbb,
- const char *name = nullptr,
- const std::vector<flatbuffers::Offset<Field>> *fields = nullptr,
- bool is_struct = false,
- int32_t minalign = 0,
- int32_t bytesize = 0,
- const std::vector<flatbuffers::Offset<KeyValue>> *attributes = nullptr,
- const std::vector<flatbuffers::Offset<flatbuffers::String>> *documentation = nullptr) {
- return reflection::CreateObject(
- _fbb,
- name ? _fbb.CreateString(name) : 0,
- fields ? _fbb.CreateVector<flatbuffers::Offset<Field>>(*fields) : 0,
- is_struct,
- minalign,
- bytesize,
- attributes ? _fbb.CreateVector<flatbuffers::Offset<KeyValue>>(*attributes) : 0,
- documentation ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*documentation) : 0);
-}
-
-struct Schema FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum {
- VT_OBJECTS = 4,
- VT_ENUMS = 6,
- VT_FILE_IDENT = 8,
- VT_FILE_EXT = 10,
- VT_ROOT_TABLE = 12
- };
- const flatbuffers::Vector<flatbuffers::Offset<Object>> *objects() const {
- return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<Object>> *>(VT_OBJECTS);
- }
- const flatbuffers::Vector<flatbuffers::Offset<Enum>> *enums() const {
- return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<Enum>> *>(VT_ENUMS);
- }
- const flatbuffers::String *file_ident() const {
- return GetPointer<const flatbuffers::String *>(VT_FILE_IDENT);
- }
- const flatbuffers::String *file_ext() const {
- return GetPointer<const flatbuffers::String *>(VT_FILE_EXT);
- }
- const Object *root_table() const {
- return GetPointer<const Object *>(VT_ROOT_TABLE);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyFieldRequired<flatbuffers::uoffset_t>(verifier, VT_OBJECTS) &&
- verifier.Verify(objects()) &&
- verifier.VerifyVectorOfTables(objects()) &&
- VerifyFieldRequired<flatbuffers::uoffset_t>(verifier, VT_ENUMS) &&
- verifier.Verify(enums()) &&
- verifier.VerifyVectorOfTables(enums()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_FILE_IDENT) &&
- verifier.Verify(file_ident()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_FILE_EXT) &&
- verifier.Verify(file_ext()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_ROOT_TABLE) &&
- verifier.VerifyTable(root_table()) &&
- verifier.EndTable();
- }
-};
-
-struct SchemaBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_objects(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Object>>> objects) {
- fbb_.AddOffset(Schema::VT_OBJECTS, objects);
- }
- void add_enums(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Enum>>> enums) {
- fbb_.AddOffset(Schema::VT_ENUMS, enums);
- }
- void add_file_ident(flatbuffers::Offset<flatbuffers::String> file_ident) {
- fbb_.AddOffset(Schema::VT_FILE_IDENT, file_ident);
- }
- void add_file_ext(flatbuffers::Offset<flatbuffers::String> file_ext) {
- fbb_.AddOffset(Schema::VT_FILE_EXT, file_ext);
- }
- void add_root_table(flatbuffers::Offset<Object> root_table) {
- fbb_.AddOffset(Schema::VT_ROOT_TABLE, root_table);
- }
- SchemaBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- SchemaBuilder &operator=(const SchemaBuilder &);
- flatbuffers::Offset<Schema> Finish() {
- const auto end = fbb_.EndTable(start_, 5);
- auto o = flatbuffers::Offset<Schema>(end);
- fbb_.Required(o, Schema::VT_OBJECTS);
- fbb_.Required(o, Schema::VT_ENUMS);
- return o;
- }
-};
-
-inline flatbuffers::Offset<Schema> CreateSchema(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Object>>> objects = 0,
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Enum>>> enums = 0,
- flatbuffers::Offset<flatbuffers::String> file_ident = 0,
- flatbuffers::Offset<flatbuffers::String> file_ext = 0,
- flatbuffers::Offset<Object> root_table = 0) {
- SchemaBuilder builder_(_fbb);
- builder_.add_root_table(root_table);
- builder_.add_file_ext(file_ext);
- builder_.add_file_ident(file_ident);
- builder_.add_enums(enums);
- builder_.add_objects(objects);
- return builder_.Finish();
-}
-
-inline flatbuffers::Offset<Schema> CreateSchemaDirect(
- flatbuffers::FlatBufferBuilder &_fbb,
- const std::vector<flatbuffers::Offset<Object>> *objects = nullptr,
- const std::vector<flatbuffers::Offset<Enum>> *enums = nullptr,
- const char *file_ident = nullptr,
- const char *file_ext = nullptr,
- flatbuffers::Offset<Object> root_table = 0) {
- return reflection::CreateSchema(
- _fbb,
- objects ? _fbb.CreateVector<flatbuffers::Offset<Object>>(*objects) : 0,
- enums ? _fbb.CreateVector<flatbuffers::Offset<Enum>>(*enums) : 0,
- file_ident ? _fbb.CreateString(file_ident) : 0,
- file_ext ? _fbb.CreateString(file_ext) : 0,
- root_table);
-}
-
-inline const reflection::Schema *GetSchema(const void *buf) {
- return flatbuffers::GetRoot<reflection::Schema>(buf);
-}
-
-inline const char *SchemaIdentifier() {
- return "BFBS";
-}
-
-inline bool SchemaBufferHasIdentifier(const void *buf) {
- return flatbuffers::BufferHasIdentifier(
- buf, SchemaIdentifier());
-}
-
-inline bool VerifySchemaBuffer(
- flatbuffers::Verifier &verifier) {
- return verifier.VerifyBuffer<reflection::Schema>(SchemaIdentifier());
-}
-
-inline const char *SchemaExtension() {
- return "bfbs";
-}
-
-inline void FinishSchemaBuffer(
- flatbuffers::FlatBufferBuilder &fbb,
- flatbuffers::Offset<reflection::Schema> root) {
- fbb.Finish(root, SchemaIdentifier());
-}
-
-} // namespace reflection
-
-#endif // FLATBUFFERS_GENERATED_REFLECTION_REFLECTION_H_
diff --git a/third_party/flatbuffers/include/flatbuffers/util.h b/third_party/flatbuffers/include/flatbuffers/util.h
deleted file mode 100644
index 870d2b6..0000000
--- a/third_party/flatbuffers/include/flatbuffers/util.h
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef FLATBUFFERS_UTIL_H_
-#define FLATBUFFERS_UTIL_H_
-
-#include <fstream>
-#include <iomanip>
-#include <string>
-#include <sstream>
-#include <stdint.h>
-#include <stdlib.h>
-#include <assert.h>
-#ifdef _WIN32
-#ifndef WIN32_LEAN_AND_MEAN
- #define WIN32_LEAN_AND_MEAN
-#endif
-#ifndef NOMINMAX
- #define NOMINMAX
-#endif
-#include <windows.h>
-#include <winbase.h>
-#include <direct.h>
-#else
-#include <limits.h>
-#endif
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include "flatbuffers/flatbuffers.h"
-
-
-namespace flatbuffers {
-
-// Convert an integer or floating point value to a string.
-// In contrast to std::stringstream, "char" values are
-// converted to a string of digits, and we don't use scientific notation.
-template<typename T> std::string NumToString(T t) {
- std::stringstream ss;
- ss << t;
- return ss.str();
-}
-// Avoid char types used as character data.
-template<> inline std::string NumToString<signed char>(signed char t) {
- return NumToString(static_cast<int>(t));
-}
-template<> inline std::string NumToString<unsigned char>(unsigned char t) {
- return NumToString(static_cast<int>(t));
-}
-
-// Special versions for floats/doubles.
-template<> inline std::string NumToString<double>(double t) {
- // to_string() prints different numbers of digits for floats depending on
- // platform and isn't available on Android, so we use stringstream
- std::stringstream ss;
- // Use std::fixed to surpress scientific notation.
- ss << std::fixed << t;
- auto s = ss.str();
- // Sadly, std::fixed turns "1" into "1.00000", so here we undo that.
- auto p = s.find_last_not_of('0');
- if (p != std::string::npos) {
- s.resize(p + 1); // Strip trailing zeroes.
- if (s[s.size() - 1] == '.')
- s.erase(s.size() - 1, 1); // Strip '.' if a whole number.
- }
- return s;
-}
-template<> inline std::string NumToString<float>(float t) {
- return NumToString(static_cast<double>(t));
-}
-
-// Convert an integer value to a hexadecimal string.
-// The returned string length is always xdigits long, prefixed by 0 digits.
-// For example, IntToStringHex(0x23, 8) returns the string "00000023".
-inline std::string IntToStringHex(int i, int xdigits) {
- std::stringstream ss;
- ss << std::setw(xdigits)
- << std::setfill('0')
- << std::hex
- << std::uppercase
- << i;
- return ss.str();
-}
-
-// Portable implementation of strtoll().
-inline int64_t StringToInt(const char *str, char **endptr = nullptr,
- int base = 10) {
- #ifdef _MSC_VER
- return _strtoi64(str, endptr, base);
- #else
- return strtoll(str, endptr, base);
- #endif
-}
-
-// Portable implementation of strtoull().
-inline uint64_t StringToUInt(const char *str, char **endptr = nullptr,
- int base = 10) {
- #ifdef _MSC_VER
- return _strtoui64(str, endptr, base);
- #else
- return strtoull(str, endptr, base);
- #endif
-}
-
-typedef bool (*LoadFileFunction)(const char *filename, bool binary,
- std::string *dest);
-typedef bool (*FileExistsFunction)(const char *filename);
-
-LoadFileFunction SetLoadFileFunction(LoadFileFunction load_file_function);
-
-FileExistsFunction SetFileExistsFunction(FileExistsFunction
- file_exists_function);
-
-
-// Check if file "name" exists.
-bool FileExists(const char *name);
-
-// Check if "name" exists and it is also a directory.
-bool DirExists(const char *name);
-
-// Load file "name" into "buf" returning true if successful
-// false otherwise. If "binary" is false data is read
-// using ifstream's text mode, otherwise data is read with
-// no transcoding.
-bool LoadFile(const char *name, bool binary, std::string *buf);
-
-// Save data "buf" of length "len" bytes into a file
-// "name" returning true if successful, false otherwise.
-// If "binary" is false data is written using ifstream's
-// text mode, otherwise data is written with no
-// transcoding.
-inline bool SaveFile(const char *name, const char *buf, size_t len,
- bool binary) {
- std::ofstream ofs(name, binary ? std::ofstream::binary : std::ofstream::out);
- if (!ofs.is_open()) return false;
- ofs.write(buf, len);
- return !ofs.bad();
-}
-
-// Save data "buf" into file "name" returning true if
-// successful, false otherwise. If "binary" is false
-// data is written using ifstream's text mode, otherwise
-// data is written with no transcoding.
-inline bool SaveFile(const char *name, const std::string &buf, bool binary) {
- return SaveFile(name, buf.c_str(), buf.size(), binary);
-}
-
-// Functionality for minimalistic portable path handling:
-
-static const char kPosixPathSeparator = '/';
-#ifdef _WIN32
-static const char kPathSeparator = '\\';
-static const char *PathSeparatorSet = "\\/"; // Intentionally no ':'
-#else
-static const char kPathSeparator = kPosixPathSeparator;
-static const char *PathSeparatorSet = "/";
-#endif // _WIN32
-
-// Returns the path with the extension, if any, removed.
-inline std::string StripExtension(const std::string &filepath) {
- size_t i = filepath.find_last_of(".");
- return i != std::string::npos ? filepath.substr(0, i) : filepath;
-}
-
-// Returns the extension, if any.
-inline std::string GetExtension(const std::string &filepath) {
- size_t i = filepath.find_last_of(".");
- return i != std::string::npos ? filepath.substr(i + 1) : "";
-}
-
-// Return the last component of the path, after the last separator.
-inline std::string StripPath(const std::string &filepath) {
- size_t i = filepath.find_last_of(PathSeparatorSet);
- return i != std::string::npos ? filepath.substr(i + 1) : filepath;
-}
-
-// Strip the last component of the path + separator.
-inline std::string StripFileName(const std::string &filepath) {
- size_t i = filepath.find_last_of(PathSeparatorSet);
- return i != std::string::npos ? filepath.substr(0, i) : "";
-}
-
-// Concatenates a path with a filename, regardless of wether the path
-// ends in a separator or not.
-inline std::string ConCatPathFileName(const std::string &path,
- const std::string &filename) {
- std::string filepath = path;
- if (path.length() && path[path.size() - 1] != kPathSeparator &&
- path[path.size() - 1] != kPosixPathSeparator)
- filepath += kPathSeparator;
- filepath += filename;
- return filepath;
-}
-
-// This function ensure a directory exists, by recursively
-// creating dirs for any parts of the path that don't exist yet.
-inline void EnsureDirExists(const std::string &filepath) {
- auto parent = StripFileName(filepath);
- if (parent.length()) EnsureDirExists(parent);
- #ifdef _WIN32
- (void)_mkdir(filepath.c_str());
- #else
- mkdir(filepath.c_str(), S_IRWXU|S_IRGRP|S_IXGRP);
- #endif
-}
-
-// Obtains the absolute path from any other path.
-// Returns the input path if the absolute path couldn't be resolved.
-inline std::string AbsolutePath(const std::string &filepath) {
- #ifdef FLATBUFFERS_NO_ABSOLUTE_PATH_RESOLUTION
- return filepath;
- #else
- #ifdef _WIN32
- char abs_path[MAX_PATH];
- return GetFullPathNameA(filepath.c_str(), MAX_PATH, abs_path, nullptr)
- #else
- char abs_path[PATH_MAX];
- return realpath(filepath.c_str(), abs_path)
- #endif
- ? abs_path
- : filepath;
- #endif // FLATBUFFERS_NO_ABSOLUTE_PATH_RESOLUTION
-}
-
-// To and from UTF-8 unicode conversion functions
-
-// Convert a unicode code point into a UTF-8 representation by appending it
-// to a string. Returns the number of bytes generated.
-inline int ToUTF8(uint32_t ucc, std::string *out) {
- assert(!(ucc & 0x80000000)); // Top bit can't be set.
- // 6 possible encodings: http://en.wikipedia.org/wiki/UTF-8
- for (int i = 0; i < 6; i++) {
- // Max bits this encoding can represent.
- uint32_t max_bits = 6 + i * 5 + static_cast<int>(!i);
- if (ucc < (1u << max_bits)) { // does it fit?
- // Remaining bits not encoded in the first byte, store 6 bits each
- uint32_t remain_bits = i * 6;
- // Store first byte:
- (*out) += static_cast<char>((0xFE << (max_bits - remain_bits)) |
- (ucc >> remain_bits));
- // Store remaining bytes:
- for (int j = i - 1; j >= 0; j--) {
- (*out) += static_cast<char>(((ucc >> (j * 6)) & 0x3F) | 0x80);
- }
- return i + 1; // Return the number of bytes added.
- }
- }
- assert(0); // Impossible to arrive here.
- return -1;
-}
-
-// Converts whatever prefix of the incoming string corresponds to a valid
-// UTF-8 sequence into a unicode code. The incoming pointer will have been
-// advanced past all bytes parsed.
-// returns -1 upon corrupt UTF-8 encoding (ignore the incoming pointer in
-// this case).
-inline int FromUTF8(const char **in) {
- int len = 0;
- // Count leading 1 bits.
- for (int mask = 0x80; mask >= 0x04; mask >>= 1) {
- if (**in & mask) {
- len++;
- } else {
- break;
- }
- }
- if ((**in << len) & 0x80) return -1; // Bit after leading 1's must be 0.
- if (!len) return *(*in)++;
- // UTF-8 encoded values with a length are between 2 and 4 bytes.
- if (len < 2 || len > 4) {
- return -1;
- }
- // Grab initial bits of the code.
- int ucc = *(*in)++ & ((1 << (7 - len)) - 1);
- for (int i = 0; i < len - 1; i++) {
- if ((**in & 0xC0) != 0x80) return -1; // Upper bits must 1 0.
- ucc <<= 6;
- ucc |= *(*in)++ & 0x3F; // Grab 6 more bits of the code.
- }
- // UTF-8 cannot encode values between 0xD800 and 0xDFFF (reserved for
- // UTF-16 surrogate pairs).
- if (ucc >= 0xD800 && ucc <= 0xDFFF) {
- return -1;
- }
- // UTF-8 must represent code points in their shortest possible encoding.
- switch (len) {
- case 2:
- // Two bytes of UTF-8 can represent code points from U+0080 to U+07FF.
- if (ucc < 0x0080 || ucc > 0x07FF) {
- return -1;
- }
- break;
- case 3:
- // Three bytes of UTF-8 can represent code points from U+0800 to U+FFFF.
- if (ucc < 0x0800 || ucc > 0xFFFF) {
- return -1;
- }
- break;
- case 4:
- // Four bytes of UTF-8 can represent code points from U+10000 to U+10FFFF.
- if (ucc < 0x10000 || ucc > 0x10FFFF) {
- return -1;
- }
- break;
- }
- return ucc;
-}
-
-// Wraps a string to a maximum length, inserting new lines where necessary. Any
-// existing whitespace will be collapsed down to a single space. A prefix or
-// suffix can be provided, which will be inserted before or after a wrapped
-// line, respectively.
-inline std::string WordWrap(const std::string in, size_t max_length,
- const std::string wrapped_line_prefix,
- const std::string wrapped_line_suffix) {
- std::istringstream in_stream(in);
- std::string wrapped, line, word;
-
- in_stream >> word;
- line = word;
-
- while (in_stream >> word) {
- if ((line.length() + 1 + word.length() + wrapped_line_suffix.length()) <
- max_length) {
- line += " " + word;
- } else {
- wrapped += line + wrapped_line_suffix + "\n";
- line = wrapped_line_prefix + word;
- }
- }
- wrapped += line;
-
- return wrapped;
-}
-
-} // namespace flatbuffers
-
-#endif // FLATBUFFERS_UTIL_H_
diff --git a/third_party/flatbuffers/java/com/google/flatbuffers/Constants.java b/third_party/flatbuffers/java/com/google/flatbuffers/Constants.java
deleted file mode 100644
index f590631..0000000
--- a/third_party/flatbuffers/java/com/google/flatbuffers/Constants.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.flatbuffers;
-
-/// @cond FLATBUFFERS_INTERNAL
-
-/**
- * Class that holds shared constants
- */
-public class Constants {
- // Java doesn't seem to have these.
- /** The number of bytes in an `byte`. */
- static final int SIZEOF_BYTE = 1;
- /** The number of bytes in a `short`. */
- static final int SIZEOF_SHORT = 2;
- /** The number of bytes in an `int`. */
- static final int SIZEOF_INT = 4;
- /** The number of bytes in an `float`. */
- static final int SIZEOF_FLOAT = 4;
- /** The number of bytes in an `long`. */
- static final int SIZEOF_LONG = 8;
- /** The number of bytes in an `double`. */
- static final int SIZEOF_DOUBLE = 8;
- /** The number of bytes in a file identifier. */
- static final int FILE_IDENTIFIER_LENGTH = 4;
-}
-
-/// @endcond
diff --git a/third_party/flatbuffers/java/com/google/flatbuffers/FlatBufferBuilder.java b/third_party/flatbuffers/java/com/google/flatbuffers/FlatBufferBuilder.java
deleted file mode 100644
index a138ed5..0000000
--- a/third_party/flatbuffers/java/com/google/flatbuffers/FlatBufferBuilder.java
+++ /dev/null
@@ -1,858 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.flatbuffers;
-
-import static com.google.flatbuffers.Constants.*;
-
-import java.nio.CharBuffer;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CoderResult;
-import java.util.Arrays;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.nio.charset.Charset;
-
-/// @file
-/// @addtogroup flatbuffers_java_api
-/// @{
-
-/**
- * Class that helps you build a FlatBuffer. See the section
- * "Use in Java/C#" in the main FlatBuffers documentation.
- */
-public class FlatBufferBuilder {
- /// @cond FLATBUFFERS_INTERNAL
- ByteBuffer bb; // Where we construct the FlatBuffer.
- int space; // Remaining space in the ByteBuffer.
- static final Charset utf8charset = Charset.forName("UTF-8"); // The UTF-8 character set used by FlatBuffers.
- int minalign = 1; // Minimum alignment encountered so far.
- int[] vtable = null; // The vtable for the current table.
- int vtable_in_use = 0; // The amount of fields we're actually using.
- boolean nested = false; // Whether we are currently serializing a table.
- boolean finished = false; // Whether the buffer is finished.
- int object_start; // Starting offset of the current struct/table.
- int[] vtables = new int[16]; // List of offsets of all vtables.
- int num_vtables = 0; // Number of entries in `vtables` in use.
- int vector_num_elems = 0; // For the current vector being built.
- boolean force_defaults = false; // False omits default values from the serialized data.
- CharsetEncoder encoder = utf8charset.newEncoder();
- ByteBuffer dst;
- /// @endcond
-
- /**
- * Start with a buffer of size `initial_size`, then grow as required.
- *
- * @param initial_size The initial size of the internal buffer to use.
- */
- public FlatBufferBuilder(int initial_size) {
- if (initial_size <= 0) initial_size = 1;
- space = initial_size;
- bb = newByteBuffer(initial_size);
- }
-
- /**
- * Start with a buffer of 1KiB, then grow as required.
- */
- public FlatBufferBuilder() {
- this(1024);
- }
-
- /**
- * Alternative constructor allowing reuse of {@link ByteBuffer}s. The builder
- * can still grow the buffer as necessary. User classes should make sure
- * to call {@link #dataBuffer()} to obtain the resulting encoded message.
- *
- * @param existing_bb The byte buffer to reuse.
- */
- public FlatBufferBuilder(ByteBuffer existing_bb) {
- init(existing_bb);
- }
-
- /**
- * Alternative initializer that allows reusing this object on an existing
- * `ByteBuffer`. This method resets the builder's internal state, but keeps
- * objects that have been allocated for temporary storage.
- *
- * @param existing_bb The byte buffer to reuse.
- * @return Returns `this`.
- */
- public FlatBufferBuilder init(ByteBuffer existing_bb){
- bb = existing_bb;
- bb.clear();
- bb.order(ByteOrder.LITTLE_ENDIAN);
- minalign = 1;
- space = bb.capacity();
- vtable_in_use = 0;
- nested = false;
- finished = false;
- object_start = 0;
- num_vtables = 0;
- vector_num_elems = 0;
- return this;
- }
-
- /**
- * Reset the FlatBufferBuilder by purging all data that it holds.
- */
- public void clear(){
- space = bb.capacity();
- bb.clear();
- minalign = 1;
- while(vtable_in_use > 0) vtable[--vtable_in_use] = 0;
- vtable_in_use = 0;
- nested = false;
- finished = false;
- object_start = 0;
- num_vtables = 0;
- vector_num_elems = 0;
- }
-
- /// @cond FLATBUFFERS_INTERNAL
- /**
- * Create a `ByteBuffer` with a given capacity.
- *
- * @param capacity The size of the `ByteBuffer` to allocate.
- * @return Returns the new `ByteBuffer` that was allocated.
- */
- static ByteBuffer newByteBuffer(int capacity) {
- ByteBuffer newbb = ByteBuffer.allocate(capacity);
- newbb.order(ByteOrder.LITTLE_ENDIAN);
- return newbb;
- }
-
- /**
- * Doubles the size of the backing {@link ByteBuffer} and copies the old data towards the
- * end of the new buffer (since we build the buffer backwards).
- *
- * @param bb The current buffer with the existing data.
- * @return A new byte buffer with the old data copied copied to it. The data is
- * located at the end of the buffer.
- */
- static ByteBuffer growByteBuffer(ByteBuffer bb) {
- int old_buf_size = bb.capacity();
- if ((old_buf_size & 0xC0000000) != 0) // Ensure we don't grow beyond what fits in an int.
- throw new AssertionError("FlatBuffers: cannot grow buffer beyond 2 gigabytes.");
- int new_buf_size = old_buf_size << 1;
- bb.position(0);
- ByteBuffer nbb = newByteBuffer(new_buf_size);
- nbb.position(new_buf_size - old_buf_size);
- nbb.put(bb);
- return nbb;
- }
-
- /**
- * Offset relative to the end of the buffer.
- *
- * @return Offset relative to the end of the buffer.
- */
- public int offset() {
- return bb.capacity() - space;
- }
-
- /**
- * Add zero valued bytes to prepare a new entry to be added.
- *
- * @param byte_size Number of bytes to add.
- */
- public void pad(int byte_size) {
- for (int i = 0; i < byte_size; i++) bb.put(--space, (byte)0);
- }
-
- /**
- * Prepare to write an element of `size` after `additional_bytes`
- * have been written, e.g. if you write a string, you need to align such
- * the int length field is aligned to {@link com.google.flatbuffers.Constants#SIZEOF_INT}, and
- * the string data follows it directly. If all you need to do is alignment, `additional_bytes`
- * will be 0.
- *
- * @param size This is the of the new element to write.
- * @param additional_bytes The padding size.
- */
- public void prep(int size, int additional_bytes) {
- // Track the biggest thing we've ever aligned to.
- if (size > minalign) minalign = size;
- // Find the amount of alignment needed such that `size` is properly
- // aligned after `additional_bytes`
- int align_size = ((~(bb.capacity() - space + additional_bytes)) + 1) & (size - 1);
- // Reallocate the buffer if needed.
- while (space < align_size + size + additional_bytes) {
- int old_buf_size = bb.capacity();
- bb = growByteBuffer(bb);
- space += bb.capacity() - old_buf_size;
- }
- pad(align_size);
- }
-
- /**
- * Add a `boolean` to the buffer, backwards from the current location. Doesn't align nor
- * check for space.
- *
- * @param x A `boolean` to put into the buffer.
- */
- public void putBoolean(boolean x) { bb.put (space -= Constants.SIZEOF_BYTE, (byte)(x ? 1 : 0)); }
-
- /**
- * Add a `byte` to the buffer, backwards from the current location. Doesn't align nor
- * check for space.
- *
- * @param x A `byte` to put into the buffer.
- */
- public void putByte (byte x) { bb.put (space -= Constants.SIZEOF_BYTE, x); }
-
- /**
- * Add a `short` to the buffer, backwards from the current location. Doesn't align nor
- * check for space.
- *
- * @param x A `short` to put into the buffer.
- */
- public void putShort (short x) { bb.putShort (space -= Constants.SIZEOF_SHORT, x); }
-
- /**
- * Add an `int` to the buffer, backwards from the current location. Doesn't align nor
- * check for space.
- *
- * @param x An `int` to put into the buffer.
- */
- public void putInt (int x) { bb.putInt (space -= Constants.SIZEOF_INT, x); }
-
- /**
- * Add a `long` to the buffer, backwards from the current location. Doesn't align nor
- * check for space.
- *
- * @param x A `long` to put into the buffer.
- */
- public void putLong (long x) { bb.putLong (space -= Constants.SIZEOF_LONG, x); }
-
- /**
- * Add a `float` to the buffer, backwards from the current location. Doesn't align nor
- * check for space.
- *
- * @param x A `float` to put into the buffer.
- */
- public void putFloat (float x) { bb.putFloat (space -= Constants.SIZEOF_FLOAT, x); }
-
- /**
- * Add a `double` to the buffer, backwards from the current location. Doesn't align nor
- * check for space.
- *
- * @param x A `double` to put into the buffer.
- */
- public void putDouble (double x) { bb.putDouble(space -= Constants.SIZEOF_DOUBLE, x); }
- /// @endcond
-
- /**
- * Add a `boolean` to the buffer, properly aligned, and grows the buffer (if necessary).
- *
- * @param x A `boolean` to put into the buffer.
- */
- public void addBoolean(boolean x) { prep(Constants.SIZEOF_BYTE, 0); putBoolean(x); }
-
- /**
- * Add a `byte` to the buffer, properly aligned, and grows the buffer (if necessary).
- *
- * @param x A `byte` to put into the buffer.
- */
- public void addByte (byte x) { prep(Constants.SIZEOF_BYTE, 0); putByte (x); }
-
- /**
- * Add a `short` to the buffer, properly aligned, and grows the buffer (if necessary).
- *
- * @param x A `short` to put into the buffer.
- */
- public void addShort (short x) { prep(Constants.SIZEOF_SHORT, 0); putShort (x); }
-
- /**
- * Add an `int` to the buffer, properly aligned, and grows the buffer (if necessary).
- *
- * @param x An `int` to put into the buffer.
- */
- public void addInt (int x) { prep(Constants.SIZEOF_INT, 0); putInt (x); }
-
- /**
- * Add a `long` to the buffer, properly aligned, and grows the buffer (if necessary).
- *
- * @param x A `long` to put into the buffer.
- */
- public void addLong (long x) { prep(Constants.SIZEOF_LONG, 0); putLong (x); }
-
- /**
- * Add a `float` to the buffer, properly aligned, and grows the buffer (if necessary).
- *
- * @param x A `float` to put into the buffer.
- */
- public void addFloat (float x) { prep(Constants.SIZEOF_FLOAT, 0); putFloat (x); }
-
- /**
- * Add a `double` to the buffer, properly aligned, and grows the buffer (if necessary).
- *
- * @param x A `double` to put into the buffer.
- */
- public void addDouble (double x) { prep(Constants.SIZEOF_DOUBLE, 0); putDouble (x); }
-
- /**
- * Adds on offset, relative to where it will be written.
- *
- * @param off The offset to add.
- */
- public void addOffset(int off) {
- prep(SIZEOF_INT, 0); // Ensure alignment is already done.
- assert off <= offset();
- off = offset() - off + SIZEOF_INT;
- putInt(off);
- }
-
- /// @cond FLATBUFFERS_INTERNAL
- /**
- * Start a new array/vector of objects. Users usually will not call
- * this directly. The `FlatBuffers` compiler will create a start/end
- * method for vector types in generated code.
- * <p>
- * The expected sequence of calls is:
- * <ol>
- * <li>Start the array using this method.</li>
- * <li>Call {@link #addOffset(int)} `num_elems` number of times to set
- * the offset of each element in the array.</li>
- * <li>Call {@link #endVector()} to retrieve the offset of the array.</li>
- * </ol>
- * <p>
- * For example, to create an array of strings, do:
- * <pre>{@code
- * // Need 10 strings
- * FlatBufferBuilder builder = new FlatBufferBuilder(existingBuffer);
- * int[] offsets = new int[10];
- *
- * for (int i = 0; i < 10; i++) {
- * offsets[i] = fbb.createString(" " + i);
- * }
- *
- * // Have the strings in the buffer, but don't have a vector.
- * // Add a vector that references the newly created strings:
- * builder.startVector(4, offsets.length, 4);
- *
- * // Add each string to the newly created vector
- * // The strings are added in reverse order since the buffer
- * // is filled in back to front
- * for (int i = offsets.length - 1; i >= 0; i--) {
- * builder.addOffset(offsets[i]);
- * }
- *
- * // Finish off the vector
- * int offsetOfTheVector = fbb.endVector();
- * }</pre>
- *
- * @param elem_size The size of each element in the array.
- * @param num_elems The number of elements in the array.
- * @param alignment The alignment of the array.
- */
- public void startVector(int elem_size, int num_elems, int alignment) {
- notNested();
- vector_num_elems = num_elems;
- prep(SIZEOF_INT, elem_size * num_elems);
- prep(alignment, elem_size * num_elems); // Just in case alignment > int.
- nested = true;
- }
-
- /**
- * Finish off the creation of an array and all its elements. The array
- * must be created with {@link #startVector(int, int, int)}.
- *
- * @return The offset at which the newly created array starts.
- * @see #startVector(int, int, int)
- */
- public int endVector() {
- if (!nested)
- throw new AssertionError("FlatBuffers: endVector called without startVector");
- nested = false;
- putInt(vector_num_elems);
- return offset();
- }
- /// @endcond
-
- /**
- * Create a new array/vector and return a ByteBuffer to be filled later.
- * Call {@link #endVector} after this method to get an offset to the beginning
- * of vector.
- *
- * @param elem_size the size of each element in bytes.
- * @param num_elems number of elements in the vector.
- * @param alignment byte alignment.
- * @return ByteBuffer with position and limit set to the space allocated for the array.
- */
- public ByteBuffer createUnintializedVector(int elem_size, int num_elems, int alignment) {
- int length = elem_size * num_elems;
- startVector(elem_size, num_elems, alignment);
-
- bb.position(space -= length);
-
- // Slice and limit the copy vector to point to the 'array'
- ByteBuffer copy = bb.slice().order(ByteOrder.LITTLE_ENDIAN);
- copy.limit(length);
- return copy;
- }
-
- /**
- * Create a vector of tables.
- *
- * @param offsets Offsets of the tables.
- * @return Returns offset of the vector.
- */
- public int createVectorOfTables(int[] offsets) {
- notNested();
- startVector(Constants.SIZEOF_INT, offsets.length, Constants.SIZEOF_INT);
- for(int i = offsets.length - 1; i >= 0; i--) addOffset(offsets[i]);
- return endVector();
- }
-
- /**
- * Create a vector of sorted by the key tables.
- *
- * @param obj Instance of the table subclass.
- * @param offsets Offsets of the tables.
- * @return Returns offset of the sorted vector.
- */
- public <T extends Table> int createSortedVectorOfTables(T obj, int[] offsets) {
- obj.sortTables(offsets, bb);
- return createVectorOfTables(offsets);
- }
-
- /**
- * Encode the string `s` in the buffer using UTF-8. If {@code s} is
- * already a {@link CharBuffer}, this method is allocation free.
- *
- * @param s The string to encode.
- * @return The offset in the buffer where the encoded string starts.
- */
- public int createString(CharSequence s) {
- int length = s.length();
- int estimatedDstCapacity = (int) (length * encoder.maxBytesPerChar());
- if (dst == null || dst.capacity() < estimatedDstCapacity) {
- dst = ByteBuffer.allocate(Math.max(128, estimatedDstCapacity));
- }
-
- dst.clear();
-
- CharBuffer src = s instanceof CharBuffer ? (CharBuffer) s :
- CharBuffer.wrap(s);
- CoderResult result = encoder.encode(src, dst, true);
- if (result.isError()) {
- try {
- result.throwException();
- } catch (CharacterCodingException x) {
- throw new Error(x);
- }
- }
-
- dst.flip();
- return createString(dst);
- }
-
- /**
- * Create a string in the buffer from an already encoded UTF-8 string in a ByteBuffer.
- *
- * @param s An already encoded UTF-8 string as a `ByteBuffer`.
- * @return The offset in the buffer where the encoded string starts.
- */
- public int createString(ByteBuffer s) {
- int length = s.remaining();
- addByte((byte)0);
- startVector(1, length, 1);
- bb.position(space -= length);
- bb.put(s);
- return endVector();
- }
-
- /**
- * Create a byte array in the buffer.
- *
- * @param arr A source array with data
- * @return The offset in the buffer where the encoded array starts.
- */
- public int createByteVector(byte[] arr) {
- int length = arr.length;
- startVector(1, length, 1);
- bb.position(space -= length);
- bb.put(arr);
- return endVector();
- }
-
- /// @cond FLATBUFFERS_INTERNAL
- /**
- * Should not be accessing the final buffer before it is finished.
- */
- public void finished() {
- if (!finished)
- throw new AssertionError(
- "FlatBuffers: you can only access the serialized buffer after it has been" +
- " finished by FlatBufferBuilder.finish().");
- }
-
- /**
- * Should not be creating any other object, string or vector
- * while an object is being constructed.
- */
- public void notNested() {
- if (nested)
- throw new AssertionError("FlatBuffers: object serialization must not be nested.");
- }
-
- /**
- * Structures are always stored inline, they need to be created right
- * where they're used. You'll get this assertion failure if you
- * created it elsewhere.
- *
- * @param obj The offset of the created object.
- */
- public void Nested(int obj) {
- if (obj != offset())
- throw new AssertionError("FlatBuffers: struct must be serialized inline.");
- }
-
- /**
- * Start encoding a new object in the buffer. Users will not usually need to
- * call this directly. The `FlatBuffers` compiler will generate helper methods
- * that call this method internally.
- * <p>
- * For example, using the "Monster" code found on the "landing page". An
- * object of type `Monster` can be created using the following code:
- *
- * <pre>{@code
- * int testArrayOfString = Monster.createTestarrayofstringVector(fbb, new int[] {
- * fbb.createString("test1"),
- * fbb.createString("test2")
- * });
- *
- * Monster.startMonster(fbb);
- * Monster.addPos(fbb, Vec3.createVec3(fbb, 1.0f, 2.0f, 3.0f, 3.0,
- * Color.Green, (short)5, (byte)6));
- * Monster.addHp(fbb, (short)80);
- * Monster.addName(fbb, str);
- * Monster.addInventory(fbb, inv);
- * Monster.addTestType(fbb, (byte)Any.Monster);
- * Monster.addTest(fbb, mon2);
- * Monster.addTest4(fbb, test4);
- * Monster.addTestarrayofstring(fbb, testArrayOfString);
- * int mon = Monster.endMonster(fbb);
- * }</pre>
- * <p>
- * Here:
- * <ul>
- * <li>The call to `Monster#startMonster(FlatBufferBuilder)` will call this
- * method with the right number of fields set.</li>
- * <li>`Monster#endMonster(FlatBufferBuilder)` will ensure {@link #endObject()} is called.</li>
- * </ul>
- * <p>
- * It's not recommended to call this method directly. If it's called manually, you must ensure
- * to audit all calls to it whenever fields are added or removed from your schema. This is
- * automatically done by the code generated by the `FlatBuffers` compiler.
- *
- * @param numfields The number of fields found in this object.
- */
- public void startObject(int numfields) {
- notNested();
- if (vtable == null || vtable.length < numfields) vtable = new int[numfields];
- vtable_in_use = numfields;
- Arrays.fill(vtable, 0, vtable_in_use, 0);
- nested = true;
- object_start = offset();
- }
-
- /**
- * Add a `boolean` to a table at `o` into its vtable, with value `x` and default `d`.
- *
- * @param o The index into the vtable.
- * @param x A `boolean` to put into the buffer, depending on how defaults are handled. If
- * `force_defaults` is `false`, compare `x` against the default value `d`. If `x` contains the
- * default value, it can be skipped.
- * @param d A `boolean` default value to compare against when `force_defaults` is `false`.
- */
- public void addBoolean(int o, boolean x, boolean d) { if(force_defaults || x != d) { addBoolean(x); slot(o); } }
-
- /**
- * Add a `byte` to a table at `o` into its vtable, with value `x` and default `d`.
- *
- * @param o The index into the vtable.
- * @param x A `byte` to put into the buffer, depending on how defaults are handled. If
- * `force_defaults` is `false`, compare `x` against the default value `d`. If `x` contains the
- * default value, it can be skipped.
- * @param d A `byte` default value to compare against when `force_defaults` is `false`.
- */
- public void addByte (int o, byte x, int d) { if(force_defaults || x != d) { addByte (x); slot(o); } }
-
- /**
- * Add a `short` to a table at `o` into its vtable, with value `x` and default `d`.
- *
- * @param o The index into the vtable.
- * @param x A `short` to put into the buffer, depending on how defaults are handled. If
- * `force_defaults` is `false`, compare `x` against the default value `d`. If `x` contains the
- * default value, it can be skipped.
- * @param d A `short` default value to compare against when `force_defaults` is `false`.
- */
- public void addShort (int o, short x, int d) { if(force_defaults || x != d) { addShort (x); slot(o); } }
-
- /**
- * Add an `int` to a table at `o` into its vtable, with value `x` and default `d`.
- *
- * @param o The index into the vtable.
- * @param x An `int` to put into the buffer, depending on how defaults are handled. If
- * `force_defaults` is `false`, compare `x` against the default value `d`. If `x` contains the
- * default value, it can be skipped.
- * @param d An `int` default value to compare against when `force_defaults` is `false`.
- */
- public void addInt (int o, int x, int d) { if(force_defaults || x != d) { addInt (x); slot(o); } }
-
- /**
- * Add a `long` to a table at `o` into its vtable, with value `x` and default `d`.
- *
- * @param o The index into the vtable.
- * @param x A `long` to put into the buffer, depending on how defaults are handled. If
- * `force_defaults` is `false`, compare `x` against the default value `d`. If `x` contains the
- * default value, it can be skipped.
- * @param d A `long` default value to compare against when `force_defaults` is `false`.
- */
- public void addLong (int o, long x, long d) { if(force_defaults || x != d) { addLong (x); slot(o); } }
-
- /**
- * Add a `float` to a table at `o` into its vtable, with value `x` and default `d`.
- *
- * @param o The index into the vtable.
- * @param x A `float` to put into the buffer, depending on how defaults are handled. If
- * `force_defaults` is `false`, compare `x` against the default value `d`. If `x` contains the
- * default value, it can be skipped.
- * @param d A `float` default value to compare against when `force_defaults` is `false`.
- */
- public void addFloat (int o, float x, double d) { if(force_defaults || x != d) { addFloat (x); slot(o); } }
-
- /**
- * Add a `double` to a table at `o` into its vtable, with value `x` and default `d`.
- *
- * @param o The index into the vtable.
- * @param x A `double` to put into the buffer, depending on how defaults are handled. If
- * `force_defaults` is `false`, compare `x` against the default value `d`. If `x` contains the
- * default value, it can be skipped.
- * @param d A `double` default value to compare against when `force_defaults` is `false`.
- */
- public void addDouble (int o, double x, double d) { if(force_defaults || x != d) { addDouble (x); slot(o); } }
-
- /**
- * Add an `offset` to a table at `o` into its vtable, with value `x` and default `d`.
- *
- * @param o The index into the vtable.
- * @param x An `offset` to put into the buffer, depending on how defaults are handled. If
- * `force_defaults` is `false`, compare `x` against the default value `d`. If `x` contains the
- * default value, it can be skipped.
- * @param d An `offset` default value to compare against when `force_defaults` is `false`.
- */
- public void addOffset (int o, int x, int d) { if(force_defaults || x != d) { addOffset (x); slot(o); } }
-
- /**
- * Add a struct to the table. Structs are stored inline, so nothing additional is being added.
- *
- * @param voffset The index into the vtable.
- * @param x The offset of the created struct.
- * @param d The default value is always `0`.
- */
- public void addStruct(int voffset, int x, int d) {
- if(x != d) {
- Nested(x);
- slot(voffset);
- }
- }
-
- /**
- * Set the current vtable at `voffset` to the current location in the buffer.
- *
- * @param voffset The index into the vtable to store the offset relative to the end of the
- * buffer.
- */
- public void slot(int voffset) {
- vtable[voffset] = offset();
- }
-
- /**
- * Finish off writing the object that is under construction.
- *
- * @return The offset to the object inside {@link #dataBuffer()}.
- * @see #startObject(int)
- */
- public int endObject() {
- if (vtable == null || !nested)
- throw new AssertionError("FlatBuffers: endObject called without startObject");
- addInt(0);
- int vtableloc = offset();
- // Write out the current vtable.
- for (int i = vtable_in_use - 1; i >= 0 ; i--) {
- // Offset relative to the start of the table.
- short off = (short)(vtable[i] != 0 ? vtableloc - vtable[i] : 0);
- addShort(off);
- }
-
- final int standard_fields = 2; // The fields below:
- addShort((short)(vtableloc - object_start));
- addShort((short)((vtable_in_use + standard_fields) * SIZEOF_SHORT));
-
- // Search for an existing vtable that matches the current one.
- int existing_vtable = 0;
- outer_loop:
- for (int i = 0; i < num_vtables; i++) {
- int vt1 = bb.capacity() - vtables[i];
- int vt2 = space;
- short len = bb.getShort(vt1);
- if (len == bb.getShort(vt2)) {
- for (int j = SIZEOF_SHORT; j < len; j += SIZEOF_SHORT) {
- if (bb.getShort(vt1 + j) != bb.getShort(vt2 + j)) {
- continue outer_loop;
- }
- }
- existing_vtable = vtables[i];
- break outer_loop;
- }
- }
-
- if (existing_vtable != 0) {
- // Found a match:
- // Remove the current vtable.
- space = bb.capacity() - vtableloc;
- // Point table to existing vtable.
- bb.putInt(space, existing_vtable - vtableloc);
- } else {
- // No match:
- // Add the location of the current vtable to the list of vtables.
- if (num_vtables == vtables.length) vtables = Arrays.copyOf(vtables, num_vtables * 2);
- vtables[num_vtables++] = offset();
- // Point table to current vtable.
- bb.putInt(bb.capacity() - vtableloc, offset() - vtableloc);
- }
-
- nested = false;
- return vtableloc;
- }
-
- /**
- * Checks that a required field has been set in a given table that has
- * just been constructed.
- *
- * @param table The offset to the start of the table from the `ByteBuffer` capacity.
- * @param field The offset to the field in the vtable.
- */
- public void required(int table, int field) {
- int table_start = bb.capacity() - table;
- int vtable_start = table_start - bb.getInt(table_start);
- boolean ok = bb.getShort(vtable_start + field) != 0;
- // If this fails, the caller will show what field needs to be set.
- if (!ok)
- throw new AssertionError("FlatBuffers: field " + field + " must be set");
- }
- /// @endcond
-
- /**
- * Finalize a buffer, pointing to the given `root_table`.
- *
- * @param root_table An offset to be added to the buffer.
- */
- public void finish(int root_table) {
- prep(minalign, SIZEOF_INT);
- addOffset(root_table);
- bb.position(space);
- finished = true;
- }
-
- /**
- * Finalize a buffer, pointing to the given `root_table`.
- *
- * @param root_table An offset to be added to the buffer.
- * @param file_identifier A FlatBuffer file identifier to be added to the buffer before
- * `root_table`.
- */
- public void finish(int root_table, String file_identifier) {
- prep(minalign, SIZEOF_INT + FILE_IDENTIFIER_LENGTH);
- if (file_identifier.length() != FILE_IDENTIFIER_LENGTH)
- throw new AssertionError("FlatBuffers: file identifier must be length " +
- FILE_IDENTIFIER_LENGTH);
- for (int i = FILE_IDENTIFIER_LENGTH - 1; i >= 0; i--) {
- addByte((byte)file_identifier.charAt(i));
- }
- finish(root_table);
- }
-
- /**
- * In order to save space, fields that are set to their default value
- * don't get serialized into the buffer. Forcing defaults provides a
- * way to manually disable this optimization.
- *
- * @param forceDefaults When set to `true`, always serializes default values.
- * @return Returns `this`.
- */
- public FlatBufferBuilder forceDefaults(boolean forceDefaults){
- this.force_defaults = forceDefaults;
- return this;
- }
-
- /**
- * Get the ByteBuffer representing the FlatBuffer. Only call this after you've
- * called `finish()`. The actual data starts at the ByteBuffer's current position,
- * not necessarily at `0`.
- *
- * @return The {@link ByteBuffer} representing the FlatBuffer
- */
- public ByteBuffer dataBuffer() {
- finished();
- return bb;
- }
-
- /**
- * The FlatBuffer data doesn't start at offset 0 in the {@link ByteBuffer}, but
- * now the {@code ByteBuffer}'s position is set to that location upon {@link #finish(int)}.
- *
- * @return The {@link ByteBuffer#position() position} the data starts in {@link #dataBuffer()}
- * @deprecated This method should not be needed anymore, but is left
- * here for the moment to document this API change. It will be removed in the future.
- */
- @Deprecated
- private int dataStart() {
- finished();
- return space;
- }
-
- /**
- * A utility function to copy and return the ByteBuffer data from `start` to
- * `start` + `length` as a `byte[]`.
- *
- * @param start Start copying at this offset.
- * @param length How many bytes to copy.
- * @return A range copy of the {@link #dataBuffer() data buffer}.
- * @throws IndexOutOfBoundsException If the range of bytes is ouf of bound.
- */
- public byte[] sizedByteArray(int start, int length){
- finished();
- byte[] array = new byte[length];
- bb.position(start);
- bb.get(array);
- return array;
- }
-
- /**
- * A utility function to copy and return the ByteBuffer data as a `byte[]`.
- *
- * @return A full copy of the {@link #dataBuffer() data buffer}.
- */
- public byte[] sizedByteArray() {
- return sizedByteArray(space, bb.capacity() - space);
- }
-}
-
-/// @}
diff --git a/third_party/flatbuffers/java/com/google/flatbuffers/Struct.java b/third_party/flatbuffers/java/com/google/flatbuffers/Struct.java
deleted file mode 100644
index ae31553..0000000
--- a/third_party/flatbuffers/java/com/google/flatbuffers/Struct.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.flatbuffers;
-
-import java.nio.ByteBuffer;
-
-/// @cond FLATBUFFERS_INTERNAL
-
-/**
- * All structs in the generated code derive from this class, and add their own accessors.
- */
-public class Struct {
- /** Used to hold the position of the `bb` buffer. */
- protected int bb_pos;
- /** The underlying ByteBuffer to hold the data of the Struct. */
- protected ByteBuffer bb;
-}
-
-/// @endcond
diff --git a/third_party/flatbuffers/java/com/google/flatbuffers/Table.java b/third_party/flatbuffers/java/com/google/flatbuffers/Table.java
deleted file mode 100644
index b853842..0000000
--- a/third_party/flatbuffers/java/com/google/flatbuffers/Table.java
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.flatbuffers;
-
-import static com.google.flatbuffers.Constants.*;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.nio.CharBuffer;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CoderResult;
-
-/// @cond FLATBUFFERS_INTERNAL
-
-/**
- * All tables in the generated code derive from this class, and add their own accessors.
- */
-public class Table {
- private final static ThreadLocal<CharsetDecoder> UTF8_DECODER = new ThreadLocal<CharsetDecoder>() {
- @Override
- protected CharsetDecoder initialValue() {
- return Charset.forName("UTF-8").newDecoder();
- }
- };
- public final static ThreadLocal<Charset> UTF8_CHARSET = new ThreadLocal<Charset>() {
- @Override
- protected Charset initialValue() {
- return Charset.forName("UTF-8");
- }
- };
- private final static ThreadLocal<CharBuffer> CHAR_BUFFER = new ThreadLocal<CharBuffer>();
- /** Used to hold the position of the `bb` buffer. */
- protected int bb_pos;
- /** The underlying ByteBuffer to hold the data of the Table. */
- protected ByteBuffer bb;
-
- /**
- * Get the underlying ByteBuffer.
- *
- * @return Returns the Table's ByteBuffer.
- */
- public ByteBuffer getByteBuffer() { return bb; }
-
- /**
- * Look up a field in the vtable.
- *
- * @param vtable_offset An `int` offset to the vtable in the Table's ByteBuffer.
- * @return Returns an offset into the object, or `0` if the field is not present.
- */
- protected int __offset(int vtable_offset) {
- int vtable = bb_pos - bb.getInt(bb_pos);
- return vtable_offset < bb.getShort(vtable) ? bb.getShort(vtable + vtable_offset) : 0;
- }
-
- protected static int __offset(int vtable_offset, int offset, ByteBuffer bb) {
- int vtable = bb.array().length - offset;
- return bb.getShort(vtable + vtable_offset - bb.getInt(vtable)) + vtable;
- }
-
- /**
- * Retrieve a relative offset.
- *
- * @param offset An `int` index into the Table's ByteBuffer containing the relative offset.
- * @return Returns the relative offset stored at `offset`.
- */
- protected int __indirect(int offset) {
- return offset + bb.getInt(offset);
- }
-
- protected static int __indirect(int offset, ByteBuffer bb) {
- return offset + bb.getInt(offset);
- }
-
- /**
- * Create a Java `String` from UTF-8 data stored inside the FlatBuffer.
- *
- * This allocates a new string and converts to wide chars upon each access,
- * which is not very efficient. Instead, each FlatBuffer string also comes with an
- * accessor based on __vector_as_bytebuffer below, which is much more efficient,
- * assuming your Java program can handle UTF-8 data directly.
- *
- * @param offset An `int` index into the Table's ByteBuffer.
- * @return Returns a `String` from the data stored inside the FlatBuffer at `offset`.
- */
- protected String __string(int offset) {
- CharsetDecoder decoder = UTF8_DECODER.get();
- decoder.reset();
-
- offset += bb.getInt(offset);
- ByteBuffer src = bb.duplicate().order(ByteOrder.LITTLE_ENDIAN);
- int length = src.getInt(offset);
- src.position(offset + SIZEOF_INT);
- src.limit(offset + SIZEOF_INT + length);
-
- int required = (int)((float)length * decoder.maxCharsPerByte());
- CharBuffer dst = CHAR_BUFFER.get();
- if (dst == null || dst.capacity() < required) {
- dst = CharBuffer.allocate(required);
- CHAR_BUFFER.set(dst);
- }
-
- dst.clear();
-
- try {
- CoderResult cr = decoder.decode(src, dst, true);
- if (!cr.isUnderflow()) {
- cr.throwException();
- }
- } catch (CharacterCodingException x) {
- throw new Error(x);
- }
-
- return dst.flip().toString();
- }
-
- /**
- * Get the length of a vector.
- *
- * @param offset An `int` index into the Table's ByteBuffer.
- * @return Returns the length of the vector whose offset is stored at `offset`.
- */
- protected int __vector_len(int offset) {
- offset += bb_pos;
- offset += bb.getInt(offset);
- return bb.getInt(offset);
- }
-
- /**
- * Get the start data of a vector.
- *
- * @param offset An `int` index into the Table's ByteBuffer.
- * @return Returns the start of the vector data whose offset is stored at `offset`.
- */
- protected int __vector(int offset) {
- offset += bb_pos;
- return offset + bb.getInt(offset) + SIZEOF_INT; // data starts after the length
- }
-
- /**
- * Get a whole vector as a ByteBuffer.
- *
- * This is efficient, since it only allocates a new {@link ByteBuffer} object,
- * but does not actually copy the data, it still refers to the same bytes
- * as the original ByteBuffer. Also useful with nested FlatBuffers, etc.
- *
- * @param vector_offset The position of the vector in the byte buffer
- * @param elem_size The size of each element in the array
- * @return The {@link ByteBuffer} for the array
- */
- protected ByteBuffer __vector_as_bytebuffer(int vector_offset, int elem_size) {
- int o = __offset(vector_offset);
- if (o == 0) return null;
- ByteBuffer bb = this.bb.duplicate().order(ByteOrder.LITTLE_ENDIAN);
- int vectorstart = __vector(o);
- bb.position(vectorstart);
- bb.limit(vectorstart + __vector_len(o) * elem_size);
- return bb;
- }
-
- /**
- * Initialize any Table-derived type to point to the union at the given `offset`.
- *
- * @param t A `Table`-derived type that should point to the union at `offset`.
- * @param offset An `int` index into the Table's ByteBuffer.
- * @return Returns the Table that points to the union at `offset`.
- */
- protected Table __union(Table t, int offset) {
- offset += bb_pos;
- t.bb_pos = offset + bb.getInt(offset);
- t.bb = bb;
- return t;
- }
-
- /**
- * Check if a {@link ByteBuffer} contains a file identifier.
- *
- * @param bb A {@code ByteBuffer} to check if it contains the identifier
- * `ident`.
- * @param ident A `String` identifier of the FlatBuffer file.
- * @return True if the buffer contains the file identifier
- */
- protected static boolean __has_identifier(ByteBuffer bb, String ident) {
- if (ident.length() != FILE_IDENTIFIER_LENGTH)
- throw new AssertionError("FlatBuffers: file identifier must be length " +
- FILE_IDENTIFIER_LENGTH);
- for (int i = 0; i < FILE_IDENTIFIER_LENGTH; i++) {
- if (ident.charAt(i) != (char)bb.get(bb.position() + SIZEOF_INT + i)) return false;
- }
- return true;
- }
-
- /**
- * Sort tables by the key.
- *
- * @param offsets An 'int' indexes of the tables into the bb.
- * @param bb A {@code ByteBuffer} to get the tables.
- */
- protected void sortTables(int[] offsets, final ByteBuffer bb) {
- Integer[] off = new Integer[offsets.length];
- for (int i = 0; i < offsets.length; i++) off[i] = offsets[i];
- java.util.Arrays.sort(off, new java.util.Comparator<Integer>() {
- public int compare(Integer o1, Integer o2) {
- return keysCompare(o1, o2, bb);
- }
- });
- for (int i = 0; i < offsets.length; i++) offsets[i] = off[i];
- }
-
- /**
- * Compare two tables by the key.
- *
- * @param o1 An 'Integer' index of the first key into the bb.
- * @param o2 An 'Integer' index of the second key into the bb.
- * @param bb A {@code ByteBuffer} to get the keys.
- */
- protected int keysCompare(Integer o1, Integer o2, ByteBuffer bb) { return 0; }
-
- /**
- * Compare two strings in the buffer.
- *
- * @param offset_1 An 'int' index of the first string into the bb.
- * @param offset_2 An 'int' index of the second string into the bb.
- * @param bb A {@code ByteBuffer} to get the strings.
- */
- protected static int compareStrings(int offset_1, int offset_2, ByteBuffer bb) {
- offset_1 += bb.getInt(offset_1);
- offset_2 += bb.getInt(offset_2);
- int len_1 = bb.getInt(offset_1);
- int len_2 = bb.getInt(offset_2);
- int startPos_1 = offset_1 + SIZEOF_INT;
- int startPos_2 = offset_2 + SIZEOF_INT;
- int len = Math.min(len_1, len_2);
- byte[] bbArray = bb.array();
- for(int i = 0; i < len; i++) {
- if (bbArray[i + startPos_1] != bbArray[i + startPos_2])
- return bbArray[i + startPos_1] - bbArray[i + startPos_2];
- }
- return len_1 - len_2;
- }
-
- /**
- * Compare string from the buffer with the 'String' object.
- *
- * @param offset_1 An 'int' index of the first string into the bb.
- * @param key Second string as a byte array.
- * @param bb A {@code ByteBuffer} to get the first string.
- */
- protected static int compareStrings(int offset_1, byte[] key, ByteBuffer bb) {
- offset_1 += bb.getInt(offset_1);
- int len_1 = bb.getInt(offset_1);
- int len_2 = key.length;
- int startPos_1 = offset_1 + Constants.SIZEOF_INT;
- int len = Math.min(len_1, len_2);
- byte[] bbArray = bb.array();
- for (int i = 0; i < len; i++) {
- if (bbArray[i + startPos_1] != key[i])
- return bbArray[i + startPos_1] - key[i];
- }
- return len_1 - len_2;
- }
-}
-
-/// @endcond
diff --git a/third_party/flatbuffers/js/flatbuffers.js b/third_party/flatbuffers/js/flatbuffers.js
deleted file mode 100644
index ccbd362..0000000
--- a/third_party/flatbuffers/js/flatbuffers.js
+++ /dev/null
@@ -1,1196 +0,0 @@
-/// @file
-/// @addtogroup flatbuffers_javascript_api
-/// @{
-/// @cond FLATBUFFERS_INTERNAL
-
-/**
- * @fileoverview
- *
- * Need to suppress 'global this' error so the Node.js export line doesn't cause
- * closure compile to error out.
- * @suppress {globalThis}
- */
-
-/**
- * @const
- * @namespace
- */
-var flatbuffers = {};
-
-/**
- * @typedef {number}
- */
-flatbuffers.Offset;
-
-/**
- * @typedef {{
- * bb: flatbuffers.ByteBuffer,
- * bb_pos: number
- * }}
- */
-flatbuffers.Table;
-
-/**
- * @type {number}
- * @const
- */
-flatbuffers.SIZEOF_SHORT = 2;
-
-/**
- * @type {number}
- * @const
- */
-flatbuffers.SIZEOF_INT = 4;
-
-/**
- * @type {number}
- * @const
- */
-flatbuffers.FILE_IDENTIFIER_LENGTH = 4;
-
-/**
- * @enum {number}
- */
-flatbuffers.Encoding = {
- UTF8_BYTES: 1,
- UTF16_STRING: 2
-};
-
-/**
- * @type {Int32Array}
- * @const
- */
-flatbuffers.int32 = new Int32Array(2);
-
-/**
- * @type {Float32Array}
- * @const
- */
-flatbuffers.float32 = new Float32Array(flatbuffers.int32.buffer);
-
-/**
- * @type {Float64Array}
- * @const
- */
-flatbuffers.float64 = new Float64Array(flatbuffers.int32.buffer);
-
-/**
- * @type {boolean}
- * @const
- */
-flatbuffers.isLittleEndian = new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1;
-
-////////////////////////////////////////////////////////////////////////////////
-
-/**
- * @constructor
- * @param {number} low
- * @param {number} high
- */
-flatbuffers.Long = function(low, high) {
- /**
- * @type {number}
- * @const
- */
- this.low = low | 0;
-
- /**
- * @type {number}
- * @const
- */
- this.high = high | 0;
-};
-
-/**
- * @param {number} low
- * @param {number} high
- * @returns {flatbuffers.Long}
- */
-flatbuffers.Long.create = function(low, high) {
- // Special-case zero to avoid GC overhead for default values
- return low == 0 && high == 0 ? flatbuffers.Long.ZERO : new flatbuffers.Long(low, high);
-};
-
-/**
- * @returns {number}
- */
-flatbuffers.Long.prototype.toFloat64 = function() {
- return (this.low >>> 0) + this.high * 0x100000000;
-};
-
-/**
- * @param {flatbuffers.Long} other
- * @returns {boolean}
- */
-flatbuffers.Long.prototype.equals = function(other) {
- return this.low == other.low && this.high == other.high;
-};
-
-/**
- * @type {flatbuffers.Long}
- * @const
- */
-flatbuffers.Long.ZERO = new flatbuffers.Long(0, 0);
-
-/// @endcond
-////////////////////////////////////////////////////////////////////////////////
-/**
- * Create a FlatBufferBuilder.
- *
- * @constructor
- * @param {number=} opt_initial_size
- */
-flatbuffers.Builder = function(opt_initial_size) {
- if (!opt_initial_size) {
- var initial_size = 1024;
- } else {
- var initial_size = opt_initial_size;
- }
-
- /**
- * @type {flatbuffers.ByteBuffer}
- * @private
- */
- this.bb = flatbuffers.ByteBuffer.allocate(initial_size);
-
- /**
- * Remaining space in the ByteBuffer.
- *
- * @type {number}
- * @private
- */
- this.space = initial_size;
-
- /**
- * Minimum alignment encountered so far.
- *
- * @type {number}
- * @private
- */
- this.minalign = 1;
-
- /**
- * The vtable for the current table.
- *
- * @type {Array.<number>}
- * @private
- */
- this.vtable = null;
-
- /**
- * The amount of fields we're actually using.
- *
- * @type {number}
- * @private
- */
- this.vtable_in_use = 0;
-
- /**
- * Whether we are currently serializing a table.
- *
- * @type {boolean}
- * @private
- */
- this.isNested = false;
-
- /**
- * Starting offset of the current struct/table.
- *
- * @type {number}
- * @private
- */
- this.object_start = 0;
-
- /**
- * List of offsets of all vtables.
- *
- * @type {Array.<number>}
- * @private
- */
- this.vtables = [];
-
- /**
- * For the current vector being built.
- *
- * @type {number}
- * @private
- */
- this.vector_num_elems = 0;
-
- /**
- * False omits default values from the serialized data
- *
- * @type {boolean}
- * @private
- */
- this.force_defaults = false;
-};
-
-/**
- * In order to save space, fields that are set to their default value
- * don't get serialized into the buffer. Forcing defaults provides a
- * way to manually disable this optimization.
- *
- * @param {boolean} forceDefaults true always serializes default values
- */
-flatbuffers.Builder.prototype.forceDefaults = function(forceDefaults) {
- this.force_defaults = forceDefaults;
-};
-
-/**
- * Get the ByteBuffer representing the FlatBuffer. Only call this after you've
- * called finish(). The actual data starts at the ByteBuffer's current position,
- * not necessarily at 0.
- *
- * @returns {flatbuffers.ByteBuffer}
- */
-flatbuffers.Builder.prototype.dataBuffer = function() {
- return this.bb;
-};
-
-/**
- * Get the bytes representing the FlatBuffer. Only call this after you've
- * called finish().
- *
- * @returns {Uint8Array}
- */
-flatbuffers.Builder.prototype.asUint8Array = function() {
- return this.bb.bytes().subarray(this.bb.position(), this.bb.position() + this.offset());
-};
-
-/// @cond FLATBUFFERS_INTERNAL
-/**
- * Prepare to write an element of `size` after `additional_bytes` have been
- * written, e.g. if you write a string, you need to align such the int length
- * field is aligned to 4 bytes, and the string data follows it directly. If all
- * you need to do is alignment, `additional_bytes` will be 0.
- *
- * @param {number} size This is the of the new element to write
- * @param {number} additional_bytes The padding size
- */
-flatbuffers.Builder.prototype.prep = function(size, additional_bytes) {
- // Track the biggest thing we've ever aligned to.
- if (size > this.minalign) {
- this.minalign = size;
- }
-
- // Find the amount of alignment needed such that `size` is properly
- // aligned after `additional_bytes`
- var align_size = ((~(this.bb.capacity() - this.space + additional_bytes)) + 1) & (size - 1);
-
- // Reallocate the buffer if needed.
- while (this.space < align_size + size + additional_bytes) {
- var old_buf_size = this.bb.capacity();
- this.bb = flatbuffers.Builder.growByteBuffer(this.bb);
- this.space += this.bb.capacity() - old_buf_size;
- }
-
- this.pad(align_size);
-};
-
-/**
- * @param {number} byte_size
- */
-flatbuffers.Builder.prototype.pad = function(byte_size) {
- for (var i = 0; i < byte_size; i++) {
- this.bb.writeInt8(--this.space, 0);
- }
-};
-
-/**
- * @param {number} value
- */
-flatbuffers.Builder.prototype.writeInt8 = function(value) {
- this.bb.writeInt8(this.space -= 1, value);
-};
-
-/**
- * @param {number} value
- */
-flatbuffers.Builder.prototype.writeInt16 = function(value) {
- this.bb.writeInt16(this.space -= 2, value);
-};
-
-/**
- * @param {number} value
- */
-flatbuffers.Builder.prototype.writeInt32 = function(value) {
- this.bb.writeInt32(this.space -= 4, value);
-};
-
-/**
- * @param {flatbuffers.Long} value
- */
-flatbuffers.Builder.prototype.writeInt64 = function(value) {
- this.bb.writeInt64(this.space -= 8, value);
-};
-
-/**
- * @param {number} value
- */
-flatbuffers.Builder.prototype.writeFloat32 = function(value) {
- this.bb.writeFloat32(this.space -= 4, value);
-};
-
-/**
- * @param {number} value
- */
-flatbuffers.Builder.prototype.writeFloat64 = function(value) {
- this.bb.writeFloat64(this.space -= 8, value);
-};
-/// @endcond
-
-/**
- * Add an `int8` to the buffer, properly aligned, and grows the buffer (if necessary).
- * @param {number} value The `int8` to add the the buffer.
- */
-flatbuffers.Builder.prototype.addInt8 = function(value) {
- this.prep(1, 0);
- this.writeInt8(value);
-};
-
-/**
- * Add an `int16` to the buffer, properly aligned, and grows the buffer (if necessary).
- * @param {number} value The `int16` to add the the buffer.
- */
-flatbuffers.Builder.prototype.addInt16 = function(value) {
- this.prep(2, 0);
- this.writeInt16(value);
-};
-
-/**
- * Add an `int32` to the buffer, properly aligned, and grows the buffer (if necessary).
- * @param {number} value The `int32` to add the the buffer.
- */
-flatbuffers.Builder.prototype.addInt32 = function(value) {
- this.prep(4, 0);
- this.writeInt32(value);
-};
-
-/**
- * Add an `int64` to the buffer, properly aligned, and grows the buffer (if necessary).
- * @param {flatbuffers.Long} value The `int64` to add the the buffer.
- */
-flatbuffers.Builder.prototype.addInt64 = function(value) {
- this.prep(8, 0);
- this.writeInt64(value);
-};
-
-/**
- * Add a `float32` to the buffer, properly aligned, and grows the buffer (if necessary).
- * @param {number} value The `float32` to add the the buffer.
- */
-flatbuffers.Builder.prototype.addFloat32 = function(value) {
- this.prep(4, 0);
- this.writeFloat32(value);
-};
-
-/**
- * Add a `float64` to the buffer, properly aligned, and grows the buffer (if necessary).
- * @param {number} value The `float64` to add the the buffer.
- */
-flatbuffers.Builder.prototype.addFloat64 = function(value) {
- this.prep(8, 0);
- this.writeFloat64(value);
-};
-
-/// @cond FLATBUFFERS_INTERNAL
-/**
- * @param {number} voffset
- * @param {number} value
- * @param {number} defaultValue
- */
-flatbuffers.Builder.prototype.addFieldInt8 = function(voffset, value, defaultValue) {
- if (this.force_defaults || value != defaultValue) {
- this.addInt8(value);
- this.slot(voffset);
- }
-};
-
-/**
- * @param {number} voffset
- * @param {number} value
- * @param {number} defaultValue
- */
-flatbuffers.Builder.prototype.addFieldInt16 = function(voffset, value, defaultValue) {
- if (this.force_defaults || value != defaultValue) {
- this.addInt16(value);
- this.slot(voffset);
- }
-};
-
-/**
- * @param {number} voffset
- * @param {number} value
- * @param {number} defaultValue
- */
-flatbuffers.Builder.prototype.addFieldInt32 = function(voffset, value, defaultValue) {
- if (this.force_defaults || value != defaultValue) {
- this.addInt32(value);
- this.slot(voffset);
- }
-};
-
-/**
- * @param {number} voffset
- * @param {flatbuffers.Long} value
- * @param {flatbuffers.Long} defaultValue
- */
-flatbuffers.Builder.prototype.addFieldInt64 = function(voffset, value, defaultValue) {
- if (this.force_defaults || !value.equals(defaultValue)) {
- this.addInt64(value);
- this.slot(voffset);
- }
-};
-
-/**
- * @param {number} voffset
- * @param {number} value
- * @param {number} defaultValue
- */
-flatbuffers.Builder.prototype.addFieldFloat32 = function(voffset, value, defaultValue) {
- if (this.force_defaults || value != defaultValue) {
- this.addFloat32(value);
- this.slot(voffset);
- }
-};
-
-/**
- * @param {number} voffset
- * @param {number} value
- * @param {number} defaultValue
- */
-flatbuffers.Builder.prototype.addFieldFloat64 = function(voffset, value, defaultValue) {
- if (this.force_defaults || value != defaultValue) {
- this.addFloat64(value);
- this.slot(voffset);
- }
-};
-
-/**
- * @param {number} voffset
- * @param {flatbuffers.Offset} value
- * @param {flatbuffers.Offset} defaultValue
- */
-flatbuffers.Builder.prototype.addFieldOffset = function(voffset, value, defaultValue) {
- if (this.force_defaults || value != defaultValue) {
- this.addOffset(value);
- this.slot(voffset);
- }
-};
-
-/**
- * Structs are stored inline, so nothing additional is being added. `d` is always 0.
- *
- * @param {number} voffset
- * @param {flatbuffers.Offset} value
- * @param {flatbuffers.Offset} defaultValue
- */
-flatbuffers.Builder.prototype.addFieldStruct = function(voffset, value, defaultValue) {
- if (value != defaultValue) {
- this.nested(value);
- this.slot(voffset);
- }
-};
-
-/**
- * Structures are always stored inline, they need to be created right
- * where they're used. You'll get this assertion failure if you
- * created it elsewhere.
- *
- * @param {flatbuffers.Offset} obj The offset of the created object
- */
-flatbuffers.Builder.prototype.nested = function(obj) {
- if (obj != this.offset()) {
- throw new Error('FlatBuffers: struct must be serialized inline.');
- }
-};
-
-/**
- * Should not be creating any other object, string or vector
- * while an object is being constructed
- */
-flatbuffers.Builder.prototype.notNested = function() {
- if (this.isNested) {
- throw new Error('FlatBuffers: object serialization must not be nested.');
- }
-};
-
-/**
- * Set the current vtable at `voffset` to the current location in the buffer.
- *
- * @param {number} voffset
- */
-flatbuffers.Builder.prototype.slot = function(voffset) {
- this.vtable[voffset] = this.offset();
-};
-
-/**
- * @returns {flatbuffers.Offset} Offset relative to the end of the buffer.
- */
-flatbuffers.Builder.prototype.offset = function() {
- return this.bb.capacity() - this.space;
-};
-
-/**
- * Doubles the size of the backing ByteBuffer and copies the old data towards
- * the end of the new buffer (since we build the buffer backwards).
- *
- * @param {flatbuffers.ByteBuffer} bb The current buffer with the existing data
- * @returns {flatbuffers.ByteBuffer} A new byte buffer with the old data copied
- * to it. The data is located at the end of the buffer.
- *
- * uint8Array.set() formally takes {Array<number>|ArrayBufferView}, so to pass
- * it a uint8Array we need to suppress the type check:
- * @suppress {checkTypes}
- */
-flatbuffers.Builder.growByteBuffer = function(bb) {
- var old_buf_size = bb.capacity();
-
- // Ensure we don't grow beyond what fits in an int.
- if (old_buf_size & 0xC0000000) {
- throw new Error('FlatBuffers: cannot grow buffer beyond 2 gigabytes.');
- }
-
- var new_buf_size = old_buf_size << 1;
- var nbb = flatbuffers.ByteBuffer.allocate(new_buf_size);
- nbb.setPosition(new_buf_size - old_buf_size);
- nbb.bytes().set(bb.bytes(), new_buf_size - old_buf_size);
- return nbb;
-};
-/// @endcond
-
-/**
- * Adds on offset, relative to where it will be written.
- *
- * @param {flatbuffers.Offset} offset The offset to add.
- */
-flatbuffers.Builder.prototype.addOffset = function(offset) {
- this.prep(flatbuffers.SIZEOF_INT, 0); // Ensure alignment is already done.
- this.writeInt32(this.offset() - offset + flatbuffers.SIZEOF_INT);
-};
-
-/// @cond FLATBUFFERS_INTERNAL
-/**
- * Start encoding a new object in the buffer. Users will not usually need to
- * call this directly. The FlatBuffers compiler will generate helper methods
- * that call this method internally.
- *
- * @param {number} numfields
- */
-flatbuffers.Builder.prototype.startObject = function(numfields) {
- this.notNested();
- if (this.vtable == null) {
- this.vtable = [];
- }
- this.vtable_in_use = numfields;
- for (var i = 0; i < numfields; i++) {
- this.vtable[i] = 0; // This will push additional elements as needed
- }
- this.isNested = true;
- this.object_start = this.offset();
-};
-
-/**
- * Finish off writing the object that is under construction.
- *
- * @returns {flatbuffers.Offset} The offset to the object inside `dataBuffer`
- */
-flatbuffers.Builder.prototype.endObject = function() {
- if (this.vtable == null || !this.isNested) {
- throw new Error('FlatBuffers: endObject called without startObject');
- }
-
- this.addInt32(0);
- var vtableloc = this.offset();
-
- // Write out the current vtable.
- for (var i = this.vtable_in_use - 1; i >= 0; i--) {
- // Offset relative to the start of the table.
- this.addInt16(this.vtable[i] != 0 ? vtableloc - this.vtable[i] : 0);
- }
-
- var standard_fields = 2; // The fields below:
- this.addInt16(vtableloc - this.object_start);
- this.addInt16((this.vtable_in_use + standard_fields) * flatbuffers.SIZEOF_SHORT);
-
- // Search for an existing vtable that matches the current one.
- var existing_vtable = 0;
-outer_loop:
- for (var i = 0; i < this.vtables.length; i++) {
- var vt1 = this.bb.capacity() - this.vtables[i];
- var vt2 = this.space;
- var len = this.bb.readInt16(vt1);
- if (len == this.bb.readInt16(vt2)) {
- for (var j = flatbuffers.SIZEOF_SHORT; j < len; j += flatbuffers.SIZEOF_SHORT) {
- if (this.bb.readInt16(vt1 + j) != this.bb.readInt16(vt2 + j)) {
- continue outer_loop;
- }
- }
- existing_vtable = this.vtables[i];
- break;
- }
- }
-
- if (existing_vtable) {
- // Found a match:
- // Remove the current vtable.
- this.space = this.bb.capacity() - vtableloc;
-
- // Point table to existing vtable.
- this.bb.writeInt32(this.space, existing_vtable - vtableloc);
- } else {
- // No match:
- // Add the location of the current vtable to the list of vtables.
- this.vtables.push(this.offset());
-
- // Point table to current vtable.
- this.bb.writeInt32(this.bb.capacity() - vtableloc, this.offset() - vtableloc);
- }
-
- this.isNested = false;
- return vtableloc;
-};
-/// @endcond
-
-/**
- * Finalize a buffer, poiting to the given `root_table`.
- *
- * @param {flatbuffers.Offset} root_table
- * @param {string=} opt_file_identifier
- */
-flatbuffers.Builder.prototype.finish = function(root_table, opt_file_identifier) {
- if (opt_file_identifier) {
- var file_identifier = opt_file_identifier;
- this.prep(this.minalign, flatbuffers.SIZEOF_INT +
- flatbuffers.FILE_IDENTIFIER_LENGTH);
- if (file_identifier.length != flatbuffers.FILE_IDENTIFIER_LENGTH) {
- throw new Error('FlatBuffers: file identifier must be length ' +
- flatbuffers.FILE_IDENTIFIER_LENGTH);
- }
- for (var i = flatbuffers.FILE_IDENTIFIER_LENGTH - 1; i >= 0; i--) {
- this.writeInt8(file_identifier.charCodeAt(i));
- }
- }
- this.prep(this.minalign, flatbuffers.SIZEOF_INT);
- this.addOffset(root_table);
- this.bb.setPosition(this.space);
-};
-
-/// @cond FLATBUFFERS_INTERNAL
-/**
- * This checks a required field has been set in a given table that has
- * just been constructed.
- *
- * @param {flatbuffers.Offset} table
- * @param {number} field
- */
-flatbuffers.Builder.prototype.requiredField = function(table, field) {
- var table_start = this.bb.capacity() - table;
- var vtable_start = table_start - this.bb.readInt32(table_start);
- var ok = this.bb.readInt16(vtable_start + field) != 0;
-
- // If this fails, the caller will show what field needs to be set.
- if (!ok) {
- throw new Error('FlatBuffers: field ' + field + ' must be set');
- }
-};
-
-/**
- * Start a new array/vector of objects. Users usually will not call
- * this directly. The FlatBuffers compiler will create a start/end
- * method for vector types in generated code.
- *
- * @param {number} elem_size The size of each element in the array
- * @param {number} num_elems The number of elements in the array
- * @param {number} alignment The alignment of the array
- */
-flatbuffers.Builder.prototype.startVector = function(elem_size, num_elems, alignment) {
- this.notNested();
- this.vector_num_elems = num_elems;
- this.prep(flatbuffers.SIZEOF_INT, elem_size * num_elems);
- this.prep(alignment, elem_size * num_elems); // Just in case alignment > int.
-};
-
-/**
- * Finish off the creation of an array and all its elements. The array must be
- * created with `startVector`.
- *
- * @returns {flatbuffers.Offset} The offset at which the newly created array
- * starts.
- */
-flatbuffers.Builder.prototype.endVector = function() {
- this.writeInt32(this.vector_num_elems);
- return this.offset();
-};
-/// @endcond
-
-/**
- * Encode the string `s` in the buffer using UTF-8. If a Uint8Array is passed
- * instead of a string, it is assumed to contain valid UTF-8 encoded data.
- *
- * @param {string|Uint8Array} s The string to encode
- * @return {flatbuffers.Offset} The offset in the buffer where the encoded string starts
- */
-flatbuffers.Builder.prototype.createString = function(s) {
- if (s instanceof Uint8Array) {
- var utf8 = s;
- } else {
- var utf8 = [];
- var i = 0;
-
- while (i < s.length) {
- var codePoint;
-
- // Decode UTF-16
- var a = s.charCodeAt(i++);
- if (a < 0xD800 || a >= 0xDC00) {
- codePoint = a;
- } else {
- var b = s.charCodeAt(i++);
- codePoint = (a << 10) + b + (0x10000 - (0xD800 << 10) - 0xDC00);
- }
-
- // Encode UTF-8
- if (codePoint < 0x80) {
- utf8.push(codePoint);
- } else {
- if (codePoint < 0x800) {
- utf8.push(((codePoint >> 6) & 0x1F) | 0xC0);
- } else {
- if (codePoint < 0x10000) {
- utf8.push(((codePoint >> 12) & 0x0F) | 0xE0);
- } else {
- utf8.push(
- ((codePoint >> 18) & 0x07) | 0xF0,
- ((codePoint >> 12) & 0x3F) | 0x80);
- }
- utf8.push(((codePoint >> 6) & 0x3F) | 0x80);
- }
- utf8.push((codePoint & 0x3F) | 0x80);
- }
- }
- }
-
- this.addInt8(0);
- this.startVector(1, utf8.length, 1);
- this.bb.setPosition(this.space -= utf8.length);
- for (var i = 0, offset = this.space, bytes = this.bb.bytes(); i < utf8.length; i++) {
- bytes[offset++] = utf8[i];
- }
- return this.endVector();
-};
-
-/**
- * A helper function to avoid generated code depending on this file directly.
- *
- * @param {number} low
- * @param {number} high
- * @returns {flatbuffers.Long}
- */
-flatbuffers.Builder.prototype.createLong = function(low, high) {
- return flatbuffers.Long.create(low, high);
-};
-////////////////////////////////////////////////////////////////////////////////
-/// @cond FLATBUFFERS_INTERNAL
-/**
- * Create a new ByteBuffer with a given array of bytes (`Uint8Array`).
- *
- * @constructor
- * @param {Uint8Array} bytes
- */
-flatbuffers.ByteBuffer = function(bytes) {
- /**
- * @type {Uint8Array}
- * @private
- */
- this.bytes_ = bytes;
-
- /**
- * @type {number}
- * @private
- */
- this.position_ = 0;
-};
-
-/**
- * Create and allocate a new ByteBuffer with a given size.
- *
- * @param {number} byte_size
- * @returns {flatbuffers.ByteBuffer}
- */
-flatbuffers.ByteBuffer.allocate = function(byte_size) {
- return new flatbuffers.ByteBuffer(new Uint8Array(byte_size));
-};
-
-/**
- * Get the underlying `Uint8Array`.
- *
- * @returns {Uint8Array}
- */
-flatbuffers.ByteBuffer.prototype.bytes = function() {
- return this.bytes_;
-};
-
-/**
- * Get the buffer's position.
- *
- * @returns {number}
- */
-flatbuffers.ByteBuffer.prototype.position = function() {
- return this.position_;
-};
-
-/**
- * Set the buffer's position.
- *
- * @param {number} position
- */
-flatbuffers.ByteBuffer.prototype.setPosition = function(position) {
- this.position_ = position;
-};
-
-/**
- * Get the buffer's capacity.
- *
- * @returns {number}
- */
-flatbuffers.ByteBuffer.prototype.capacity = function() {
- return this.bytes_.length;
-};
-
-/**
- * @param {number} offset
- * @returns {number}
- */
-flatbuffers.ByteBuffer.prototype.readInt8 = function(offset) {
- return this.readUint8(offset) << 24 >> 24;
-};
-
-/**
- * @param {number} offset
- * @returns {number}
- */
-flatbuffers.ByteBuffer.prototype.readUint8 = function(offset) {
- return this.bytes_[offset];
-};
-
-/**
- * @param {number} offset
- * @returns {number}
- */
-flatbuffers.ByteBuffer.prototype.readInt16 = function(offset) {
- return this.readUint16(offset) << 16 >> 16;
-};
-
-/**
- * @param {number} offset
- * @returns {number}
- */
-flatbuffers.ByteBuffer.prototype.readUint16 = function(offset) {
- return this.bytes_[offset] | this.bytes_[offset + 1] << 8;
-};
-
-/**
- * @param {number} offset
- * @returns {number}
- */
-flatbuffers.ByteBuffer.prototype.readInt32 = function(offset) {
- return this.bytes_[offset] | this.bytes_[offset + 1] << 8 | this.bytes_[offset + 2] << 16 | this.bytes_[offset + 3] << 24;
-};
-
-/**
- * @param {number} offset
- * @returns {number}
- */
-flatbuffers.ByteBuffer.prototype.readUint32 = function(offset) {
- return this.readInt32(offset) >>> 0;
-};
-
-/**
- * @param {number} offset
- * @returns {flatbuffers.Long}
- */
-flatbuffers.ByteBuffer.prototype.readInt64 = function(offset) {
- return new flatbuffers.Long(this.readInt32(offset), this.readInt32(offset + 4));
-};
-
-/**
- * @param {number} offset
- * @returns {flatbuffers.Long}
- */
-flatbuffers.ByteBuffer.prototype.readUint64 = function(offset) {
- return new flatbuffers.Long(this.readUint32(offset), this.readUint32(offset + 4));
-};
-
-/**
- * @param {number} offset
- * @returns {number}
- */
-flatbuffers.ByteBuffer.prototype.readFloat32 = function(offset) {
- flatbuffers.int32[0] = this.readInt32(offset);
- return flatbuffers.float32[0];
-};
-
-/**
- * @param {number} offset
- * @returns {number}
- */
-flatbuffers.ByteBuffer.prototype.readFloat64 = function(offset) {
- flatbuffers.int32[flatbuffers.isLittleEndian ? 0 : 1] = this.readInt32(offset);
- flatbuffers.int32[flatbuffers.isLittleEndian ? 1 : 0] = this.readInt32(offset + 4);
- return flatbuffers.float64[0];
-};
-
-/**
- * @param {number} offset
- * @param {number|boolean} value
- */
-flatbuffers.ByteBuffer.prototype.writeInt8 = function(offset, value) {
- this.bytes_[offset] = /** @type {number} */(value);
-};
-
-/**
- * @param {number} offset
- * @param {number} value
- */
-flatbuffers.ByteBuffer.prototype.writeUint8 = function(offset, value) {
- this.bytes_[offset] = value;
-};
-
-/**
- * @param {number} offset
- * @param {number} value
- */
-flatbuffers.ByteBuffer.prototype.writeInt16 = function(offset, value) {
- this.bytes_[offset] = value;
- this.bytes_[offset + 1] = value >> 8;
-};
-
-/**
- * @param {number} offset
- * @param {number} value
- */
-flatbuffers.ByteBuffer.prototype.writeUint16 = function(offset, value) {
- this.bytes_[offset] = value;
- this.bytes_[offset + 1] = value >> 8;
-};
-
-/**
- * @param {number} offset
- * @param {number} value
- */
-flatbuffers.ByteBuffer.prototype.writeInt32 = function(offset, value) {
- this.bytes_[offset] = value;
- this.bytes_[offset + 1] = value >> 8;
- this.bytes_[offset + 2] = value >> 16;
- this.bytes_[offset + 3] = value >> 24;
-};
-
-/**
- * @param {number} offset
- * @param {number} value
- */
-flatbuffers.ByteBuffer.prototype.writeUint32 = function(offset, value) {
- this.bytes_[offset] = value;
- this.bytes_[offset + 1] = value >> 8;
- this.bytes_[offset + 2] = value >> 16;
- this.bytes_[offset + 3] = value >> 24;
-};
-
-/**
- * @param {number} offset
- * @param {flatbuffers.Long} value
- */
-flatbuffers.ByteBuffer.prototype.writeInt64 = function(offset, value) {
- this.writeInt32(offset, value.low);
- this.writeInt32(offset + 4, value.high);
-};
-
-/**
- * @param {number} offset
- * @param {flatbuffers.Long} value
- */
-flatbuffers.ByteBuffer.prototype.writeUint64 = function(offset, value) {
- this.writeUint32(offset, value.low);
- this.writeUint32(offset + 4, value.high);
-};
-
-/**
- * @param {number} offset
- * @param {number} value
- */
-flatbuffers.ByteBuffer.prototype.writeFloat32 = function(offset, value) {
- flatbuffers.float32[0] = value;
- this.writeInt32(offset, flatbuffers.int32[0]);
-};
-
-/**
- * @param {number} offset
- * @param {number} value
- */
-flatbuffers.ByteBuffer.prototype.writeFloat64 = function(offset, value) {
- flatbuffers.float64[0] = value;
- this.writeInt32(offset, flatbuffers.int32[flatbuffers.isLittleEndian ? 0 : 1]);
- this.writeInt32(offset + 4, flatbuffers.int32[flatbuffers.isLittleEndian ? 1 : 0]);
-};
-
-/**
- * Look up a field in the vtable, return an offset into the object, or 0 if the
- * field is not present.
- *
- * @param {number} bb_pos
- * @param {number} vtable_offset
- * @returns {number}
- */
-flatbuffers.ByteBuffer.prototype.__offset = function(bb_pos, vtable_offset) {
- var vtable = bb_pos - this.readInt32(bb_pos);
- return vtable_offset < this.readInt16(vtable) ? this.readInt16(vtable + vtable_offset) : 0;
-};
-
-/**
- * Initialize any Table-derived type to point to the union at the given offset.
- *
- * @param {flatbuffers.Table} t
- * @param {number} offset
- * @returns {flatbuffers.Table}
- */
-flatbuffers.ByteBuffer.prototype.__union = function(t, offset) {
- t.bb_pos = offset + this.readInt32(offset);
- t.bb = this;
- return t;
-};
-
-/**
- * Create a JavaScript string from UTF-8 data stored inside the FlatBuffer.
- * This allocates a new string and converts to wide chars upon each access.
- *
- * To avoid the conversion to UTF-16, pass flatbuffers.Encoding.UTF8_BYTES as
- * the "optionalEncoding" argument. This is useful for avoiding conversion to
- * and from UTF-16 when the data will just be packaged back up in another
- * FlatBuffer later on.
- *
- * @param {number} offset
- * @param {flatbuffers.Encoding=} opt_encoding Defaults to UTF16_STRING
- * @returns {string|Uint8Array}
- */
-flatbuffers.ByteBuffer.prototype.__string = function(offset, opt_encoding) {
- offset += this.readInt32(offset);
-
- var length = this.readInt32(offset);
- var result = '';
- var i = 0;
-
- offset += flatbuffers.SIZEOF_INT;
-
- if (opt_encoding === flatbuffers.Encoding.UTF8_BYTES) {
- return this.bytes_.subarray(offset, offset + length);
- }
-
- while (i < length) {
- var codePoint;
-
- // Decode UTF-8
- var a = this.readUint8(offset + i++);
- if (a < 0xC0) {
- codePoint = a;
- } else {
- var b = this.readUint8(offset + i++);
- if (a < 0xE0) {
- codePoint =
- ((a & 0x1F) << 6) |
- (b & 0x3F);
- } else {
- var c = this.readUint8(offset + i++);
- if (a < 0xF0) {
- codePoint =
- ((a & 0x0F) << 12) |
- ((b & 0x3F) << 6) |
- (c & 0x3F);
- } else {
- var d = this.readUint8(offset + i++);
- codePoint =
- ((a & 0x07) << 18) |
- ((b & 0x3F) << 12) |
- ((c & 0x3F) << 6) |
- (d & 0x3F);
- }
- }
- }
-
- // Encode UTF-16
- if (codePoint < 0x10000) {
- result += String.fromCharCode(codePoint);
- } else {
- codePoint -= 0x10000;
- result += String.fromCharCode(
- (codePoint >> 10) + 0xD800,
- (codePoint & ((1 << 10) - 1)) + 0xDC00);
- }
- }
-
- return result;
-};
-
-/**
- * Retrieve the relative offset stored at "offset"
- * @param {number} offset
- * @returns {number}
- */
-flatbuffers.ByteBuffer.prototype.__indirect = function(offset) {
- return offset + this.readInt32(offset);
-};
-
-/**
- * Get the start of data of a vector whose offset is stored at "offset" in this object.
- *
- * @param {number} offset
- * @returns {number}
- */
-flatbuffers.ByteBuffer.prototype.__vector = function(offset) {
- return offset + this.readInt32(offset) + flatbuffers.SIZEOF_INT; // data starts after the length
-};
-
-/**
- * Get the length of a vector whose offset is stored at "offset" in this object.
- *
- * @param {number} offset
- * @returns {number}
- */
-flatbuffers.ByteBuffer.prototype.__vector_len = function(offset) {
- return this.readInt32(offset + this.readInt32(offset));
-};
-
-/**
- * @param {string} ident
- * @returns {boolean}
- */
-flatbuffers.ByteBuffer.prototype.__has_identifier = function(ident) {
- if (ident.length != flatbuffers.FILE_IDENTIFIER_LENGTH) {
- throw new Error('FlatBuffers: file identifier must be length ' +
- flatbuffers.FILE_IDENTIFIER_LENGTH);
- }
- for (var i = 0; i < flatbuffers.FILE_IDENTIFIER_LENGTH; i++) {
- if (ident.charCodeAt(i) != this.readInt8(this.position_ + flatbuffers.SIZEOF_INT + i)) {
- return false;
- }
- }
- return true;
-};
-
-/**
- * A helper function to avoid generated code depending on this file directly.
- *
- * @param {number} low
- * @param {number} high
- * @returns {flatbuffers.Long}
- */
-flatbuffers.ByteBuffer.prototype.createLong = function(low, high) {
- return flatbuffers.Long.create(low, high);
-};
-
-// Exports for Node.js and RequireJS
-this.flatbuffers = flatbuffers;
-
-/// @endcond
-/// @}
diff --git a/third_party/flatbuffers/net/FlatBuffers/ByteBuffer.cs b/third_party/flatbuffers/net/FlatBuffers/ByteBuffer.cs
deleted file mode 100755
index 37a2c7e..0000000
--- a/third_party/flatbuffers/net/FlatBuffers/ByteBuffer.cs
+++ /dev/null
@@ -1,457 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// There are 2 #defines that have an impact on performance of this ByteBuffer implementation
-//
-// UNSAFE_BYTEBUFFER
-// This will use unsafe code to manipulate the underlying byte array. This
-// can yield a reasonable performance increase.
-//
-// BYTEBUFFER_NO_BOUNDS_CHECK
-// This will disable the bounds check asserts to the byte array. This can
-// yield a small performance gain in normal code..
-//
-// Using UNSAFE_BYTEBUFFER and BYTEBUFFER_NO_BOUNDS_CHECK together can yield a
-// performance gain of ~15% for some operations, however doing so is potentially
-// dangerous. Do so at your own risk!
-//
-
-using System;
-
-namespace FlatBuffers
-{
- /// <summary>
- /// Class to mimic Java's ByteBuffer which is used heavily in Flatbuffers.
- /// </summary>
- public class ByteBuffer
- {
- private readonly byte[] _buffer;
- private int _pos; // Must track start of the buffer.
-
- public int Length { get { return _buffer.Length; } }
-
- public byte[] Data { get { return _buffer; } }
-
- public ByteBuffer(byte[] buffer) : this(buffer, 0) { }
-
- public ByteBuffer(byte[] buffer, int pos)
- {
- _buffer = buffer;
- _pos = pos;
- }
-
- public int Position {
- get { return _pos; }
- set { _pos = value; }
- }
-
- public void Reset()
- {
- _pos = 0;
- }
-
- // Pre-allocated helper arrays for convertion.
- private float[] floathelper = new[] { 0.0f };
- private int[] inthelper = new[] { 0 };
- private double[] doublehelper = new[] { 0.0 };
- private ulong[] ulonghelper = new[] { 0UL };
-
- // Helper functions for the unsafe version.
- static public ushort ReverseBytes(ushort input)
- {
- return (ushort)(((input & 0x00FFU) << 8) |
- ((input & 0xFF00U) >> 8));
- }
- static public uint ReverseBytes(uint input)
- {
- return ((input & 0x000000FFU) << 24) |
- ((input & 0x0000FF00U) << 8) |
- ((input & 0x00FF0000U) >> 8) |
- ((input & 0xFF000000U) >> 24);
- }
- static public ulong ReverseBytes(ulong input)
- {
- return (((input & 0x00000000000000FFUL) << 56) |
- ((input & 0x000000000000FF00UL) << 40) |
- ((input & 0x0000000000FF0000UL) << 24) |
- ((input & 0x00000000FF000000UL) << 8) |
- ((input & 0x000000FF00000000UL) >> 8) |
- ((input & 0x0000FF0000000000UL) >> 24) |
- ((input & 0x00FF000000000000UL) >> 40) |
- ((input & 0xFF00000000000000UL) >> 56));
- }
-
-#if !UNSAFE_BYTEBUFFER
- // Helper functions for the safe (but slower) version.
- protected void WriteLittleEndian(int offset, int count, ulong data)
- {
- if (BitConverter.IsLittleEndian)
- {
- for (int i = 0; i < count; i++)
- {
- _buffer[offset + i] = (byte)(data >> i * 8);
- }
- }
- else
- {
- for (int i = 0; i < count; i++)
- {
- _buffer[offset + count - 1 - i] = (byte)(data >> i * 8);
- }
- }
- }
-
- protected ulong ReadLittleEndian(int offset, int count)
- {
- AssertOffsetAndLength(offset, count);
- ulong r = 0;
- if (BitConverter.IsLittleEndian)
- {
- for (int i = 0; i < count; i++)
- {
- r |= (ulong)_buffer[offset + i] << i * 8;
- }
- }
- else
- {
- for (int i = 0; i < count; i++)
- {
- r |= (ulong)_buffer[offset + count - 1 - i] << i * 8;
- }
- }
- return r;
- }
-#endif // !UNSAFE_BYTEBUFFER
-
-
- private void AssertOffsetAndLength(int offset, int length)
- {
- #if !BYTEBUFFER_NO_BOUNDS_CHECK
- if (offset < 0 ||
- offset > _buffer.Length - length)
- throw new ArgumentOutOfRangeException();
- #endif
- }
-
- public void PutSbyte(int offset, sbyte value)
- {
- AssertOffsetAndLength(offset, sizeof(sbyte));
- _buffer[offset] = (byte)value;
- }
-
- public void PutByte(int offset, byte value)
- {
- AssertOffsetAndLength(offset, sizeof(byte));
- _buffer[offset] = value;
- }
-
- public void PutByte(int offset, byte value, int count)
- {
- AssertOffsetAndLength(offset, sizeof(byte) * count);
- for (var i = 0; i < count; ++i)
- _buffer[offset + i] = value;
- }
-
- // this method exists in order to conform with Java ByteBuffer standards
- public void Put(int offset, byte value)
- {
- PutByte(offset, value);
- }
-
-#if UNSAFE_BYTEBUFFER
- // Unsafe but more efficient versions of Put*.
- public void PutShort(int offset, short value)
- {
- PutUshort(offset, (ushort)value);
- }
-
- public unsafe void PutUshort(int offset, ushort value)
- {
- AssertOffsetAndLength(offset, sizeof(ushort));
- fixed (byte* ptr = _buffer)
- {
- *(ushort*)(ptr + offset) = BitConverter.IsLittleEndian
- ? value
- : ReverseBytes(value);
- }
- }
-
- public void PutInt(int offset, int value)
- {
- PutUint(offset, (uint)value);
- }
-
- public unsafe void PutUint(int offset, uint value)
- {
- AssertOffsetAndLength(offset, sizeof(uint));
- fixed (byte* ptr = _buffer)
- {
- *(uint*)(ptr + offset) = BitConverter.IsLittleEndian
- ? value
- : ReverseBytes(value);
- }
- }
-
- public unsafe void PutLong(int offset, long value)
- {
- PutUlong(offset, (ulong)value);
- }
-
- public unsafe void PutUlong(int offset, ulong value)
- {
- AssertOffsetAndLength(offset, sizeof(ulong));
- fixed (byte* ptr = _buffer)
- {
- *(ulong*)(ptr + offset) = BitConverter.IsLittleEndian
- ? value
- : ReverseBytes(value);
- }
- }
-
- public unsafe void PutFloat(int offset, float value)
- {
- AssertOffsetAndLength(offset, sizeof(float));
- fixed (byte* ptr = _buffer)
- {
- if (BitConverter.IsLittleEndian)
- {
- *(float*)(ptr + offset) = value;
- }
- else
- {
- *(uint*)(ptr + offset) = ReverseBytes(*(uint*)(&value));
- }
- }
- }
-
- public unsafe void PutDouble(int offset, double value)
- {
- AssertOffsetAndLength(offset, sizeof(double));
- fixed (byte* ptr = _buffer)
- {
- if (BitConverter.IsLittleEndian)
- {
- *(double*)(ptr + offset) = value;
-
- }
- else
- {
- *(ulong*)(ptr + offset) = ReverseBytes(*(ulong*)(ptr + offset));
- }
- }
- }
-#else // !UNSAFE_BYTEBUFFER
- // Slower versions of Put* for when unsafe code is not allowed.
- public void PutShort(int offset, short value)
- {
- AssertOffsetAndLength(offset, sizeof(short));
- WriteLittleEndian(offset, sizeof(short), (ulong)value);
- }
-
- public void PutUshort(int offset, ushort value)
- {
- AssertOffsetAndLength(offset, sizeof(ushort));
- WriteLittleEndian(offset, sizeof(ushort), (ulong)value);
- }
-
- public void PutInt(int offset, int value)
- {
- AssertOffsetAndLength(offset, sizeof(int));
- WriteLittleEndian(offset, sizeof(int), (ulong)value);
- }
-
- public void PutUint(int offset, uint value)
- {
- AssertOffsetAndLength(offset, sizeof(uint));
- WriteLittleEndian(offset, sizeof(uint), (ulong)value);
- }
-
- public void PutLong(int offset, long value)
- {
- AssertOffsetAndLength(offset, sizeof(long));
- WriteLittleEndian(offset, sizeof(long), (ulong)value);
- }
-
- public void PutUlong(int offset, ulong value)
- {
- AssertOffsetAndLength(offset, sizeof(ulong));
- WriteLittleEndian(offset, sizeof(ulong), value);
- }
-
- public void PutFloat(int offset, float value)
- {
- AssertOffsetAndLength(offset, sizeof(float));
- floathelper[0] = value;
- Buffer.BlockCopy(floathelper, 0, inthelper, 0, sizeof(float));
- WriteLittleEndian(offset, sizeof(float), (ulong)inthelper[0]);
- }
-
- public void PutDouble(int offset, double value)
- {
- AssertOffsetAndLength(offset, sizeof(double));
- doublehelper[0] = value;
- Buffer.BlockCopy(doublehelper, 0, ulonghelper, 0, sizeof(double));
- WriteLittleEndian(offset, sizeof(double), ulonghelper[0]);
- }
-
-#endif // UNSAFE_BYTEBUFFER
-
- public sbyte GetSbyte(int index)
- {
- AssertOffsetAndLength(index, sizeof(sbyte));
- return (sbyte)_buffer[index];
- }
-
- public byte Get(int index)
- {
- AssertOffsetAndLength(index, sizeof(byte));
- return _buffer[index];
- }
-
-#if UNSAFE_BYTEBUFFER
- // Unsafe but more efficient versions of Get*.
- public short GetShort(int offset)
- {
- return (short)GetUshort(offset);
- }
-
- public unsafe ushort GetUshort(int offset)
- {
- AssertOffsetAndLength(offset, sizeof(ushort));
- fixed (byte* ptr = _buffer)
- {
- return BitConverter.IsLittleEndian
- ? *(ushort*)(ptr + offset)
- : ReverseBytes(*(ushort*)(ptr + offset));
- }
- }
-
- public int GetInt(int offset)
- {
- return (int)GetUint(offset);
- }
-
- public unsafe uint GetUint(int offset)
- {
- AssertOffsetAndLength(offset, sizeof(uint));
- fixed (byte* ptr = _buffer)
- {
- return BitConverter.IsLittleEndian
- ? *(uint*)(ptr + offset)
- : ReverseBytes(*(uint*)(ptr + offset));
- }
- }
-
- public long GetLong(int offset)
- {
- return (long)GetUlong(offset);
- }
-
- public unsafe ulong GetUlong(int offset)
- {
- AssertOffsetAndLength(offset, sizeof(ulong));
- fixed (byte* ptr = _buffer)
- {
- return BitConverter.IsLittleEndian
- ? *(ulong*)(ptr + offset)
- : ReverseBytes(*(ulong*)(ptr + offset));
- }
- }
-
- public unsafe float GetFloat(int offset)
- {
- AssertOffsetAndLength(offset, sizeof(float));
- fixed (byte* ptr = _buffer)
- {
- if (BitConverter.IsLittleEndian)
- {
- return *(float*)(ptr + offset);
- }
- else
- {
- uint uvalue = ReverseBytes(*(uint*)(ptr + offset));
- return *(float*)(&uvalue);
- }
- }
- }
-
- public unsafe double GetDouble(int offset)
- {
- AssertOffsetAndLength(offset, sizeof(double));
- fixed (byte* ptr = _buffer)
- {
- if (BitConverter.IsLittleEndian)
- {
- return *(double*)(ptr + offset);
- }
- else
- {
- ulong uvalue = ReverseBytes(*(ulong*)(ptr + offset));
- return *(double*)(&uvalue);
- }
- }
- }
-#else // !UNSAFE_BYTEBUFFER
- // Slower versions of Get* for when unsafe code is not allowed.
- public short GetShort(int index)
- {
- return (short)ReadLittleEndian(index, sizeof(short));
- }
-
- public ushort GetUshort(int index)
- {
- return (ushort)ReadLittleEndian(index, sizeof(ushort));
- }
-
- public int GetInt(int index)
- {
- return (int)ReadLittleEndian(index, sizeof(int));
- }
-
- public uint GetUint(int index)
- {
- return (uint)ReadLittleEndian(index, sizeof(uint));
- }
-
- public long GetLong(int index)
- {
- return (long)ReadLittleEndian(index, sizeof(long));
- }
-
- public ulong GetUlong(int index)
- {
- return ReadLittleEndian(index, sizeof(ulong));
- }
-
- public float GetFloat(int index)
- {
- int i = (int)ReadLittleEndian(index, sizeof(float));
- inthelper[0] = i;
- Buffer.BlockCopy(inthelper, 0, floathelper, 0, sizeof(float));
- return floathelper[0];
- }
-
- public double GetDouble(int index)
- {
- ulong i = ReadLittleEndian(index, sizeof(double));
- // There's Int64BitsToDouble but it uses unsafe code internally.
- ulonghelper[0] = i;
- Buffer.BlockCopy(ulonghelper, 0, doublehelper, 0, sizeof(double));
- return doublehelper[0];
- }
-#endif // UNSAFE_BYTEBUFFER
- }
-}
diff --git a/third_party/flatbuffers/net/FlatBuffers/FlatBufferBuilder.cs b/third_party/flatbuffers/net/FlatBuffers/FlatBufferBuilder.cs
deleted file mode 100644
index b6701df..0000000
--- a/third_party/flatbuffers/net/FlatBuffers/FlatBufferBuilder.cs
+++ /dev/null
@@ -1,652 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-using System;
-using System.Text;
-
-/// @file
-/// @addtogroup flatbuffers_csharp_api
-/// @{
-
-namespace FlatBuffers
-{
- /// <summary>
- /// Responsible for building up and accessing a FlatBuffer formatted byte
- /// array (via ByteBuffer).
- /// </summary>
- public class FlatBufferBuilder
- {
- private int _space;
- private ByteBuffer _bb;
- private int _minAlign = 1;
-
- // The vtable for the current table (if _vtableSize >= 0)
- private int[] _vtable = new int[16];
- // The size of the vtable. -1 indicates no vtable
- private int _vtableSize = -1;
- // Starting offset of the current struct/table.
- private int _objectStart;
- // List of offsets of all vtables.
- private int[] _vtables = new int[16];
- // Number of entries in `vtables` in use.
- private int _numVtables = 0;
- // For the current vector being built.
- private int _vectorNumElems = 0;
-
- /// <summary>
- /// Create a FlatBufferBuilder with a given initial size.
- /// </summary>
- /// <param name="initialSize">
- /// The initial size to use for the internal buffer.
- /// </param>
- public FlatBufferBuilder(int initialSize)
- {
- if (initialSize <= 0)
- throw new ArgumentOutOfRangeException("initialSize",
- initialSize, "Must be greater than zero");
- _space = initialSize;
- _bb = new ByteBuffer(new byte[initialSize]);
- }
-
- /// <summary>
- /// Reset the FlatBufferBuilder by purging all data that it holds.
- /// </summary>
- public void Clear()
- {
- _space = _bb.Length;
- _bb.Reset();
- _minAlign = 1;
- while (_vtableSize > 0) _vtable[--_vtableSize] = 0;
- _vtableSize = -1;
- _objectStart = 0;
- _numVtables = 0;
- _vectorNumElems = 0;
- }
-
- /// <summary>
- /// Gets and sets a Boolean to disable the optimization when serializing
- /// default values to a Table.
- ///
- /// In order to save space, fields that are set to their default value
- /// don't get serialized into the buffer.
- /// </summary>
- public bool ForceDefaults { get; set; }
-
- /// @cond FLATBUFFERS_INTERNAL
-
- public int Offset { get { return _bb.Length - _space; } }
-
- public void Pad(int size)
- {
- _bb.PutByte(_space -= size, 0, size);
- }
-
- // Doubles the size of the ByteBuffer, and copies the old data towards
- // the end of the new buffer (since we build the buffer backwards).
- void GrowBuffer()
- {
- var oldBuf = _bb.Data;
- var oldBufSize = oldBuf.Length;
- if ((oldBufSize & 0xC0000000) != 0)
- throw new Exception(
- "FlatBuffers: cannot grow buffer beyond 2 gigabytes.");
-
- var newBufSize = oldBufSize << 1;
- var newBuf = new byte[newBufSize];
-
- Buffer.BlockCopy(oldBuf, 0, newBuf, newBufSize - oldBufSize,
- oldBufSize);
- _bb = new ByteBuffer(newBuf, newBufSize);
- }
-
- // Prepare to write an element of `size` after `additional_bytes`
- // have been written, e.g. if you write a string, you need to align
- // such the int length field is aligned to SIZEOF_INT, and the string
- // data follows it directly.
- // If all you need to do is align, `additional_bytes` will be 0.
- public void Prep(int size, int additionalBytes)
- {
- // Track the biggest thing we've ever aligned to.
- if (size > _minAlign)
- _minAlign = size;
- // Find the amount of alignment needed such that `size` is properly
- // aligned after `additional_bytes`
- var alignSize =
- ((~((int)_bb.Length - _space + additionalBytes)) + 1) &
- (size - 1);
- // Reallocate the buffer if needed.
- while (_space < alignSize + size + additionalBytes)
- {
- var oldBufSize = (int)_bb.Length;
- GrowBuffer();
- _space += (int)_bb.Length - oldBufSize;
-
- }
- if (alignSize > 0)
- Pad(alignSize);
- }
-
- public void PutBool(bool x)
- {
- _bb.PutByte(_space -= sizeof(byte), (byte)(x ? 1 : 0));
- }
-
- public void PutSbyte(sbyte x)
- {
- _bb.PutSbyte(_space -= sizeof(sbyte), x);
- }
-
- public void PutByte(byte x)
- {
- _bb.PutByte(_space -= sizeof(byte), x);
- }
-
- public void PutShort(short x)
- {
- _bb.PutShort(_space -= sizeof(short), x);
- }
-
- public void PutUshort(ushort x)
- {
- _bb.PutUshort(_space -= sizeof(ushort), x);
- }
-
- public void PutInt(int x)
- {
- _bb.PutInt(_space -= sizeof(int), x);
- }
-
- public void PutUint(uint x)
- {
- _bb.PutUint(_space -= sizeof(uint), x);
- }
-
- public void PutLong(long x)
- {
- _bb.PutLong(_space -= sizeof(long), x);
- }
-
- public void PutUlong(ulong x)
- {
- _bb.PutUlong(_space -= sizeof(ulong), x);
- }
-
- public void PutFloat(float x)
- {
- _bb.PutFloat(_space -= sizeof(float), x);
- }
-
- public void PutDouble(double x)
- {
- _bb.PutDouble(_space -= sizeof(double), x);
- }
- /// @endcond
-
- /// <summary>
- /// Add a `bool` to the buffer (aligns the data and grows if necessary).
- /// </summary>
- /// <param name="x">The `bool` to add to the buffer.</param>
- public void AddBool(bool x) { Prep(sizeof(byte), 0); PutBool(x); }
-
- /// <summary>
- /// Add a `sbyte` to the buffer (aligns the data and grows if necessary).
- /// </summary>
- /// <param name="x">The `sbyte` to add to the buffer.</param>
- public void AddSbyte(sbyte x) { Prep(sizeof(sbyte), 0); PutSbyte(x); }
-
- /// <summary>
- /// Add a `byte` to the buffer (aligns the data and grows if necessary).
- /// </summary>
- /// <param name="x">The `byte` to add to the buffer.</param>
- public void AddByte(byte x) { Prep(sizeof(byte), 0); PutByte(x); }
-
- /// <summary>
- /// Add a `short` to the buffer (aligns the data and grows if necessary).
- /// </summary>
- /// <param name="x">The `short` to add to the buffer.</param>
- public void AddShort(short x) { Prep(sizeof(short), 0); PutShort(x); }
-
- /// <summary>
- /// Add an `ushort` to the buffer (aligns the data and grows if necessary).
- /// </summary>
- /// <param name="x">The `ushort` to add to the buffer.</param>
- public void AddUshort(ushort x) { Prep(sizeof(ushort), 0); PutUshort(x); }
-
- /// <summary>
- /// Add an `int` to the buffer (aligns the data and grows if necessary).
- /// </summary>
- /// <param name="x">The `int` to add to the buffer.</param>
- public void AddInt(int x) { Prep(sizeof(int), 0); PutInt(x); }
-
- /// <summary>
- /// Add an `uint` to the buffer (aligns the data and grows if necessary).
- /// </summary>
- /// <param name="x">The `uint` to add to the buffer.</param>
- public void AddUint(uint x) { Prep(sizeof(uint), 0); PutUint(x); }
-
- /// <summary>
- /// Add a `long` to the buffer (aligns the data and grows if necessary).
- /// </summary>
- /// <param name="x">The `long` to add to the buffer.</param>
- public void AddLong(long x) { Prep(sizeof(long), 0); PutLong(x); }
-
- /// <summary>
- /// Add an `ulong` to the buffer (aligns the data and grows if necessary).
- /// </summary>
- /// <param name="x">The `ulong` to add to the buffer.</param>
- public void AddUlong(ulong x) { Prep(sizeof(ulong), 0); PutUlong(x); }
-
- /// <summary>
- /// Add a `float` to the buffer (aligns the data and grows if necessary).
- /// </summary>
- /// <param name="x">The `float` to add to the buffer.</param>
- public void AddFloat(float x) { Prep(sizeof(float), 0); PutFloat(x); }
-
- /// <summary>
- /// Add a `double` to the buffer (aligns the data and grows if necessary).
- /// </summary>
- /// <param name="x">The `double` to add to the buffer.</param>
- public void AddDouble(double x) { Prep(sizeof(double), 0);
- PutDouble(x); }
-
- /// <summary>
- /// Adds an offset, relative to where it will be written.
- /// </summary>
- /// <param name="off">The offset to add to the buffer.</param>
- public void AddOffset(int off)
- {
- Prep(sizeof(int), 0); // Ensure alignment is already done.
- if (off > Offset)
- throw new ArgumentException();
-
- off = Offset - off + sizeof(int);
- PutInt(off);
- }
-
- /// @cond FLATBUFFERS_INTERNAL
- public void StartVector(int elemSize, int count, int alignment)
- {
- NotNested();
- _vectorNumElems = count;
- Prep(sizeof(int), elemSize * count);
- Prep(alignment, elemSize * count); // Just in case alignment > int.
- }
- /// @endcond
-
- /// <summary>
- /// Writes data necessary to finish a vector construction.
- /// </summary>
- public VectorOffset EndVector()
- {
- PutInt(_vectorNumElems);
- return new VectorOffset(Offset);
- }
-
- /// <summary>
- /// Creates a vector of tables.
- /// </summary>
- /// <param name="offsets">Offsets of the tables.</param>
- public VectorOffset CreateVectorOfTables<T>(Offset<T>[] offsets) where T : struct
- {
- NotNested();
- StartVector(sizeof(int), offsets.Length, sizeof(int));
- for (int i = offsets.Length - 1; i >= 0; i--) AddOffset(offsets[i].Value);
- return EndVector();
- }
-
- /// @cond FLATBUFFERS_INTENRAL
- public void Nested(int obj)
- {
- // Structs are always stored inline, so need to be created right
- // where they are used. You'll get this assert if you created it
- // elsewhere.
- if (obj != Offset)
- throw new Exception(
- "FlatBuffers: struct must be serialized inline.");
- }
-
- public void NotNested()
- {
- // You should not be creating any other objects or strings/vectors
- // while an object is being constructed
- if (_vtableSize >= 0)
- throw new Exception(
- "FlatBuffers: object serialization must not be nested.");
- }
-
- public void StartObject(int numfields)
- {
- if (numfields < 0)
- throw new ArgumentOutOfRangeException("Flatbuffers: invalid numfields");
-
- NotNested();
-
- if (_vtable.Length < numfields)
- _vtable = new int[numfields];
-
- _vtableSize = numfields;
- _objectStart = Offset;
- }
-
-
- // Set the current vtable at `voffset` to the current location in the
- // buffer.
- public void Slot(int voffset)
- {
- if (voffset >= _vtableSize)
- throw new IndexOutOfRangeException("Flatbuffers: invalid voffset");
-
- _vtable[voffset] = Offset;
- }
-
- /// <summary>
- /// Adds a Boolean to the Table at index `o` in its vtable using the value `x` and default `d`
- /// </summary>
- /// <param name="o">The index into the vtable</param>
- /// <param name="x">The value to put into the buffer. If the value is equal to the default
- /// and <see cref="ForceDefaults"/> is false, the value will be skipped.</param>
- /// <param name="d">The default value to compare the value against</param>
- public void AddBool(int o, bool x, bool d) { if (ForceDefaults || x != d) { AddBool(x); Slot(o); } }
-
- /// <summary>
- /// Adds a SByte to the Table at index `o` in its vtable using the value `x` and default `d`
- /// </summary>
- /// <param name="o">The index into the vtable</param>
- /// <param name="x">The value to put into the buffer. If the value is equal to the default
- /// and <see cref="ForceDefaults"/> is false, the value will be skipped.</param>
- /// <param name="d">The default value to compare the value against</param>
- public void AddSbyte(int o, sbyte x, sbyte d) { if (ForceDefaults || x != d) { AddSbyte(x); Slot(o); } }
-
- /// <summary>
- /// Adds a Byte to the Table at index `o` in its vtable using the value `x` and default `d`
- /// </summary>
- /// <param name="o">The index into the vtable</param>
- /// <param name="x">The value to put into the buffer. If the value is equal to the default
- /// and <see cref="ForceDefaults"/> is false, the value will be skipped.</param>
- /// <param name="d">The default value to compare the value against</param>
- public void AddByte(int o, byte x, byte d) { if (ForceDefaults || x != d) { AddByte(x); Slot(o); } }
-
- /// <summary>
- /// Adds a Int16 to the Table at index `o` in its vtable using the value `x` and default `d`
- /// </summary>
- /// <param name="o">The index into the vtable</param>
- /// <param name="x">The value to put into the buffer. If the value is equal to the default
- /// and <see cref="ForceDefaults"/> is false, the value will be skipped.</param>
- /// <param name="d">The default value to compare the value against</param>
- public void AddShort(int o, short x, int d) { if (ForceDefaults || x != d) { AddShort(x); Slot(o); } }
-
- /// <summary>
- /// Adds a UInt16 to the Table at index `o` in its vtable using the value `x` and default `d`
- /// </summary>
- /// <param name="o">The index into the vtable</param>
- /// <param name="x">The value to put into the buffer. If the value is equal to the default
- /// and <see cref="ForceDefaults"/> is false, the value will be skipped.</param>
- /// <param name="d">The default value to compare the value against</param>
- public void AddUshort(int o, ushort x, ushort d) { if (ForceDefaults || x != d) { AddUshort(x); Slot(o); } }
-
- /// <summary>
- /// Adds an Int32 to the Table at index `o` in its vtable using the value `x` and default `d`
- /// </summary>
- /// <param name="o">The index into the vtable</param>
- /// <param name="x">The value to put into the buffer. If the value is equal to the default
- /// and <see cref="ForceDefaults"/> is false, the value will be skipped.</param>
- /// <param name="d">The default value to compare the value against</param>
- public void AddInt(int o, int x, int d) { if (ForceDefaults || x != d) { AddInt(x); Slot(o); } }
-
- /// <summary>
- /// Adds a UInt32 to the Table at index `o` in its vtable using the value `x` and default `d`
- /// </summary>
- /// <param name="o">The index into the vtable</param>
- /// <param name="x">The value to put into the buffer. If the value is equal to the default
- /// and <see cref="ForceDefaults"/> is false, the value will be skipped.</param>
- /// <param name="d">The default value to compare the value against</param>
- public void AddUint(int o, uint x, uint d) { if (ForceDefaults || x != d) { AddUint(x); Slot(o); } }
-
- /// <summary>
- /// Adds an Int64 to the Table at index `o` in its vtable using the value `x` and default `d`
- /// </summary>
- /// <param name="o">The index into the vtable</param>
- /// <param name="x">The value to put into the buffer. If the value is equal to the default
- /// and <see cref="ForceDefaults"/> is false, the value will be skipped.</param>
- /// <param name="d">The default value to compare the value against</param>
- public void AddLong(int o, long x, long d) { if (ForceDefaults || x != d) { AddLong(x); Slot(o); } }
-
- /// <summary>
- /// Adds a UInt64 to the Table at index `o` in its vtable using the value `x` and default `d`
- /// </summary>
- /// <param name="o">The index into the vtable</param>
- /// <param name="x">The value to put into the buffer. If the value is equal to the default
- /// and <see cref="ForceDefaults"/> is false, the value will be skipped.</param>
- /// <param name="d">The default value to compare the value against</param>
- public void AddUlong(int o, ulong x, ulong d) { if (ForceDefaults || x != d) { AddUlong(x); Slot(o); } }
-
- /// <summary>
- /// Adds a Single to the Table at index `o` in its vtable using the value `x` and default `d`
- /// </summary>
- /// <param name="o">The index into the vtable</param>
- /// <param name="x">The value to put into the buffer. If the value is equal to the default
- /// and <see cref="ForceDefaults"/> is false, the value will be skipped.</param>
- /// <param name="d">The default value to compare the value against</param>
- public void AddFloat(int o, float x, double d) { if (ForceDefaults || x != d) { AddFloat(x); Slot(o); } }
-
- /// <summary>
- /// Adds a Double to the Table at index `o` in its vtable using the value `x` and default `d`
- /// </summary>
- /// <param name="o">The index into the vtable</param>
- /// <param name="x">The value to put into the buffer. If the value is equal to the default
- /// and <see cref="ForceDefaults"/> is false, the value will be skipped.</param>
- /// <param name="d">The default value to compare the value against</param>
- public void AddDouble(int o, double x, double d) { if (ForceDefaults || x != d) { AddDouble(x); Slot(o); } }
-
- /// <summary>
- /// Adds a buffer offset to the Table at index `o` in its vtable using the value `x` and default `d`
- /// </summary>
- /// <param name="o">The index into the vtable</param>
- /// <param name="x">The value to put into the buffer. If the value is equal to the default
- /// and <see cref="ForceDefaults"/> is false, the value will be skipped.</param>
- /// <param name="d">The default value to compare the value against</param>
- public void AddOffset(int o, int x, int d) { if (ForceDefaults || x != d) { AddOffset(x); Slot(o); } }
- /// @endcond
-
- /// <summary>
- /// Encode the string `s` in the buffer using UTF-8.
- /// </summary>
- /// <param name="s">The string to encode.</param>
- /// <returns>
- /// The offset in the buffer where the encoded string starts.
- /// </returns>
- public StringOffset CreateString(string s)
- {
- NotNested();
- AddByte(0);
- var utf8StringLen = Encoding.UTF8.GetByteCount(s);
- StartVector(1, utf8StringLen, 1);
- Encoding.UTF8.GetBytes(s, 0, s.Length, _bb.Data, _space -= utf8StringLen);
- return new StringOffset(EndVector().Value);
- }
-
- /// @cond FLATBUFFERS_INTERNAL
- // Structs are stored inline, so nothing additional is being added.
- // `d` is always 0.
- public void AddStruct(int voffset, int x, int d)
- {
- if (x != d)
- {
- Nested(x);
- Slot(voffset);
- }
- }
-
- public int EndObject()
- {
- if (_vtableSize < 0)
- throw new InvalidOperationException(
- "Flatbuffers: calling endObject without a startObject");
-
- AddInt((int)0);
- var vtableloc = Offset;
- // Write out the current vtable.
- for (int i = _vtableSize - 1; i >= 0 ; i--) {
- // Offset relative to the start of the table.
- short off = (short)(_vtable[i] != 0
- ? vtableloc - _vtable[i]
- : 0);
- AddShort(off);
-
- // clear out written entry
- _vtable[i] = 0;
- }
-
- const int standardFields = 2; // The fields below:
- AddShort((short)(vtableloc - _objectStart));
- AddShort((short)((_vtableSize + standardFields) *
- sizeof(short)));
-
- // Search for an existing vtable that matches the current one.
- int existingVtable = 0;
- for (int i = 0; i < _numVtables; i++) {
- int vt1 = _bb.Length - _vtables[i];
- int vt2 = _space;
- short len = _bb.GetShort(vt1);
- if (len == _bb.GetShort(vt2)) {
- for (int j = sizeof(short); j < len; j += sizeof(short)) {
- if (_bb.GetShort(vt1 + j) != _bb.GetShort(vt2 + j)) {
- goto endLoop;
- }
- }
- existingVtable = _vtables[i];
- break;
- }
-
- endLoop: { }
- }
-
- if (existingVtable != 0) {
- // Found a match:
- // Remove the current vtable.
- _space = _bb.Length - vtableloc;
- // Point table to existing vtable.
- _bb.PutInt(_space, existingVtable - vtableloc);
- } else {
- // No match:
- // Add the location of the current vtable to the list of
- // vtables.
- if (_numVtables == _vtables.Length)
- {
- // Arrays.CopyOf(vtables num_vtables * 2);
- var newvtables = new int[ _numVtables * 2];
- Array.Copy(_vtables, newvtables, _vtables.Length);
-
- _vtables = newvtables;
- };
- _vtables[_numVtables++] = Offset;
- // Point table to current vtable.
- _bb.PutInt(_bb.Length - vtableloc, Offset - vtableloc);
- }
-
- _vtableSize = -1;
- return vtableloc;
- }
-
- // This checks a required field has been set in a given table that has
- // just been constructed.
- public void Required(int table, int field)
- {
- int table_start = _bb.Length - table;
- int vtable_start = table_start - _bb.GetInt(table_start);
- bool ok = _bb.GetShort(vtable_start + field) != 0;
- // If this fails, the caller will show what field needs to be set.
- if (!ok)
- throw new InvalidOperationException("FlatBuffers: field " + field +
- " must be set");
- }
- /// @endcond
-
- /// <summary>
- /// Finalize a buffer, pointing to the given `root_table`.
- /// </summary>
- /// <param name="rootTable">
- /// An offset to be added to the buffer.
- /// </param>
- public void Finish(int rootTable)
- {
- Prep(_minAlign, sizeof(int));
- AddOffset(rootTable);
- _bb.Position = _space;
- }
-
- /// <summary>
- /// Get the ByteBuffer representing the FlatBuffer.
- /// </summary>
- /// <remarks>
- /// This is typically only called after you call `Finish()`.
- /// The actual data starts at the ByteBuffer's current position,
- /// not necessarily at `0`.
- /// </remarks>
- /// <returns>
- /// Returns the ByteBuffer for this FlatBuffer.
- /// </returns>
- public ByteBuffer DataBuffer { get { return _bb; } }
-
- /// <summary>
- /// A utility function to copy and return the ByteBuffer data as a
- /// `byte[]`.
- /// </summary>
- /// <returns>
- /// A full copy of the FlatBuffer data.
- /// </returns>
- public byte[] SizedByteArray()
- {
- var newArray = new byte[_bb.Data.Length - _bb.Position];
- Buffer.BlockCopy(_bb.Data, _bb.Position, newArray, 0,
- _bb.Data.Length - _bb.Position);
- return newArray;
- }
-
- /// <summary>
- /// Finalize a buffer, pointing to the given `rootTable`.
- /// </summary>
- /// <param name="rootTable">
- /// An offset to be added to the buffer.
- /// </param>
- /// <param name="fileIdentifier">
- /// A FlatBuffer file identifier to be added to the buffer before
- /// `root_table`.
- /// </param>
- public void Finish(int rootTable, string fileIdentifier)
- {
- Prep(_minAlign, sizeof(int) +
- FlatBufferConstants.FileIdentifierLength);
- if (fileIdentifier.Length !=
- FlatBufferConstants.FileIdentifierLength)
- throw new ArgumentException(
- "FlatBuffers: file identifier must be length " +
- FlatBufferConstants.FileIdentifierLength,
- "fileIdentifier");
- for (int i = FlatBufferConstants.FileIdentifierLength - 1; i >= 0;
- i--)
- {
- AddByte((byte)fileIdentifier[i]);
- }
- Finish(rootTable);
- }
-
-
- }
-}
-
-/// @}
diff --git a/third_party/flatbuffers/net/FlatBuffers/FlatBufferConstants.cs b/third_party/flatbuffers/net/FlatBuffers/FlatBufferConstants.cs
deleted file mode 100644
index ab3092c..0000000
--- a/third_party/flatbuffers/net/FlatBuffers/FlatBufferConstants.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace FlatBuffers
-{
- public static class FlatBufferConstants
- {
- public const int FileIdentifierLength = 4;
- }
-}
diff --git a/third_party/flatbuffers/net/FlatBuffers/FlatBuffers.csproj b/third_party/flatbuffers/net/FlatBuffers/FlatBuffers.csproj
deleted file mode 100644
index 2a0cf99..0000000
--- a/third_party/flatbuffers/net/FlatBuffers/FlatBuffers.csproj
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
- <PropertyGroup>
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProjectGuid>{28C00774-1E73-4A75-AD8F-844CD21A064D}</ProjectGuid>
- <OutputType>Library</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>FlatBuffers</RootNamespace>
- <AssemblyName>FlatBuffers</AssemblyName>
- <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
- <FileAlignment>512</FileAlignment>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
- <DebugSymbols>true</DebugSymbols>
- <DebugType>full</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>bin\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <DebugType>pdbonly</DebugType>
- <Optimize>true</Optimize>
- <OutputPath>bin\Release\</OutputPath>
- <DefineConstants>TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- </PropertyGroup>
- <ItemGroup>
- <Reference Include="System" />
- <Reference Include="System.Core" />
- </ItemGroup>
- <ItemGroup>
- <Compile Include="ByteBuffer.cs" />
- <Compile Include="FlatBufferBuilder.cs" />
- <Compile Include="FlatBufferConstants.cs" />
- <Compile Include="IFlatbufferObject.cs" />
- <Compile Include="Offset.cs" />
- <Compile Include="Properties\AssemblyInfo.cs" />
- <Compile Include="Struct.cs" />
- <Compile Include="Table.cs" />
- </ItemGroup>
- <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
- <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
- Other similar extension points exist, see Microsoft.Common.targets.
- <Target Name="BeforeBuild">
- </Target>
- <Target Name="AfterBuild">
- </Target>
- -->
-</Project>
\ No newline at end of file
diff --git a/third_party/flatbuffers/net/FlatBuffers/IFlatbufferObject.cs b/third_party/flatbuffers/net/FlatBuffers/IFlatbufferObject.cs
deleted file mode 100644
index 6a15aba..0000000
--- a/third_party/flatbuffers/net/FlatBuffers/IFlatbufferObject.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-namespace FlatBuffers
-{
- /// <summary>
- /// This is the base for both structs and tables.
- /// </summary>
- public interface IFlatbufferObject
- {
- void __init(int _i, ByteBuffer _bb);
-
- ByteBuffer ByteBuffer { get; }
- }
-}
diff --git a/third_party/flatbuffers/net/FlatBuffers/Offset.cs b/third_party/flatbuffers/net/FlatBuffers/Offset.cs
deleted file mode 100644
index 2b17cec..0000000
--- a/third_party/flatbuffers/net/FlatBuffers/Offset.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-namespace FlatBuffers
-{
- /// <summary>
- /// Offset class for typesafe assignments.
- /// </summary>
- public struct Offset<T> where T : struct
- {
- public int Value;
- public Offset(int value)
- {
- Value = value;
- }
- }
-
- public struct StringOffset
- {
- public int Value;
- public StringOffset(int value)
- {
- Value = value;
- }
- }
-
- public struct VectorOffset
- {
- public int Value;
- public VectorOffset(int value)
- {
- Value = value;
- }
- }
-}
diff --git a/third_party/flatbuffers/net/FlatBuffers/Properties/AssemblyInfo.cs b/third_party/flatbuffers/net/FlatBuffers/Properties/AssemblyInfo.cs
deleted file mode 100644
index 1edfac4..0000000
--- a/third_party/flatbuffers/net/FlatBuffers/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("FlatBuffers")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("FlatBuffers")]
-[assembly: AssemblyCopyright("Copyright (c) 2015 Google Inc")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("91c32e64-ef20-47df-9c9f-cec9207bc6df")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/third_party/flatbuffers/net/FlatBuffers/Struct.cs b/third_party/flatbuffers/net/FlatBuffers/Struct.cs
deleted file mode 100644
index 61da32f..0000000
--- a/third_party/flatbuffers/net/FlatBuffers/Struct.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-namespace FlatBuffers
-{
- /// <summary>
- /// All structs in the generated code derive from this class, and add their own accessors.
- /// </summary>
- public struct Struct
- {
- public int bb_pos;
- public ByteBuffer bb;
- }
-}
diff --git a/third_party/flatbuffers/net/FlatBuffers/Table.cs b/third_party/flatbuffers/net/FlatBuffers/Table.cs
deleted file mode 100644
index 55182b3..0000000
--- a/third_party/flatbuffers/net/FlatBuffers/Table.cs
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-using System;
-using System.Text;
-
-namespace FlatBuffers
-{
- /// <summary>
- /// All tables in the generated code derive from this struct, and add their own accessors.
- /// </summary>
- public struct Table
- {
- public int bb_pos;
- public ByteBuffer bb;
-
- public ByteBuffer ByteBuffer { get { return bb; } }
-
- // Look up a field in the vtable, return an offset into the object, or 0 if the field is not
- // present.
- public int __offset(int vtableOffset)
- {
- int vtable = bb_pos - bb.GetInt(bb_pos);
- return vtableOffset < bb.GetShort(vtable) ? (int)bb.GetShort(vtable + vtableOffset) : 0;
- }
-
- public static int __offset(int vtableOffset, int offset, ByteBuffer bb)
- {
- int vtable = bb.Length - offset;
- return (int)bb.GetShort(vtable + vtableOffset - bb.GetInt(vtable)) + vtable;
- }
-
- // Retrieve the relative offset stored at "offset"
- public int __indirect(int offset)
- {
- return offset + bb.GetInt(offset);
- }
-
- public static int __indirect(int offset, ByteBuffer bb)
- {
- return offset + bb.GetInt(offset);
- }
-
- // Create a .NET String from UTF-8 data stored inside the flatbuffer.
- public string __string(int offset)
- {
- offset += bb.GetInt(offset);
- var len = bb.GetInt(offset);
- var startPos = offset + sizeof(int);
- return Encoding.UTF8.GetString(bb.Data, startPos , len);
- }
-
- // Get the length of a vector whose offset is stored at "offset" in this object.
- public int __vector_len(int offset)
- {
- offset += bb_pos;
- offset += bb.GetInt(offset);
- return bb.GetInt(offset);
- }
-
- // Get the start of data of a vector whose offset is stored at "offset" in this object.
- public int __vector(int offset)
- {
- offset += bb_pos;
- return offset + bb.GetInt(offset) + sizeof(int); // data starts after the length
- }
-
- // Get the data of a vector whoses offset is stored at "offset" in this object as an
- // ArraySegment<byte>. If the vector is not present in the ByteBuffer,
- // then a null value will be returned.
- public ArraySegment<byte>? __vector_as_arraysegment(int offset)
- {
- var o = this.__offset(offset);
- if (0 == o)
- {
- return null;
- }
-
- var pos = this.__vector(o);
- var len = this.__vector_len(o);
- return new ArraySegment<byte>(this.bb.Data, pos, len);
- }
-
- // Initialize any Table-derived type to point to the union at the given offset.
- public T __union<T>(int offset) where T : struct, IFlatbufferObject
- {
- offset += bb_pos;
- T t = new T();
- t.__init(offset + bb.GetInt(offset), bb);
- return t;
- }
-
- public static bool __has_identifier(ByteBuffer bb, string ident)
- {
- if (ident.Length != FlatBufferConstants.FileIdentifierLength)
- throw new ArgumentException("FlatBuffers: file identifier must be length " + FlatBufferConstants.FileIdentifierLength, "ident");
-
- for (var i = 0; i < FlatBufferConstants.FileIdentifierLength; i++)
- {
- if (ident[i] != (char)bb.Get(bb.Position + sizeof(int) + i)) return false;
- }
-
- return true;
- }
-
- // Compare strings in the ByteBuffer.
- public static int CompareStrings(int offset_1, int offset_2, ByteBuffer bb)
- {
- offset_1 += bb.GetInt(offset_1);
- offset_2 += bb.GetInt(offset_2);
- var len_1 = bb.GetInt(offset_1);
- var len_2 = bb.GetInt(offset_2);
- var startPos_1 = offset_1 + sizeof(int);
- var startPos_2 = offset_2 + sizeof(int);
- var len = Math.Min(len_1, len_2);
- byte[] bbArray = bb.Data;
- for(int i = 0; i < len; i++) {
- if (bbArray[i + startPos_1] != bbArray[i + startPos_2])
- return bbArray[i + startPos_1] - bbArray[i + startPos_2];
- }
- return len_1 - len_2;
- }
-
- // Compare string from the ByteBuffer with the string object
- public static int CompareStrings(int offset_1, byte[] key, ByteBuffer bb)
- {
- offset_1 += bb.GetInt(offset_1);
- var len_1 = bb.GetInt(offset_1);
- var len_2 = key.Length;
- var startPos_1 = offset_1 + sizeof(int);
- var len = Math.Min(len_1, len_2);
- byte[] bbArray = bb.Data;
- for (int i = 0; i < len; i++) {
- if (bbArray[i + startPos_1] != key[i])
- return bbArray[i + startPos_1] - key[i];
- }
- return len_1 - len_2;
- }
- }
-}
diff --git a/third_party/flatbuffers/package.json b/third_party/flatbuffers/package.json
deleted file mode 100644
index 070d907..0000000
--- a/third_party/flatbuffers/package.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "flatbuffers",
- "version": "1.6.0",
- "description": "Memory Efficient Serialization Library",
- "files": ["js/flatbuffers.js"],
- "main": "js/flatbuffers.js",
- "directories": {
- "doc": "docs",
- "test": "tests"
- },
- "scripts": {
- "test": "tests/JavaScriptTest.sh"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/google/flatbuffers.git"
- },
- "keywords": [
- "flatbuffers"
- ],
- "author": "The FlatBuffers project",
- "license": "SEE LICENSE IN LICENSE.txt",
- "bugs": {
- "url": "https://github.com/google/flatbuffers/issues"
- },
- "homepage": "https://google.github.io/flatbuffers/"
-}
diff --git a/third_party/flatbuffers/php/ByteBuffer.php b/third_party/flatbuffers/php/ByteBuffer.php
deleted file mode 100644
index 9929a7d..0000000
--- a/third_party/flatbuffers/php/ByteBuffer.php
+++ /dev/null
@@ -1,493 +0,0 @@
-<?php
-/*
- * Copyright 2015 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-namespace Google\FlatBuffers;
-
-class ByteBuffer
-{
- /**
- * @var string $_buffer;
- */
- public $_buffer;
-
- /**
- * @var int $_pos;
- */
- private $_pos;
-
- /**
- * @var bool $_is_little_endian
- */
- private static $_is_little_endian = null;
-
- public static function wrap($bytes)
- {
- $bb = new ByteBuffer(0);
- $bb->_buffer = $bytes;
-
- return $bb;
- }
-
- /**
- * @param $size
- */
- public function __construct($size)
- {
- $this->_buffer = str_repeat("\0", $size);
- }
-
- /**
- * @return int
- */
- public function capacity()
- {
- return strlen($this->_buffer);
- }
-
- /**
- * @return int
- */
- public function getPosition()
- {
- return $this->_pos;
- }
-
- /**
- * @param $pos
- */
- public function setPosition($pos)
- {
- $this->_pos = $pos;
- }
-
- /**
- *
- */
- public function reset()
- {
- $this->_pos = 0;
- }
-
- /**
- * @return int
- */
- public function length()
- {
- return strlen($this->_buffer);
- }
-
- /**
- * @return string
- */
- public function data()
- {
- return substr($this->_buffer, $this->_pos);
- }
-
- /**
- * @return bool
- */
- public static function isLittleEndian()
- {
- if (ByteBuffer::$_is_little_endian === null) {
- ByteBuffer::$_is_little_endian = unpack('S', "\x01\x00")[1] === 1;
- }
-
- return ByteBuffer::$_is_little_endian;
- }
-
- /**
- * write little endian value to the buffer.
- *
- * @param $offset
- * @param $count byte length
- * @param $data actual values
- */
- public function writeLittleEndian($offset, $count, $data)
- {
- if (ByteBuffer::isLittleEndian()) {
- for ($i = 0; $i < $count; $i++) {
- $this->_buffer[$offset + $i] = chr($data >> $i * 8);
- }
- } else {
- for ($i = 0; $i < $count; $i++) {
- $this->_buffer[$offset + $count - 1 - $i] = chr($data >> $i * 8);
- }
- }
- }
-
- /**
- * read little endian value from the buffer
- *
- * @param $offset
- * @param $count acutal size
- * @return int
- */
- public function readLittleEndian($offset, $count, $force_bigendian = false)
- {
- $this->assertOffsetAndLength($offset, $count);
- $r = 0;
-
- if (ByteBuffer::isLittleEndian() && $force_bigendian == false) {
- for ($i = 0; $i < $count; $i++) {
- $r |= ord($this->_buffer[$offset + $i]) << $i * 8;
- }
- } else {
- for ($i = 0; $i < $count; $i++) {
- $r |= ord($this->_buffer[$offset + $count -1 - $i]) << $i * 8;
- }
- }
-
- return $r;
- }
-
- /**
- * @param $offset
- * @param $length
- */
- public function assertOffsetAndLength($offset, $length)
- {
- if ($offset < 0 ||
- $offset >= strlen($this->_buffer) ||
- $offset + $length > strlen($this->_buffer)) {
- throw new \OutOfRangeException(sprintf("offset: %d, length: %d, buffer; %d", $offset, $length, strlen($this->_buffer)));
- }
- }
-
- /**
- * @param $offset
- * @param $value
- * @return mixed
- */
- public function putSbyte($offset, $value)
- {
- self::validateValue(-128, 127, $value, "sbyte");
-
- $length = strlen($value);
- $this->assertOffsetAndLength($offset, $length);
- return $this->_buffer[$offset] = $value;
- }
-
- /**
- * @param $offset
- * @param $value
- * @return mixed
- */
- public function putByte($offset, $value)
- {
- self::validateValue(0, 255, $value, "byte");
-
- $length = strlen($value);
- $this->assertOffsetAndLength($offset, $length);
- return $this->_buffer[$offset] = $value;
- }
-
- /**
- * @param $offset
- * @param $value
- */
- public function put($offset, $value)
- {
- $length = strlen($value);
- $this->assertOffsetAndLength($offset, $length);
- for ($i = 0; $i < $length; $i++) {
- $this->_buffer[$offset + $i] = $value[$i];
- }
- }
-
- /**
- * @param $offset
- * @param $value
- */
- public function putShort($offset, $value)
- {
- self::validateValue(-32768, 32767, $value, "short");
-
- $this->assertOffsetAndLength($offset, 2);
- $this->writeLittleEndian($offset, 2, $value);
- }
-
- /**
- * @param $offset
- * @param $value
- */
- public function putUshort($offset, $value)
- {
- self::validateValue(0, 65535, $value, "short");
-
- $this->assertOffsetAndLength($offset, 2);
- $this->writeLittleEndian($offset, 2, $value);
- }
-
- /**
- * @param $offset
- * @param $value
- */
- public function putInt($offset, $value)
- {
- // 2147483647 = (1 << 31) -1 = Maximum signed 32-bit int
- // -2147483648 = -1 << 31 = Minimum signed 32-bit int
- self::validateValue(-2147483648, 2147483647, $value, "int");
-
- $this->assertOffsetAndLength($offset, 4);
- $this->writeLittleEndian($offset, 4, $value);
- }
-
- /**
- * @param $offset
- * @param $value
- */
- public function putUint($offset, $value)
- {
- // NOTE: We can't put big integer value. this is PHP limitation.
- // 4294967295 = (1 << 32) -1 = Maximum unsigned 32-bin int
- self::validateValue(0, 4294967295, $value, "uint", " php has big numbers limitation. check your PHP_INT_MAX");
-
- $this->assertOffsetAndLength($offset, 4);
- $this->writeLittleEndian($offset, 4, $value);
- }
-
- /**
- * @param $offset
- * @param $value
- */
- public function putLong($offset, $value)
- {
- // NOTE: We can't put big integer value. this is PHP limitation.
- self::validateValue(~PHP_INT_MAX, PHP_INT_MAX, $value, "long", " php has big numbers limitation. check your PHP_INT_MAX");
-
- $this->assertOffsetAndLength($offset, 8);
- $this->writeLittleEndian($offset, 8, $value);
- }
-
- /**
- * @param $offset
- * @param $value
- */
- public function putUlong($offset, $value)
- {
- // NOTE: We can't put big integer value. this is PHP limitation.
- self::validateValue(0, PHP_INT_MAX, $value, "long", " php has big numbers limitation. check your PHP_INT_MAX");
-
- $this->assertOffsetAndLength($offset, 8);
- $this->writeLittleEndian($offset, 8, $value);
- }
-
- /**
- * @param $offset
- * @param $value
- */
- public function putFloat($offset, $value)
- {
- $this->assertOffsetAndLength($offset, 4);
-
- $floathelper = pack("f", $value);
- $v = unpack("V", $floathelper);
- $this->writeLittleEndian($offset, 4, $v[1]);
- }
-
- /**
- * @param $offset
- * @param $value
- */
- public function putDouble($offset, $value)
- {
- $this->assertOffsetAndLength($offset, 8);
-
- $floathelper = pack("d", $value);
- $v = unpack("V*", $floathelper);
-
- $this->writeLittleEndian($offset, 4, $v[1]);
- $this->writeLittleEndian($offset + 4, 4, $v[2]);
- }
-
- /**
- * @param $index
- * @return mixed
- */
- public function getByte($index)
- {
- return ord($this->_buffer[$index]);
- }
-
- /**
- * @param $index
- * @return mixed
- */
- public function getSbyte($index)
- {
- $v = unpack("c", $this->_buffer[$index]);
- return $v[1];
- }
-
- /**
- * @param $buffer
- */
- public function getX(&$buffer)
- {
- for ($i = $this->_pos, $j = 0; $j < strlen($buffer); $i++, $j++) {
- $buffer[$j] = $this->_buffer[$i];
- }
- }
-
- /**
- * @param $index
- * @return mixed
- */
- public function get($index)
- {
- $this->assertOffsetAndLength($index, 1);
- return $this->_buffer[$index];
- }
-
-
- /**
- * @param $index
- * @return mixed
- */
- public function getBool($index)
- {
- return (bool)ord($this->_buffer[$index]);
- }
-
- /**
- * @param $index
- * @return int
- */
- public function getShort($index)
- {
- $result = $this->readLittleEndian($index, 2);
-
- $sign = $index + (ByteBuffer::isLittleEndian() ? 1 : 0);
- $issigned = isset($this->_buffer[$sign]) && ord($this->_buffer[$sign]) & 0x80;
-
- // 65536 = 1 << 16 = Maximum unsigned 16-bit int
- return $issigned ? $result - 65536 : $result;
- }
-
- /**
- * @param $index
- * @return int
- */
- public function getUShort($index)
- {
- return $this->readLittleEndian($index, 2);
- }
-
- /**
- * @param $index
- * @return int
- */
- public function getInt($index)
- {
- $result = $this->readLittleEndian($index, 4);
-
- $sign = $index + (ByteBuffer::isLittleEndian() ? 3 : 0);
- $issigned = isset($this->_buffer[$sign]) && ord($this->_buffer[$sign]) & 0x80;
-
- if (PHP_INT_SIZE > 4) {
- // 4294967296 = 1 << 32 = Maximum unsigned 32-bit int
- return $issigned ? $result - 4294967296 : $result;
- } else {
- // 32bit / Windows treated number as signed integer.
- return $result;
- }
- }
-
- /**
- * @param $index
- * @return int
- */
- public function getUint($index)
- {
- return $this->readLittleEndian($index, 4);
- }
-
- /**
- * @param $index
- * @return int
- */
- public function getLong($index)
- {
- return $this->readLittleEndian($index, 8);
- }
-
- /**
- * @param $index
- * @return int
- */
- public function getUlong($index)
- {
- return $this->readLittleEndian($index, 8);
- }
-
- /**
- * @param $index
- * @return mixed
- */
- public function getFloat($index)
- {
- $i = $this->readLittleEndian($index, 4);
-
- return self::convertHelper(self::__FLOAT, $i);
- }
-
- /**
- * @param $index
- * @return float
- */
- public function getDouble($index)
- {
- $i = $this->readLittleEndian($index, 4);
- $i2 = $this->readLittleEndian($index + 4, 4);
-
- return self::convertHelper(self::__DOUBLE, $i, $i2);
- }
-
- const __SHORT = 1;
- const __INT = 2;
- const __LONG = 3;
- const __FLOAT = 4;
- const __DOUBLE = 5;
- private static function convertHelper($type, $value, $value2 = null) {
- // readLittleEndian construct unsigned integer value from bytes. we have to encode this value to
- // correct bytes, and decode as expected types with `unpack` function.
- // then it returns correct type value.
- // see also: http://php.net/manual/en/function.pack.php
-
- switch ($type) {
- case self::__FLOAT:
- $inthelper = pack("V", $value);
- $v = unpack("f", $inthelper);
- return $v[1];
- break;
- case self::__DOUBLE:
- $inthelper = pack("VV", $value, $value2);
- $v = unpack("d", $inthelper);
- return $v[1];
- break;
- default:
- throw new \Exception(sprintf("unexpected type %d specified", $type));
- }
- }
-
- private static function validateValue($min, $max, $value, $type, $additional_notes = "") {
- if(!($min <= $value && $value <= $max)) {
- throw new \InvalidArgumentException(sprintf("bad number %s for type %s.%s", $value, $type, $additional_notes));
- }
- }
-}
diff --git a/third_party/flatbuffers/php/Constants.php b/third_party/flatbuffers/php/Constants.php
deleted file mode 100644
index ef3730d..0000000
--- a/third_party/flatbuffers/php/Constants.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-/*
- * Copyright 2015 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-namespace Google\FlatBuffers;
-
-class Constants
-{
- const SIZEOF_SHORT = 2;
- const SIZEOF_INT = 4;
- const FILE_IDENTIFIER_LENGTH = 4;
-}
diff --git a/third_party/flatbuffers/php/FlatbufferBuilder.php b/third_party/flatbuffers/php/FlatbufferBuilder.php
deleted file mode 100644
index 5c18bf4..0000000
--- a/third_party/flatbuffers/php/FlatbufferBuilder.php
+++ /dev/null
@@ -1,966 +0,0 @@
-<?php
-/*
- * Copyright 2015 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/// @file
-/// @addtogroup flatbuffers_php_api
-/// @{
-
-namespace Google\FlatBuffers;
-
-class FlatbufferBuilder
-{
- /**
- * Internal ByteBuffer for the FlatBuffer data.
- * @var ByteBuffer $bb
- */
- public $bb;
-
- /// @cond FLATBUFFERS_INTERNAL
- /**
- * @var int $space
- */
- protected $space;
-
- /**
- * @var int $minalign
- */
- protected $minalign = 1;
-
- /**
- * @var array $vtable
- */
- protected $vtable;
-
- /**
- * @var int $vtable_in_use
- */
- protected $vtable_in_use = 0;
-
- /**
- * @var bool $nested
- */
- protected $nested = false;
-
- /**
- * @var int $object_start
- */
- protected $object_start;
-
- /**
- * @var array $vtables
- */
- protected $vtables = array();
-
- /**
- * @var int $num_vtables
- */
- protected $num_vtables = 0;
-
- /**
- * @var int $vector_num_elems
- */
- protected $vector_num_elems = 0;
-
- /**
- * @var bool $force_defaults
- */
- protected $force_defaults = false;
- /// @endcond
-
- /**
- * Create a FlatBufferBuilder with a given initial size.
- *
- * @param $initial_size initial byte buffer size.
- */
- public function __construct($initial_size)
- {
- if ($initial_size <= 0) {
- $initial_size = 1;
- }
- $this->space = $initial_size;
- $this->bb = $this->newByteBuffer($initial_size);
- }
-
- /// @cond FLATBUFFERS_INTERNAL
- /**
- * create new bytebuffer
- *
- * @param $size
- * @return ByteBuffer
- */
- private function newByteBuffer($size)
- {
- return new ByteBuffer($size);
- }
-
- /**
- * Returns the current ByteBuffer offset.
- *
- * @return int
- */
- public function offset()
- {
- return $this->bb->capacity() - $this->space;
- }
-
- /**
- * padding buffer
- *
- * @param $byte_size
- */
- public function pad($byte_size)
- {
- for ($i = 0; $i < $byte_size; $i++) {
- $this->bb->putByte(--$this->space, "\0");
- }
- }
-
- /**
- * prepare bytebuffer
- *
- * @param $size
- * @param $additional_bytes
- * @throws \Exception
- */
- public function prep($size, $additional_bytes)
- {
- if ($size > $this->minalign) {
- $this->minalign = $size;
- }
-
- $align_size = ((~($this->bb->capacity() - $this->space + $additional_bytes)) + 1) & ($size - 1);
- while ($this->space < $align_size + $size + $additional_bytes) {
- $old_buf_size = $this->bb->capacity();
- $this->bb = $this->growByteBuffer($this->bb);
- $this->space += $this->bb->capacity() - $old_buf_size;
- }
-
- $this->pad($align_size);
- }
-
- /**
- * @param ByteBuffer $bb
- * @return ByteBuffer
- * @throws \Exception
- */
- private static function growByteBuffer(ByteBuffer $bb)
- {
- $old_buf_size = $bb->capacity();
- if (($old_buf_size & 0xC0000000) != 0) {
- throw new \Exception("FlatBuffers: cannot grow buffer beyond 2 gigabytes");
- }
- $new_buf_size = $old_buf_size << 1;
-
- $bb->setPosition(0);
- $nbb = new ByteBuffer($new_buf_size);
-
- $nbb->setPosition($new_buf_size - $old_buf_size);
-
- // TODO(chobie): is this little bit faster?
- //$nbb->_buffer = substr_replace($nbb->_buffer, $bb->_buffer, $new_buf_size - $old_buf_size, strlen($bb->_buffer));
- for ($i = $new_buf_size - $old_buf_size, $j = 0; $j < strlen($bb->_buffer); $i++, $j++) {
- $nbb->_buffer[$i] = $bb->_buffer[$j];
- }
-
- return $nbb;
- }
-
- /**
- * @param $x
- */
- public function putBool($x)
- {
- $this->bb->put($this->space -= 1, chr((int)(bool)($x)));
- }
-
- /**
- * @param $x
- */
- public function putByte($x)
- {
- $this->bb->put($this->space -= 1, chr($x));
- }
-
- /**
- * @param $x
- */
- public function putSbyte($x)
- {
- $this->bb->put($this->space -= 1, chr($x));
- }
-
- /**
- * @param $x
- */
- public function putShort($x)
- {
- $this->bb->putShort($this->space -= 2, $x);
- }
-
- /**
- * @param $x
- */
- public function putUshort($x)
- {
- $this->bb->putUshort($this->space -= 2, $x);
- }
-
- /**
- * @param $x
- */
- public function putInt($x)
- {
- $this->bb->putInt($this->space -= 4, $x);
- }
-
- /**
- * @param $x
- */
- public function putUint($x)
- {
- if ($x > PHP_INT_MAX) {
- throw new \InvalidArgumentException("your platform can't handle uint correctly. use 64bit machine.");
- }
-
- $this->bb->putUint($this->space -= 4, $x);
- }
-
- /**
- * @param $x
- */
- public function putLong($x)
- {
- if ($x > PHP_INT_MAX) {
- throw new \InvalidArgumentException("Your platform can't handle long correctly. Use a 64bit machine.");
- }
-
- $this->bb->putLong($this->space -= 8, $x);
- }
-
- /**
- * @param $x
- */
- public function putUlong($x)
- {
- if ($x > PHP_INT_MAX) {
- throw new \InvalidArgumentException("Your platform can't handle ulong correctly. This is a php limitation. Please wait for the extension release.");
- }
-
- $this->bb->putUlong($this->space -= 8, $x);
- }
-
- /**
- * @param $x
- */
- public function putFloat($x)
- {
- $this->bb->putFloat($this->space -= 4, $x);
- }
-
- /**
- * @param $x
- */
- public function putDouble($x)
- {
- $this->bb->putDouble($this->space -= 8, $x);
- }
- /// @endcond
-
- /**
- * Add a `bool` to the buffer, properly aligned, and grows the buffer (if necessary).
- * @param $x The `bool` to add to the buffer.
- */
- public function addBool($x)
- {
- $this->prep(1, 0);
- $this->putBool($x);
- }
-
- /**
- * Add a `byte` to the buffer, properly aligned, and grows the buffer (if necessary).
- * @param $x The `byte` to add to the buffer.
- */
- public function addByte($x)
- {
- $this->prep(1, 0);
- $this->putByte($x);
- }
-
- /**
- * Add a `signed byte` to the buffer, properly aligned, and grows the buffer (if necessary).
- * @param $x The `signed byte` to add to the buffer.
- */
- public function addSbyte($x)
- {
- $this->prep(1, 0);
- $this->putSbyte($x);
- }
-
- /**
- * Add a `short` to the buffer, properly aligned, and grows the buffer (if necessary).
- * @param $x The `short` to add to the buffer.
- */
- public function addShort($x)
- {
- $this->prep(2, 0);
- $this->putShort($x);
- }
-
- /**
- * Add an `unsigned short` to the buffer, properly aligned, and grows the buffer (if necessary).
- * @param $x The `unsigned short` to add to the buffer.
- */
- public function addUshort($x)
- {
- $this->prep(2, 0);
- $this->putUshort($x);
- }
-
- /**
- * Add an `int` to the buffer, properly aligned, and grows the buffer (if necessary).
- * @param $x The `int` to add to the buffer.
- */
- public function addInt($x)
- {
- $this->prep(4, 0);
- $this->putInt($x);
- }
-
- /**
- * Add an `unsigned int` to the buffer, properly aligned, and grows the buffer (if necessary).
- * @param $x The `unsigned int` to add to the buffer.
- */
- public function addUint($x)
- {
- $this->prep(4, 0);
- $this->putUint($x);
- }
-
- /**
- * Add a `long` to the buffer, properly aligned, and grows the buffer (if necessary).
- * @param $x The `long` to add to the buffer.
- */
- public function addLong($x)
- {
- $this->prep(8, 0);
- $this->putLong($x);
- }
-
- /**
- * Add an `unsigned long` to the buffer, properly aligned, and grows the buffer (if necessary).
- * @param $x The `unsigned long` to add to the buffer.
- */
- public function addUlong($x)
- {
- $this->prep(8, 0);
- $this->putUlong($x);
- }
-
- /**
- * Add a `float` to the buffer, properly aligned, and grows the buffer (if necessary).
- * @param $x The `float` to add to the buffer.
- */
- public function addFloat($x)
- {
- $this->prep(4, 0);
- $this->putFloat($x);
- }
-
- /**
- * Add a `double` to the buffer, properly aligned, and grows the buffer (if necessary).
- * @param $x The `double` to add to the buffer.
- */
- public function addDouble($x)
- {
- $this->prep(8, 0);
- $this->putDouble($x);
- }
-
- /// @cond FLATBUFFERS_INTERNAL
- /**
- * @param $o
- * @param $x
- * @param $d
- */
- public function addBoolX($o, $x, $d)
- {
- if ($this->force_defaults || $x != $d) {
- $this->addBool($x);
- $this->slot($o);
- }
- }
-
- /**
- * @param $o
- * @param $x
- * @param $d
- */
- public function addByteX($o, $x, $d)
- {
- if ($this->force_defaults || $x != $d) {
- $this->addByte($x);
- $this->slot($o);
- }
- }
-
- /**
- * @param $o
- * @param $x
- * @param $d
- */
- public function addSbyteX($o, $x, $d)
- {
- if ($this->force_defaults || $x != $d) {
- $this->addSbyte($x);
- $this->slot($o);
- }
- }
-
- /**
- * @param $o
- * @param $x
- * @param $d
- */
- public function addShortX($o, $x, $d)
- {
- if ($this->force_defaults || $x != $d) {
- $this->addShort($x);
- $this->slot($o);
- }
- }
-
- /**
- * @param $o
- * @param $x
- * @param $d
- */
- public function addUshortX($o, $x, $d)
- {
- if ($this->force_defaults || $x != $d) {
- $this->addUshort($x);
- $this->slot($o);
- }
- }
-
- /**
- * @param $o
- * @param $x
- * @param $d
- */
- public function addIntX($o, $x, $d)
- {
- if ($this->force_defaults || $x != $d) {
- $this->addInt($x);
- $this->slot($o);
- }
- }
-
- /**
- * @param $o
- * @param $x
- * @param $d
- */
- public function addUintX($o, $x, $d)
- {
- if ($this->force_defaults || $x != $d) {
- $this->addUint($x);
- $this->slot($o);
- }
- }
-
- /**
- * @param $o
- * @param $x
- * @param $d
- */
- public function addLongX($o, $x, $d)
- {
- if ($this->force_defaults || $x != $d) {
- $this->addLong($x);
- $this->slot($o);
- }
- }
-
- /**
- * @param $o
- * @param $x
- * @param $d
- */
- public function addUlongX($o, $x, $d)
- {
- if ($this->force_defaults || $x != $d) {
- $this->addUlong($x);
- $this->slot($o);
- }
- }
-
-
- /**
- * @param $o
- * @param $x
- * @param $d
- */
- public function addFloatX($o, $x, $d)
- {
- if ($this->force_defaults || $x != $d) {
- $this->addFloat($x);
- $this->slot($o);
- }
- }
-
- /**
- * @param $o
- * @param $x
- * @param $d
- */
- public function addDoubleX($o, $x, $d)
- {
- if ($this->force_defaults || $x != $d) {
- $this->addDouble($x);
- $this->slot($o);
- }
- }
-
- /**
- * @param $o
- * @param $x
- * @param $d
- * @throws \Exception
- */
- public function addOffsetX($o, $x, $d)
- {
- if ($this->force_defaults || $x != $d) {
- $this->addOffset($x);
- $this->slot($o);
- }
- }
- /// @endcond
-
- /**
- * Adds on offset, relative to where it will be written.
- * @param $off The offset to add to the buffer.
- * @throws \Exception Throws an exception if `$off` is greater than the underlying ByteBuffer's
- * offest.
- */
- public function addOffset($off)
- {
- $this->prep(Constants::SIZEOF_INT, 0); // Ensure alignment is already done
- if ($off > $this->offset()) {
- throw new \Exception("");
- }
-
- $off = $this->offset() - $off + Constants::SIZEOF_INT;
- $this->putInt($off);
- }
-
- /// @cond FLATBUFFERS_INTERNAL
- /**
- * @param $elem_size
- * @param $num_elems
- * @param $alignment
- * @throws \Exception
- */
- public function startVector($elem_size, $num_elems, $alignment)
- {
- $this->notNested();
- $this->vector_num_elems = $num_elems;
- $this->prep(Constants::SIZEOF_INT, $elem_size * $num_elems);
- $this->prep($alignment, $elem_size * $num_elems); // Just in case alignemnt > int;
- }
-
- /**
- * @return int
- */
- public function endVector()
- {
- $this->putUint($this->vector_num_elems);
- return $this->offset();
- }
-
- protected function is_utf8($bytes)
- {
- if (function_exists('mb_detect_encoding')) {
- return (bool) mb_detect_encoding($bytes, 'UTF-8', true);
- }
-
- $len = strlen($bytes);
- if ($len < 1) {
- /* NOTE: always return 1 when passed string is null */
- return true;
- }
-
- for ($j = 0, $i = 0; $i < $len; $i++) {
- // check ACII
- if ($bytes[$j] == "\x09" ||
- $bytes[$j] == "\x0A" ||
- $bytes[$j] == "\x0D" ||
- ($bytes[$j] >= "\x20" && $bytes[$j] <= "\x7E")) {
- $j++;
- continue;
- }
-
- /* non-overlong 2-byte */
- if ((($i+1) <= $len) &&
- ($bytes[$j] >= "\xC2" && $bytes[$j] <= "\xDF" &&
- ($bytes[$j+1] >= "\x80" && $bytes[$j+1] <= "\xBF"))) {
- $j += 2;
- $i++;
- continue;
- }
-
- /* excluding overlongs */
- if ((($i + 2) <= $len) &&
- $bytes[$j] == "\xE0" &&
- ($bytes[$j+1] >= "\xA0" && $bytes[$j+1] <= "\xBF" &&
- ($bytes[$j+2] >= "\x80" && $bytes[$j+2] <= "\xBF"))) {
- $bytes += 3;
- $i +=2;
- continue;
- }
-
- /* straight 3-byte */
- if ((($i+2) <= $len) &&
- (($bytes[$j] >= "\xE1" && $bytes[$j] <= "\xEC") ||
- $bytes[$j] == "\xEE" ||
- $bytes[$j] = "\xEF") &&
- ($bytes[$j+1] >= "\x80" && $bytes[$j+1] <= "\xBF") &&
- ($bytes[$j+2] >= "\x80" && $bytes[$j+2] <= "\xBF")) {
- $j += 3;
- $i += 2;
- continue;
- }
-
- /* excluding surrogates */
- if ((($i+2) <= $len) &&
- $bytes[$j] == "\xED" &&
- ($bytes[$j+1] >= "\x80" && $bytes[$j+1] <= "\x9f" &&
- ($bytes[$j+2] >= "\x80" && $bytes[$j+2] <= "\xBF"))) {
- $j += 3;
- $i += 2;
- continue;
- }
-
- /* planes 1-3 */
- if ((($i + 3) <= $len) &&
- $bytes[$j] == "\xF0" &&
- ($bytes[$j+1] >= "\x90" && $bytes[$j+1] <= "\xBF") &&
- ($bytes[$j+2] >= "\x80" && $bytes[$j+2] <= "\xBF") &&
- ($bytes[$j+3] >= "\x80" && $bytes[$j+3] <= "\xBF")) {
- $j += 4;
- $i += 3;
- continue;
- }
-
-
- /* planes 4-15 */
- if ((($i+3) <= $len) &&
- $bytes[$j] >= "\xF1" && $bytes[$j] <= "\xF3" &&
- $bytes[$j+1] >= "\x80" && $bytes[$j+1] <= "\xBF" &&
- $bytes[$j+2] >= "\x80" && $bytes[$j+2] <= "\xBF" &&
- $bytes[$j+3] >= "\x80" && $bytes[$j+3] <= "\xBF"
- ) {
- $j += 4;
- $i += 3;
- continue;
- }
-
- /* plane 16 */
- if ((($i+3) <= $len) &&
- $bytes[$j] == "\xF4" &&
- ($bytes[$j+1] >= "\x80" && $bytes[$j+1] <= "\x8F") &&
- ($bytes[$j+2] >= "\x80" && $bytes[$j+2] <= "\xBF") &&
- ($bytes[$j+3] >= "\x80" && $bytes[$j+3] <= "\xBF")
- ) {
- $bytes += 4;
- $i += 3;
- continue;
- }
-
-
- return false;
- }
-
- return true;
- }
- /// @endcond
-
- /**
- * Encode the string `$s` in the buffer using UTF-8.
- * @param string $s The string to encode.
- * @return int The offset in the buffer where the encoded string starts.
- * @throws InvalidArgumentException Thrown if the input string `$s` is not
- * UTF-8.
- */
- public function createString($s)
- {
- if (!$this->is_utf8($s)) {
- throw new \InvalidArgumentException("string must be utf-8 encoded value.");
- }
-
- $this->notNested();
- $this->addByte(0); // null terminated
- $this->startVector(1, strlen($s), 1);
- $this->space -= strlen($s);
- for ($i = $this->space, $j = 0 ; $j < strlen($s) ; $i++, $j++) {
- $this->bb->_buffer[$i] = $s[$j];
- }
- return $this->endVector();
- }
-
- /// @cond FLATBUFFERS_INTERNAL
- /**
- * @throws \Exception
- */
- public function notNested()
- {
- if ($this->nested) {
- throw new \Exception("FlatBuffers; object serialization must not be nested");
- }
- }
-
- /**
- * @param $obj
- * @throws \Exception
- */
- public function nested($obj)
- {
- if ($obj != $this->offset()) {
- throw new \Exception("FlatBuffers: struct must be serialized inline");
- }
- }
-
- /**
- * @param $numfields
- * @throws \Exception
- */
- public function startObject($numfields)
- {
- $this->notNested();
- if ($this->vtable == null || count($this->vtable) < $numfields) {
- $this->vtable = array();
- }
-
- $this->vtable_in_use = $numfields;
- for ($i = 0; $i < $numfields; $i++) {
- $this->vtable[$i] = 0;
- }
-
- $this->nested = true;
- $this->object_start = $this->offset();
- }
-
- /**
- * @param $voffset
- * @param $x
- * @param $d
- * @throws \Exception
- */
- public function addStructX($voffset, $x, $d)
- {
- if ($x != $d) {
- $this->nested($x);
- $this->slot($voffset);
- }
- }
-
- /**
- * @param $voffset
- * @param $x
- * @param $d
- * @throws \Exception
- */
- public function addStruct($voffset, $x, $d)
- {
- if ($x != $d) {
- $this->nested($x);
- $this->slot($voffset);
- }
- }
-
- /**
- * @param $voffset
- */
- public function slot($voffset)
- {
- $this->vtable[$voffset] = $this->offset();
- }
-
- /**
- * @return int
- * @throws \Exception
- */
- public function endObject()
- {
- if ($this->vtable == null || !$this->nested) {
- throw new \Exception("FlatBuffers: endObject called without startObject");
- }
-
- $this->addInt(0);
- $vtableloc = $this->offset();
-
- for ($i = $this->vtable_in_use -1; $i >= 0; $i--) {
- $off = ($this->vtable[$i] != 0) ? $vtableloc - $this->vtable[$i] : 0;
- $this->addShort($off);
- }
-
- $standard_fields = 2; // the fields below
- $this->addShort($vtableloc - $this->object_start);
- $this->addShort(($this->vtable_in_use + $standard_fields) * Constants::SIZEOF_SHORT);
-
- // search for an existing vtable that matches the current one.
- $existing_vtable = 0;
-
- for ($i = 0; $i < $this->num_vtables; $i++) {
- $vt1 = $this->bb->capacity() - $this->vtables[$i];
- $vt2 = $this->space;
-
- $len = $this->bb->getShort($vt1);
-
- if ($len == $this->bb->getShort($vt2)) {
- for ($j = Constants::SIZEOF_SHORT; $j < $len; $j += Constants::SIZEOF_SHORT) {
- if ($this->bb->getShort($vt1 + $j) != $this->bb->getShort($vt2 + $j)) {
- continue 2;
- }
- }
- $existing_vtable = $this->vtables[$i];
- break;
- }
- }
-
- if ($existing_vtable != 0) {
- // Found a match:
- // Remove the current vtable
- $this->space = $this->bb->capacity() - $vtableloc;
- $this->bb->putInt($this->space, $existing_vtable - $vtableloc);
- } else {
- // No Match:
- // Add the location of the current vtable to the list of vtables
- if ($this->num_vtables == count($this->vtables)) {
- $vtables = $this->vtables;
- $this->vtables = array();
- // copy of
- for ($i = 0; $i < count($vtables) * 2; $i++) {
- $this->vtables[$i] = ($i < count($vtables)) ? $vtables[$i] : 0;
- }
- }
- $this->vtables[$this->num_vtables++] = $this->offset();
- $this->bb->putInt($this->bb->capacity() - $vtableloc, $this->offset() - $vtableloc);
- }
-
- $this->nested = false;
- $this->vtable = null;
- return $vtableloc;
- }
-
- /**
- * @param $table
- * @param $field
- * @throws \Exception
- */
- public function required($table, $field)
- {
- $table_start = $this->bb->capacity() - $table;
- $vtable_start = $table_start - $this->bb->getInt($table_start);
- $ok = $this->bb->getShort($vtable_start + $field) != 0;
-
- if (!$ok) {
- throw new \Exception("FlatBuffers: field " . $field . " must be set");
- }
- }
- /// @endcond
-
- /**
- * Finalize a buffer, pointing to the given `$root_table`.
- * @param $root_table An offest to be added to the buffer.
- * @param $file_identifier A FlatBuffer file identifier to be added to the
- * buffer before `$root_table`. This defaults to `null`.
- * @throws InvalidArgumentException Thrown if an invalid `$identifier` is
- * given, where its length is not equal to
- * `Constants::FILE_IDENTIFIER_LENGTH`.
- */
- public function finish($root_table, $identifier = null)
- {
- if ($identifier == null) {
- $this->prep($this->minalign, Constants::SIZEOF_INT);
- $this->addOffset($root_table);
- $this->bb->setPosition($this->space);
- } else {
- $this->prep($this->minalign, Constants::SIZEOF_INT + Constants::FILE_IDENTIFIER_LENGTH);
- if (strlen($identifier) != Constants::FILE_IDENTIFIER_LENGTH) {
- throw new \InvalidArgumentException(
- sprintf("FlatBuffers: file identifier must be length %d",
- Constants::FILE_IDENTIFIER_LENGTH));
- }
-
- for ($i = Constants::FILE_IDENTIFIER_LENGTH - 1; $i >= 0;
- $i--) {
- $this->addByte(ord($identifier[$i]));
- }
- $this->finish($root_table);
- }
- }
-
- /**
- * In order to save space, fields that are set to their default value don't
- * get serialized into the buffer.
- * @param bool $forceDefaults When set to `true`, always serializes default
- * values.
- */
- public function forceDefaults($forceDefaults)
- {
- $this->force_defaults = $forceDefaults;
- }
-
- /**
- * Get the ByteBuffer representing the FlatBuffer.
- * @return ByteBuffer The ByteBuffer containing the FlatBuffer data.
- */
- public function dataBuffer()
- {
- return $this->bb;
- }
-
- /// @cond FLATBUFFERS_INTERNAL
- /**
- * @return int
- */
- public function dataStart()
- {
- return $this->space;
- }
- /// @endcond
-
- /**
- * Utility function to copy and return the FlatBuffer data from the
- * underlying ByteBuffer.
- * @return string A string (representing a byte[]) that contains a copy
- * of the FlatBuffer data.
- */
- public function sizedByteArray()
- {
- $start = $this->space;
- $length = $this->bb->capacity() - $this->space;
-
- $result = str_repeat("\0", $length);
- $this->bb->setPosition($start);
- $this->bb->getX($result);
-
- return $result;
- }
-}
-
-/// @}
diff --git a/third_party/flatbuffers/php/Struct.php b/third_party/flatbuffers/php/Struct.php
deleted file mode 100644
index 94e712b..0000000
--- a/third_party/flatbuffers/php/Struct.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/*
- * Copyright 2015 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-namespace Google\FlatBuffers;
-
-abstract class Struct
-{
- /**
- * @var int $bb_pos
- */
- protected $bb_pos;
-
- /**
- * @var ByteBuffer $bb
- */
- protected $bb;
-}
diff --git a/third_party/flatbuffers/php/Table.php b/third_party/flatbuffers/php/Table.php
deleted file mode 100644
index 6f917c1..0000000
--- a/third_party/flatbuffers/php/Table.php
+++ /dev/null
@@ -1,135 +0,0 @@
-<?php
-/*
- * Copyright 2015 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-namespace Google\FlatBuffers;
-
-abstract class Table
-{
- /**
- * @var int $bb_pos
- */
- protected $bb_pos;
- /**
- * @var ByteBuffer $bb
- */
- protected $bb;
-
- public function __construct()
- {
- }
-
- /**
- * returns actual vtable offset
- *
- * @param $vtable_offset
- * @return int offset > 0 means exist value. 0 means not exist
- */
- protected function __offset($vtable_offset)
- {
- $vtable = $this->bb_pos - $this->bb->getInt($this->bb_pos);
- return $vtable_offset < $this->bb->getShort($vtable) ? $this->bb->getShort($vtable + $vtable_offset) : 0;
- }
-
- /**
- * @param $offset
- * @return mixed
- */
- protected function __indirect($offset)
- {
- return $offset + $this->bb->getInt($offset);
- }
-
- /**
- * fetch utf8 encoded string.
- *
- * @param $offset
- * @return string
- */
- protected function __string($offset)
- {
- $offset += $this->bb->getInt($offset);
- $len = $this->bb->getInt($offset);
- $startPos = $offset + Constants::SIZEOF_INT;
- return substr($this->bb->_buffer, $startPos, $len);
- }
-
- /**
- * @param $offset
- * @return int
- */
- protected function __vector_len($offset)
- {
- $offset += $this->bb_pos;
- $offset += $this->bb->getInt($offset);
- return $this->bb->getInt($offset);
- }
-
- /**
- * @param $offset
- * @return int
- */
- protected function __vector($offset)
- {
- $offset += $this->bb_pos;
- // data starts after the length
- return $offset + $this->bb->getInt($offset) + Constants::SIZEOF_INT;
- }
-
- protected function __vector_as_bytes($vector_offset, $elem_size=1)
- {
- $o = $this->__offset($vector_offset);
- if ($o == 0) {
- return null;
- }
-
- return substr($this->bb->_buffer, $this->__vector($o), $this->__vector_len($o) * $elem_size);
- }
-
- /**
- * @param Table $table
- * @param int $offset
- * @return Table
- */
- protected function __union($table, $offset)
- {
- $offset += $this->bb_pos;
- $table->bb_pos = $offset + $this->bb->getInt($offset);
- $table->bb = $this->bb;
- return $table;
- }
-
- /**
- * @param ByteBuffer $bb
- * @param string $ident
- * @return bool
- * @throws \ArgumentException
- */
- protected static function __has_identifier($bb, $ident)
- {
- if (strlen($ident) != Constants::FILE_IDENTIFIER_LENGTH) {
- throw new \ArgumentException("FlatBuffers: file identifier must be length " . Constants::FILE_IDENTIFIER_LENGTH);
- }
-
- for ($i = 0; $i < 4; $i++) {
- if ($ident[$i] != $bb->get($bb->getPosition() + Constants::SIZEOF_INT + $i)) {
- return false;
- }
- }
-
- return true;
- }
-}
diff --git a/third_party/flatbuffers/pom.xml b/third_party/flatbuffers/pom.xml
deleted file mode 100644
index a4f74bf..0000000
--- a/third_party/flatbuffers/pom.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.google.flatbuffers</groupId>
- <artifactId>flatbuffers-java</artifactId>
- <version>1.6.0-SNAPSHOT</version>
- <packaging>bundle</packaging>
- <name>FlatBuffers Java API</name>
- <description>
- Memory Efficient Serialization Library
- </description>
-
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
-
- <url>https://github.com/google/flatbuffers</url>
- <licenses>
- <license>
- <name>Apache License V2.0</name>
- <url>https://raw.githubusercontent.com/google/flatbuffers/master/LICENSE.txt</url>
- <distribution>repo</distribution>
- </license>
- </licenses>
- <scm>
- <url>https://github.com/google/flatbuffers</url>
- <connection>
- scm:git:https://github.com/google/flatbuffers.git
- </connection>
- </scm>
- <dependencies>
- </dependencies>
- <build>
- <sourceDirectory>java</sourceDirectory>
- <plugins>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>1.6</source>
- <target>1.6</target>
- </configuration>
- <version>3.2</version>
- </plugin>
- <plugin>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <includes>
- <include>**/*Test.java</include>
- </includes>
- </configuration>
- <version>2.18.1</version>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-source-plugin</artifactId>
- <version>2.3</version>
- <executions>
- <execution>
- <id>attach-sources</id>
- <goals>
- <goal>jar</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <version>2.9.1</version>
- <executions>
- <execution>
- <id>attach-javadocs</id>
- <goals>
- <goal>jar</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <version>3.0.1</version>
- <extensions>true</extensions>
- </plugin>
- </plugins>
- </build>
-</project>
-
diff --git a/third_party/flatbuffers/python/__init__.py b/third_party/flatbuffers/python/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/third_party/flatbuffers/python/__init__.py
+++ /dev/null
diff --git a/third_party/flatbuffers/python/flatbuffers/__init__.py b/third_party/flatbuffers/python/flatbuffers/__init__.py
deleted file mode 100644
index d14872a..0000000
--- a/third_party/flatbuffers/python/flatbuffers/__init__.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2014 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from .builder import Builder
-from .table import Table
-from .compat import range_func as compat_range
diff --git a/third_party/flatbuffers/python/flatbuffers/builder.py b/third_party/flatbuffers/python/flatbuffers/builder.py
deleted file mode 100644
index 552d0e2..0000000
--- a/third_party/flatbuffers/python/flatbuffers/builder.py
+++ /dev/null
@@ -1,677 +0,0 @@
-# Copyright 2014 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from . import number_types as N
-from .number_types import (UOffsetTFlags, SOffsetTFlags, VOffsetTFlags)
-
-from . import encode
-from . import packer
-
-from . import compat
-from .compat import range_func
-from .compat import memoryview_type
-
-
-## @file
-## @addtogroup flatbuffers_python_api
-## @{
-
-## @cond FLATBUFFERS_INTERNAL
-class OffsetArithmeticError(RuntimeError):
- """
- Error caused by an Offset arithmetic error. Probably caused by bad
- writing of fields. This is considered an unreachable situation in
- normal circumstances.
- """
- pass
-
-
-class IsNotNestedError(RuntimeError):
- """
- Error caused by using a Builder to write Object data when not inside
- an Object.
- """
- pass
-
-
-class IsNestedError(RuntimeError):
- """
- Error caused by using a Builder to begin an Object when an Object is
- already being built.
- """
- pass
-
-
-class StructIsNotInlineError(RuntimeError):
- """
- Error caused by using a Builder to write a Struct at a location that
- is not the current Offset.
- """
- pass
-
-
-class BuilderSizeError(RuntimeError):
- """
- Error caused by causing a Builder to exceed the hardcoded limit of 2
- gigabytes.
- """
- pass
-
-class BuilderNotFinishedError(RuntimeError):
- """
- Error caused by not calling `Finish` before calling `Output`.
- """
- pass
-
-
-# VtableMetadataFields is the count of metadata fields in each vtable.
-VtableMetadataFields = 2
-## @endcond
-
-class Builder(object):
- """ A Builder is used to construct one or more FlatBuffers.
-
- Typically, Builder objects will be used from code generated by the `flatc`
- compiler.
-
- A Builder constructs byte buffers in a last-first manner for simplicity and
- performance during reading.
-
- Internally, a Builder is a state machine for creating FlatBuffer objects.
-
- It holds the following internal state:
- - Bytes: an array of bytes.
- - current_vtable: a list of integers.
- - vtables: a list of vtable entries (i.e. a list of list of integers).
-
- Attributes:
- Bytes: The internal `bytearray` for the Builder.
- finished: A boolean determining if the Builder has been finalized.
- """
-
- ## @cond FLATBUFFERS_INTENRAL
- __slots__ = ("Bytes", "current_vtable", "head", "minalign", "objectEnd",
- "vtables", "nested", "finished")
-
- """Maximum buffer size constant, in bytes.
-
- Builder will never allow it's buffer grow over this size.
- Currently equals 2Gb.
- """
- MAX_BUFFER_SIZE = 2**31
- ## @endcond
-
- def __init__(self, initialSize):
- """Initializes a Builder of size `initial_size`.
-
- The internal buffer is grown as needed.
- """
-
- if not (0 <= initialSize <= Builder.MAX_BUFFER_SIZE):
- msg = "flatbuffers: Cannot create Builder larger than 2 gigabytes."
- raise BuilderSizeError(msg)
-
- self.Bytes = bytearray(initialSize)
- ## @cond FLATBUFFERS_INTERNAL
- self.current_vtable = None
- self.head = UOffsetTFlags.py_type(initialSize)
- self.minalign = 1
- self.objectEnd = None
- self.vtables = []
- self.nested = False
- ## @endcond
- self.finished = False
-
-
- def Output(self):
- """Return the portion of the buffer that has been used for writing data.
-
- This is the typical way to access the FlatBuffer data inside the
- builder. If you try to access `Builder.Bytes` directly, you would need
- to manually index it with `Head()`, since the buffer is constructed
- backwards.
-
- It raises BuilderNotFinishedError if the buffer has not been finished
- with `Finish`.
- """
-
- if not self.finished:
- raise BuilderNotFinishedError()
-
- return self.Bytes[self.Head():]
-
- ## @cond FLATBUFFERS_INTERNAL
- def StartObject(self, numfields):
- """StartObject initializes bookkeeping for writing a new object."""
-
- self.assertNotNested()
-
- # use 32-bit offsets so that arithmetic doesn't overflow.
- self.current_vtable = [0 for _ in range_func(numfields)]
- self.objectEnd = self.Offset()
- self.minalign = 1
- self.nested = True
-
- def WriteVtable(self):
- """
- WriteVtable serializes the vtable for the current object, if needed.
-
- Before writing out the vtable, this checks pre-existing vtables for
- equality to this one. If an equal vtable is found, point the object to
- the existing vtable and return.
-
- Because vtable values are sensitive to alignment of object data, not
- all logically-equal vtables will be deduplicated.
-
- A vtable has the following format:
- <VOffsetT: size of the vtable in bytes, including this value>
- <VOffsetT: size of the object in bytes, including the vtable offset>
- <VOffsetT: offset for a field> * N, where N is the number of fields
- in the schema for this type. Includes deprecated fields.
- Thus, a vtable is made of 2 + N elements, each VOffsetT bytes wide.
-
- An object has the following format:
- <SOffsetT: offset to this object's vtable (may be negative)>
- <byte: data>+
- """
-
- # Prepend a zero scalar to the object. Later in this function we'll
- # write an offset here that points to the object's vtable:
- self.PrependSOffsetTRelative(0)
-
- objectOffset = self.Offset()
- existingVtable = None
-
- # Search backwards through existing vtables, because similar vtables
- # are likely to have been recently appended. See
- # BenchmarkVtableDeduplication for a case in which this heuristic
- # saves about 30% of the time used in writing objects with duplicate
- # tables.
-
- i = len(self.vtables) - 1
- while i >= 0:
- # Find the other vtable, which is associated with `i`:
- vt2Offset = self.vtables[i]
- vt2Start = len(self.Bytes) - vt2Offset
- vt2Len = encode.Get(packer.voffset, self.Bytes, vt2Start)
-
- metadata = VtableMetadataFields * N.VOffsetTFlags.bytewidth
- vt2End = vt2Start + vt2Len
- vt2 = self.Bytes[vt2Start+metadata:vt2End]
-
- # Compare the other vtable to the one under consideration.
- # If they are equal, store the offset and break:
- if vtableEqual(self.current_vtable, objectOffset, vt2):
- existingVtable = vt2Offset
- break
-
- i -= 1
-
- if existingVtable is None:
- # Did not find a vtable, so write this one to the buffer.
-
- # Write out the current vtable in reverse , because
- # serialization occurs in last-first order:
- i = len(self.current_vtable) - 1
- while i >= 0:
- off = 0
- if self.current_vtable[i] != 0:
- # Forward reference to field;
- # use 32bit number to ensure no overflow:
- off = objectOffset - self.current_vtable[i]
-
- self.PrependVOffsetT(off)
- i -= 1
-
- # The two metadata fields are written last.
-
- # First, store the object bytesize:
- objectSize = UOffsetTFlags.py_type(objectOffset - self.objectEnd)
- self.PrependVOffsetT(VOffsetTFlags.py_type(objectSize))
-
- # Second, store the vtable bytesize:
- vBytes = len(self.current_vtable) + VtableMetadataFields
- vBytes *= N.VOffsetTFlags.bytewidth
- self.PrependVOffsetT(VOffsetTFlags.py_type(vBytes))
-
- # Next, write the offset to the new vtable in the
- # already-allocated SOffsetT at the beginning of this object:
- objectStart = SOffsetTFlags.py_type(len(self.Bytes) - objectOffset)
- encode.Write(packer.soffset, self.Bytes, objectStart,
- SOffsetTFlags.py_type(self.Offset() - objectOffset))
-
- # Finally, store this vtable in memory for future
- # deduplication:
- self.vtables.append(self.Offset())
- else:
- # Found a duplicate vtable.
-
- objectStart = SOffsetTFlags.py_type(len(self.Bytes) - objectOffset)
- self.head = UOffsetTFlags.py_type(objectStart)
-
- # Write the offset to the found vtable in the
- # already-allocated SOffsetT at the beginning of this object:
- encode.Write(packer.soffset, self.Bytes, self.Head(),
- SOffsetTFlags.py_type(existingVtable - objectOffset))
-
- self.current_vtable = None
- return objectOffset
-
- def EndObject(self):
- """EndObject writes data necessary to finish object construction."""
- self.assertNested()
- self.nested = False
- return self.WriteVtable()
-
- def growByteBuffer(self):
- """Doubles the size of the byteslice, and copies the old data towards
- the end of the new buffer (since we build the buffer backwards)."""
- if len(self.Bytes) == Builder.MAX_BUFFER_SIZE:
- msg = "flatbuffers: cannot grow buffer beyond 2 gigabytes"
- raise BuilderSizeError(msg)
-
- newSize = min(len(self.Bytes) * 2, Builder.MAX_BUFFER_SIZE)
- if newSize == 0:
- newSize = 1
- bytes2 = bytearray(newSize)
- bytes2[newSize-len(self.Bytes):] = self.Bytes
- self.Bytes = bytes2
- ## @endcond
-
- def Head(self):
- """Get the start of useful data in the underlying byte buffer.
-
- Note: unlike other functions, this value is interpreted as from the
- left.
- """
- ## @cond FLATBUFFERS_INTERNAL
- return self.head
- ## @endcond
-
- ## @cond FLATBUFFERS_INTERNAL
- def Offset(self):
- """Offset relative to the end of the buffer."""
- return UOffsetTFlags.py_type(len(self.Bytes) - self.Head())
-
- def Pad(self, n):
- """Pad places zeros at the current offset."""
- for i in range_func(n):
- self.Place(0, N.Uint8Flags)
-
- def Prep(self, size, additionalBytes):
- """
- Prep prepares to write an element of `size` after `additional_bytes`
- have been written, e.g. if you write a string, you need to align
- such the int length field is aligned to SizeInt32, and the string
- data follows it directly.
- If all you need to do is align, `additionalBytes` will be 0.
- """
-
- # Track the biggest thing we've ever aligned to.
- if size > self.minalign:
- self.minalign = size
-
- # Find the amount of alignment needed such that `size` is properly
- # aligned after `additionalBytes`:
- alignSize = (~(len(self.Bytes) - self.Head() + additionalBytes)) + 1
- alignSize &= (size - 1)
-
- # Reallocate the buffer if needed:
- while self.Head() < alignSize+size+additionalBytes:
- oldBufSize = len(self.Bytes)
- self.growByteBuffer()
- updated_head = self.head + len(self.Bytes) - oldBufSize
- self.head = UOffsetTFlags.py_type(updated_head)
- self.Pad(alignSize)
-
- def PrependSOffsetTRelative(self, off):
- """
- PrependSOffsetTRelative prepends an SOffsetT, relative to where it
- will be written.
- """
-
- # Ensure alignment is already done:
- self.Prep(N.SOffsetTFlags.bytewidth, 0)
- if not (off <= self.Offset()):
- msg = "flatbuffers: Offset arithmetic error."
- raise OffsetArithmeticError(msg)
- off2 = self.Offset() - off + N.SOffsetTFlags.bytewidth
- self.PlaceSOffsetT(off2)
- ## @endcond
-
- def PrependUOffsetTRelative(self, off):
- """Prepends an unsigned offset into vector data, relative to where it
- will be written.
- """
-
- # Ensure alignment is already done:
- self.Prep(N.UOffsetTFlags.bytewidth, 0)
- if not (off <= self.Offset()):
- msg = "flatbuffers: Offset arithmetic error."
- raise OffsetArithmeticError(msg)
- off2 = self.Offset() - off + N.UOffsetTFlags.bytewidth
- self.PlaceUOffsetT(off2)
-
- ## @cond FLATBUFFERS_INTERNAL
- def StartVector(self, elemSize, numElems, alignment):
- """
- StartVector initializes bookkeeping for writing a new vector.
-
- A vector has the following format:
- - <UOffsetT: number of elements in this vector>
- - <T: data>+, where T is the type of elements of this vector.
- """
-
- self.assertNotNested()
- self.nested = True
- self.Prep(N.Uint32Flags.bytewidth, elemSize*numElems)
- self.Prep(alignment, elemSize*numElems) # In case alignment > int.
- return self.Offset()
- ## @endcond
-
- def EndVector(self, vectorNumElems):
- """EndVector writes data necessary to finish vector construction."""
-
- self.assertNested()
- ## @cond FLATBUFFERS_INTERNAL
- self.nested = False
- ## @endcond
- # we already made space for this, so write without PrependUint32
- self.PlaceUOffsetT(vectorNumElems)
- return self.Offset()
-
- def CreateString(self, s, encoding='utf-8', errors='strict'):
- """CreateString writes a null-terminated byte string as a vector."""
-
- self.assertNotNested()
- ## @cond FLATBUFFERS_INTERNAL
- self.nested = True
- ## @endcond
-
- if isinstance(s, compat.string_types):
- x = s.encode(encoding, errors)
- elif isinstance(s, compat.binary_types):
- x = s
- else:
- raise TypeError("non-string passed to CreateString")
-
- self.Prep(N.UOffsetTFlags.bytewidth, (len(x)+1)*N.Uint8Flags.bytewidth)
- self.Place(0, N.Uint8Flags)
-
- l = UOffsetTFlags.py_type(len(s))
- ## @cond FLATBUFFERS_INTERNAL
- self.head = UOffsetTFlags.py_type(self.Head() - l)
- ## @endcond
- self.Bytes[self.Head():self.Head()+l] = x
-
- return self.EndVector(len(x))
-
- ## @cond FLATBUFFERS_INTERNAL
- def assertNested(self):
- """
- Check that we are in the process of building an object.
- """
-
- if not self.nested:
- raise IsNotNestedError()
-
- def assertNotNested(self):
- """
- Check that no other objects are being built while making this
- object. If not, raise an exception.
- """
-
- if self.nested:
- raise IsNestedError()
-
- def assertStructIsInline(self, obj):
- """
- Structs are always stored inline, so need to be created right
- where they are used. You'll get this error if you created it
- elsewhere.
- """
-
- N.enforce_number(obj, N.UOffsetTFlags)
- if obj != self.Offset():
- msg = ("flatbuffers: Tried to write a Struct at an Offset that "
- "is different from the current Offset of the Builder.")
- raise StructIsNotInlineError(msg)
-
- def Slot(self, slotnum):
- """
- Slot sets the vtable key `voffset` to the current location in the
- buffer.
-
- """
- self.assertNested()
- self.current_vtable[slotnum] = self.Offset()
- ## @endcond
-
- def Finish(self, rootTable):
- """Finish finalizes a buffer, pointing to the given `rootTable`."""
- N.enforce_number(rootTable, N.UOffsetTFlags)
- self.Prep(self.minalign, N.UOffsetTFlags.bytewidth)
- self.PrependUOffsetTRelative(rootTable)
- self.finished = True
- return self.Head()
-
- ## @cond FLATBUFFERS_INTERNAL
- def Prepend(self, flags, off):
- self.Prep(flags.bytewidth, 0)
- self.Place(off, flags)
-
- def PrependSlot(self, flags, o, x, d):
- N.enforce_number(x, flags)
- N.enforce_number(d, flags)
- if x != d:
- self.Prepend(flags, x)
- self.Slot(o)
-
- def PrependBoolSlot(self, *args): self.PrependSlot(N.BoolFlags, *args)
-
- def PrependByteSlot(self, *args): self.PrependSlot(N.Uint8Flags, *args)
-
- def PrependUint8Slot(self, *args): self.PrependSlot(N.Uint8Flags, *args)
-
- def PrependUint16Slot(self, *args): self.PrependSlot(N.Uint16Flags, *args)
-
- def PrependUint32Slot(self, *args): self.PrependSlot(N.Uint32Flags, *args)
-
- def PrependUint64Slot(self, *args): self.PrependSlot(N.Uint64Flags, *args)
-
- def PrependInt8Slot(self, *args): self.PrependSlot(N.Int8Flags, *args)
-
- def PrependInt16Slot(self, *args): self.PrependSlot(N.Int16Flags, *args)
-
- def PrependInt32Slot(self, *args): self.PrependSlot(N.Int32Flags, *args)
-
- def PrependInt64Slot(self, *args): self.PrependSlot(N.Int64Flags, *args)
-
- def PrependFloat32Slot(self, *args): self.PrependSlot(N.Float32Flags,
- *args)
-
- def PrependFloat64Slot(self, *args): self.PrependSlot(N.Float64Flags,
- *args)
-
- def PrependUOffsetTRelativeSlot(self, o, x, d):
- """
- PrependUOffsetTRelativeSlot prepends an UOffsetT onto the object at
- vtable slot `o`. If value `x` equals default `d`, then the slot will
- be set to zero and no other data will be written.
- """
-
- if x != d:
- self.PrependUOffsetTRelative(x)
- self.Slot(o)
-
- def PrependStructSlot(self, v, x, d):
- """
- PrependStructSlot prepends a struct onto the object at vtable slot `o`.
- Structs are stored inline, so nothing additional is being added.
- In generated code, `d` is always 0.
- """
-
- N.enforce_number(d, N.UOffsetTFlags)
- if x != d:
- self.assertStructIsInline(x)
- self.Slot(v)
-
- ## @endcond
-
- def PrependBool(self, x):
- """Prepend a `bool` to the Builder buffer.
-
- Note: aligns and checks for space.
- """
- self.Prepend(N.BoolFlags, x)
-
- def PrependByte(self, x):
- """Prepend a `byte` to the Builder buffer.
-
- Note: aligns and checks for space.
- """
- self.Prepend(N.Uint8Flags, x)
-
- def PrependUint8(self, x):
- """Prepend an `uint8` to the Builder buffer.
-
- Note: aligns and checks for space.
- """
- self.Prepend(N.Uint8Flags, x)
-
- def PrependUint16(self, x):
- """Prepend an `uint16` to the Builder buffer.
-
- Note: aligns and checks for space.
- """
- self.Prepend(N.Uint16Flags, x)
-
- def PrependUint32(self, x):
- """Prepend an `uint32` to the Builder buffer.
-
- Note: aligns and checks for space.
- """
- self.Prepend(N.Uint32Flags, x)
-
- def PrependUint64(self, x):
- """Prepend an `uint64` to the Builder buffer.
-
- Note: aligns and checks for space.
- """
- self.Prepend(N.Uint64Flags, x)
-
- def PrependInt8(self, x):
- """Prepend an `int8` to the Builder buffer.
-
- Note: aligns and checks for space.
- """
- self.Prepend(N.Int8Flags, x)
-
- def PrependInt16(self, x):
- """Prepend an `int16` to the Builder buffer.
-
- Note: aligns and checks for space.
- """
- self.Prepend(N.Int16Flags, x)
-
- def PrependInt32(self, x):
- """Prepend an `int32` to the Builder buffer.
-
- Note: aligns and checks for space.
- """
- self.Prepend(N.Int32Flags, x)
-
- def PrependInt64(self, x):
- """Prepend an `int64` to the Builder buffer.
-
- Note: aligns and checks for space.
- """
- self.Prepend(N.Int64Flags, x)
-
- def PrependFloat32(self, x):
- """Prepend a `float32` to the Builder buffer.
-
- Note: aligns and checks for space.
- """
- self.Prepend(N.Float32Flags, x)
-
- def PrependFloat64(self, x):
- """Prepend a `float64` to the Builder buffer.
-
- Note: aligns and checks for space.
- """
- self.Prepend(N.Float64Flags, x)
-
-##############################################################
-
- ## @cond FLATBUFFERS_INTERNAL
- def PrependVOffsetT(self, x): self.Prepend(N.VOffsetTFlags, x)
-
- def Place(self, x, flags):
- """
- Place prepends a value specified by `flags` to the Builder,
- without checking for available space.
- """
-
- N.enforce_number(x, flags)
- self.head = self.head - flags.bytewidth
- encode.Write(flags.packer_type, self.Bytes, self.Head(), x)
-
- def PlaceVOffsetT(self, x):
- """PlaceVOffsetT prepends a VOffsetT to the Builder, without checking
- for space.
- """
- N.enforce_number(x, N.VOffsetTFlags)
- self.head = self.head - N.VOffsetTFlags.bytewidth
- encode.Write(packer.voffset, self.Bytes, self.Head(), x)
-
- def PlaceSOffsetT(self, x):
- """PlaceSOffsetT prepends a SOffsetT to the Builder, without checking
- for space.
- """
- N.enforce_number(x, N.SOffsetTFlags)
- self.head = self.head - N.SOffsetTFlags.bytewidth
- encode.Write(packer.soffset, self.Bytes, self.Head(), x)
-
- def PlaceUOffsetT(self, x):
- """PlaceUOffsetT prepends a UOffsetT to the Builder, without checking
- for space.
- """
- N.enforce_number(x, N.UOffsetTFlags)
- self.head = self.head - N.UOffsetTFlags.bytewidth
- encode.Write(packer.uoffset, self.Bytes, self.Head(), x)
- ## @endcond
-
-## @cond FLATBUFFERS_INTERNAL
-def vtableEqual(a, objectStart, b):
- """vtableEqual compares an unwritten vtable to a written vtable."""
-
- N.enforce_number(objectStart, N.UOffsetTFlags)
-
- if len(a) * N.VOffsetTFlags.bytewidth != len(b):
- return False
-
- for i, elem in enumerate(a):
- x = encode.Get(packer.voffset, b, i * N.VOffsetTFlags.bytewidth)
-
- # Skip vtable entries that indicate a default value.
- if x == 0 and elem == 0:
- pass
- else:
- y = objectStart - elem
- if x != y:
- return False
- return True
-## @endcond
-## @}
diff --git a/third_party/flatbuffers/python/flatbuffers/compat.py b/third_party/flatbuffers/python/flatbuffers/compat.py
deleted file mode 100644
index e031535..0000000
--- a/third_party/flatbuffers/python/flatbuffers/compat.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 2016 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-""" A tiny version of `six` to help with backwards compability. """
-
-import sys
-
-PY2 = sys.version_info[0] == 2
-PY26 = sys.version_info[0:2] == (2, 6)
-PY27 = sys.version_info[0:2] == (2, 7)
-PY275 = sys.version_info[0:3] >= (2, 7, 5)
-PY3 = sys.version_info[0] == 3
-PY34 = sys.version_info[0:2] >= (3, 4)
-
-if PY3:
- string_types = (str,)
- binary_types = (bytes,bytearray)
- range_func = range
- memoryview_type = memoryview
- struct_bool_decl = "?"
-else:
- string_types = (unicode,)
- if PY26 or PY27:
- binary_types = (str,bytearray)
- else:
- binary_types = (str,)
- range_func = xrange
- if PY26 or (PY27 and not PY275):
- memoryview_type = buffer
- struct_bool_decl = "<b"
- else:
- memoryview_type = memoryview
- struct_bool_decl = "?"
-
-# NOTE: Future Jython support may require code here (look at `six`).
diff --git a/third_party/flatbuffers/python/flatbuffers/encode.py b/third_party/flatbuffers/python/flatbuffers/encode.py
deleted file mode 100644
index 1aa9230..0000000
--- a/third_party/flatbuffers/python/flatbuffers/encode.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2014 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from . import number_types as N
-from . import packer
-from .compat import memoryview_type
-
-
-def Get(packer_type, buf, head):
- """ Get decodes a value at buf[head:] using `packer_type`. """
- return packer_type.unpack_from(memoryview_type(buf), head)[0]
-
-
-def Write(packer_type, buf, head, n):
- """ Write encodes `n` at buf[head:] using `packer_type`. """
- packer_type.pack_into(buf, head, n)
diff --git a/third_party/flatbuffers/python/flatbuffers/number_types.py b/third_party/flatbuffers/python/flatbuffers/number_types.py
deleted file mode 100644
index a9605de..0000000
--- a/third_party/flatbuffers/python/flatbuffers/number_types.py
+++ /dev/null
@@ -1,172 +0,0 @@
-# Copyright 2014 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import collections
-import struct
-
-from . import packer
-
-
-# For reference, see:
-# https://docs.python.org/2/library/ctypes.html#ctypes-fundamental-data-types-2
-
-# These classes could be collections.namedtuple instances, but those are new
-# in 2.6 and we want to work towards 2.5 compatability.
-
-class BoolFlags(object):
- bytewidth = 1
- min_val = False
- max_val = True
- py_type = bool
- name = "bool"
- packer_type = packer.boolean
-
-
-class Uint8Flags(object):
- bytewidth = 1
- min_val = 0
- max_val = (2**8) - 1
- py_type = int
- name = "uint8"
- packer_type = packer.uint8
-
-
-class Uint16Flags(object):
- bytewidth = 2
- min_val = 0
- max_val = (2**16) - 1
- py_type = int
- name = "uint16"
- packer_type = packer.uint16
-
-
-class Uint32Flags(object):
- bytewidth = 4
- min_val = 0
- max_val = (2**32) - 1
- py_type = int
- name = "uint32"
- packer_type = packer.uint32
-
-
-class Uint64Flags(object):
- bytewidth = 8
- min_val = 0
- max_val = (2**64) - 1
- py_type = int
- name = "uint64"
- packer_type = packer.uint64
-
-
-class Int8Flags(object):
- bytewidth = 1
- min_val = -(2**7)
- max_val = (2**7) - 1
- py_type = int
- name = "int8"
- packer_type = packer.int8
-
-
-class Int16Flags(object):
- bytewidth = 2
- min_val = -(2**15)
- max_val = (2**15) - 1
- py_type = int
- name = "int16"
- packer_type = packer.int16
-
-
-class Int32Flags(object):
- bytewidth = 4
- min_val = -(2**31)
- max_val = (2**31) - 1
- py_type = int
- name = "int32"
- packer_type = packer.int32
-
-
-class Int64Flags(object):
- bytewidth = 8
- min_val = -(2**63)
- max_val = (2**63) - 1
- py_type = int
- name = "int64"
- packer_type = packer.int64
-
-
-class Float32Flags(object):
- bytewidth = 4
- min_val = None
- max_val = None
- py_type = float
- name = "float32"
- packer_type = packer.float32
-
-
-class Float64Flags(object):
- bytewidth = 8
- min_val = None
- max_val = None
- py_type = float
- name = "float64"
- packer_type = packer.float64
-
-
-class SOffsetTFlags(Int32Flags):
- pass
-
-
-class UOffsetTFlags(Uint32Flags):
- pass
-
-
-class VOffsetTFlags(Uint16Flags):
- pass
-
-
-def valid_number(n, flags):
- if flags.min_val is None and flags.max_val is None:
- return True
- return flags.min_val <= n <= flags.max_val
-
-
-def enforce_number(n, flags):
- if flags.min_val is None and flags.max_val is None:
- return
- if not flags.min_val <= n <= flags.max_val:
- raise TypeError("bad number %s for type %s" % (str(n), flags.name))
-
-
-def float32_to_uint32(n):
- packed = struct.pack("<1f", n)
- (converted,) = struct.unpack("<1L", packed)
- return converted
-
-
-def uint32_to_float32(n):
- packed = struct.pack("<1L", n)
- (unpacked,) = struct.unpack("<1f", packed)
- return unpacked
-
-
-def float64_to_uint64(n):
- packed = struct.pack("<1d", n)
- (converted,) = struct.unpack("<1Q", packed)
- return converted
-
-
-def uint64_to_float64(n):
- packed = struct.pack("<1Q", n)
- (unpacked,) = struct.unpack("<1d", packed)
- return unpacked
diff --git a/third_party/flatbuffers/python/flatbuffers/packer.py b/third_party/flatbuffers/python/flatbuffers/packer.py
deleted file mode 100644
index 20ee9f1..0000000
--- a/third_party/flatbuffers/python/flatbuffers/packer.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2016 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Provide pre-compiled struct packers for encoding and decoding.
-
-See: https://docs.python.org/2/library/struct.html#format-characters
-"""
-
-import struct
-from . import compat
-
-
-boolean = struct.Struct(compat.struct_bool_decl)
-
-uint8 = struct.Struct("<B")
-uint16 = struct.Struct("<H")
-uint32 = struct.Struct("<I")
-uint64 = struct.Struct("<Q")
-
-int8 = struct.Struct("<b")
-int16 = struct.Struct("<h")
-int32 = struct.Struct("<i")
-int64 = struct.Struct("<q")
-
-float32 = struct.Struct("<f")
-float64 = struct.Struct("<d")
-
-uoffset = uint32
-soffset = int32
-voffset = uint16
diff --git a/third_party/flatbuffers/python/flatbuffers/table.py b/third_party/flatbuffers/python/flatbuffers/table.py
deleted file mode 100644
index 6cffe4c..0000000
--- a/third_party/flatbuffers/python/flatbuffers/table.py
+++ /dev/null
@@ -1,117 +0,0 @@
-# Copyright 2014 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from . import encode
-from . import number_types as N
-
-
-class Table(object):
- """Table wraps a byte slice and provides read access to its data.
-
- The variable `Pos` indicates the root of the FlatBuffers object therein."""
-
- __slots__ = ("Bytes", "Pos")
-
- def __init__(self, buf, pos):
- N.enforce_number(pos, N.UOffsetTFlags)
-
- self.Bytes = buf
- self.Pos = pos
-
- def Offset(self, vtableOffset):
- """Offset provides access into the Table's vtable.
-
- Deprecated fields are ignored by checking the vtable's length."""
-
- vtable = self.Pos - self.Get(N.SOffsetTFlags, self.Pos)
- vtableEnd = self.Get(N.VOffsetTFlags, vtable)
- if vtableOffset < vtableEnd:
- return self.Get(N.VOffsetTFlags, vtable + vtableOffset)
- return 0
-
- def Indirect(self, off):
- """Indirect retrieves the relative offset stored at `offset`."""
- N.enforce_number(off, N.UOffsetTFlags)
- return off + encode.Get(N.UOffsetTFlags.packer_type, self.Bytes, off)
-
- def String(self, off):
- """String gets a string from data stored inside the flatbuffer."""
- N.enforce_number(off, N.UOffsetTFlags)
- off += encode.Get(N.UOffsetTFlags.packer_type, self.Bytes, off)
- start = off + N.UOffsetTFlags.bytewidth
- length = encode.Get(N.UOffsetTFlags.packer_type, self.Bytes, off)
- return bytes(self.Bytes[start:start+length])
-
- def VectorLen(self, off):
- """VectorLen retrieves the length of the vector whose offset is stored
- at "off" in this object."""
- N.enforce_number(off, N.UOffsetTFlags)
-
- off += self.Pos
- off += encode.Get(N.UOffsetTFlags.packer_type, self.Bytes, off)
- ret = encode.Get(N.UOffsetTFlags.packer_type, self.Bytes, off)
- return ret
-
- def Vector(self, off):
- """Vector retrieves the start of data of the vector whose offset is
- stored at "off" in this object."""
- N.enforce_number(off, N.UOffsetTFlags)
-
- off += self.Pos
- x = off + self.Get(N.UOffsetTFlags, off)
- # data starts after metadata containing the vector length
- x += N.UOffsetTFlags.bytewidth
- return x
-
- def Union(self, t2, off):
- """Union initializes any Table-derived type to point to the union at
- the given offset."""
- assert type(t2) is Table
- N.enforce_number(off, N.UOffsetTFlags)
-
- off += self.Pos
- t2.Pos = off + self.Get(N.UOffsetTFlags, off)
- t2.Bytes = self.Bytes
-
- def Get(self, flags, off):
- """
- Get retrieves a value of the type specified by `flags` at the
- given offset.
- """
- N.enforce_number(off, N.UOffsetTFlags)
- return flags.py_type(encode.Get(flags.packer_type, self.Bytes, off))
-
- def GetSlot(self, slot, d, validator_flags):
- N.enforce_number(slot, N.VOffsetTFlags)
- if validator_flags is not None:
- N.enforce_number(d, validator_flags)
- off = self.Offset(slot)
- if off == 0:
- return d
- return self.Get(validator_flags, self.Pos + off)
-
- def GetVOffsetTSlot(self, slot, d):
- """
- GetVOffsetTSlot retrieves the VOffsetT that the given vtable location
- points to. If the vtable value is zero, the default value `d`
- will be returned.
- """
-
- N.enforce_number(slot, N.VOffsetTFlags)
- N.enforce_number(d, N.VOffsetTFlags)
-
- off = self.Offset(slot)
- if off == 0:
- return d
- return off
diff --git a/third_party/flatbuffers/python/setup.py b/third_party/flatbuffers/python/setup.py
deleted file mode 100644
index 39afef3..0000000
--- a/third_party/flatbuffers/python/setup.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2016 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from setuptools import setup
-
-setup(
- name='flatbuffers',
- version='2015.05.14.0',
- license='Apache 2.0',
- author='FlatBuffers Contributors',
- author_email='me@rwinslow.com',
- url='https://github.com/google/flatbuffers',
- long_description=('Python runtime library for use with the Flatbuffers'
- 'serialization format.'),
- packages=['flatbuffers'],
- include_package_data=True,
- requires=[],
- description='The FlatBuffers serialization format for Python',
-)
diff --git a/third_party/flatbuffers/readme.md b/third_party/flatbuffers/readme.md
deleted file mode 100755
index a7c0e93..0000000
--- a/third_party/flatbuffers/readme.md
+++ /dev/null
@@ -1,59 +0,0 @@
- FlatBuffers
-===========
-
-[](https://gitter.im/google/flatbuffers?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-[](https://travis-ci.org/google/flatbuffers) [](https://ci.appveyor.com/project/gwvo/flatbuffers)
-
-**FlatBuffers** is an efficient cross platform serialization library for games and
-other memory constrained apps. It allows you to directly access serialized data without
-unpacking/parsing it first, while still having great forwards/backwards compatibility.
-
-**Go to our [landing page][] to browse our documentation.**
-
-## Supported operating systems
-* Android
-* Windows
-* MacOS X
-* Linux
-
-## Supported programming languages
-* C++
-* C#
-* C
-* Go
-* Java
-* JavaScript
-* PHP
-* Python
-
-*and many more in progress...*
-
-## Contribution
-* [FlatBuffers Google Group][] to discuss FlatBuffers with other developers and users.
-* [FlatBuffers Issues Tracker][] to submit an issue.
-* [stackoverflow.com][] with [`flatbuffers` tag][] for any questions regarding FlatBuffers.
-
-*To contribute to this project,* see [CONTRIBUTING][].
-
-## Integration
-For applications on Google Play that integrate this tool, usage is tracked.
-This tracking is done automatically using the embedded version string
-(**`flatbuffer_version_string`**), and helps us continue to optimize it. Aside from
-consuming a few extra bytes in your application binary, it shouldn't affect
-your application at all. We use this information to let us know if FlatBuffers
-is useful and if we should continue to invest in it. Since this is open
-source, you are free to remove the version string but we would appreciate if
-you would leave it in.
-
-## Licensing
-*Flatbuffers* is licensed under the Apache License, Version 2.0. See [LICENSE][] for the full license text.
-
-<br>
-
- [CONTRIBUTING]: http://github.com/google/flatbuffers/blob/master/CONTRIBUTING.md
- [`flatbuffers` tag]: https://stackoverflow.com/questions/tagged/flatbuffers
- [FlatBuffers Google Group]: https://groups.google.com/forum/#!forum/flatbuffers
- [FlatBuffers Issues Tracker]: http://github.com/google/flatbuffers/issues
- [stackoverflow.com]: http://stackoverflow.com/search?q=flatbuffers
- [landing page]: http://google.github.io/flatbuffers
- [LICENSE]: https://github.com/google/flatbuffers/blob/master/LICENSE.txt
diff --git a/third_party/flatbuffers/reflection/generate_code.sh b/third_party/flatbuffers/reflection/generate_code.sh
deleted file mode 100644
index da8a181..0000000
--- a/third_party/flatbuffers/reflection/generate_code.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2016 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-../flatc -c --no-prefix -o ../include/flatbuffers reflection.fbs
diff --git a/third_party/flatbuffers/reflection/reflection.fbs b/third_party/flatbuffers/reflection/reflection.fbs
deleted file mode 100644
index ea41891..0000000
--- a/third_party/flatbuffers/reflection/reflection.fbs
+++ /dev/null
@@ -1,93 +0,0 @@
-// This schema defines objects that represent a parsed schema, like
-// the binary version of a .fbs file.
-// This could be used to operate on unknown FlatBuffers at runtime.
-// It can even ... represent itself (!)
-
-namespace reflection;
-
-// These must correspond to the enum in idl.h.
-enum BaseType : byte {
- None,
- UType,
- Bool,
- Byte,
- UByte,
- Short,
- UShort,
- Int,
- UInt,
- Long,
- ULong,
- Float,
- Double,
- String,
- Vector,
- Obj, // Used for tables & structs.
- Union
-}
-
-table Type {
- base_type:BaseType;
- element:BaseType = None; // Only if base_type == Vector.
- index:int = -1; // If base_type == Object, index into "objects" below.
- // If base_type == Union, UnionType, or integral derived
- // from an enum, index into "enums" below.
-}
-
-table KeyValue {
- key:string (required, key);
- value:string;
-}
-
-table EnumVal {
- name:string (required);
- value:long (key);
- object:Object; // Will be deprecated in favor of union_type in the future.
- union_type:Type;
-}
-
-table Enum {
- name:string (required, key);
- values:[EnumVal] (required); // In order of their values.
- is_union:bool = false;
- underlying_type:Type (required);
- attributes:[KeyValue];
- documentation:[string];
-}
-
-table Field {
- name:string (required, key);
- type:Type (required);
- id:ushort;
- offset:ushort; // Offset into the vtable for tables, or into the struct.
- default_integer:long = 0;
- default_real:double = 0.0;
- deprecated:bool = false;
- required:bool = false;
- key:bool = false;
- attributes:[KeyValue];
- documentation:[string];
-}
-
-table Object { // Used for both tables and structs.
- name:string (required, key);
- fields:[Field] (required); // Sorted.
- is_struct:bool = false;
- minalign:int;
- bytesize:int; // For structs.
- attributes:[KeyValue];
- documentation:[string];
-}
-
-table Schema {
- objects:[Object] (required); // Sorted.
- enums:[Enum] (required); // Sorted.
- file_ident:string;
- file_ext:string;
- root_table:Object;
-}
-
-root_type Schema;
-
-file_identifier "BFBS";
-file_extension "bfbs";
diff --git a/third_party/flatbuffers/samples/SampleBinary.cs b/third_party/flatbuffers/samples/SampleBinary.cs
deleted file mode 100644
index 16128c4..0000000
--- a/third_party/flatbuffers/samples/SampleBinary.cs
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright 2015 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// To run, use the `csharp_sample.sh` script.
-
-using System;
-using FlatBuffers;
-using MyGame.Sample;
-
-class SampleBinary
-{
- // Example how to use FlatBuffers to create and read binary buffers.
- static void Main()
- {
- var builder = new FlatBufferBuilder(1);
-
- // Create some weapons for our Monster ('Sword' and 'Axe').
- var weapon1Name = builder.CreateString("Sword");
- var weapon1Damage = 3;
- var weapon2Name = builder.CreateString("Axe");
- var weapon2Damage = 5;
-
- // Use the `CreateWeapon()` helper function to create the weapons, since we set every field.
- var weaps = new Offset<Weapon>[2];
- weaps[0] = Weapon.CreateWeapon(builder, weapon1Name, (short)weapon1Damage);
- weaps[1] = Weapon.CreateWeapon(builder, weapon2Name, (short)weapon2Damage);
-
- // Serialize the FlatBuffer data.
- var name = builder.CreateString("Orc");
- var treasure = new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
- var inv = Monster.CreateInventoryVector(builder, treasure);
- var weapons = Monster.CreateWeaponsVector(builder, weaps);
- var pos = Vec3.CreateVec3(builder, 1.0f, 2.0f, 3.0f);
-
- Monster.StartMonster(builder);
- Monster.AddPos(builder, pos);
- Monster.AddHp(builder, (short)300);
- Monster.AddName(builder, name);
- Monster.AddInventory(builder, inv);
- Monster.AddColor(builder, Color.Red);
- Monster.AddWeapons(builder, weapons);
- Monster.AddEquippedType(builder, Equipment.Weapon);
- Monster.AddEquipped(builder, weaps[1].Value);
- var orc = Monster.EndMonster(builder);
-
- builder.Finish(orc.Value); // You could also call `Monster.FinishMonsterBuffer(builder, orc);`.
-
- // We now have a FlatBuffer that we could store on disk or send over a network.
-
- // ...Code to store to disk or send over a network goes here...
-
- // Instead, we are going to access it right away, as if we just received it.
-
- var buf = builder.DataBuffer;
-
- // Get access to the root:
- var monster = Monster.GetRootAsMonster(buf);
-
- // For C#, unlike other languages, most values (except for vectors and unions) are available as
- // properties instead of accessor methods.
-
- // Note: We did not set the `Mana` field explicitly, so we get back the default value.
- Assert(monster.Mana == 150, "monster.Mana", Convert.ToString(monster.Mana),
- Convert.ToString(150));
- Assert(monster.Hp == 300, "monster.Hp", Convert.ToString(monster.Hp), Convert.ToString(30));
- Assert(monster.Name.Equals("Orc", StringComparison.Ordinal), "monster.Name", monster.Name,
- "Orc");
- Assert(monster.Color == Color.Red, "monster.Color", Convert.ToString(monster.Color),
- Convert.ToString(Color.Red));
-
- // C# also allows you to use performance-enhanced methods to fill an object that has already
- // been created. These functions are prefixed with "Get". For example: `monster.GetPos()`.
- var myAlreadyCreatedVector = new Vec3();
- monster.GetPos(myAlreadyCreatedVector); // Instead of `var myNewVec3 = monster.Pos`.
- Assert(myAlreadyCreatedVector.X == 1.0f, "myAlreadyCreatedVector.X",
- Convert.ToString(myAlreadyCreatedVector.X), Convert.ToString(1.0f));
- Assert(myAlreadyCreatedVector.Y == 2.0f, "myAlreadyCreatedVector.Y",
- Convert.ToString(myAlreadyCreatedVector.Y), Convert.ToString(2.0f));
- Assert(myAlreadyCreatedVector.Z == 3.0f, "myAlreadyCreatedVector.Z",
- Convert.ToString(myAlreadyCreatedVector.Z), Convert.ToString(3.0f));
-
- // Get and test the `Inventory` FlatBuffer `vector`.
- for (int i = 0; i < monster.InventoryLength; i++)
- {
- Assert(monster.GetInventory(i) == i, "monster.GetInventory",
- Convert.ToString(monster.GetInventory(i)), Convert.ToString(i));
- }
-
- // Get and test the `Weapons` FlatBuffer `vector` of `table`s.
- var expectedWeaponNames = new string[] {"Sword", "Axe"};
- var expectedWeaponDamages = new short[] {3, 5};
- for (int i = 0; i < monster.WeaponsLength; i++)
- {
- Assert(monster.GetWeapons(i).Name.Equals(expectedWeaponNames[i], StringComparison.Ordinal),
- "monster.GetWeapons", monster.GetWeapons(i).Name, expectedWeaponNames[i]);
- Assert(monster.GetWeapons(i).Damage == expectedWeaponDamages[i], "monster.GetWeapons",
- Convert.ToString(monster.GetWeapons(i).Damage),
- Convert.ToString(expectedWeaponDamages[i]));
- }
-
- // Get and test the `Equipped` FlatBuffer `union`.
- Assert(monster.EquippedType == Equipment.Weapon, "monster.EquippedType",
- Convert.ToString(monster.EquippedType), Convert.ToString(Equipment.Weapon));
- var equipped = (Weapon)monster.GetEquipped(new Weapon());
- Assert(equipped.Name.Equals("Axe", StringComparison.Ordinal), "equipped.Name", equipped.Name,
- "Axe");
- Assert(equipped.Damage == 5, "equipped.Damage", Convert.ToString(equipped.Damage),
- Convert.ToString(5));
-
- Console.WriteLine("The FlatBuffer was successfully created and verified!");
- }
-
- // A helper function to handle assertions.
- static void Assert(bool assertPassed, string codeExecuted, string actualValue,
- string expectedValue)
- {
- if (assertPassed == false)
- {
- Console.WriteLine("Assert failed! " + codeExecuted + " (" + actualValue +
- ") was not equal to " + expectedValue + ".");
- System.Environment.Exit(1);
- }
- }
-}
diff --git a/third_party/flatbuffers/samples/SampleBinary.java b/third_party/flatbuffers/samples/SampleBinary.java
deleted file mode 100644
index 555194f..0000000
--- a/third_party/flatbuffers/samples/SampleBinary.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2015 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Run this file with the `java_sample.sh` script.
-
-import MyGame.Sample.Color;
-import MyGame.Sample.Equipment;
-import MyGame.Sample.Monster;
-import MyGame.Sample.Vec3;
-import MyGame.Sample.Weapon;
-
-import com.google.flatbuffers.FlatBufferBuilder;
-
-import java.nio.ByteBuffer;
-
-class SampleBinary {
- // Example how to use FlatBuffers to create and read binary buffers.
- public static void main(String[] args) {
- FlatBufferBuilder builder = new FlatBufferBuilder(0);
-
- // Create some weapons for our Monster ('Sword' and 'Axe').
- int weaponOneName = builder.createString("Sword");
- short weaponOneDamage = 3;
- int weaponTwoName = builder.createString("Axe");
- short weaponTwoDamage = 5;
-
- // Use the `createWeapon()` helper function to create the weapons, since we set every field.
- int[] weaps = new int[2];
- weaps[0] = Weapon.createWeapon(builder, weaponOneName, weaponOneDamage);
- weaps[1] = Weapon.createWeapon(builder, weaponTwoName, weaponTwoDamage);
-
- // Serialize the FlatBuffer data.
- int name = builder.createString("Orc");
- byte[] treasure = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
- int inv = Monster.createInventoryVector(builder, treasure);
- int weapons = Monster.createWeaponsVector(builder, weaps);
- int pos = Vec3.createVec3(builder, 1.0f, 2.0f, 3.0f);
-
- Monster.startMonster(builder);
- Monster.addPos(builder, pos);
- Monster.addName(builder, name);
- Monster.addColor(builder, Color.Red);
- Monster.addHp(builder, (short)300);
- Monster.addInventory(builder, inv);
- Monster.addWeapons(builder, weapons);
- Monster.addEquippedType(builder, Equipment.Weapon);
- Monster.addEquipped(builder, weaps[1]);
- int orc = Monster.endMonster(builder);
-
- builder.finish(orc); // You could also call `Monster.finishMonsterBuffer(builder, orc);`.
-
- // We now have a FlatBuffer that can be stored on disk or sent over a network.
-
- // ...Code to store to disk or send over a network goes here...
-
- // Instead, we are going to access it right away, as if we just received it.
-
- ByteBuffer buf = builder.dataBuffer();
-
- // Get access to the root:
- Monster monster = Monster.getRootAsMonster(buf);
-
- // Note: We did not set the `mana` field explicitly, so we get back the default value.
- assert monster.mana() == (short)150;
- assert monster.hp() == (short)300;
- assert monster.name().equals("Orc");
- assert monster.color() == Color.Red;
- assert monster.pos().x() == 1.0f;
- assert monster.pos().y() == 2.0f;
- assert monster.pos().z() == 3.0f;
-
- // Get and test the `inventory` FlatBuffer `vector`.
- for (int i = 0; i < monster.inventoryLength(); i++) {
- assert monster.inventory(i) == (byte)i;
- }
-
- // Get and test the `weapons` FlatBuffer `vector` of `table`s.
- String[] expectedWeaponNames = {"Sword", "Axe"};
- int[] expectedWeaponDamages = {3, 5};
- for (int i = 0; i < monster.weaponsLength(); i++) {
- assert monster.weapons(i).name().equals(expectedWeaponNames[i]);
- assert monster.weapons(i).damage() == expectedWeaponDamages[i];
- }
-
- // Get and test the `equipped` FlatBuffer `union`.
- assert monster.equippedType() == Equipment.Weapon;
- Weapon equipped = (Weapon)monster.equipped(new Weapon());
- assert equipped.name().equals("Axe");
- assert equipped.damage() == 5;
-
- System.out.println("The FlatBuffer was successfully created and verified!");
- }
-}
diff --git a/third_party/flatbuffers/samples/SampleBinary.php b/third_party/flatbuffers/samples/SampleBinary.php
deleted file mode 100644
index d28ffa3..0000000
--- a/third_party/flatbuffers/samples/SampleBinary.php
+++ /dev/null
@@ -1,115 +0,0 @@
-<?php
-/*
- * Copyright 2015 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// To run, use the `php_sample.sh` script.
-
-// It is recommended that you use PSR autoload when using FlatBuffers.
-function __autoload($class_name) {
- $class = substr($class_name, strrpos($class_name, "\\") + 1);
- $root_dir = join(DIRECTORY_SEPARATOR, array(dirname(dirname(__FILE__)))); // `flatbuffers` root.
- $paths = array(join(DIRECTORY_SEPARATOR, array($root_dir, "php")),
- join(DIRECTORY_SEPARATOR, array($root_dir, "samples", "MyGame", "Sample")));
- foreach ($paths as $path) {
- $file = join(DIRECTORY_SEPARATOR, array($path, $class . ".php"));
- if (file_exists($file)) {
- require($file);
- break;
- }
- }
-}
-
-// Example how to use FlatBuffers to create and read binary buffers.
-function main() {
- $builder = new Google\FlatBuffers\FlatbufferBuilder(0);
-
- // Create some weapons for our Monster using the `createWeapon()` helper function.
- $weapon_one = $builder->createString("Sword");
- $sword = \MyGame\Sample\Weapon::CreateWeapon($builder, $weapon_one, 3);
- $weapon_two = $builder->createString("Axe");
- $axe = \MyGame\Sample\Weapon::CreateWeapon($builder, $weapon_two, 5);
-
- // Serialize the FlatBuffer data.
- $name = $builder->createString("Orc");
-
- $treasure = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
- $inv = \MyGame\Sample\Monster::CreateInventoryVector($builder, $treasure);
-
- $weaps = array($sword, $axe);
- $weapons = \MyGame\Sample\Monster::CreateWeaponsVector($builder, $weaps);
-
- $pos = \MyGame\Sample\Vec3::CreateVec3($builder, 1.0, 2.0, 3.0);
-
- \MyGame\Sample\Monster::StartMonster($builder);
- \MyGame\Sample\Monster::AddPos($builder, $pos);
- \MyGame\Sample\Monster::AddHp($builder, 300);
- \MyGame\Sample\Monster::AddName($builder, $name);
- \MyGame\Sample\Monster::AddInventory($builder, $inv);
- \MyGame\Sample\Monster::AddColor($builder, \MyGame\Sample\Color::Red);
- \MyGame\Sample\Monster::AddWeapons($builder, $weapons);
- \MyGame\Sample\Monster::AddEquippedType($builder, \MyGame\Sample\Equipment::Weapon);
- \MyGame\Sample\Monster::AddEquipped($builder, $weaps[1]);
- $orc = \MyGame\Sample\Monster::EndMonster($builder);
-
- $builder->finish($orc); // You may also call `\MyGame\Sample\Monster::FinishMonsterBuffer($builder, $orc);`.
-
- // We now have a FlatBuffer that can be stored on disk or sent over a network.
-
- // ...Code to store to disk or send over a network goes here...
-
- // Instead, we are going to access it right away, as if we just received it.
-
- $buf = $builder->dataBuffer();
-
- // Get access to the root:
- $monster = \MyGame\Sample\Monster::GetRootAsMonster($buf);
-
- $success = true; // Tracks if an assert occurred.
-
- // Note: We did not set the `mana` field explicitly, so we get back the default value.
- $success &= assert($monster->getMana() == 150);
- $success &= assert($monster->getHp() == 300);
- $success &= assert($monster->getName() == "Orc");
- $success &= assert($monster->getColor() == \MyGame\Sample\Color::Red);
- $success &= assert($monster->getPos()->getX() == 1.0);
- $success &= assert($monster->getPos()->getY() == 2.0);
- $success &= assert($monster->getPos()->getZ() == 3.0);
-
- // Get and test the `inventory` FlatBuffer `vector`.
- for ($i = 0; $i < $monster->getInventoryLength(); $i++) {
- $success &= assert($monster->getInventory($i) == $i);
- }
-
- // Get and test the `weapons` FlatBuffer `vector` of `table`s.
- $expected_weapon_names = array("Sword", "Axe");
- $expected_weapon_damages = array(3, 5);
- for ($i = 0; $i < $monster->getWeaponsLength(); $i++) {
- $success &= assert($monster->getWeapons($i)->getName() == $expected_weapon_names[$i]);
- $success &= assert($monster->getWeapons($i)->getDamage() == $expected_weapon_damages[$i]);
- }
-
- // Get and test the `equipped` FlatBuffer `union`.
- $success &= assert($monster->getEquippedType() == \MyGame\Sample\Equipment::Weapon);
- $success &= assert($monster->getEquipped(new \MyGame\Sample\Weapon())->getName() == "Axe");
- $success &= assert($monster->getEquipped(new \MyGame\Sample\Weapon())->getDamage() == 5);
-
- if ($success) {
- print("The FlatBuffer was successfully created and verified!\n");
- }
-}
-
-main();
-?>
diff --git a/third_party/flatbuffers/samples/android/AndroidManifest.xml b/third_party/flatbuffers/samples/android/AndroidManifest.xml
deleted file mode 100755
index 0fa3dcf..0000000
--- a/third_party/flatbuffers/samples/android/AndroidManifest.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (c) 2015 Google, Inc.
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
- -->
-<!-- BEGIN_INCLUDE(manifest) -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.samples.FlatBufferSample"
- android:versionCode="1"
- android:versionName="1.0">
-
- <uses-feature android:glEsVersion="0x00020000"></uses-feature>
- <!-- This is the platform API where NativeActivity was introduced. -->
- <uses-sdk android:minSdkVersion="9" />
-
- <!-- This .apk has no Java code itself, so set hasCode to false. -->
- <application android:label="@string/app_name" android:hasCode="false">
-
- <!-- Our activity is the built-in NativeActivity framework class.
- This will take care of integrating with our NDK code. -->
- <activity android:name="android.app.NativeActivity"
- android:label="@string/app_name"
- android:configChanges="orientation|keyboardHidden"
- android:screenOrientation="landscape">
- <!-- Tell NativeActivity the name of or .so -->
- <meta-data android:name="android.app.lib_name"
- android:value="FlatBufferSample" />
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
-
-</manifest>
-<!-- END_INCLUDE(manifest) -->
diff --git a/third_party/flatbuffers/samples/android/build_apk.sh b/third_party/flatbuffers/samples/android/build_apk.sh
deleted file mode 100755
index 1b9f4a4..0000000
--- a/third_party/flatbuffers/samples/android/build_apk.sh
+++ /dev/null
@@ -1,511 +0,0 @@
-#!/bin/bash -eu
-#
-# Copyright (c) 2013 Google, Inc.
-#
-# This software is provided 'as-is', without any express or implied
-# warranty. In no event will the authors be held liable for any damages
-# arising from the use of this software.
-# Permission is granted to anyone to use this software for any purpose,
-# including commercial applications, and to alter it and redistribute it
-# freely, subject to the following restrictions:
-# 1. The origin of this software must not be misrepresented; you must not
-# claim that you wrote the original software. If you use this software
-# in a product, an acknowledgment in the product documentation would be
-# appreciated but is not required.
-# 2. Altered source versions must be plainly marked as such, and must not be
-# misrepresented as being the original software.
-# 3. This notice may not be removed or altered from any source distribution.
-#
-# Build, deploy, debug / execute a native Android package based upon
-# NativeActivity.
-
-declare -r script_directory=$(dirname $0)
-declare -r android_root=${script_directory}/../../../../../../
-declare -r script_name=$(basename $0)
-declare -r android_manifest=AndroidManifest.xml
-declare -r os_name=$(uname -s)
-
-# Minimum Android target version supported by this project.
-: ${BUILDAPK_ANDROID_TARGET_MINVERSION:=10}
-# Directory containing the Android SDK
-# (http://developer.android.com/sdk/index.html).
-: ${ANDROID_SDK_HOME:=}
-# Directory containing the Android NDK
-# (http://developer.android.com/tools/sdk/ndk/index.html).
-: ${NDK_HOME:=}
-
-# Display script help and exit.
-usage() {
- echo "
-Build the Android package in the current directory and deploy it to a
-connected device.
-
-Usage: ${script_name} \\
- [ADB_DEVICE=serial_number] [BUILD=0] [DEPLOY=0] [RUN_DEBUGGER=1] \
- [LAUNCH=0] [SWIG_BIN=swig_binary_directory] [SWIG_LIB=swig_include_directory] [ndk-build arguments ...]
-
-ADB_DEVICE=serial_number:
- serial_number specifies the device to deploy the built apk to if multiple
- Android devices are connected to the host.
-BUILD=0:
- Disables the build of the package.
-DEPLOY=0:
- Disables the deployment of the built apk to the Android device.
-RUN_DEBUGGER=1:
- Launches the application in gdb after it has been deployed. To debug in
- gdb, NDK_DEBUG=1 must also be specified on the command line to build a
- debug apk.
-LAUNCH=0:
- Disable the launch of the apk on the Android device.
-SWIG_BIN=swig_binary_directory:
- The directory where the SWIG binary lives. No need to set this if SWIG is
- installed and point to from your PATH variable.
-SWIG_LIB=swig_include_directory:
- The directory where SWIG shared include files are, usually obtainable from
- commandline with \"swig -swiglib\". No need to set this if SWIG is installed
- and point to from your PATH variable.
-ndk-build arguments...:
- Additional arguments for ndk-build. See ndk-build -h for more information.
-" >&2
- exit 1
-}
-
-# Get the number of CPU cores present on the host.
-get_number_of_cores() {
- case ${os_name} in
- Darwin)
- sysctl hw.ncpu | awk '{ print $2 }'
- ;;
- CYGWIN*|Linux)
- awk '/^processor/ { n=$3 } END { print n + 1 }' /proc/cpuinfo
- ;;
- *)
- echo 1
- ;;
- esac
-}
-
-# Get the package name from an AndroidManifest.xml file.
-get_package_name_from_manifest() {
- xmllint --xpath 'string(/manifest/@package)' "${1}"
-}
-
-# Get the library name from an AndroidManifest.xml file.
-get_library_name_from_manifest() {
- echo "\
-setns android=http://schemas.android.com/apk/res/android
-xpath string(/manifest/application/activity\
-[@android:name=\"android.app.NativeActivity\"]/meta-data\
-[@android:name=\"android.app.lib_name\"]/@android:value)" |
- xmllint --shell "${1}" | awk '/Object is a string/ { print $NF }'
-}
-
-# Get the number of Android devices connected to the system.
-get_number_of_devices_connected() {
- adb devices -l | \
- awk '/^..*$/ { if (p) { print $0 } }
- /List of devices attached/ { p = 1 }' | \
- wc -l
- return ${PIPESTATUS[0]}
-}
-
-# Kill a process and its' children. This is provided for cygwin which
-# doesn't ship with pkill.
-kill_process_group() {
- local parent_pid="${1}"
- local child_pid=
- for child_pid in $(ps -f | \
- awk '{ if ($3 == '"${parent_pid}"') { print $2 } }'); do
- kill_process_group "${child_pid}"
- done
- kill "${parent_pid}" 2>/dev/null
-}
-
-# Find and run "adb".
-adb() {
- local adb_path=
- for path in "$(which adb 2>/dev/null)" \
- "${ANDROID_SDK_HOME}/sdk/platform-tools/adb" \
- "${android_root}/prebuilts/sdk/platform-tools/adb"; do
- if [[ -e "${path}" ]]; then
- adb_path="${path}"
- break
- fi
- done
- if [[ "${adb_path}" == "" ]]; then
- echo -e "Unable to find adb." \
- "\nAdd the Android ADT sdk/platform-tools directory to the" \
- "PATH." >&2
- exit 1
- fi
- "${adb_path}" "$@"
-}
-
-# Find and run "android".
-android() {
- local android_executable=android
- if echo "${os_name}" | grep -q CYGWIN; then
- android_executable=android.bat
- fi
- local android_path=
- for path in "$(which ${android_executable})" \
- "${ANDROID_SDK_HOME}/sdk/tools/${android_executable}" \
- "${android_root}/prebuilts/sdk/tools/${android_executable}"; do
- if [[ -e "${path}" ]]; then
- android_path="${path}"
- break
- fi
- done
- if [[ "${android_path}" == "" ]]; then
- echo -e "Unable to find android tool." \
- "\nAdd the Android ADT sdk/tools directory to the PATH." >&2
- exit 1
- fi
- # Make sure ant is installed.
- if [[ "$(which ant)" == "" ]]; then
- echo -e "Unable to find ant." \
- "\nPlease install ant and add to the PATH." >&2
- exit 1
- fi
-
- "${android_path}" "$@"
-}
-
-# Find and run "ndk-build"
-ndkbuild() {
- local ndkbuild_path=
- for path in "$(which ndk-build 2>/dev/null)" \
- "${NDK_HOME}/ndk-build" \
- "${android_root}/prebuilts/ndk/current/ndk-build"; do
- if [[ -e "${path}" ]]; then
- ndkbuild_path="${path}"
- break
- fi
- done
- if [[ "${ndkbuild_path}" == "" ]]; then
- echo -e "Unable to find ndk-build." \
- "\nAdd the Android NDK directory to the PATH." >&2
- exit 1
- fi
- "${ndkbuild_path}" "$@"
-}
-
-# Get file modification time of $1 in seconds since the epoch.
-stat_mtime() {
- local filename="${1}"
- case ${os_name} in
- Darwin) stat -f%m "${filename}" 2>/dev/null || echo 0 ;;
- *) stat -c%Y "${filename}" 2>/dev/null || echo 0 ;;
- esac
-}
-
-# Build the native (C/C++) build targets in the current directory.
-build_native_targets() {
- # Save the list of output modules in the install directory so that it's
- # possible to restore their timestamps after the build is complete. This
- # works around a bug in ndk/build/core/setup-app.mk which results in the
- # unconditional execution of the clean-installed-binaries rule.
- restore_libraries="$(find libs -type f 2>/dev/null | \
- sed -E 's@^libs/(.*)@\1@')"
-
- # Build native code.
- ndkbuild -j$(get_number_of_cores) "$@"
-
- # Restore installed libraries.
- # Obviously this is a nasty hack (along with ${restore_libraries} above) as
- # it assumes it knows where the NDK will be placing output files.
- (
- IFS=$'\n'
- for libpath in ${restore_libraries}; do
- source_library="obj/local/${libpath}"
- target_library="libs/${libpath}"
- if [[ -e "${source_library}" ]]; then
- cp -a "${source_library}" "${target_library}"
- fi
- done
- )
-}
-
-# Select the oldest installed android build target that is at least as new as
-# BUILDAPK_ANDROID_TARGET_MINVERSION. If a suitable build target isn't found,
-# this function prints an error message and exits with an error.
-select_android_build_target() {
- local -r android_targets_installed=$( \
- android list targets | \
- awk -F'"' '/^id:.*android/ { print $2 }')
- local android_build_target=
- for android_target in $(echo "${android_targets_installed}" | \
- awk -F- '{ print $2 }' | sort -n); do
- local isNumber='^[0-9]+$'
- # skip preview API releases e.g. 'android-L'
- if [[ $android_target =~ $isNumber ]]; then
- if [[ $((android_target)) -ge \
- $((BUILDAPK_ANDROID_TARGET_MINVERSION)) ]]; then
- android_build_target="android-${android_target}"
- break
- fi
- # else
- # The API version is a letter, so skip it.
- fi
- done
- if [[ "${android_build_target}" == "" ]]; then
- echo -e \
- "Found installed Android targets:" \
- "$(echo ${android_targets_installed} | sed 's/ /\n /g;s/^/\n /;')" \
- "\nAndroid SDK platform" \
- "android-$((BUILDAPK_ANDROID_TARGET_MINVERSION))" \
- "must be installed to build this project." \
- "\nUse the \"android\" application to install API" \
- "$((BUILDAPK_ANDROID_TARGET_MINVERSION)) or newer." >&2
- exit 1
- fi
- echo "${android_build_target}"
-}
-
-# Sign unsigned apk $1 and write the result to $2 with key store file $3 and
-# password $4.
-# If a key store file $3 and password $4 aren't specified, a temporary
-# (60 day) key is generated and used to sign the package.
-sign_apk() {
- local unsigned_apk="${1}"
- local signed_apk="${2}"
- if [[ $(stat_mtime "${unsigned_apk}") -gt \
- $(stat_mtime "${signed_apk}") ]]; then
- local -r key_alias=$(basename ${signed_apk} .apk)
- local keystore="${3}"
- local key_password="${4}"
- [[ "${keystore}" == "" ]] && keystore="${unsigned_apk}.keystore"
- [[ "${key_password}" == "" ]] && \
- key_password="${key_alias}123456"
- if [[ ! -e ${keystore} ]]; then
- keytool -genkey -v -dname "cn=, ou=${key_alias}, o=fpl" \
- -storepass ${key_password} \
- -keypass ${key_password} -keystore ${keystore} \
- -alias ${key_alias} -keyalg RSA -keysize 2048 -validity 60
- fi
- cp "${unsigned_apk}" "${signed_apk}"
- jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 \
- -keystore ${keystore} -storepass ${key_password} \
- -keypass ${key_password} "${signed_apk}" ${key_alias}
- fi
-}
-
-# Build the apk $1 for package filename $2 in the current directory using the
-# ant build target $3.
-build_apk() {
- local -r output_apk="${1}"
- local -r package_filename="${2}"
- local -r ant_target="${3}"
- # Get the list of installed android targets and select the oldest target
- # that is at least as new as BUILDAPK_ANDROID_TARGET_MINVERSION.
- local -r android_build_target=$(select_android_build_target)
- [[ "${android_build_target}" == "" ]] && exit 1
- echo "Building ${output_apk} for target ${android_build_target}" >&2
-
- # Create / update build.xml and local.properties files.
- if [[ $(stat_mtime "${android_manifest}") -gt \
- $(stat_mtime build.xml) ]]; then
- android update project --target "${android_build_target}" \
- -n ${package_filename} --path .
- fi
-
- # Use ant to build the apk.
- ant -quiet ${ant_target}
-
- # Sign release apks with a temporary key as these packages will not be
- # redistributed.
- local unsigned_apk="bin/${package_filename}-${ant_target}-unsigned.apk"
- if [[ "${ant_target}" == "release" ]]; then
- sign_apk "${unsigned_apk}" "${output_apk}" "" ""
- fi
-}
-
-# Uninstall package $1 and install apk $2 on device $3 where $3 is "-s device"
-# or an empty string. If $3 is an empty string adb will fail when multiple
-# devices are connected to the host system.
-install_apk() {
- local -r uninstall_package_name="${1}"
- local -r install_apk="${2}"
- local -r adb_device="${3}"
- # Uninstall the package if it's already installed.
- adb ${adb_device} uninstall "${uninstall_package_name}" 1>&2 > /dev/null || \
- true # no error check
-
- # Install the apk.
- # NOTE: The following works around adb not returning an error code when
- # it fails to install an apk.
- echo "Install ${install_apk}" >&2
- local -r adb_install_result=$(adb ${adb_device} install "${install_apk}")
- echo "${adb_install_result}"
- if echo "${adb_install_result}" | grep -qF 'Failure ['; then
- exit 1
- fi
-}
-
-# Launch previously installed package $1 on device $2.
-# If $2 is an empty string adb will fail when multiple devices are connected
-# to the host system.
-launch_package() {
- (
- # Determine the SDK version of Android on the device.
- local -r android_sdk_version=$(
- adb ${adb_device} shell cat system/build.prop | \
- awk -F= '/ro.build.version.sdk/ {
- v=$2; sub(/[ \r\n]/, "", v); print v
- }')
-
- # Clear logs from previous runs.
- # Note that logcat does not just 'tail' the logs, it dumps the entire log
- # history.
- adb ${adb_device} logcat -c
-
- local finished_msg='Displayed '"${package_name}"
- local timeout_msg='Activity destroy timeout.*'"${package_name}"
- # Maximum time to wait before stopping log monitoring. 0 = infinity.
- local launch_timeout=0
- # If this is a Gingerbread device, kill log monitoring after 10 seconds.
- if [[ $((android_sdk_version)) -le 10 ]]; then
- launch_timeout=10
- fi
- # Display logcat in the background.
- # Stop displaying the log when the app launch / execution completes or the
- # logcat
- (
- adb ${adb_device} logcat | \
- awk "
- {
- print \$0
- }
-
- /ActivityManager.*: ${finished_msg}/ {
- exit 0
- }
-
- /ActivityManager.*: ${timeout_msg}/ {
- exit 0
- }" &
- adb_logcat_pid=$!;
- if [[ $((launch_timeout)) -gt 0 ]]; then
- sleep $((launch_timeout));
- kill ${adb_logcat_pid};
- else
- wait ${adb_logcat_pid};
- fi
- ) &
- logcat_pid=$!
- # Kill adb logcat if this shell exits.
- trap "kill_process_group ${logcat_pid}" SIGINT SIGTERM EXIT
-
- # If the SDK is newer than 10, "am" supports stopping an activity.
- adb_stop_activity=
- if [[ $((android_sdk_version)) -gt 10 ]]; then
- adb_stop_activity=-S
- fi
-
- # Launch the activity and wait for it to complete.
- adb ${adb_device} shell am start ${adb_stop_activity} -n \
- ${package_name}/android.app.NativeActivity
-
- wait "${logcat_pid}"
- )
-}
-
-# See usage().
-main() {
- # Parse arguments for this script.
- local adb_device=
- local ant_target=release
- local disable_deploy=0
- local disable_build=0
- local run_debugger=0
- local launch=1
- local build_package=1
- for opt; do
- case ${opt} in
- # NDK_DEBUG=0 tells ndk-build to build this as debuggable but to not
- # modify the underlying code whereas NDK_DEBUG=1 also builds as debuggable
- # but does modify the code
- NDK_DEBUG=1) ant_target=debug ;;
- NDK_DEBUG=0) ant_target=debug ;;
- ADB_DEVICE*) adb_device="$(\
- echo "${opt}" | sed -E 's/^ADB_DEVICE=([^ ]+)$/-s \1/;t;s/.*//')" ;;
- BUILD=0) disable_build=1 ;;
- DEPLOY=0) disable_deploy=1 ;;
- RUN_DEBUGGER=1) run_debugger=1 ;;
- LAUNCH=0) launch=0 ;;
- clean) build_package=0 disable_deploy=1 launch=0 ;;
- -h|--help|help) usage ;;
- esac
- done
-
- # If a target device hasn't been specified and multiple devices are connected
- # to the host machine, display an error.
- local -r devices_connected=$(get_number_of_devices_connected)
- if [[ "${adb_device}" == "" && $((devices_connected)) -gt 1 && \
- ($((disable_deploy)) -eq 0 || $((launch)) -ne 0 || \
- $((run_debugger)) -ne 0) ]]; then
- if [[ $((disable_deploy)) -ne 0 ]]; then
- echo "Deployment enabled, disable using DEPLOY=0" >&2
- fi
- if [[ $((launch)) -ne 0 ]]; then
- echo "Launch enabled." >&2
- fi
- if [[ $((disable_deploy)) -eq 0 ]]; then
- echo "Deployment enabled." >&2
- fi
- if [[ $((run_debugger)) -ne 0 ]]; then
- echo "Debugger launch enabled." >&2
- fi
- echo "
-Multiple Android devices are connected to this host. Either disable deployment
-and execution of the built .apk using:
- \"${script_name} DEPLOY=0 LAUNCH=0\"
-
-or specify a device to deploy to using:
- \"${script_name} ADB_DEVICE=\${device_serial}\".
-
-The Android devices connected to this machine are:
-$(adb devices -l)
-" >&2
- exit 1
- fi
-
- if [[ $((disable_build)) -eq 0 ]]; then
- # Build the native target.
- build_native_targets "$@"
- fi
-
- # Get the package name from the manifest.
- local -r package_name=$(get_package_name_from_manifest "${android_manifest}")
- if [[ "${package_name}" == "" ]]; then
- echo -e "No package name specified in ${android_manifest},"\
- "skipping apk build, deploy"
- "\nand launch steps." >&2
- exit 0
- fi
- local -r package_basename=${package_name/*./}
- local package_filename=$(get_library_name_from_manifest ${android_manifest})
- [[ "${package_filename}" == "" ]] && package_filename="${package_basename}"
-
- # Output apk name.
- local -r output_apk="bin/${package_filename}-${ant_target}.apk"
-
- if [[ $((disable_build)) -eq 0 && $((build_package)) -eq 1 ]]; then
- # Build the apk.
- build_apk "${output_apk}" "${package_filename}" "${ant_target}"
- fi
-
- # Deploy to the device.
- if [[ $((disable_deploy)) -eq 0 ]]; then
- install_apk "${package_name}" "${output_apk}" "${adb_device}"
- fi
-
- if [[ "${ant_target}" == "debug" && $((run_debugger)) -eq 1 ]]; then
- # Start debugging.
- ndk-gdb ${adb_device} --start
- elif [[ $((launch)) -eq 1 ]]; then
- launch_package "${package_name}" "${adb_device}"
- fi
-}
-
-main "$@"
diff --git a/third_party/flatbuffers/samples/android/jni/Android.mk b/third_party/flatbuffers/samples/android/jni/Android.mk
deleted file mode 100755
index 6f22d28..0000000
--- a/third_party/flatbuffers/samples/android/jni/Android.mk
+++ /dev/null
@@ -1,56 +0,0 @@
-# Copyright (c) 2013 Google, Inc.
-#
-# This software is provided 'as-is', without any express or implied
-# warranty. In no event will the authors be held liable for any damages
-# arising from the use of this software.
-# Permission is granted to anyone to use this software for any purpose,
-# including commercial applications, and to alter it and redistribute it
-# freely, subject to the following restrictions:
-# 1. The origin of this software must not be misrepresented; you must not
-# claim that you wrote the original software. If you use this software
-# in a product, an acknowledgment in the product documentation would be
-# appreciated but is not required.
-# 2. Altered source versions must be plainly marked as such, and must not be
-# misrepresented as being the original software.
-# 3. This notice may not be removed or altered from any source distribution.
-
-LOCAL_PATH := $(call my-dir)
-FLATBUFFERS_ROOT_DIR := $(LOCAL_PATH)/../../..
-
-# FlatBuffers test
-include $(CLEAR_VARS)
-
-# Include the FlatBuffer utility function to generate header files from schemas.
-include $(FLATBUFFERS_ROOT_DIR)/android/jni/include.mk
-
-LOCAL_MODULE := FlatBufferSample
-
-# Set up some useful variables to identify schema and output directories and
-# schema files.
-ANDROID_SAMPLE_GENERATED_OUTPUT_DIR := $(LOCAL_PATH)/gen/include
-ANDROID_SAMPLE_SCHEMA_DIR := $(LOCAL_PATH)/schemas
-ANDROID_SAMPLE_SCHEMA_FILES := $(ANDROID_SAMPLE_SCHEMA_DIR)/animal.fbs
-
-LOCAL_C_INCLUDES := $(ANDROID_SAMPLE_GENERATED_OUTPUT_DIR)
-
-$(info $(LOCAL_C_INCLUDES))
-
-LOCAL_SRC_FILES := main.cpp
-
-LOCAL_CPPFLAGS := -std=c++11 -fexceptions -Wall -Wno-literal-suffix
-LOCAL_LDLIBS := -llog -landroid
-LOCAL_ARM_MODE := arm
-LOCAL_STATIC_LIBRARIES := android_native_app_glue flatbuffers
-
-ifeq (,$(ANDROID_SAMPLE_RUN_ONCE))
-ANDROID_SAMPLE_RUN_ONCE := 1
-$(call flatbuffers_header_build_rules,$(ANDROID_SAMPLE_SCHEMA_FILES),$(ANDROID_SAMPLE_SCHEMA_DIR),$(ANDROID_SAMPLE_GENERATED_OUTPUT_DIR),,$(LOCAL_SRC_FILES))
-endif
-
-include $(BUILD_SHARED_LIBRARY)
-
-# Path to Flatbuffers root directory.
-$(call import-add-path,$(FLATBUFFERS_ROOT_DIR)/..)
-
-$(call import-module,flatbuffers/android/jni)
-$(call import-module,android/native_app_glue)
diff --git a/third_party/flatbuffers/samples/android/jni/Application.mk b/third_party/flatbuffers/samples/android/jni/Application.mk
deleted file mode 100755
index 2fc9c73..0000000
--- a/third_party/flatbuffers/samples/android/jni/Application.mk
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright (c) 2014 Google, Inc.
-#
-# This software is provided 'as-is', without any express or implied
-# warranty. In no event will the authors be held liable for any damages
-# arising from the use of this software.
-# Permission is granted to anyone to use this software for any purpose,
-# including commercial applications, and to alter it and redistribute it
-# freely, subject to the following restrictions:
-# 1. The origin of this software must not be misrepresented; you must not
-# claim that you wrote the original software. If you use this software
-# in a product, an acknowledgment in the product documentation would be
-# appreciated but is not required.
-# 2. Altered source versions must be plainly marked as such, and must not be
-# misrepresented as being the original software.
-# 3. This notice may not be removed or altered from any source distribution.
-APP_PLATFORM := android-10
-APP_PROJECT_PATH := $(call my-dir)/..
-APP_STL := gnustl_static
-
-APP_ABI := armeabi-v7a
-
-APP_CPPFLAGS += -std=c++11
diff --git a/third_party/flatbuffers/samples/android/jni/main.cpp b/third_party/flatbuffers/samples/android/jni/main.cpp
deleted file mode 100644
index 8758027..0000000
--- a/third_party/flatbuffers/samples/android/jni/main.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2015 Google Inc. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <android/log.h>
-
-#include "android_native_app_glue.h"
-#include "animal_generated.h" // Includes "flatbuffers/flatbuffers.h".
-
-void android_main(android_app *app) {
- app_dummy();
-
- flatbuffers::FlatBufferBuilder builder;
- auto name = builder.CreateString("Dog");
- auto sound = builder.CreateString("Bark");
- auto animal_buffer = sample::CreateAnimal(builder, name, sound);
- builder.Finish(animal_buffer);
-
- // We now have a FlatBuffer that can be stored on disk or sent over a network.
-
- // ...Code to store on disk or send over a network goes here...
-
- // Instead, we're going to access it immediately, as if we just recieved this.
-
- auto animal = sample::GetAnimal(builder.GetBufferPointer());
-
- assert(animal->name()->str() == "Dog");
- assert(animal->sound()->str() == "Bark");
- (void)animal; // To silence "Unused Variable" warnings.
-
- __android_log_print(ANDROID_LOG_INFO, "FlatBufferSample",
- "FlatBuffer successfully created and verified.");
-}
diff --git a/third_party/flatbuffers/samples/android/jni/schemas/animal.fbs b/third_party/flatbuffers/samples/android/jni/schemas/animal.fbs
deleted file mode 100644
index d1bd38d..0000000
--- a/third_party/flatbuffers/samples/android/jni/schemas/animal.fbs
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2015 Google Inc. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-namespace sample;
-
-table Animal {
- name:string;
- sound:string;
-}
-
-root_type Animal;
diff --git a/third_party/flatbuffers/samples/android/res/values/strings.xml b/third_party/flatbuffers/samples/android/res/values/strings.xml
deleted file mode 100755
index 57ddaf4..0000000
--- a/third_party/flatbuffers/samples/android/res/values/strings.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (c) 2015 Google, Inc.
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
- -->
-<resources>
- <string name="app_name">FlatBufferSample</string>
-</resources>
diff --git a/third_party/flatbuffers/samples/android_sample.sh b/third_party/flatbuffers/samples/android_sample.sh
deleted file mode 100755
index ead8fd8..0000000
--- a/third_party/flatbuffers/samples/android_sample.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2015 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# Note: This script requires the Android NDK and Android SDK to be installed.
-# It also requires an Android device to be connected for installing and
-# running the applicaton.
-
-sampledir=$(readlink -fn `dirname $0`)
-currentdir=$(readlink -fn `pwd`)
-
-if [[ "$sampledir" != "$currentdir" ]]; then
- echo Error: This script must be run from inside the $sampledir directory.
- echo You executed it from the $currentdir directory.
- exit 1
-fi
-
-# Execute `build_apk.sh` to build and run the android app.
-cd android
-./build_apk.sh
-
-# Cleanup the temporary files.
-rm build.xml local.properties proguard-project.txt project.properties
-rm -rf bin libs obj
diff --git a/third_party/flatbuffers/samples/csharp_sample.sh b/third_party/flatbuffers/samples/csharp_sample.sh
deleted file mode 100755
index ea472ed..0000000
--- a/third_party/flatbuffers/samples/csharp_sample.sh
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2015 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# Note: This script runs on Mac and Linux. It requires `mono` to be installed
-# and `flatc` to be built (using `cmake` in the root directory).
-
-sampledir=$(cd $(dirname $BASH_SOURCE) && pwd)
-rootidr=$(cd $sampledir/.. && pwd)
-currentdir=$(pwd)
-
-if [[ "$sampledir" != "$currentdir" ]]; then
- echo Error: This script must be run from inside the $sampledir directory.
- echo You executed it from the $currentdir directory.
- exit 1
-fi
-
-# Run `flatc`. Note: This requires you to compile using `cmake` from the
-# root `/flatbuffers` directory.
-if [ -e ../flatc ]; then
- ../flatc --csharp --gen-mutable monster.fbs
-elif [ -e ../Debug/flatc ]; then
- ../Debug/flatc --csharp --gen-mutable monster.fbs
-else
- echo 'flatc' could not be found. Make sure to build FlatBuffers from the \
- $rootdir directory.
- exit 1
-fi
-
-echo Compiling and running the C# sample.
-
-# Compile and execute the sample.
-mcs SampleBinary.cs MyGame/Sample/*.cs ../net/FlatBuffers/*.cs
-mono SampleBinary.exe
-
-# Cleanup temporary files.
-rm SampleBinary.exe
-rm -rf MyGame/
diff --git a/third_party/flatbuffers/samples/go_sample.sh b/third_party/flatbuffers/samples/go_sample.sh
deleted file mode 100755
index 13a96c1..0000000
--- a/third_party/flatbuffers/samples/go_sample.sh
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2015 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# Note: This script runs on Mac and Linux. It requires `go` to be installed
-# and 'flatc' to be built (using `cmake` in the root directory).
-
-sampledir=$(cd $(dirname $BASH_SOURCE) && pwd)
-rootdir=$(cd $sampledir/.. && pwd)
-currentdir=$(pwd)
-
-if [[ "$sampledir" != "$currentdir" ]]; then
- echo Error: This script must be run from inside the $sampledir directory.
- echo You executed it from the $currentdir directory.
- exit 1
-fi
-
-# Run `flatc`. Note: This requires you to compile using `cmake` from the
-# root `/flatbuffers` directory.
-if [ -e ../flatc ]; then
- ../flatc --go monster.fbs
-elif [ -e ../Debug/flatc ]; then
- ../Debug/flatc --go monster.fbs
-else
- echo 'flatc' could not be found. Make sure to build FlatBuffers from the \
- $rootdir directory.
- exit 1
-fi
-
-echo Compiling and running the Go sample.
-
-# Go requires a particular layout of files in order to link the necessary
-# packages. Copy these files to the respective directores to compile the
-# sample.
-mkdir -p ${sampledir}/go_gen/src/MyGame/Sample
-mkdir -p ${sampledir}/go_gen/src/github.com/google/flatbuffers/go
-cp MyGame/Sample/*.go ${sampledir}/go_gen/src/MyGame/Sample/
-cp ${sampledir}/../go/* ${sampledir}/go_gen/src/github.com/google/flatbuffers/go
-
-# Export the `GOPATH`, so that `go` will know which directories to search for
-# the libraries.
-export GOPATH=${sampledir}/go_gen/
-
-# Compile and execute the sample.
-go build -o go_sample sample_binary.go
-./go_sample
-
-# Clean up the temporary files.
-rm -rf MyGame/
-rm -rf ${sampledir}/go_gen/
-rm go_sample
diff --git a/third_party/flatbuffers/samples/java_sample.sh b/third_party/flatbuffers/samples/java_sample.sh
deleted file mode 100755
index bd1315f..0000000
--- a/third_party/flatbuffers/samples/java_sample.sh
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2015 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# Note: This script runs on Mac and Linux. It requires `java` to be installed
-# and `flatc` to be built (using `cmake` in the root directory).
-
-sampledir=$(cd $(dirname $BASH_SOURCE) && pwd)
-rootdir=$(cd $sampledir/.. && pwd)
-currentdir=$(pwd)
-
-if [[ "$sampledir" != "$currentdir" ]]; then
- echo Error: This script must be run from inside the $sampledir directory.
- echo You executed it from the $currentdir directory.
- exit 1
-fi
-
-# Run `flatc`. Note: This requires you to compile using `cmake` from the
-# root `/flatbuffers` directory.
-if [ -e ../flatc ]; then
- ../flatc --java --gen-mutable monster.fbs
-elif [ -e ../Debug/flatc ]; then
- ../Debug/flatc --java --gen-mutable monster.fbs
-else
- echo 'flatc' could not be found. Make sure to build FlatBuffers from the \
- $rootdir directory.
- exit 1
-fi
-
-echo Compiling and running the Java sample.
-
-# Compile and execute the sample.
-javac -classpath ${sampledir}/../java:${sampledir} SampleBinary.java
-java -classpath ${sampledir}/../java:${sampledir} SampleBinary
-
-# Cleanup temporary files.
-rm -rf MyGame/
-rm ${sampledir}/../java/com/google/flatbuffers/*.class
-rm *.class
diff --git a/third_party/flatbuffers/samples/javascript_sample.sh b/third_party/flatbuffers/samples/javascript_sample.sh
deleted file mode 100755
index 4bbc478..0000000
--- a/third_party/flatbuffers/samples/javascript_sample.sh
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2015 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# Note: This script runs on Mac and Linux. It requires `Node.js` to be installed
-# and `flatc` to be built (using `cmake` in the root directory).
-
-sampledir=$(cd $(dirname $BASH_SOURCE) && pwd)
-rootdir=$(cd $sampledir/.. && pwd)
-currentdir=$(pwd)
-
-if [[ "$sampledir" != "$currentdir" ]]; then
- echo Error: This script must be run from inside the $sampledir directory.
- echo You executed it from the $currentdir directory.
- exit 1
-fi
-
-# Run `flatc`. Note: This requires you to compile using `cmake` from the
-# root `/flatbuffers` directory.
-if [ -e ../flatc ]; then
- ../flatc --js monster.fbs
-elif [ -e ../Debug/flatc ]; then
- ../Debug/flatc --js monster.fbs
-else
- echo 'flatc' could not be found. Make sure to build FlatBuffers from the \
- $rootdir directory.
- exit 1
-fi
-
-echo Running the JavaScript sample.
-
-# Execute the sample.
-node samplebinary.js
-
-# Cleanup temporary files.
-rm monster_generated.js
diff --git a/third_party/flatbuffers/samples/monster.fbs b/third_party/flatbuffers/samples/monster.fbs
deleted file mode 100755
index 247b817..0000000
--- a/third_party/flatbuffers/samples/monster.fbs
+++ /dev/null
@@ -1,32 +0,0 @@
-// Example IDL file for our monster's schema.
-
-namespace MyGame.Sample;
-
-enum Color:byte { Red = 0, Green, Blue = 2 }
-
-union Equipment { Weapon } // Optionally add more tables.
-
-struct Vec3 {
- x:float;
- y:float;
- z:float;
-}
-
-table Monster {
- pos:Vec3;
- mana:short = 150;
- hp:short = 100;
- name:string;
- friendly:bool = false (deprecated);
- inventory:[ubyte];
- color:Color = Blue;
- weapons:[Weapon];
- equipped:Equipment;
-}
-
-table Weapon {
- name:string;
- damage:short;
-}
-
-root_type Monster;
diff --git a/third_party/flatbuffers/samples/monsterdata.json b/third_party/flatbuffers/samples/monsterdata.json
deleted file mode 100755
index 0db1d29..0000000
--- a/third_party/flatbuffers/samples/monsterdata.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- pos: {
- x: 1,
- y: 2,
- z: 3
- },
- hp: 300,
- name: "Orc",
- weapons:[
- {
- name: "axe",
- damage:100
- },
- {
- name: "bow",
- damage:90
- }
- ],
- equipped_type: "Weapon",
- equipped:
- {
- name: "bow",
- damage:90
- }
-}
diff --git a/third_party/flatbuffers/samples/php_sample.sh b/third_party/flatbuffers/samples/php_sample.sh
deleted file mode 100755
index c23edc3..0000000
--- a/third_party/flatbuffers/samples/php_sample.sh
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2015 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# Note: This script runs on Mac and Linux. It requires `php` to be installed
-# and `flatc` to be built (using `cmake` in the root directory).
-
-sampledir=$(cd $(dirname $BASH_SOURCE) && pwd)
-rootdir=$(cd $sampledir/.. && pwd)
-currentdir=$(pwd)
-
-if [[ "$sampledir" != "$currentdir" ]]; then
- echo Error: This script must be run from inside the $sampledir directory.
- echo You executed it from the $currentdir directory.
- exit 1
-fi
-
-# Run `flatc`. Note: This requires you to compile using `cmake` from the
-# root `/flatbuffers` directory.
-if [ -e ../flatc ]; then
- ../flatc --php monster.fbs
-elif [ -e ../Debug/flatc ]; then
- ../Debug/flatc --php monster.fbs
-else
- echo 'flatc' could not be found. Make sure to build FlatBuffers from the \
- $rootdir directory.
- exit 1
-fi
-
-echo Running the PHP sample.
-
-# Execute the sample.
-php SampleBinary.php
-
-# Clean up temporary files.
-rm -rf MyGame/
diff --git a/third_party/flatbuffers/samples/python_sample.sh b/third_party/flatbuffers/samples/python_sample.sh
deleted file mode 100755
index ca5de2b..0000000
--- a/third_party/flatbuffers/samples/python_sample.sh
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2015 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# Note: This script runs on Mac and Linux. It requires `python` to be installed
-# and `flatc` to be built (using `cmake` in the root directory).
-
-sampledir=$(cd $(dirname $BASH_SOURCE) && pwd)
-rootdir=$(cd $sampledir/.. && pwd)
-currentdir=$(pwd)
-
-if [[ "$sampledir" != "$currentdir" ]]; then
- echo Error: This script must be run from inside the $sampledir directory.
- echo You executed it from the $currentdir directory.
- exit 1
-fi
-
-# Run `flatc`. Note: This requires you to compile using `cmake` from the
-# root `/flatbuffers` directory.
-if [ -e ../flatc ]; then
- ../flatc --python monster.fbs
-elif [ -e ../Debug/flatc ]; then
- ../Debug/flatc --python monster.fbs
-else
- echo 'flatc' could not be found. Make sure to build FlatBuffers from the \
- $rootdir directory.
- exit 1
-fi
-
-echo Running the Python sample.
-
-# Execute the sample.
-python sample_binary.py
-
-# Clean up the temporary files.
-rm -rf MyGame
diff --git a/third_party/flatbuffers/samples/sample_binary.cpp b/third_party/flatbuffers/samples/sample_binary.cpp
deleted file mode 100644
index 4c5f017..0000000
--- a/third_party/flatbuffers/samples/sample_binary.cpp
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright 2015 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "monster_generated.h" // Already includes "flatbuffers/flatbuffers.h".
-
-using namespace MyGame::Sample;
-
-// Example how to use FlatBuffers to create and read binary buffers.
-
-int main(int /*argc*/, const char * /*argv*/[]) {
- // Build up a serialized buffer algorithmically:
- flatbuffers::FlatBufferBuilder builder;
-
- // First, lets serialize some weapons for the Monster: A 'sword' and an 'axe'.
- auto weapon_one_name = builder.CreateString("Sword");
- short weapon_one_damage = 3;
-
- auto weapon_two_name = builder.CreateString("Axe");
- short weapon_two_damage = 5;
-
- // Use the `CreateWeapon` shortcut to create Weapons with all fields set.
- auto sword = CreateWeapon(builder, weapon_one_name, weapon_one_damage);
- auto axe = CreateWeapon(builder, weapon_two_name, weapon_two_damage);
-
- // Create a FlatBuffer's `vector` from the `std::vector`.
- std::vector<flatbuffers::Offset<Weapon>> weapons_vector;
- weapons_vector.push_back(sword);
- weapons_vector.push_back(axe);
- auto weapons = builder.CreateVector(weapons_vector);
-
- // Second, serialize the rest of the objects needed by the Monster.
- auto position = Vec3(1.0f, 2.0f, 3.0f);
-
- auto name = builder.CreateString("MyMonster");
-
- unsigned char inv_data[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
- auto inventory = builder.CreateVector(inv_data, 10);
-
- // Shortcut for creating monster with all fields set:
- auto orc = CreateMonster(builder, &position, 150, 80, name, inventory,
- Color_Red, weapons, Equipment_Weapon, axe.Union());
-
- builder.Finish(orc); // Serialize the root of the object.
-
- // We now have a FlatBuffer we can store on disk or send over a network.
-
- // ** file/network code goes here :) **
- // access builder.GetBufferPointer() for builder.GetSize() bytes
-
- // Instead, we're going to access it right away (as if we just received it).
-
- // Get access to the root:
- auto monster = GetMonster(builder.GetBufferPointer());
-
- // Get and test some scalar types from the FlatBuffer.
- assert(monster->hp() == 80);
- assert(monster->mana() == 150); // default
- assert(monster->name()->str() == "MyMonster");
-
- // Get and test a field of the FlatBuffer's `struct`.
- auto pos = monster->pos();
- assert(pos);
- assert(pos->z() == 3.0f);
- (void)pos;
-
- // Get a test an element from the `inventory` FlatBuffer's `vector`.
- auto inv = monster->inventory();
- assert(inv);
- assert(inv->Get(9) == 9);
- (void)inv;
-
- // Get and test the `weapons` FlatBuffers's `vector`.
- std::string expected_weapon_names[] = {"Sword", "Axe"};
- short expected_weapon_damages[] = {3, 5};
- auto weps = monster->weapons();
- for (unsigned int i = 0; i < weps->size(); i++) {
- assert(weps->Get(i)->name()->str() == expected_weapon_names[i]);
- assert(weps->Get(i)->damage() == expected_weapon_damages[i]);
- }
- (void)expected_weapon_names;
- (void)expected_weapon_damages;
-
- // Get and test the `Equipment` union (`equipped` field).
- assert(monster->equipped_type() == Equipment_Weapon);
- auto equipped = static_cast<const Weapon*>(monster->equipped());
- assert(equipped->name()->str() == "Axe");
- assert(equipped->damage() == 5);
- (void)equipped;
-
- printf("The FlatBuffer was successfully created and verified!\n");
-}
-
diff --git a/third_party/flatbuffers/samples/sample_binary.go b/third_party/flatbuffers/samples/sample_binary.go
deleted file mode 100644
index e04650b..0000000
--- a/third_party/flatbuffers/samples/sample_binary.go
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright 2015 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// To run, use the `go_sample.sh` script.
-
-package main
-
-import (
- sample "MyGame/Sample"
- "fmt"
- flatbuffers "github.com/google/flatbuffers/go"
- "strconv"
-)
-
-// Example how to use Flatbuffers to create and read binary buffers.
-func main() {
- builder := flatbuffers.NewBuilder(0)
-
- // Create some weapons for our Monster ("Sword" and "Axe").
- weaponOne := builder.CreateString("Sword")
- weaponTwo := builder.CreateString("Axe")
-
- sample.WeaponStart(builder)
- sample.WeaponAddName(builder, weaponOne)
- sample.WeaponAddDamage(builder, 3)
- sword := sample.WeaponEnd(builder)
-
- sample.WeaponStart(builder)
- sample.WeaponAddName(builder, weaponTwo)
- sample.WeaponAddDamage(builder, 5)
- axe := sample.WeaponEnd(builder)
-
- // Serialize the FlatBuffer data.
- name := builder.CreateString("Orc")
-
- sample.MonsterStartInventoryVector(builder, 10)
- // Note: Since we prepend the bytes, this loop iterates in reverse.
- for i := 9; i >= 0; i-- {
- builder.PrependByte(byte(i))
- }
- inv := builder.EndVector(10)
-
- sample.MonsterStartWeaponsVector(builder, 2)
- // Note: Since we prepend the weapons, prepend in reverse order.
- builder.PrependUOffsetT(axe)
- builder.PrependUOffsetT(sword)
- weapons := builder.EndVector(2)
-
- pos := sample.CreateVec3(builder, 1.0, 2.0, 3.0)
-
- sample.MonsterStart(builder)
- sample.MonsterAddPos(builder, pos)
- sample.MonsterAddHp(builder, 300)
- sample.MonsterAddName(builder, name)
- sample.MonsterAddInventory(builder, inv)
- sample.MonsterAddColor(builder, sample.ColorRed)
- sample.MonsterAddWeapons(builder, weapons)
- sample.MonsterAddEquippedType(builder, sample.EquipmentWeapon)
- sample.MonsterAddEquipped(builder, axe)
- orc := sample.MonsterEnd(builder)
-
- builder.Finish(orc)
-
- // We now have a FlatBuffer that we could store on disk or send over a network.
-
- // ...Saving to file or sending over a network code goes here...
-
- // Instead, we are going to access this buffer right away (as if we just received it).
-
- buf := builder.FinishedBytes()
-
- // Note: We use `0` for the offset here, since we got the data using the
- // `builder.FinishedBytes()` method. This simulates the data you would store/receive in your
- // FlatBuffer. If you wanted to read from the `builder.Bytes` directly, you would need to
- // pass in the offset of `builder.Head()`, as the builder actually constructs the buffer
- // backwards.
- monster := sample.GetRootAsMonster(buf, 0)
-
- // Note: We did not set the `mana` field explicitly, so we get the
- // default value.
- assert(monster.Mana() == 150, "`monster.Mana()`", strconv.Itoa(int(monster.Mana())), "150")
- assert(monster.Hp() == 300, "`monster.Hp()`", strconv.Itoa(int(monster.Hp())), "300")
- assert(string(monster.Name()) == "Orc", "`string(monster.Name())`", string(monster.Name()),
- "\"Orc\"")
- assert(monster.Color() == sample.ColorRed, "`monster.Color()`",
- strconv.Itoa(int(monster.Color())), strconv.Itoa(int(sample.ColorRed)))
-
- // Note: Whenever you access a new object, like in `Pos()`, a new temporary accessor object
- // gets created. If your code is very performance sensitive, you can pass in a pointer to an
- // existing `Vec3` instead of `nil`. This allows you to reuse it across many calls to reduce
- // the amount of object allocation/garbage collection.
- assert(monster.Pos(nil).X() == 1.0, "`monster.Pos(nil).X()`",
- strconv.FormatFloat(float64(monster.Pos(nil).X()), 'f', 1, 32), "1.0")
- assert(monster.Pos(nil).Y() == 2.0, "`monster.Pos(nil).Y()`",
- strconv.FormatFloat(float64(monster.Pos(nil).Y()), 'f', 1, 32), "2.0")
- assert(monster.Pos(nil).Z() == 3.0, "`monster.Pos(nil).Z()`",
- strconv.FormatFloat(float64(monster.Pos(nil).Z()), 'f', 1, 32), "3.0")
-
- // For vectors, like `Inventory`, they have a method suffixed with 'Length' that can be used
- // to query the length of the vector. You can index the vector by passing an index value
- // into the accessor.
- for i := 0; i < monster.InventoryLength(); i++ {
- assert(monster.Inventory(i) == byte(i), "`monster.Inventory(i)`",
- strconv.Itoa(int(monster.Inventory(i))), strconv.Itoa(int(byte(i))))
- }
-
- expectedWeaponNames := []string{"Sword", "Axe"}
- expectedWeaponDamages := []int{3, 5}
- weapon := new(sample.Weapon) // We need a `sample.Weapon` to pass into `monster.Weapons()`
- // to capture the output of that function.
- for i := 0; i < monster.WeaponsLength(); i++ {
- if monster.Weapons(weapon, i) {
- assert(string(weapon.Name()) == expectedWeaponNames[i], "`weapon.Name()`",
- string(weapon.Name()), expectedWeaponNames[i])
- assert(int(weapon.Damage()) == expectedWeaponDamages[i],
- "`weapon.Damage()`", strconv.Itoa(int(weapon.Damage())),
- strconv.Itoa(expectedWeaponDamages[i]))
- }
- }
-
- // For FlatBuffer `union`s, you can get the type of the union, as well as the union
- // data itself.
- assert(monster.EquippedType() == sample.EquipmentWeapon, "`monster.EquippedType()`",
- strconv.Itoa(int(monster.EquippedType())), strconv.Itoa(int(sample.EquipmentWeapon)))
-
- unionTable := new(flatbuffers.Table)
- if monster.Equipped(unionTable) {
- // An example of how you can appropriately convert the table depending on the
- // FlatBuffer `union` type. You could add `else if` and `else` clauses to handle
- // other FlatBuffer `union` types for this field. (Similarly, this could be
- // done in a switch statement.)
- if monster.EquippedType() == sample.EquipmentWeapon {
- unionWeapon := new(sample.Weapon)
- unionWeapon.Init(unionTable.Bytes, unionTable.Pos)
-
- assert(string(unionWeapon.Name()) == "Axe", "`unionWeapon.Name()`",
- string(unionWeapon.Name()), "Axe")
- assert(int(unionWeapon.Damage()) == 5, "`unionWeapon.Damage()`",
- strconv.Itoa(int(unionWeapon.Damage())), strconv.Itoa(5))
- }
- }
-
- fmt.Printf("The FlatBuffer was successfully created and verified!\n")
-}
-
-// A helper function to print out if an assertion failed.
-func assert(assertPassed bool, codeExecuted string, actualValue string, expectedValue string) {
- if assertPassed == false {
- panic("Assert failed! " + codeExecuted + " (" + actualValue +
- ") was not equal to " + expectedValue + ".")
- }
-}
diff --git a/third_party/flatbuffers/samples/sample_binary.py b/third_party/flatbuffers/samples/sample_binary.py
deleted file mode 100644
index 96711fb..0000000
--- a/third_party/flatbuffers/samples/sample_binary.py
+++ /dev/null
@@ -1,137 +0,0 @@
-#!/usr/bin/python
-# Copyright 2015 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# To run this file, use `python_sample.sh`.
-
-# Append paths to the `flatbuffers` and `MyGame` modules. This is necessary
-# to facilitate executing this script in the `samples` folder, and to root
-# folder (where it gets placed when using `cmake`).
-import os
-import sys
-sys.path.append(os.path.join(os.path.dirname(__file__), '../python'))
-
-import flatbuffers
-import MyGame.Sample.Color
-import MyGame.Sample.Equipment
-import MyGame.Sample.Monster
-import MyGame.Sample.Vec3
-import MyGame.Sample.Weapon
-
-# Example of how to use FlatBuffers to create and read binary buffers.
-
-def main():
- builder = flatbuffers.Builder(0)
-
- # Create some weapons for our Monster ('Sword' and 'Axe').
- weapon_one = builder.CreateString('Sword')
- weapon_two = builder.CreateString('Axe')
-
- MyGame.Sample.Weapon.WeaponStart(builder)
- MyGame.Sample.Weapon.WeaponAddName(builder, weapon_one)
- MyGame.Sample.Weapon.WeaponAddDamage(builder, 3)
- sword = MyGame.Sample.Weapon.WeaponEnd(builder)
-
- MyGame.Sample.Weapon.WeaponStart(builder)
- MyGame.Sample.Weapon.WeaponAddName(builder, weapon_two)
- MyGame.Sample.Weapon.WeaponAddDamage(builder, 5)
- axe = MyGame.Sample.Weapon.WeaponEnd(builder)
-
- # Serialize the FlatBuffer data.
- name = builder.CreateString('Orc')
-
- MyGame.Sample.Monster.MonsterStartInventoryVector(builder, 10)
- # Note: Since we prepend the bytes, this loop iterates in reverse order.
- for i in reversed(range(0, 10)):
- builder.PrependByte(i)
- inv = builder.EndVector(10)
-
- MyGame.Sample.Monster.MonsterStartWeaponsVector(builder, 2)
- # Note: Since we prepend the data, prepend the weapons in reverse order.
- builder.PrependUOffsetTRelative(axe)
- builder.PrependUOffsetTRelative(sword)
- weapons = builder.EndVector(2)
-
- pos = MyGame.Sample.Vec3.CreateVec3(builder, 1.0, 2.0, 3.0)
-
- MyGame.Sample.Monster.MonsterStart(builder)
- MyGame.Sample.Monster.MonsterAddPos(builder, pos)
- MyGame.Sample.Monster.MonsterAddHp(builder, 300)
- MyGame.Sample.Monster.MonsterAddName(builder, name)
- MyGame.Sample.Monster.MonsterAddInventory(builder, inv)
- MyGame.Sample.Monster.MonsterAddColor(builder,
- MyGame.Sample.Color.Color().Red)
- MyGame.Sample.Monster.MonsterAddWeapons(builder, weapons)
- MyGame.Sample.Monster.MonsterAddEquippedType(
- builder, MyGame.Sample.Equipment.Equipment().Weapon)
- MyGame.Sample.Monster.MonsterAddEquipped(builder, axe)
- orc = MyGame.Sample.Monster.MonsterEnd(builder)
-
- builder.Finish(orc)
-
- # We now have a FlatBuffer that we could store on disk or send over a network.
-
- # ...Saving to file or sending over a network code goes here...
-
- # Instead, we are going to access this buffer right away (as if we just
- # received it).
-
- buf = builder.Output()
-
- # Note: We use `0` for the offset here, since we got the data using the
- # `builder.Output()` method. This simulates the data you would store/receive
- # in your FlatBuffer. If you wanted to read from the `builder.Bytes` directly,
- # you would need to pass in the offset of `builder.Head()`, as the builder
- # actually constructs the buffer backwards.
- monster = MyGame.Sample.Monster.Monster.GetRootAsMonster(buf, 0)
-
- # Note: We did not set the `Mana` field explicitly, so we get a default value.
- assert monster.Mana() == 150
- assert monster.Hp() == 300
- assert monster.Name() == 'Orc'
- assert monster.Color() == MyGame.Sample.Color.Color().Red
- assert monster.Pos().X() == 1.0
- assert monster.Pos().Y() == 2.0
- assert monster.Pos().Z() == 3.0
-
- # Get and test the `inventory` FlatBuffer `vector`.
- for i in xrange(monster.InventoryLength()):
- assert monster.Inventory(i) == i
-
- # Get and test the `weapons` FlatBuffer `vector` of `table`s.
- expected_weapon_names = ['Sword', 'Axe']
- expected_weapon_damages = [3, 5]
- for i in xrange(monster.WeaponsLength()):
- assert monster.Weapons(i).Name() == expected_weapon_names[i]
- assert monster.Weapons(i).Damage() == expected_weapon_damages[i]
-
- # Get and test the `equipped` FlatBuffer `union`.
- assert monster.EquippedType() == MyGame.Sample.Equipment.Equipment().Weapon
-
- # An example of how you can appropriately convert the table depending on the
- # FlatBuffer `union` type. You could add `elif` and `else` clauses to handle
- # the other FlatBuffer `union` types for this field.
- if monster.EquippedType() == MyGame.Sample.Equipment.Equipment().Weapon:
- # `monster.Equipped()` returns a `flatbuffers.Table`, which can be used
- # to initialize a `MyGame.Sample.Weapon.Weapon()`, in this case.
- union_weapon = MyGame.Sample.Weapon.Weapon()
- union_weapon.Init(monster.Equipped().Bytes, monster.Equipped().Pos)
-
- assert union_weapon.Name() == "Axe"
- assert union_weapon.Damage() == 5
-
- print 'The FlatBuffer was successfully created and verified!'
-
-if __name__ == '__main__':
- main()
diff --git a/third_party/flatbuffers/samples/sample_text.cpp b/third_party/flatbuffers/samples/sample_text.cpp
deleted file mode 100644
index d851120..0000000
--- a/third_party/flatbuffers/samples/sample_text.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "flatbuffers/idl.h"
-#include "flatbuffers/util.h"
-
-#include "monster_generated.h" // Already includes "flatbuffers/flatbuffers.h".
-
-using namespace MyGame::Sample;
-
-// This is an example of parsing text straight into a buffer and then
-// generating flatbuffer (JSON) text from the buffer.
-int main(int /*argc*/, const char * /*argv*/[]) {
- // load FlatBuffer schema (.fbs) and JSON from disk
- std::string schemafile;
- std::string jsonfile;
- bool ok = flatbuffers::LoadFile("samples/monster.fbs", false, &schemafile) &&
- flatbuffers::LoadFile("samples/monsterdata.json", false, &jsonfile);
- if (!ok) {
- printf("couldn't load files!\n");
- return 1;
- }
-
- // parse schema first, so we can use it to parse the data after
- flatbuffers::Parser parser;
- const char *include_directories[] = { "samples", nullptr };
- ok = parser.Parse(schemafile.c_str(), include_directories) &&
- parser.Parse(jsonfile.c_str(), include_directories);
- assert(ok);
-
- // here, parser.builder_ contains a binary buffer that is the parsed data.
-
- // to ensure it is correct, we now generate text back from the binary,
- // and compare the two:
- std::string jsongen;
- if (!GenerateText(parser, parser.builder_.GetBufferPointer(), &jsongen)) {
- printf("Couldn't serialize parsed data to JSON!\n");
- return 1;
- }
-
- if (jsongen != jsonfile) {
- printf("%s----------------\n%s", jsongen.c_str(), jsonfile.c_str());
- }
-
- printf("The FlatBuffer has been parsed from JSON successfully.\n");
-}
diff --git a/third_party/flatbuffers/samples/samplebinary.js b/third_party/flatbuffers/samples/samplebinary.js
deleted file mode 100644
index 9c8c908..0000000
--- a/third_party/flatbuffers/samples/samplebinary.js
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2015 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// To run, use the `javascript_sample.sh` script.
-
-var assert = require('assert');
-var flatbuffers = require('../js/flatbuffers').flatbuffers;
-var MyGame = require('./monster_generated').MyGame;
-
-// Example how to use FlatBuffers to create and read binary buffers.
-function main() {
- var builder = new flatbuffers.Builder(0);
-
- // Create some weapons for our Monster ('Sword' and 'Axe').
- var weaponOne = builder.createString('Sword');
- var weaponTwo = builder.createString('Axe');
-
- MyGame.Sample.Weapon.startWeapon(builder);
- MyGame.Sample.Weapon.addName(builder, weaponOne);
- MyGame.Sample.Weapon.addDamage(builder, 3);
- var sword = MyGame.Sample.Weapon.endWeapon(builder);
-
- MyGame.Sample.Weapon.startWeapon(builder);
- MyGame.Sample.Weapon.addName(builder, weaponTwo);
- MyGame.Sample.Weapon.addDamage(builder, 5);
- var axe = MyGame.Sample.Weapon.endWeapon(builder);
-
- // Serialize the FlatBuffer data.
- var name = builder.createString('Orc');
-
- var treasure = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
- var inv = MyGame.Sample.Monster.createInventoryVector(builder, treasure);
-
- var weaps = [sword, axe];
- var weapons = MyGame.Sample.Monster.createWeaponsVector(builder, weaps);
-
- var pos = MyGame.Sample.Vec3.createVec3(builder, 1.0, 2.0, 3.0);
-
- MyGame.Sample.Monster.startMonster(builder);
- MyGame.Sample.Monster.addPos(builder, pos);
- MyGame.Sample.Monster.addHp(builder, 300);
- MyGame.Sample.Monster.addColor(builder, MyGame.Sample.Color.Red)
- MyGame.Sample.Monster.addName(builder, name);
- MyGame.Sample.Monster.addInventory(builder, inv);
- MyGame.Sample.Monster.addWeapons(builder, weapons);
- MyGame.Sample.Monster.addEquippedType(builder, MyGame.Sample.Equipment.Weapon);
- MyGame.Sample.Monster.addEquipped(builder, weaps[1]);
- var orc = MyGame.Sample.Monster.endMonster(builder);
-
- builder.finish(orc); // You may also call 'MyGame.Example.Monster.finishMonsterBuffer(builder, orc);'.
-
- // We now have a FlatBuffer that can be stored on disk or sent over a network.
-
- // ...Code to store to disk or send over a network goes here...
-
- // Instead, we are going to access it right away, as if we just received it.
-
- var buf = builder.dataBuffer();
-
- // Get access to the root:
- var monster = MyGame.Sample.Monster.getRootAsMonster(buf);
-
- // Note: We did not set the `mana` field explicitly, so we get back the default value.
- assert.equal(monster.mana(), 150);
- assert.equal(monster.hp(), 300);
- assert.equal(monster.name(), 'Orc');
- assert.equal(monster.color(), MyGame.Sample.Color.Red);
- assert.equal(monster.pos().x(), 1.0);
- assert.equal(monster.pos().y(), 2.0);
- assert.equal(monster.pos().z(), 3.0);
-
- // Get and test the `inventory` FlatBuffer `vector`.
- for (var i = 0; i < monster.inventoryLength(); i++) {
- assert.equal(monster.inventory(i), i);
- }
-
- // Get and test the `weapons` FlatBuffer `vector` of `table`s.
- var expectedWeaponNames = ['Sword', 'Axe'];
- var expectedWeaponDamages = [3, 5];
- for (var i = 0; i < monster.weaponsLength(); i++) {
- assert.equal(monster.weapons(i).name(), expectedWeaponNames[i]);
- assert.equal(monster.weapons(i).damage(), expectedWeaponDamages[i]);
- }
-
- // Get and test the `equipped` FlatBuffer `union`.
- assert.equal(monster.equippedType(), MyGame.Sample.Equipment.Weapon);
- assert.equal(monster.equipped(new MyGame.Sample.Weapon()).name(), 'Axe');
- assert.equal(monster.equipped(new MyGame.Sample.Weapon()).damage(), 5);
-
- console.log('The FlatBuffer was successfully created and verified!');
-}
-
-main();
diff --git a/third_party/flatbuffers/src/code_generators.cpp b/third_party/flatbuffers/src/code_generators.cpp
deleted file mode 100644
index b9e73c6..0000000
--- a/third_party/flatbuffers/src/code_generators.cpp
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright 2016 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "flatbuffers/code_generators.h"
-#include <assert.h>
-#include "flatbuffers/util.h"
-
-#if defined(_MSC_VER)
-#pragma warning(push)
-#pragma warning(disable: 4127) // C4127: conditional expression is constant
-#endif
-
-namespace flatbuffers {
-
-void CodeWriter::operator+=(std::string text) {
-
- while (true) {
- auto begin = text.find("{{");
- if (begin == std::string::npos) {
- break;
- }
-
- auto end = text.find("}}");
- if (end == std::string::npos || end < begin) {
- break;
- }
-
- // Write all the text before the first {{ into the stream.
- stream_.write(text.c_str(), begin);
-
- // The key is between the {{ and }}.
- const std::string key = text.substr(begin + 2, end - begin - 2);
-
- // Find the value associated with the key. If it exists, write the
- // value into the stream, otherwise write the key itself into the stream.
- auto iter = value_map_.find(key);
- if (iter != value_map_.end()) {
- const std::string &value = iter->second;
- stream_ << value;
- } else {
- assert(false && "could not find key");
- stream_ << key;
- }
-
- // Update the text to everything after the }}.
- text = text.substr(end + 2);
- }
- if (!text.empty() && text.back() == '\\') {
- text.pop_back();
- stream_ << text;
- } else {
- stream_ << text << std::endl;
- }
-}
-
-const char *BaseGenerator::FlatBuffersGeneratedWarning() {
- return "automatically generated by the FlatBuffers compiler,"
- " do not modify\n\n";
-}
-
-std::string BaseGenerator::NamespaceDir(const Parser &parser,
- const std::string &path,
- const Namespace &ns) {
- EnsureDirExists(path.c_str());
- if (parser.opts.one_file) return path;
- std::string namespace_dir = path; // Either empty or ends in separator.
- auto &namespaces = ns.components;
- for (auto it = namespaces.begin(); it != namespaces.end(); ++it) {
- namespace_dir += *it + kPathSeparator;
- EnsureDirExists(namespace_dir.c_str());
- }
- return namespace_dir;
-}
-
-std::string BaseGenerator::NamespaceDir(const Namespace &ns) const {
- return BaseGenerator::NamespaceDir(parser_, path_, ns);
-}
-
-bool BaseGenerator::IsEverythingGenerated() const {
- for (auto it = parser_.enums_.vec.begin(); it != parser_.enums_.vec.end();
- ++it) {
- if (!(*it)->generated) return false;
- }
- for (auto it = parser_.structs_.vec.begin();
- it != parser_.structs_.vec.end(); ++it) {
- if (!(*it)->generated) return false;
- }
- return true;
- }
-
-std::string BaseGenerator::FullNamespace(const char *separator,
- const Namespace &ns) {
- std::string namespace_name;
- auto &namespaces = ns.components;
- for (auto it = namespaces.begin(); it != namespaces.end(); ++it) {
- if (namespace_name.length()) namespace_name += separator;
- namespace_name += *it;
- }
- return namespace_name;
-}
-
-std::string BaseGenerator::LastNamespacePart(const Namespace &ns) {
- if (!ns.components.empty())
- return ns.components.back();
- else
- return std::string("");
-}
-
-// Ensure that a type is prefixed with its namespace whenever it is used
-// outside of its namespace.
-std::string BaseGenerator::WrapInNameSpace(const Namespace *ns,
- const std::string &name) const {
- if (CurrentNameSpace() == ns) return name;
- std::string qualified_name = qualifying_start_;
- for (auto it = ns->components.begin(); it != ns->components.end(); ++it)
- qualified_name += *it + qualifying_separator_;
- return qualified_name + name;
-}
-
-
-std::string BaseGenerator::WrapInNameSpace(const Definition &def) const {
- return WrapInNameSpace(def.defined_namespace, def.name);
-}
-
-std::string BaseGenerator::GetNameSpace(const Definition &def) const {
- const Namespace *ns = def.defined_namespace;
- if (CurrentNameSpace() == ns) return "";
- std::string qualified_name = qualifying_start_;
- for (auto it = ns->components.begin(); it != ns->components.end(); ++it) {
- qualified_name += *it;
- if (std::next(it) != ns->components.end()) {
- qualified_name += qualifying_separator_;
- }
- }
-
- return qualified_name;
-}
-
-// Generate a documentation comment, if available.
-void GenComment(const std::vector<std::string> &dc, std::string *code_ptr,
- const CommentConfig *config, const char *prefix) {
- if (dc.begin() == dc.end()) {
- // Don't output empty comment blocks with 0 lines of comment content.
- return;
- }
-
- std::string &code = *code_ptr;
- if (config != nullptr && config->first_line != nullptr) {
- code += std::string(prefix) + std::string(config->first_line) + "\n";
- }
- std::string line_prefix = std::string(prefix) +
- ((config != nullptr && config->content_line_prefix != nullptr) ?
- config->content_line_prefix : "///");
- for (auto it = dc.begin();
- it != dc.end();
- ++it) {
- code += line_prefix + *it + "\n";
- }
- if (config != nullptr && config->last_line != nullptr) {
- code += std::string(prefix) + std::string(config->last_line) + "\n";
- }
-}
-
-} // namespace flatbuffers
-
-#if defined(_MSC_VER)
-#pragma warning(pop)
-#endif
-
diff --git a/third_party/flatbuffers/src/flatc.cpp b/third_party/flatbuffers/src/flatc.cpp
deleted file mode 100644
index 7e324eb..0000000
--- a/third_party/flatbuffers/src/flatc.cpp
+++ /dev/null
@@ -1,366 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "flatbuffers/flatc.h"
-
-#define FLATC_VERSION "1.6.0 (" __DATE__ ")"
-
-namespace flatbuffers {
-
-void FlatCompiler::ParseFile(
- flatbuffers::Parser &parser,
- const std::string &filename,
- const std::string &contents,
- std::vector<const char *> &include_directories) const {
- auto local_include_directory = flatbuffers::StripFileName(filename);
- include_directories.push_back(local_include_directory.c_str());
- include_directories.push_back(nullptr);
- if (!parser.Parse(contents.c_str(), &include_directories[0],
- filename.c_str()))
- Error(parser.error_, false, false);
- include_directories.pop_back();
- include_directories.pop_back();
-}
-
-void FlatCompiler::Warn(const std::string &warn, bool show_exe_name) const {
- params_.warn_fn(this, warn, show_exe_name);
-}
-
-void FlatCompiler::Error(const std::string &err, bool usage,
- bool show_exe_name) const {
- params_.error_fn(this, err, usage, show_exe_name);
-}
-
-std::string FlatCompiler::GetUsageString(const char* program_name) const {
- std::stringstream ss;
- ss << "Usage: " << program_name << " [OPTION]... FILE... [-- FILE...]\n";
- for (size_t i = 0; i < params_.num_generators; ++i) {
- const Generator& g = params_.generators[i];
-
- std::stringstream full_name;
- full_name << std::setw(12) << std::left << g.generator_opt_long;
- const char *name = g.generator_opt_short ? g.generator_opt_short : " ";
- const char *help = g.generator_help;
-
- ss << " " << full_name.str() << " " << name << " " << help << ".\n";
- }
- ss <<
- " -o PATH Prefix PATH to all generated files.\n"
- " -I PATH Search for includes in the specified path.\n"
- " -M Print make rules for generated files.\n"
- " --version Print the version number of flatc and exit.\n"
- " --strict-json Strict JSON: field names must be / will be quoted,\n"
- " no trailing commas in tables/vectors.\n"
- " --allow-non-utf8 Pass non-UTF-8 input through parser and emit nonstandard\n"
- " \\x escapes in JSON. (Default is to raise parse error on\n"
- " non-UTF-8 input.)\n"
- " --defaults-json Output fields whose value is the default when\n"
- " writing JSON\n"
- " --unknown-json Allow fields in JSON that are not defined in the\n"
- " schema. These fields will be discared when generating\n"
- " binaries.\n"
- " --no-prefix Don\'t prefix enum values with the enum type in C++.\n"
- " --scoped-enums Use C++11 style scoped and strongly typed enums.\n"
- " also implies --no-prefix.\n"
- " --gen-includes (deprecated), this is the default behavior.\n"
- " If the original behavior is required (no include\n"
- " statements) use --no-includes.\n"
- " --no-includes Don\'t generate include statements for included\n"
- " schemas the generated file depends on (C++).\n"
- " --gen-mutable Generate accessors that can mutate buffers in-place.\n"
- " --gen-onefile Generate single output file for C#.\n"
- " --gen-name-strings Generate type name functions for C++.\n"
- " --escape-proto-ids Disable appending '_' in namespaces names.\n"
- " --gen-object-api Generate an additional object-based API.\n"
- " --cpp-ptr-type T Set object API pointer type (default std::unique_ptr)\n"
- " --cpp-str-type T Set object API string type (default std::string)\n"
- " T::c_str() and T::length() must be supported\n"
- " --no-js-exports Removes Node.js style export lines in JS.\n"
- " --goog-js-export Uses goog.exports* for closure compiler exporting in JS.\n"
- " --go-namespace Generate the overrided namespace in Golang.\n"
- " --raw-binary Allow binaries without file_indentifier to be read.\n"
- " This may crash flatc given a mismatched schema.\n"
- " --proto Input is a .proto, translate to .fbs.\n"
- " --grpc Generate GRPC interfaces for the specified languages\n"
- " --schema Serialize schemas instead of JSON (use with -b)\n"
- " --bfbs-comments Add doc comments to the binary schema files.\n"
- " --conform FILE Specify a schema the following schemas should be\n"
- " an evolution of. Gives errors if not.\n"
- " --conform-includes Include path for the schema given with --conform\n"
- " PATH \n"
- " --include-prefix Prefix this path to any generated include statements.\n"
- " PATH\n"
- " --no-fb-import Don't include flatbuffers import statement for TypeScript.\n"
- " --no-ts-reexport Don't re-export imported dependencies for TypeScript.\n"
- "FILEs may be schemas, or JSON files (conforming to preceding schema)\n"
- "FILEs after the -- must be binary flatbuffer format files.\n"
- "Output files are named using the base file name of the input,\n"
- "and written to the current directory or the path given by -o.\n"
- "example: " << program_name << " -c -b schema1.fbs schema2.fbs data.json\n";
- return ss.str();
-}
-
-int FlatCompiler::Compile(int argc, const char** argv) {
- if (params_.generators == nullptr || params_.num_generators == 0) {
- return 0;
- }
-
- flatbuffers::IDLOptions opts;
- std::string output_path;
-
- bool any_generator = false;
- bool print_make_rules = false;
- bool raw_binary = false;
- bool schema_binary = false;
- bool grpc_enabled = false;
- std::vector<std::string> filenames;
- std::vector<const char *> include_directories;
- std::vector<const char *> conform_include_directories;
- std::vector<bool> generator_enabled(params_.num_generators, false);
- size_t binary_files_from = std::numeric_limits<size_t>::max();
- std::string conform_to_schema;
-
- for (int argi = 0; argi < argc; argi++) {
- std::string arg = argv[argi];
- if (arg[0] == '-') {
- if (filenames.size() && arg[1] != '-')
- Error("invalid option location: " + arg, true);
- if (arg == "-o") {
- if (++argi >= argc) Error("missing path following: " + arg, true);
- output_path = flatbuffers::ConCatPathFileName(argv[argi], "");
- } else if(arg == "-I") {
- if (++argi >= argc) Error("missing path following" + arg, true);
- include_directories.push_back(argv[argi]);
- } else if(arg == "--conform") {
- if (++argi >= argc) Error("missing path following" + arg, true);
- conform_to_schema = argv[argi];
- } else if (arg == "--conform-includes") {
- if (++argi >= argc) Error("missing path following" + arg, true);
- conform_include_directories.push_back(argv[argi]);
- } else if (arg == "--include-prefix") {
- if (++argi >= argc) Error("missing path following" + arg, true);
- opts.include_prefix = argv[argi];
- if (opts.include_prefix.back() != '/' &&
- opts.include_prefix.back() != '\\') opts.include_prefix += "/";
- } else if(arg == "--strict-json") {
- opts.strict_json = true;
- } else if(arg == "--allow-non-utf8") {
- opts.allow_non_utf8 = true;
- } else if(arg == "--no-js-exports") {
- opts.skip_js_exports = true;
- } else if(arg == "--goog-js-export") {
- opts.use_goog_js_export_format = true;
- } else if(arg == "--go-namespace") {
- if (++argi >= argc) Error("missing golang namespace" + arg, true);
- opts.go_namespace = argv[argi];
- } else if(arg == "--defaults-json") {
- opts.output_default_scalars_in_json = true;
- } else if (arg == "--unknown-json") {
- opts.skip_unexpected_fields_in_json = true;
- } else if(arg == "--no-prefix") {
- opts.prefixed_enums = false;
- } else if(arg == "--scoped-enums") {
- opts.prefixed_enums = false;
- opts.scoped_enums = true;
- } else if (arg == "--no-union-value-namespacing") {
- opts.union_value_namespacing = false;
- } else if(arg == "--gen-mutable") {
- opts.mutable_buffer = true;
- } else if(arg == "--gen-name-strings") {
- opts.generate_name_strings = true;
- } else if(arg == "--gen-object-api") {
- opts.generate_object_based_api = true;
- } else if (arg == "--cpp-ptr-type") {
- if (++argi >= argc) Error("missing type following" + arg, true);
- opts.cpp_object_api_pointer_type = argv[argi];
- } else if (arg == "--cpp-str-type") {
- if (++argi >= argc) Error("missing type following" + arg, true);
- opts.cpp_object_api_string_type = argv[argi];
- } else if(arg == "--gen-all") {
- opts.generate_all = true;
- opts.include_dependence_headers = false;
- } else if(arg == "--gen-includes") {
- // Deprecated, remove this option some time in the future.
- printf("warning: --gen-includes is deprecated (it is now default)\n");
- } else if(arg == "--no-includes") {
- opts.include_dependence_headers = false;
- } else if (arg == "--gen-onefile") {
- opts.one_file = true;
- } else if (arg == "--raw-binary") {
- raw_binary = true;
- } else if(arg == "--") { // Separator between text and binary inputs.
- binary_files_from = filenames.size();
- } else if(arg == "--proto") {
- opts.proto_mode = true;
- } else if(arg == "--escape-proto-ids") {
- opts.escape_proto_identifiers = true;
- } else if(arg == "--schema") {
- schema_binary = true;
- } else if(arg == "-M") {
- print_make_rules = true;
- } else if(arg == "--version") {
- printf("flatc version %s\n", FLATC_VERSION);
- exit(0);
- } else if(arg == "--grpc") {
- grpc_enabled = true;
- } else if(arg == "--bfbs-comments") {
- opts.binary_schema_comments = true;
- } else if(arg == "--no-fb-import") {
- opts.skip_flatbuffers_import = true;
- } else if(arg == "--no-ts-reexport") {
- opts.reexport_ts_modules = false;
- } else {
- for (size_t i = 0; i < params_.num_generators; ++i) {
- if (arg == params_.generators[i].generator_opt_long ||
- (params_.generators[i].generator_opt_short &&
- arg == params_.generators[i].generator_opt_short)) {
- generator_enabled[i] = true;
- any_generator = true;
- opts.lang_to_generate |= params_.generators[i].lang;
- goto found;
- }
- }
- Error("unknown commandline argument: " + arg, true);
- found:;
- }
- } else {
- filenames.push_back(argv[argi]);
- }
- }
-
- if (!filenames.size()) Error("missing input files", false, true);
-
- if (opts.proto_mode) {
- if (any_generator)
- Error("cannot generate code directly from .proto files", true);
- } else if (!any_generator && conform_to_schema.empty()) {
- Error("no options: specify at least one generator.", true);
- }
-
- flatbuffers::Parser conform_parser;
- if (!conform_to_schema.empty()) {
- std::string contents;
- if (!flatbuffers::LoadFile(conform_to_schema.c_str(), true, &contents))
- Error("unable to load schema: " + conform_to_schema);
- ParseFile(conform_parser, conform_to_schema, contents,
- conform_include_directories);
- }
-
- std::unique_ptr<flatbuffers::Parser> parser(new flatbuffers::Parser(opts));
-
- for (auto file_it = filenames.begin();
- file_it != filenames.end();
- ++file_it) {
- std::string contents;
- if (!flatbuffers::LoadFile(file_it->c_str(), true, &contents))
- Error("unable to load file: " + *file_it);
-
- bool is_binary = static_cast<size_t>(file_it - filenames.begin()) >=
- binary_files_from;
- if (is_binary) {
- parser->builder_.Clear();
- parser->builder_.PushFlatBuffer(
- reinterpret_cast<const uint8_t *>(contents.c_str()),
- contents.length());
- if (!raw_binary) {
- // Generally reading binaries that do not correspond to the schema
- // will crash, and sadly there's no way around that when the binary
- // does not contain a file identifier.
- // We'd expect that typically any binary used as a file would have
- // such an identifier, so by default we require them to match.
- if (!parser->file_identifier_.length()) {
- Error("current schema has no file_identifier: cannot test if \"" +
- *file_it +
- "\" matches the schema, use --raw-binary to read this file"
- " anyway.");
- } else if (!flatbuffers::BufferHasIdentifier(contents.c_str(),
- parser->file_identifier_.c_str())) {
- Error("binary \"" +
- *file_it +
- "\" does not have expected file_identifier \"" +
- parser->file_identifier_ +
- "\", use --raw-binary to read this file anyway.");
- }
- }
- } else {
- // Check if file contains 0 bytes.
- if (contents.length() != strlen(contents.c_str())) {
- Error("input file appears to be binary: " + *file_it, true);
- }
- auto is_schema = flatbuffers::GetExtension(*file_it) == "fbs";
- if (is_schema) {
- // If we're processing multiple schemas, make sure to start each
- // one from scratch. If it depends on previous schemas it must do
- // so explicitly using an include.
- parser.reset(new flatbuffers::Parser(opts));
- }
- ParseFile(*parser.get(), *file_it, contents, include_directories);
- if (is_schema && !conform_to_schema.empty()) {
- auto err = parser->ConformTo(conform_parser);
- if (!err.empty()) Error("schemas don\'t conform: " + err);
- }
- if (schema_binary) {
- parser->Serialize();
- parser->file_extension_ = reflection::SchemaExtension();
- }
- }
-
- std::string filebase = flatbuffers::StripPath(
- flatbuffers::StripExtension(*file_it));
-
- for (size_t i = 0; i < params_.num_generators; ++i) {
- parser->opts.lang = params_.generators[i].lang;
- if (generator_enabled[i]) {
- if (!print_make_rules) {
- flatbuffers::EnsureDirExists(output_path);
- if (!params_.generators[i].generate(*parser.get(), output_path, filebase)) {
- Error(std::string("Unable to generate ") +
- params_.generators[i].lang_name +
- " for " +
- filebase);
- }
- } else {
- std::string make_rule = params_.generators[i].make_rule(
- *parser.get(), output_path, *file_it);
- if (!make_rule.empty())
- printf("%s\n", flatbuffers::WordWrap(
- make_rule, 80, " ", " \\").c_str());
- }
- if (grpc_enabled) {
- if (params_.generators[i].generateGRPC != nullptr) {
- if (!params_.generators[i].generateGRPC(*parser.get(), output_path,
- filebase)) {
- Error(std::string("Unable to generate GRPC interface for") +
- params_.generators[i].lang_name);
- }
- } else {
- Warn(std::string("GRPC interface generator not implemented for ")
- + params_.generators[i].lang_name);
- }
- }
- }
- }
-
- if (opts.proto_mode) GenerateFBS(*parser.get(), output_path, filebase);
-
- // We do not want to generate code for the definitions in this file
- // in any files coming up next.
- parser->MarkGenerated();
- }
- return 0;
-}
-
-} // namespace flatbuffers
diff --git a/third_party/flatbuffers/src/flatc_main.cpp b/third_party/flatbuffers/src/flatc_main.cpp
deleted file mode 100644
index d838bac..0000000
--- a/third_party/flatbuffers/src/flatc_main.cpp
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright 2017 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "flatbuffers/flatc.h"
-
-static const char *g_program_name = nullptr;
-
-static void Warn(const flatbuffers::FlatCompiler *flatc,
- const std::string &warn,
- bool show_exe_name) {
- (void)flatc;
- if (show_exe_name) {
- printf("%s: ", g_program_name);
- }
- printf("warning: %s\n", warn.c_str());
-}
-
-static void Error(const flatbuffers::FlatCompiler *flatc,
- const std::string &err,
- bool usage,
- bool show_exe_name) {
- if (show_exe_name) {
- printf("%s: ", g_program_name);
- }
- printf("error: %s\n", err.c_str());
- if (usage) {
- printf("%s", flatc->GetUsageString(g_program_name).c_str());
- }
- exit(1);
-}
-
-int main(int argc, const char *argv[]) {
- g_program_name = argv[0];
-
- const flatbuffers::FlatCompiler::Generator generators[] = {
- { flatbuffers::GenerateBinary, "-b", "--binary", "binary",
- nullptr,
- flatbuffers::IDLOptions::kBinary,
- "Generate wire format binaries for any data definitions",
- flatbuffers::BinaryMakeRule },
- { flatbuffers::GenerateTextFile, "-t", "--json", "text",
- nullptr,
- flatbuffers::IDLOptions::kJson,
- "Generate text output for any data definitions",
- flatbuffers::TextMakeRule },
- { flatbuffers::GenerateCPP, "-c", "--cpp", "C++",
- flatbuffers::GenerateCppGRPC,
- flatbuffers::IDLOptions::kCpp,
- "Generate C++ headers for tables/structs",
- flatbuffers::CPPMakeRule },
- { flatbuffers::GenerateGo, "-g", "--go", "Go",
- flatbuffers::GenerateGoGRPC,
- flatbuffers::IDLOptions::kGo,
- "Generate Go files for tables/structs",
- flatbuffers::GeneralMakeRule },
- { flatbuffers::GenerateGeneral, "-j", "--java", "Java",
- nullptr,
- flatbuffers::IDLOptions::kJava,
- "Generate Java classes for tables/structs",
- flatbuffers::GeneralMakeRule },
- { flatbuffers::GenerateJS, "-s", "--js", "JavaScript",
- nullptr,
- flatbuffers::IDLOptions::kJs,
- "Generate JavaScript code for tables/structs",
- flatbuffers::JSMakeRule },
- { flatbuffers::GenerateJS, "-T", "--ts", "TypeScript",
- nullptr,
- flatbuffers::IDLOptions::kTs,
- "Generate TypeScript code for tables/structs",
- flatbuffers::JSMakeRule },
- { flatbuffers::GenerateGeneral, "-n", "--csharp", "C#",
- nullptr,
- flatbuffers::IDLOptions::kCSharp,
- "Generate C# classes for tables/structs",
- flatbuffers::GeneralMakeRule },
- { flatbuffers::GeneratePython, "-p", "--python", "Python",
- nullptr,
- flatbuffers::IDLOptions::kPython,
- "Generate Python files for tables/structs",
- flatbuffers::GeneralMakeRule },
- { flatbuffers::GeneratePhp, nullptr, "--php", "PHP",
- nullptr,
- flatbuffers::IDLOptions::kPhp,
- "Generate PHP files for tables/structs",
- flatbuffers::GeneralMakeRule },
- };
-
- flatbuffers::FlatCompiler::InitParams params;
- params.generators = generators;
- params.num_generators = sizeof(generators) / sizeof(generators[0]);
- params.warn_fn = Warn;
- params.error_fn = Error;
-
- flatbuffers::FlatCompiler flatc(params);
- return flatc.Compile(argc - 1, argv + 1);
-}
diff --git a/third_party/flatbuffers/src/flathash.cpp b/third_party/flatbuffers/src/flathash.cpp
deleted file mode 100644
index 1a033f8..0000000
--- a/third_party/flatbuffers/src/flathash.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2015 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <iostream>
-#include <sstream>
-#include <string>
-#include "flatbuffers/hash.h"
-#include <stdio.h>
-
-enum OutputFormat {
- kDecimal,
- kHexadecimal,
- kHexadecimal0x
-};
-
-int main(int argc, char* argv[]) {
- const char* name = argv[0];
- if (argc <= 1) {
- printf("%s HASH [OPTION]... STRING... [-- STRING...]\n", name);
- printf("Available hashing algorithms:\n 32 bit:\n");
- size_t size = sizeof(flatbuffers::kHashFunctions32) /
- sizeof(flatbuffers::kHashFunctions32[0]);
- for (size_t i = 0; i < size; ++i) {
- printf(" * %s\n", flatbuffers::kHashFunctions32[i].name);
- }
- printf(" 64 bit:\n");
- size = sizeof(flatbuffers::kHashFunctions64) /
- sizeof(flatbuffers::kHashFunctions64[0]);
- for (size_t i = 0; i < size; ++i) {
- printf(" * %s\n", flatbuffers::kHashFunctions64[i].name);
- }
- printf(
- " -d Output hash in decimal.\n"
- " -x Output hash in hexadecimal.\n"
- " -0x Output hash in hexadecimal and prefix with 0x.\n"
- " -c Append the string to the output in a c-style comment.\n");
- return 0;
- }
-
- const char* hash_algorithm = argv[1];
-
- flatbuffers::NamedHashFunction<uint32_t>::HashFunction hash_function32 =
- flatbuffers::FindHashFunction32(hash_algorithm);
- flatbuffers::NamedHashFunction<uint64_t>::HashFunction hash_function64 =
- flatbuffers::FindHashFunction64(hash_algorithm);
-
- if (!hash_function32 && !hash_function64) {
- printf("\"%s\" is not a known hash algorithm.\n", hash_algorithm);
- return 0;
- }
-
- OutputFormat output_format = kHexadecimal;
- bool annotate = false;
- bool escape_dash = false;
- for (int i = 2; i < argc; i++) {
- const char* arg = argv[i];
- if (!escape_dash && arg[0] == '-') {
- std::string opt = arg;
- if (opt == "-d") output_format = kDecimal;
- else if (opt == "-x") output_format = kHexadecimal;
- else if (opt == "-0x") output_format = kHexadecimal0x;
- else if (opt == "-c") annotate = true;
- else if (opt == "--") escape_dash = true;
- else printf("Unrecognized argument: \"%s\"\n", arg);
- } else {
- std::stringstream ss;
- if (output_format == kDecimal) {
- ss << std::dec;
- } else if (output_format == kHexadecimal) {
- ss << std::hex;
- } else if (output_format == kHexadecimal0x) {
- ss << std::hex;
- ss << "0x";
- }
- if (hash_function32)
- ss << hash_function32(arg);
- else if (hash_function64)
- ss << hash_function64(arg);
-
- if (annotate)
- ss << " /* \"" << arg << "\" */";
-
- ss << "\n";
-
- std::cout << ss.str();
- }
- }
- return 0;
-}
-
diff --git a/third_party/flatbuffers/src/idl_gen_cpp.cpp b/third_party/flatbuffers/src/idl_gen_cpp.cpp
deleted file mode 100644
index b0fd11d..0000000
--- a/third_party/flatbuffers/src/idl_gen_cpp.cpp
+++ /dev/null
@@ -1,2201 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// independent from idl_parser, since this code is not needed for most clients
-
-#include "flatbuffers/flatbuffers.h"
-#include "flatbuffers/idl.h"
-#include "flatbuffers/util.h"
-#include "flatbuffers/code_generators.h"
-
-namespace flatbuffers {
-
-// Pedantic warning free version of toupper().
-inline char ToUpper(char c) {
- return static_cast<char>(::toupper(c));
-}
-
-static std::string GeneratedFileName(const std::string &path,
- const std::string &file_name) {
- return path + file_name + "_generated.h";
-}
-
-namespace cpp {
-class CppGenerator : public BaseGenerator {
- public:
- CppGenerator(const Parser &parser, const std::string &path,
- const std::string &file_name)
- : BaseGenerator(parser, path, file_name, "", "::"),
- cur_name_space_(nullptr) {}
-
- std::string GenIncludeGuard() const {
- // Generate include guard.
- std::string guard = file_name_;
- // Remove any non-alpha-numeric characters that may appear in a filename.
- struct IsAlnum {
- bool operator()(char c) { return !isalnum(c); }
- };
- guard.erase(std::remove_if(guard.begin(), guard.end(), IsAlnum()),
- guard.end());
- guard = "FLATBUFFERS_GENERATED_" + guard;
- guard += "_";
- // For further uniqueness, also add the namespace.
- auto name_space = parser_.namespaces_.back();
- for (auto it = name_space->components.begin();
- it != name_space->components.end(); ++it) {
- guard += *it + "_";
- }
- guard += "H_";
- std::transform(guard.begin(), guard.end(), guard.begin(), ToUpper);
- return guard;
- }
-
- void GenIncludeDependencies() {
- int num_includes = 0;
- for (auto it = parser_.native_included_files_.begin();
- it != parser_.native_included_files_.end(); ++it) {
- code_ += "#include \"" + *it + "\"";
- num_includes++;
- }
- for (auto it = parser_.included_files_.begin();
- it != parser_.included_files_.end(); ++it) {
- const auto basename =
- flatbuffers::StripPath(flatbuffers::StripExtension(it->first));
- if (basename != file_name_) {
- code_ += "#include \"" + parser_.opts.include_prefix + basename +
- "_generated.h\"";
- num_includes++;
- }
- }
- if (num_includes) code_ += "";
- }
-
- // Iterate through all definitions we haven't generate code for (enums,
- // structs, and tables) and output them to a single file.
- bool generate() {
- if (IsEverythingGenerated()) return true;
-
- code_.Clear();
- code_ += "// " + std::string(FlatBuffersGeneratedWarning());
-
- const auto include_guard = GenIncludeGuard();
- code_ += "#ifndef " + include_guard;
- code_ += "#define " + include_guard;
- code_ += "";
-
- code_ += "#include \"flatbuffers/flatbuffers.h\"";
- code_ += "";
-
- if (parser_.opts.include_dependence_headers) {
- GenIncludeDependencies();
- }
-
- assert(!cur_name_space_);
-
- // Generate forward declarations for all structs/tables, since they may
- // have circular references.
- for (auto it = parser_.structs_.vec.begin();
- it != parser_.structs_.vec.end(); ++it) {
- const auto &struct_def = **it;
- if (!struct_def.generated) {
- SetNameSpace(struct_def.defined_namespace);
- code_ += "struct " + struct_def.name + ";";
- if (parser_.opts.generate_object_based_api && !struct_def.fixed) {
- code_ += "struct " + NativeName(struct_def.name, &struct_def) + ";";
- }
- code_ += "";
- }
- }
-
- // Generate code for all the enum declarations.
- for (auto it = parser_.enums_.vec.begin(); it != parser_.enums_.vec.end();
- ++it) {
- const auto &enum_def = **it;
- if (!enum_def.generated) {
- SetNameSpace(enum_def.defined_namespace);
- GenEnum(enum_def);
- }
- }
-
- // Generate code for all structs, then all tables.
- for (auto it = parser_.structs_.vec.begin();
- it != parser_.structs_.vec.end(); ++it) {
- const auto &struct_def = **it;
- if (struct_def.fixed && !struct_def.generated) {
- SetNameSpace(struct_def.defined_namespace);
- GenStruct(struct_def);
- }
- }
- for (auto it = parser_.structs_.vec.begin();
- it != parser_.structs_.vec.end(); ++it) {
- const auto &struct_def = **it;
- if (!struct_def.fixed && !struct_def.generated) {
- SetNameSpace(struct_def.defined_namespace);
- GenTable(struct_def);
- }
- }
- for (auto it = parser_.structs_.vec.begin();
- it != parser_.structs_.vec.end(); ++it) {
- const auto &struct_def = **it;
- if (!struct_def.fixed && !struct_def.generated) {
- SetNameSpace(struct_def.defined_namespace);
- GenTablePost(struct_def);
- }
- }
-
- // Generate code for union verifiers.
- for (auto it = parser_.enums_.vec.begin(); it != parser_.enums_.vec.end();
- ++it) {
- const auto &enum_def = **it;
- if (enum_def.is_union && !enum_def.generated) {
- SetNameSpace(enum_def.defined_namespace);
- GenUnionPost(enum_def);
- }
- }
-
- // Generate convenient global helper functions:
- if (parser_.root_struct_def_) {
- auto &struct_def = *parser_.root_struct_def_;
- SetNameSpace(struct_def.defined_namespace);
- const auto &name = struct_def.name;
- const auto qualified_name =
- parser_.namespaces_.back()->GetFullyQualifiedName(name);
- const auto cpp_name = TranslateNameSpace(qualified_name);
-
- code_.SetValue("STRUCT_NAME", name);
- code_.SetValue("CPP_NAME", cpp_name);
-
- // The root datatype accessor:
- code_ += "inline \\";
- code_ += "const {{CPP_NAME}} *Get{{STRUCT_NAME}}(const void *buf) {";
- code_ += " return flatbuffers::GetRoot<{{CPP_NAME}}>(buf);";
- code_ += "}";
- code_ += "";
-
- if (parser_.opts.mutable_buffer) {
- code_ += "inline \\";
- code_ += "{{STRUCT_NAME}} *GetMutable{{STRUCT_NAME}}(void *buf) {";
- code_ += " return flatbuffers::GetMutableRoot<{{STRUCT_NAME}}>(buf);";
- code_ += "}";
- code_ += "";
- }
-
- if (parser_.file_identifier_.length()) {
- // Return the identifier
- code_ += "inline const char *{{STRUCT_NAME}}Identifier() {";
- code_ += " return \"" + parser_.file_identifier_ + "\";";
- code_ += "}";
- code_ += "";
-
- // Check if a buffer has the identifier.
- code_ += "inline \\";
- code_ += "bool {{STRUCT_NAME}}BufferHasIdentifier(const void *buf) {";
- code_ += " return flatbuffers::BufferHasIdentifier(";
- code_ += " buf, {{STRUCT_NAME}}Identifier());";
- code_ += "}";
- code_ += "";
- }
-
- // The root verifier.
- if (parser_.file_identifier_.length()) {
- code_.SetValue("ID", name + "Identifier()");
- } else {
- code_.SetValue("ID", "nullptr");
- }
-
- code_ += "inline bool Verify{{STRUCT_NAME}}Buffer(";
- code_ += " flatbuffers::Verifier &verifier) {";
- code_ += " return verifier.VerifyBuffer<{{CPP_NAME}}>({{ID}});";
- code_ += "}";
- code_ += "";
-
- if (parser_.file_extension_.length()) {
- // Return the extension
- code_ += "inline const char *{{STRUCT_NAME}}Extension() {";
- code_ += " return \"" + parser_.file_extension_ + "\";";
- code_ += "}";
- code_ += "";
- }
-
- // Finish a buffer with a given root object:
- code_ += "inline void Finish{{STRUCT_NAME}}Buffer(";
- code_ += " flatbuffers::FlatBufferBuilder &fbb,";
- code_ += " flatbuffers::Offset<{{CPP_NAME}}> root) {";
- if (parser_.file_identifier_.length())
- code_ += " fbb.Finish(root, {{STRUCT_NAME}}Identifier());";
- else
- code_ += " fbb.Finish(root);";
- code_ += "}";
- code_ += "";
-
- if (parser_.opts.generate_object_based_api) {
- // A convenient root unpack function.
- auto native_name =
- NativeName(WrapInNameSpace(struct_def), &struct_def);
- code_.SetValue("UNPACK_RETURN",
- GenTypeNativePtr(native_name, nullptr, false));
- code_.SetValue("UNPACK_TYPE",
- GenTypeNativePtr(native_name, nullptr, true));
-
- code_ += "inline {{UNPACK_RETURN}} UnPack{{STRUCT_NAME}}(";
- code_ += " const void *buf,";
- code_ += " const flatbuffers::resolver_function_t *res = nullptr) {";
- code_ += " return {{UNPACK_TYPE}}\\";
- code_ += "(Get{{STRUCT_NAME}}(buf)->UnPack(res));";
- code_ += "}";
- code_ += "";
- }
- }
-
- assert(cur_name_space_);
- SetNameSpace(nullptr);
-
- // Close the include guard.
- code_ += "#endif // " + include_guard;
-
- const auto file_path = GeneratedFileName(path_, file_name_);
- const auto final_code = code_.ToString();
- return SaveFile(file_path.c_str(), final_code, false);
- }
-
- private:
- CodeWriter code_;
-
- // This tracks the current namespace so we can insert namespace declarations.
- const Namespace *cur_name_space_;
-
- const Namespace *CurrentNameSpace() const { return cur_name_space_; }
-
- // Translates a qualified name in flatbuffer text format to the same name in
- // the equivalent C++ namespace.
- static std::string TranslateNameSpace(const std::string &qualified_name) {
- std::string cpp_qualified_name = qualified_name;
- size_t start_pos = 0;
- while ((start_pos = cpp_qualified_name.find(".", start_pos)) !=
- std::string::npos) {
- cpp_qualified_name.replace(start_pos, 1, "::");
- }
- return cpp_qualified_name;
- }
-
- void GenComment(const std::vector<std::string> &dc, const char *prefix = "") {
- std::string text;
- ::flatbuffers::GenComment(dc, &text, nullptr, prefix);
- code_ += text + "\\";
- }
-
- // Return a C++ type from the table in idl.h
- std::string GenTypeBasic(const Type &type, bool user_facing_type) const {
- static const char *ctypename[] = {
- #define FLATBUFFERS_TD(ENUM, IDLTYPE, CTYPE, JTYPE, GTYPE, NTYPE, PTYPE) \
- #CTYPE,
- FLATBUFFERS_GEN_TYPES(FLATBUFFERS_TD)
- #undef FLATBUFFERS_TD
- };
- if (user_facing_type) {
- if (type.enum_def) return WrapInNameSpace(*type.enum_def);
- if (type.base_type == BASE_TYPE_BOOL) return "bool";
- }
- return ctypename[type.base_type];
- }
-
- // Return a C++ pointer type, specialized to the actual struct/table types,
- // and vector element types.
- std::string GenTypePointer(const Type &type) const {
- switch (type.base_type) {
- case BASE_TYPE_STRING: {
- return "flatbuffers::String";
- }
- case BASE_TYPE_VECTOR: {
- const auto type_name = GenTypeWire(type.VectorType(), "", false);
- return "flatbuffers::Vector<" + type_name + ">";
- }
- case BASE_TYPE_STRUCT: {
- return WrapInNameSpace(*type.struct_def);
- }
- case BASE_TYPE_UNION:
- // fall through
- default: {
- return "void";
- }
- }
- }
-
- // Return a C++ type for any type (scalar/pointer) specifically for
- // building a flatbuffer.
- std::string GenTypeWire(const Type &type, const char *postfix,
- bool user_facing_type) const {
- if (IsScalar(type.base_type)) {
- return GenTypeBasic(type, user_facing_type) + postfix;
- } else if (IsStruct(type)) {
- return "const " + GenTypePointer(type) + " *";
- } else {
- return "flatbuffers::Offset<" + GenTypePointer(type) + ">" + postfix;
- }
- }
-
- // Return a C++ type for any type (scalar/pointer) that reflects its
- // serialized size.
- std::string GenTypeSize(const Type &type) const {
- if (IsScalar(type.base_type)) {
- return GenTypeBasic(type, false);
- } else if (IsStruct(type)) {
- return GenTypePointer(type);
- } else {
- return "flatbuffers::uoffset_t";
- }
- }
-
- // TODO(wvo): make this configurable.
- static std::string NativeName(const std::string &name, const StructDef *sd) {
- return sd && !sd->fixed ? name + "T" : name;
- }
-
- const std::string &PtrType(const FieldDef *field) {
- auto attr = field ? field->attributes.Lookup("cpp_ptr_type") : nullptr;
- return attr ? attr->constant : parser_.opts.cpp_object_api_pointer_type;
- }
-
- const std::string NativeString(const FieldDef *field) {
- auto attr = field ? field->attributes.Lookup("cpp_str_type") : nullptr;
- auto &ret = attr ? attr->constant : parser_.opts.cpp_object_api_string_type;
- if (ret.empty()) {
- return "std::string";
- }
- return ret;
- }
-
- std::string GenTypeNativePtr(const std::string &type, const FieldDef *field,
- bool is_constructor) {
- auto &ptr_type = PtrType(field);
- if (ptr_type != "naked") {
- return ptr_type + "<" + type + ">";
- } else if (is_constructor) {
- return "";
- } else {
- return type + " *";
- }
- }
-
- std::string GenPtrGet(const FieldDef &field) {
- auto &ptr_type = PtrType(&field);
- return ptr_type == "naked" ? "" : ".get()";
- }
-
- std::string GenTypeNative(const Type &type, bool invector,
- const FieldDef &field) {
- switch (type.base_type) {
- case BASE_TYPE_STRING: {
- return NativeString(&field);
- }
- case BASE_TYPE_VECTOR: {
- const auto type_name = GenTypeNative(type.VectorType(), true, field);
- return "std::vector<" + type_name + ">";
- }
- case BASE_TYPE_STRUCT: {
- auto type_name = WrapInNameSpace(*type.struct_def);
- if (IsStruct(type)) {
- auto native_type = type.struct_def->attributes.Lookup("native_type");
- if (native_type) {
- type_name = native_type->constant;
- }
- if (invector || field.native_inline) {
- return type_name;
- } else {
- return GenTypeNativePtr(type_name, &field, false);
- }
- } else {
- return GenTypeNativePtr(NativeName(type_name, type.struct_def),
- &field, false);
- }
- }
- case BASE_TYPE_UNION: {
- return type.enum_def->name + "Union";
- }
- default: {
- return GenTypeBasic(type, true);
- }
- }
- }
-
- // Return a C++ type for any type (scalar/pointer) specifically for
- // using a flatbuffer.
- std::string GenTypeGet(const Type &type, const char *afterbasic,
- const char *beforeptr, const char *afterptr,
- bool user_facing_type) {
- if (IsScalar(type.base_type)) {
- return GenTypeBasic(type, user_facing_type) + afterbasic;
- } else {
- return beforeptr + GenTypePointer(type) + afterptr;
- }
- }
-
- std::string GenEnumDecl(const EnumDef &enum_def) const {
- const IDLOptions &opts = parser_.opts;
- return (opts.scoped_enums ? "enum class " : "enum ") + enum_def.name;
- }
-
- std::string GenEnumValDecl(const EnumDef &enum_def,
- const std::string &enum_val) const {
- const IDLOptions &opts = parser_.opts;
- return opts.prefixed_enums ? enum_def.name + "_" + enum_val : enum_val;
- }
-
- std::string GetEnumValUse(const EnumDef &enum_def,
- const EnumVal &enum_val) const {
- const IDLOptions &opts = parser_.opts;
- if (opts.scoped_enums) {
- return enum_def.name + "::" + enum_val.name;
- } else if (opts.prefixed_enums) {
- return enum_def.name + "_" + enum_val.name;
- } else {
- return enum_val.name;
- }
- }
-
- std::string StripUnionType(const std::string &name) {
- return name.substr(0, name.size() - strlen(UnionTypeFieldSuffix()));
- }
-
- std::string GetUnionElement(const EnumVal &ev, bool wrap, bool actual_type,
- bool native_type = false) {
- if (ev.union_type.base_type == BASE_TYPE_STRUCT) {
- auto name = actual_type ? ev.union_type.struct_def->name : ev.name;
- return wrap
- ? WrapInNameSpace(ev.union_type.struct_def->defined_namespace, name)
- : name;
- } else if (ev.union_type.base_type == BASE_TYPE_STRING) {
- return actual_type
- ? (native_type ? "std::string" : "flatbuffers::String")
- : ev.name;
- } else {
- assert(false);
- return ev.name;
- }
- }
-
- static std::string UnionVerifySignature(const EnumDef &enum_def) {
- return "bool Verify" + enum_def.name +
- "(flatbuffers::Verifier &verifier, const void *obj, " +
- enum_def.name + " type)";
- }
-
- static std::string UnionVectorVerifySignature(const EnumDef &enum_def) {
- return "bool Verify" + enum_def.name + "Vector" +
- "(flatbuffers::Verifier &verifier, " +
- "const flatbuffers::Vector<flatbuffers::Offset<void>> *values, " +
- "const flatbuffers::Vector<uint8_t> *types)";
- }
-
- static std::string UnionUnPackSignature(const EnumDef &enum_def,
- bool inclass) {
- return (inclass ? "static " : "") +
- std::string("void *") +
- (inclass ? "" : enum_def.name + "Union::") +
- "UnPack(const void *obj, " + enum_def.name +
- " type, const flatbuffers::resolver_function_t *resolver)";
- }
-
- static std::string UnionPackSignature(const EnumDef &enum_def, bool inclass) {
- return "flatbuffers::Offset<void> " +
- (inclass ? "" : enum_def.name + "Union::") +
- "Pack(flatbuffers::FlatBufferBuilder &_fbb, " +
- "const flatbuffers::rehasher_function_t *_rehasher" +
- (inclass ? " = nullptr" : "") + ") const";
- }
-
- static std::string TableCreateSignature(const StructDef &struct_def,
- bool predecl) {
- return "flatbuffers::Offset<" + struct_def.name + "> Create" +
- struct_def.name +
- "(flatbuffers::FlatBufferBuilder &_fbb, const " +
- NativeName(struct_def.name, &struct_def) +
- " *_o, const flatbuffers::rehasher_function_t *_rehasher" +
- (predecl ? " = nullptr" : "") + ")";
- }
-
- static std::string TablePackSignature(const StructDef &struct_def,
- bool inclass) {
- return std::string(inclass ? "static " : "") +
- "flatbuffers::Offset<" + struct_def.name + "> " +
- (inclass ? "" : struct_def.name + "::") +
- "Pack(flatbuffers::FlatBufferBuilder &_fbb, " +
- "const " + NativeName(struct_def.name, &struct_def) + "* _o, " +
- "const flatbuffers::rehasher_function_t *_rehasher" +
- (inclass ? " = nullptr" : "") + ")";
- }
-
- static std::string TableUnPackSignature(const StructDef &struct_def,
- bool inclass) {
- return NativeName(struct_def.name, &struct_def) + " *" +
- (inclass ? "" : struct_def.name + "::") +
- "UnPack(const flatbuffers::resolver_function_t *_resolver" +
- (inclass ? " = nullptr" : "") + ") const";
- }
-
- static std::string TableUnPackToSignature(const StructDef &struct_def,
- bool inclass) {
- return "void " + (inclass ? "" : struct_def.name + "::") +
- "UnPackTo(" + NativeName(struct_def.name, &struct_def) + " *" +
- "_o, const flatbuffers::resolver_function_t *_resolver" +
- (inclass ? " = nullptr" : "") + ") const";
- }
-
- // Generate an enum declaration and an enum string lookup table.
- void GenEnum(const EnumDef &enum_def) {
- code_.SetValue("ENUM_NAME", enum_def.name);
- code_.SetValue("BASE_TYPE", GenTypeBasic(enum_def.underlying_type, false));
- code_.SetValue("SEP", "");
-
- GenComment(enum_def.doc_comment);
- code_ += GenEnumDecl(enum_def) + "\\";
- if (parser_.opts.scoped_enums)
- code_ += " : {{BASE_TYPE}}\\";
- code_ += " {";
-
- int64_t anyv = 0;
- const EnumVal *minv = nullptr, *maxv = nullptr;
- for (auto it = enum_def.vals.vec.begin(); it != enum_def.vals.vec.end();
- ++it) {
- const auto &ev = **it;
-
- GenComment(ev.doc_comment, " ");
- code_.SetValue("KEY", GenEnumValDecl(enum_def, ev.name));
- code_.SetValue("VALUE", NumToString(ev.value));
- code_ += "{{SEP}} {{KEY}} = {{VALUE}}\\";
- code_.SetValue("SEP", ",\n");
-
- minv = !minv || minv->value > ev.value ? &ev : minv;
- maxv = !maxv || maxv->value < ev.value ? &ev : maxv;
- anyv |= ev.value;
- }
-
- if (parser_.opts.scoped_enums || parser_.opts.prefixed_enums) {
- assert(minv && maxv);
-
- code_.SetValue("SEP", ",\n");
- if (enum_def.attributes.Lookup("bit_flags")) {
- code_.SetValue("KEY", GenEnumValDecl(enum_def, "NONE"));
- code_.SetValue("VALUE", "0");
- code_ += "{{SEP}} {{KEY}} = {{VALUE}}\\";
-
- code_.SetValue("KEY", GenEnumValDecl(enum_def, "ANY"));
- code_.SetValue("VALUE", NumToString(anyv));
- code_ += "{{SEP}} {{KEY}} = {{VALUE}}\\";
- } else { // MIN & MAX are useless for bit_flags
- code_.SetValue("KEY",GenEnumValDecl(enum_def, "MIN"));
- code_.SetValue("VALUE", GenEnumValDecl(enum_def, minv->name));
- code_ += "{{SEP}} {{KEY}} = {{VALUE}}\\";
-
- code_.SetValue("KEY",GenEnumValDecl(enum_def, "MAX"));
- code_.SetValue("VALUE", GenEnumValDecl(enum_def, maxv->name));
- code_ += "{{SEP}} {{KEY}} = {{VALUE}}\\";
- }
- }
- code_ += "";
- code_ += "};";
-
- if (parser_.opts.scoped_enums && enum_def.attributes.Lookup("bit_flags")) {
- code_ += "DEFINE_BITMASK_OPERATORS({{ENUM_NAME}}, {{BASE_TYPE}})";
- }
- code_ += "";
-
- // Generate a generate string table for enum values.
- // Problem is, if values are very sparse that could generate really big
- // tables. Ideally in that case we generate a map lookup instead, but for
- // the moment we simply don't output a table at all.
- auto range =
- enum_def.vals.vec.back()->value - enum_def.vals.vec.front()->value + 1;
- // Average distance between values above which we consider a table
- // "too sparse". Change at will.
- static const int kMaxSparseness = 5;
- if (range / static_cast<int64_t>(enum_def.vals.vec.size()) <
- kMaxSparseness) {
- code_ += "inline const char **EnumNames{{ENUM_NAME}}() {";
- code_ += " static const char *names[] = {";
-
- auto val = enum_def.vals.vec.front()->value;
- for (auto it = enum_def.vals.vec.begin(); it != enum_def.vals.vec.end();
- ++it) {
- const auto &ev = **it;
- while (val++ != ev.value) {
- code_ += " \"\",";
- }
- code_ += " \"" + ev.name + "\",";
- }
- code_ += " nullptr";
- code_ += " };";
-
- code_ += " return names;";
- code_ += "}";
- code_ += "";
-
- code_ += "inline const char *EnumName{{ENUM_NAME}}({{ENUM_NAME}} e) {";
-
- code_ += " const size_t index = static_cast<int>(e)\\";
- if (enum_def.vals.vec.front()->value) {
- auto vals = GetEnumValUse(enum_def, *enum_def.vals.vec.front());
- code_ += " - static_cast<int>(" + vals + ")\\";
- }
- code_ += ";";
-
- code_ += " return EnumNames{{ENUM_NAME}}()[index];";
- code_ += "}";
- code_ += "";
- }
-
- // Generate type traits for unions to map from a type to union enum value.
- if (enum_def.is_union && !enum_def.uses_type_aliases) {
- for (auto it = enum_def.vals.vec.begin(); it != enum_def.vals.vec.end();
- ++it) {
- const auto &ev = **it;
-
- if (it == enum_def.vals.vec.begin()) {
- code_ += "template<typename T> struct {{ENUM_NAME}}Traits {";
- }
- else {
- auto name = GetUnionElement(ev, true, true);
- code_ += "template<> struct {{ENUM_NAME}}Traits<" + name + "> {";
- }
-
- auto value = GetEnumValUse(enum_def, ev);
- code_ += " static const {{ENUM_NAME}} enum_value = " + value + ";";
- code_ += "};";
- code_ += "";
- }
- }
-
- if (parser_.opts.generate_object_based_api && enum_def.is_union) {
- // Generate a union type
- code_.SetValue("NAME", enum_def.name);
- code_.SetValue("NONE",
- GetEnumValUse(enum_def, *enum_def.vals.Lookup("NONE")));
-
- code_ += "struct {{NAME}}Union {";
- code_ += " {{NAME}} type;";
- code_ += " void *value;";
- code_ += "";
- code_ += " {{NAME}}Union() : type({{NONE}}), value(nullptr) {}";
- code_ += " {{NAME}}Union({{NAME}}Union&& u) FLATBUFFERS_NOEXCEPT :";
- code_ += " type({{NONE}}), value(nullptr)";
- code_ += " { std::swap(type, u.type); std::swap(value, u.value); }";
- code_ += " {{NAME}}Union(const {{NAME}}Union &) FLATBUFFERS_NOEXCEPT;";
- code_ += " {{NAME}}Union &operator=(const {{NAME}}Union &u) FLATBUFFERS_NOEXCEPT";
- code_ += " { {{NAME}}Union t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; }";
- code_ += " {{NAME}}Union &operator=({{NAME}}Union &&u) FLATBUFFERS_NOEXCEPT";
- code_ += " { std::swap(type, u.type); std::swap(value, u.value); return *this; }";
- code_ += " ~{{NAME}}Union() { Reset(); }";
- code_ += "";
- code_ += " void Reset();";
- code_ += "";
- if (!enum_def.uses_type_aliases) {
- code_ += " template <typename T>";
- code_ += " void Set(T&& val) {";
- code_ += " Reset();";
- code_ += " type = {{NAME}}Traits<typename T::TableType>::enum_value;";
- code_ += " if (type != {{NONE}}) {";
- code_ += " value = new T(std::forward<T>(val));";
- code_ += " }";
- code_ += " }";
- code_ += "";
- }
- code_ += " " + UnionUnPackSignature(enum_def, true) + ";";
- code_ += " " + UnionPackSignature(enum_def, true) + ";";
- code_ += "";
-
- for (auto it = enum_def.vals.vec.begin(); it != enum_def.vals.vec.end();
- ++it) {
- const auto &ev = **it;
- if (!ev.value) {
- continue;
- }
-
- const auto native_type =
- NativeName(GetUnionElement(ev, true, true, true),
- ev.union_type.struct_def);
- code_.SetValue("NATIVE_TYPE", native_type);
- code_.SetValue("NATIVE_NAME", ev.name);
- code_.SetValue("NATIVE_ID", GetEnumValUse(enum_def, ev));
-
- code_ += " {{NATIVE_TYPE}} *As{{NATIVE_NAME}}() {";
- code_ += " return type == {{NATIVE_ID}} ?";
- code_ += " reinterpret_cast<{{NATIVE_TYPE}} *>(value) : nullptr;";
- code_ += " }";
- }
- code_ += "};";
- code_ += "";
- }
-
- if (enum_def.is_union) {
- code_ += UnionVerifySignature(enum_def) + ";";
- code_ += UnionVectorVerifySignature(enum_def) + ";";
- code_ += "";
- }
- }
-
- void GenUnionPost(const EnumDef &enum_def) {
- // Generate a verifier function for this union that can be called by the
- // table verifier functions. It uses a switch case to select a specific
- // verifier function to call, this should be safe even if the union type
- // has been corrupted, since the verifiers will simply fail when called
- // on the wrong type.
- code_.SetValue("ENUM_NAME", enum_def.name);
-
- code_ += "inline " + UnionVerifySignature(enum_def) + " {";
- code_ += " switch (type) {";
- for (auto it = enum_def.vals.vec.begin(); it != enum_def.vals.vec.end();
- ++it) {
- const auto &ev = **it;
- code_.SetValue("LABEL", GetEnumValUse(enum_def, ev));
-
- if (ev.value) {
- code_.SetValue("TYPE", GetUnionElement(ev, true, true));
- code_ += " case {{LABEL}}: {";
- auto getptr =
- " auto ptr = reinterpret_cast<const {{TYPE}} *>(obj);";
- if (ev.union_type.base_type == BASE_TYPE_STRUCT) {
- if (ev.union_type.struct_def->fixed) {
- code_ += " return true;";
- } else {
- code_ += getptr;
- code_ += " return verifier.VerifyTable(ptr);";
- }
- } else if (ev.union_type.base_type == BASE_TYPE_STRING) {
- code_ += getptr;
- code_ += " return verifier.Verify(ptr);";
- } else {
- assert(false);
- }
- code_ += " }";
- } else {
- code_ += " case {{LABEL}}: {";
- code_ += " return true;"; // "NONE" enum value.
- code_ += " }";
- }
- }
- code_ += " default: return false;";
- code_ += " }";
- code_ += "}";
- code_ += "";
-
- code_ += "inline " + UnionVectorVerifySignature(enum_def) + " {";
- code_ += " if (values->size() != types->size()) return false;";
- code_ += " for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {";
- code_ += " if (!Verify" + enum_def.name + "(";
- code_ += " verifier, values->Get(i), types->GetEnum<" + enum_def.name + ">(i))) {";
- code_ += " return false;";
- code_ += " }";
- code_ += " }";
- code_ += " return true;";
- code_ += "}";
- code_ += "";
-
- if (parser_.opts.generate_object_based_api) {
- // Generate union Unpack() and Pack() functions.
- code_ += "inline " + UnionUnPackSignature(enum_def, false) + " {";
- code_ += " switch (type) {";
- for (auto it = enum_def.vals.vec.begin(); it != enum_def.vals.vec.end();
- ++it) {
- const auto &ev = **it;
- if (!ev.value) {
- continue;
- }
-
- code_.SetValue("LABEL", GetEnumValUse(enum_def, ev));
- code_.SetValue("TYPE", GetUnionElement(ev, true, true));
- code_ += " case {{LABEL}}: {";
- code_ += " auto ptr = reinterpret_cast<const {{TYPE}} *>(obj);";
- if (ev.union_type.base_type == BASE_TYPE_STRUCT) {
- if (ev.union_type.struct_def->fixed) {
- code_ += " return new " +
- WrapInNameSpace(*ev.union_type.struct_def) + "(*ptr);";
- } else {
- code_ += " return ptr->UnPack(resolver);";
- }
- } else if (ev.union_type.base_type == BASE_TYPE_STRING) {
- code_ += " return new std::string(ptr->c_str(), ptr->size());";
- } else {
- assert(false);
- }
- code_ += " }";
- }
- code_ += " default: return nullptr;";
- code_ += " }";
- code_ += "}";
- code_ += "";
-
- code_ += "inline " + UnionPackSignature(enum_def, false) + " {";
- code_ += " switch (type) {";
- for (auto it = enum_def.vals.vec.begin(); it != enum_def.vals.vec.end();
- ++it) {
- auto &ev = **it;
- if (!ev.value) {
- continue;
- }
-
- code_.SetValue("LABEL", GetEnumValUse(enum_def, ev));
- code_.SetValue("TYPE", NativeName(GetUnionElement(ev, true, true, true),
- ev.union_type.struct_def));
- code_.SetValue("NAME", GetUnionElement(ev, false, true));
- code_ += " case {{LABEL}}: {";
- code_ += " auto ptr = reinterpret_cast<const {{TYPE}} *>(value);";
- if (ev.union_type.base_type == BASE_TYPE_STRUCT) {
- if (ev.union_type.struct_def->fixed) {
- code_ += " return _fbb.CreateStruct(*ptr).Union();";
- } else {
- code_ +=
- " return Create{{NAME}}(_fbb, ptr, _rehasher).Union();";
- }
- } else if (ev.union_type.base_type == BASE_TYPE_STRING) {
- code_ += " return _fbb.CreateString(*ptr).Union();";
- } else {
- assert(false);
- }
- code_ += " }";
- }
- code_ += " default: return 0;";
- code_ += " }";
- code_ += "}";
- code_ += "";
-
- // Union copy constructor
- code_ += "inline {{ENUM_NAME}}Union::{{ENUM_NAME}}Union(const "
- "{{ENUM_NAME}}Union &u) FLATBUFFERS_NOEXCEPT : type(u.type), "
- "value(nullptr) {";
- code_ += " switch (type) {";
- for (auto it = enum_def.vals.vec.begin(); it != enum_def.vals.vec.end();
- ++it) {
- const auto &ev = **it;
- if (!ev.value) {
- continue;
- }
- code_.SetValue("LABEL", GetEnumValUse(enum_def, ev));
- code_.SetValue("TYPE", NativeName(GetUnionElement(ev, true, true, true),
- ev.union_type.struct_def));
- code_ += " case {{LABEL}}: {";
- bool copyable = true;
- if (ev.union_type.base_type == BASE_TYPE_STRUCT) {
- // Don't generate code to copy if table is not copyable.
- // TODO(wvo): make tables copyable instead.
- for (auto fit = ev.union_type.struct_def->fields.vec.begin();
- fit != ev.union_type.struct_def->fields.vec.end(); ++fit) {
- const auto &field = **fit;
- if (!field.deprecated && field.value.type.struct_def) {
- copyable = false;
- break;
- }
- }
- }
- if (copyable) {
- code_ += " value = new {{TYPE}}(*reinterpret_cast<{{TYPE}} *>"
- "(u.value));";
- } else {
- code_ += " assert(false); // {{TYPE}} not copyable.";
- }
- code_ += " break;";
- code_ += " }";
- }
- code_ += " default:";
- code_ += " break;";
- code_ += " }";
- code_ += "}";
- code_ += "";
-
- // Union Reset() function.
- code_.SetValue("NONE",
- GetEnumValUse(enum_def, *enum_def.vals.Lookup("NONE")));
-
- code_ += "inline void {{ENUM_NAME}}Union::Reset() {";
- code_ += " switch (type) {";
- for (auto it = enum_def.vals.vec.begin(); it != enum_def.vals.vec.end();
- ++it) {
- const auto &ev = **it;
- if (!ev.value) {
- continue;
- }
- code_.SetValue("LABEL", GetEnumValUse(enum_def, ev));
- code_.SetValue("TYPE", NativeName(GetUnionElement(ev, true, true, true),
- ev.union_type.struct_def));
- code_ += " case {{LABEL}}: {";
- code_ += " auto ptr = reinterpret_cast<{{TYPE}} *>(value);";
- code_ += " delete ptr;";
- code_ += " break;";
- code_ += " }";
- }
- code_ += " default: break;";
- code_ += " }";
- code_ += " value = nullptr;";
- code_ += " type = {{NONE}};";
- code_ += "}";
- code_ += "";
- }
- }
-
- // Generates a value with optionally a cast applied if the field has a
- // different underlying type from its interface type (currently only the
- // case for enums. "from" specify the direction, true meaning from the
- // underlying type to the interface type.
- std::string GenUnderlyingCast(const FieldDef &field, bool from,
- const std::string &val) {
- if (from && field.value.type.base_type == BASE_TYPE_BOOL) {
- return val + " != 0";
- } else if ((field.value.type.enum_def &&
- IsScalar(field.value.type.base_type)) ||
- field.value.type.base_type == BASE_TYPE_BOOL) {
- return "static_cast<" + GenTypeBasic(field.value.type, from) + ">(" +
- val + ")";
- } else {
- return val;
- }
- }
-
- std::string GenFieldOffsetName(const FieldDef &field) {
- std::string uname = field.name;
- std::transform(uname.begin(), uname.end(), uname.begin(), ToUpper);
- return "VT_" + uname;
- }
-
- void GenFullyQualifiedNameGetter(const std::string &name) {
- if (!parser_.opts.generate_name_strings) {
- return;
- }
-
- auto fullname = parser_.namespaces_.back()->GetFullyQualifiedName(name);
- code_.SetValue("NAME", fullname);
- code_.SetValue("CONSTEXPR", "FLATBUFFERS_CONSTEXPR");
-
- code_ += " static {{CONSTEXPR}} const char *GetFullyQualifiedName() {";
- code_ += " return \"{{NAME}}\";";
- code_ += " }";
- }
-
- std::string GenDefaultConstant(const FieldDef &field) {
- return field.value.type.base_type == BASE_TYPE_FLOAT
- ? field.value.constant + "f"
- : field.value.constant;
- }
-
- std::string GetDefaultScalarValue(const FieldDef &field) {
- if (field.value.type.enum_def && IsScalar(field.value.type.base_type)) {
- auto ev = field.value.type.enum_def->ReverseLookup(
- static_cast<int>(StringToInt(field.value.constant.c_str())), false);
- if (ev) {
- return WrapInNameSpace(
- field.value.type.enum_def->defined_namespace,
- GetEnumValUse(*field.value.type.enum_def, *ev));
- } else {
- return GenUnderlyingCast(field, true, field.value.constant);
- }
- } else if (field.value.type.base_type == BASE_TYPE_BOOL) {
- return field.value.constant == "0" ? "false" : "true";
- } else {
- return GenDefaultConstant(field);
- }
- }
-
- void GenParam(const FieldDef &field, bool direct, const char *prefix) {
- code_.SetValue("PRE", prefix);
- code_.SetValue("PARAM_NAME", field.name);
- if (direct && field.value.type.base_type == BASE_TYPE_STRING) {
- code_.SetValue("PARAM_TYPE", "const char *");
- code_.SetValue("PARAM_VALUE", "nullptr");
- } else if (direct && field.value.type.base_type == BASE_TYPE_VECTOR) {
- auto type = GenTypeWire(field.value.type.VectorType(), "", false);
- code_.SetValue("PARAM_TYPE", "const std::vector<" + type + "> *");
- code_.SetValue("PARAM_VALUE", "nullptr");
- } else {
- code_.SetValue("PARAM_TYPE", GenTypeWire(field.value.type, " ", true));
- code_.SetValue("PARAM_VALUE", GetDefaultScalarValue(field));
- }
- code_ += "{{PRE}}{{PARAM_TYPE}}{{PARAM_NAME}} = {{PARAM_VALUE}}\\";
- }
-
- // Generate a member, including a default value for scalars and raw pointers.
- void GenMember(const FieldDef &field) {
- if (!field.deprecated && // Deprecated fields won't be accessible.
- field.value.type.base_type != BASE_TYPE_UTYPE &&
- (field.value.type.base_type != BASE_TYPE_VECTOR ||
- field.value.type.element != BASE_TYPE_UTYPE)) {
- auto type = GenTypeNative(field.value.type, false, field);
- auto cpp_type = field.attributes.Lookup("cpp_type");
- auto full_type = (cpp_type ? cpp_type->constant + " *" : type + " ");
- code_.SetValue("FIELD_TYPE", full_type);
- code_.SetValue("FIELD_NAME", field.name);
- code_ += " {{FIELD_TYPE}}{{FIELD_NAME}};";
- }
- }
-
- // Generate the default constructor for this struct. Properly initialize all
- // scalar members with default values.
- void GenDefaultConstructor(const StructDef& struct_def) {
- std::string initializer_list;
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- const auto &field = **it;
- if (!field.deprecated && // Deprecated fields won't be accessible.
- field.value.type.base_type != BASE_TYPE_UTYPE) {
- auto cpp_type = field.attributes.Lookup("cpp_type");
- // Scalar types get parsed defaults, raw pointers get nullptrs.
- if (IsScalar(field.value.type.base_type)) {
- if (!initializer_list.empty()) {
- initializer_list += ",\n ";
- }
- initializer_list += field.name;
- initializer_list += "(" + GetDefaultScalarValue(field) + ")";
- } else if (field.value.type.base_type == BASE_TYPE_STRUCT) {
- if (IsStruct(field.value.type)) {
- auto native_default = field.attributes.Lookup("native_default");
- if (native_default) {
- if (!initializer_list.empty()) {
- initializer_list += ",\n ";
- }
- initializer_list +=
- field.name + "(" + native_default->constant + ")";
- }
- }
- } else if (cpp_type) {
- if (!initializer_list.empty()) {
- initializer_list += ",\n ";
- }
- initializer_list += field.name + "(0)";
- }
- }
- }
- if (!initializer_list.empty()) {
- initializer_list = "\n : " + initializer_list;
- }
-
- code_.SetValue("NATIVE_NAME", NativeName(struct_def.name, &struct_def));
- code_.SetValue("INIT_LIST", initializer_list);
-
- code_ += " {{NATIVE_NAME}}(){{INIT_LIST}} {";
- code_ += " }";
- }
-
- void GenNativeTable(const StructDef &struct_def) {
- const auto native_name = NativeName(struct_def.name, &struct_def);
- code_.SetValue("STRUCT_NAME", struct_def.name);
- code_.SetValue("NATIVE_NAME", native_name);
-
- // Generate a C++ object that can hold an unpacked version of this table.
- code_ += "struct {{NATIVE_NAME}} : public flatbuffers::NativeTable {";
- code_ += " typedef {{STRUCT_NAME}} TableType;";
- GenFullyQualifiedNameGetter(native_name);
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- GenMember(**it);
- }
- GenDefaultConstructor(struct_def);
- code_ += "};";
- code_ += "";
- }
-
- // Generate the code to call the appropriate Verify function(s) for a field.
- void GenVerifyCall(const FieldDef &field, const char* prefix) {
- code_.SetValue("PRE", prefix);
- code_.SetValue("NAME", field.name);
- code_.SetValue("REQUIRED", field.required ? "Required" : "");
- code_.SetValue("SIZE", GenTypeSize(field.value.type));
- code_.SetValue("OFFSET", GenFieldOffsetName(field));
- code_ += "{{PRE}}VerifyField{{REQUIRED}}<{{SIZE}}>(verifier, {{OFFSET}})\\";
-
- switch (field.value.type.base_type) {
- case BASE_TYPE_UNION: {
- code_.SetValue("ENUM_NAME", field.value.type.enum_def->name);
- code_.SetValue("SUFFIX", UnionTypeFieldSuffix());
- code_ += "{{PRE}}Verify{{ENUM_NAME}}(verifier, {{NAME}}(), "
- "{{NAME}}{{SUFFIX}}())\\";
- break;
- }
- case BASE_TYPE_STRUCT: {
- if (!field.value.type.struct_def->fixed) {
- code_ += "{{PRE}}verifier.VerifyTable({{NAME}}())\\";
- }
- break;
- }
- case BASE_TYPE_STRING: {
- code_ += "{{PRE}}verifier.Verify({{NAME}}())\\";
- break;
- }
- case BASE_TYPE_VECTOR: {
- code_ += "{{PRE}}verifier.Verify({{NAME}}())\\";
-
- switch (field.value.type.element) {
- case BASE_TYPE_STRING: {
- code_ += "{{PRE}}verifier.VerifyVectorOfStrings({{NAME}}())\\";
- break;
- }
- case BASE_TYPE_STRUCT: {
- if (!field.value.type.struct_def->fixed) {
- code_ += "{{PRE}}verifier.VerifyVectorOfTables({{NAME}}())\\";
- }
- break;
- }
- case BASE_TYPE_UNION: {
- code_.SetValue("ENUM_NAME", field.value.type.enum_def->name);
- code_ += "{{PRE}}Verify{{ENUM_NAME}}Vector(verifier, {{NAME}}(), {{NAME}}_type())\\";
- break;
- }
- default:
- break;
- }
- break;
- }
- default: {
- break;
- }
- }
- }
-
- // Generate an accessor struct, builder structs & function for a table.
- void GenTable(const StructDef &struct_def) {
- if (parser_.opts.generate_object_based_api) {
- GenNativeTable(struct_def);
- }
-
- // Generate an accessor struct, with methods of the form:
- // type name() const { return GetField<type>(offset, defaultval); }
- GenComment(struct_def.doc_comment);
-
- code_.SetValue("STRUCT_NAME", struct_def.name);
- code_ += "struct {{STRUCT_NAME}} FLATBUFFERS_FINAL_CLASS"
- " : private flatbuffers::Table {";
- if (parser_.opts.generate_object_based_api) {
- code_ += " typedef {{NATIVE_NAME}} NativeTableType;";
- }
-
- GenFullyQualifiedNameGetter(struct_def.name);
-
- // Generate field id constants.
- if (struct_def.fields.vec.size() > 0) {
- // We need to add a trailing comma to all elements except the last one as
- // older versions of gcc complain about this.
- code_.SetValue("SEP", "");
- code_ += " enum {";
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- const auto &field = **it;
- if (field.deprecated) {
- // Deprecated fields won't be accessible.
- continue;
- }
-
- code_.SetValue("OFFSET_NAME", GenFieldOffsetName(field));
- code_.SetValue("OFFSET_VALUE", NumToString(field.value.offset));
- code_ += "{{SEP}} {{OFFSET_NAME}} = {{OFFSET_VALUE}}\\";
- code_.SetValue("SEP", ",\n");
- }
- code_ += "";
- code_ += " };";
- }
-
- // Generate the accessors.
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- const auto &field = **it;
- if (field.deprecated) {
- // Deprecated fields won't be accessible.
- continue;
- }
-
- const bool is_struct = IsStruct(field.value.type);
- const bool is_scalar = IsScalar(field.value.type.base_type);
- code_.SetValue("FIELD_NAME", field.name);
-
- // Call a different accessor for pointers, that indirects.
- std::string accessor = "";
- if (is_scalar) {
- accessor = "GetField<";
- } else if (is_struct) {
- accessor = "GetStruct<";
- } else {
- accessor = "GetPointer<";
- }
- auto offset_str = GenFieldOffsetName(field);
- auto offset_type =
- GenTypeGet(field.value.type, "", "const ", " *", false);
-
- auto call = accessor + offset_type + ">(" + offset_str;
- // Default value as second arg for non-pointer types.
- if (is_scalar) {
- call += ", " + GenDefaultConstant(field);
- }
- call += ")";
-
- GenComment(field.doc_comment, " ");
- code_.SetValue("FIELD_TYPE",
- GenTypeGet(field.value.type, " ", "const ", " *", true));
- code_.SetValue("FIELD_VALUE", GenUnderlyingCast(field, true, call));
-
- code_ += " {{FIELD_TYPE}}{{FIELD_NAME}}() const {";
- code_ += " return {{FIELD_VALUE}};";
- code_ += " }";
-
- if (field.value.type.base_type == BASE_TYPE_UNION) {
- auto u = field.value.type.enum_def;
-
- code_ += " template<typename T> "
- "const T *{{FIELD_NAME}}_as() const;";
-
- for (auto u_it = u->vals.vec.begin();
- u_it != u->vals.vec.end(); ++u_it) {
- auto &ev = **u_it;
- if (ev.union_type.base_type == BASE_TYPE_NONE) {
- continue;
- }
- auto full_struct_name = GetUnionElement(ev, true, true);
-
- // @TODO: Mby make this decisions more universal? How?
- code_.SetValue("U_GET_TYPE", field.name + UnionTypeFieldSuffix());
- code_.SetValue("U_ELEMENT_TYPE", WrapInNameSpace(
- u->defined_namespace, GetEnumValUse(*u, ev)));
- code_.SetValue("U_FIELD_TYPE", "const " + full_struct_name + " *");
- code_.SetValue("U_FIELD_NAME",
- field.name + "_as_" + ev.name);
-
- // `const Type *union_name_asType() const` accessor.
- code_ += " {{U_FIELD_TYPE}}{{U_FIELD_NAME}}() const {";
- code_ += " return {{U_GET_TYPE}}() == {{U_ELEMENT_TYPE}} ? "
- "static_cast<{{U_FIELD_TYPE}}>({{FIELD_NAME}}()) "
- ": nullptr;";
- code_ += " }";
- }
- }
-
- if (parser_.opts.mutable_buffer) {
- if (is_scalar) {
- const auto type = GenTypeWire(field.value.type, "", false);
- code_.SetValue("SET_FN", "SetField<" + type + ">");
- code_.SetValue("OFFSET_NAME", offset_str);
- code_.SetValue("FIELD_TYPE", GenTypeBasic(field.value.type, true));
- code_.SetValue("FIELD_VALUE",
- GenUnderlyingCast(field, false, "_" + field.name));
- code_.SetValue("DEFAULT_VALUE", GenDefaultConstant(field));
-
- code_ += " bool mutate_{{FIELD_NAME}}({{FIELD_TYPE}} "
- "_{{FIELD_NAME}}) {";
- code_ += " return {{SET_FN}}({{OFFSET_NAME}}, {{FIELD_VALUE}}, {{DEFAULT_VALUE}});";
- code_ += " }";
- } else {
- auto type = GenTypeGet(field.value.type, " ", "", " *", true);
- auto underlying = accessor + type + ">(" + offset_str + ")";
- code_.SetValue("FIELD_TYPE", type);
- code_.SetValue("FIELD_VALUE",
- GenUnderlyingCast(field, true, underlying));
-
- code_ += " {{FIELD_TYPE}}mutable_{{FIELD_NAME}}() {";
- code_ += " return {{FIELD_VALUE}};";
- code_ += " }";
- }
- }
-
- auto nested = field.attributes.Lookup("nested_flatbuffer");
- if (nested) {
- std::string qualified_name =
- parser_.namespaces_.back()->GetFullyQualifiedName(
- nested->constant);
- auto nested_root = parser_.structs_.Lookup(qualified_name);
- assert(nested_root); // Guaranteed to exist by parser.
- (void)nested_root;
- code_.SetValue("CPP_NAME", TranslateNameSpace(qualified_name));
-
- code_ += " const {{CPP_NAME}} *{{FIELD_NAME}}_nested_root() const {";
- code_ += " const uint8_t* data = {{FIELD_NAME}}()->Data();";
- code_ += " return flatbuffers::GetRoot<{{CPP_NAME}}>(data);";
- code_ += " }";
- }
-
- // Generate a comparison function for this field if it is a key.
- if (field.key) {
- const bool is_string = (field.value.type.base_type == BASE_TYPE_STRING);
-
- code_ += " bool KeyCompareLessThan(const {{STRUCT_NAME}} *o) const {";
- if (is_string) {
- code_ += " return *{{FIELD_NAME}}() < *o->{{FIELD_NAME}}();";
- } else {
- code_ += " return {{FIELD_NAME}}() < o->{{FIELD_NAME}}();";
- }
- code_ += " }";
-
- if (is_string) {
- code_ += " int KeyCompareWithValue(const char *val) const {";
- code_ += " return strcmp({{FIELD_NAME}}()->c_str(), val);";
- code_ += " }";
- } else {
- auto type = GenTypeBasic(field.value.type, false);
- if (parser_.opts.scoped_enums && field.value.type.enum_def &&
- IsScalar(field.value.type.base_type)) {
- type = GenTypeGet(field.value.type, " ", "const ", " *", true);
- }
-
- code_.SetValue("KEY_TYPE", type);
- code_ += " int KeyCompareWithValue({{KEY_TYPE}} val) const {";
- code_ += " const auto key = {{FIELD_NAME}}();";
- code_ += " if (key < val) {";
- code_ += " return -1;";
- code_ += " } else if (key > val) {";
- code_ += " return 1;";
- code_ += " } else {";
- code_ += " return 0;";
- code_ += " }";
- code_ += " }";
- }
- }
- }
-
- // Generate a verifier function that can check a buffer from an untrusted
- // source will never cause reads outside the buffer.
- code_ += " bool Verify(flatbuffers::Verifier &verifier) const {";
- code_ += " return VerifyTableStart(verifier)\\";
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- const auto &field = **it;
- if (field.deprecated) {
- continue;
- }
- GenVerifyCall(field, " &&\n ");
- }
-
- code_ += " &&\n verifier.EndTable();";
- code_ += " }";
-
- if (parser_.opts.generate_object_based_api) {
- // Generate the UnPack() pre declaration.
- code_ += " " + TableUnPackSignature(struct_def, true) + ";";
- code_ += " " + TableUnPackToSignature(struct_def, true) + ";";
- code_ += " " + TablePackSignature(struct_def, true) + ";";
- }
-
- code_ += "};"; // End of table.
- code_ += "";
-
- // Explicit specializations for union accessors
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- const auto &field = **it;
- if (field.deprecated ||
- field.value.type.base_type != BASE_TYPE_UNION) {
- continue;
- }
-
- auto u = field.value.type.enum_def;
- if (u->uses_type_aliases) continue;
-
- code_.SetValue("FIELD_NAME", field.name);
-
- for (auto u_it = u->vals.vec.begin();
- u_it != u->vals.vec.end(); ++u_it) {
- auto &ev = **u_it;
- if (ev.union_type.base_type == BASE_TYPE_NONE) {
- continue;
- }
-
- auto full_struct_name = GetUnionElement(ev, true, true);
-
- code_.SetValue("U_ELEMENT_TYPE", WrapInNameSpace(
- u->defined_namespace, GetEnumValUse(*u, ev)));
- code_.SetValue("U_FIELD_TYPE", "const " + full_struct_name + " *");
- code_.SetValue("U_ELEMENT_NAME", full_struct_name);
- code_.SetValue("U_FIELD_NAME",
- field.name + "_as_" + ev.name);
-
- // `template<> const T *union_name_as<T>() const` accessor.
- code_ += "template<> "
- "inline {{U_FIELD_TYPE}}{{STRUCT_NAME}}::{{FIELD_NAME}}_as"
- "<{{U_ELEMENT_NAME}}>() const {";
- code_ += " return {{U_FIELD_NAME}}();";
- code_ += "}";
- code_ += "";
- }
- }
-
- GenBuilders(struct_def);
-
- if (parser_.opts.generate_object_based_api) {
- // Generate a pre-declaration for a CreateX method that works with an
- // unpacked C++ object.
- code_ += TableCreateSignature(struct_def, true) + ";";
- code_ += "";
- }
- }
-
- void GenBuilders(const StructDef &struct_def) {
- code_.SetValue("STRUCT_NAME", struct_def.name);
-
- // Generate a builder struct:
- code_ += "struct {{STRUCT_NAME}}Builder {";
- code_ += " flatbuffers::FlatBufferBuilder &fbb_;";
- code_ += " flatbuffers::uoffset_t start_;";
-
- bool has_string_or_vector_fields = false;
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- const auto &field = **it;
- if (!field.deprecated) {
- const bool is_scalar = IsScalar(field.value.type.base_type);
- const bool is_string = field.value.type.base_type == BASE_TYPE_STRING;
- const bool is_vector = field.value.type.base_type == BASE_TYPE_VECTOR;
- if (is_string || is_vector) {
- has_string_or_vector_fields = true;
- }
-
- std::string offset = GenFieldOffsetName(field);
- std::string name = GenUnderlyingCast(field, false, field.name);
- std::string value = is_scalar ? GenDefaultConstant(field) : "";
-
- // Generate accessor functions of the form:
- // void add_name(type name) {
- // fbb_.AddElement<type>(offset, name, default);
- // }
- code_.SetValue("FIELD_NAME", field.name);
- code_.SetValue("FIELD_TYPE", GenTypeWire(field.value.type, " ", true));
- code_.SetValue("ADD_OFFSET", struct_def.name + "::" + offset);
- code_.SetValue("ADD_NAME", name);
- code_.SetValue("ADD_VALUE", value);
- if (is_scalar) {
- const auto type = GenTypeWire(field.value.type, "", false);
- code_.SetValue("ADD_FN", "AddElement<" + type + ">");
- } else if (IsStruct(field.value.type)) {
- code_.SetValue("ADD_FN", "AddStruct");
- } else {
- code_.SetValue("ADD_FN", "AddOffset");
- }
-
- code_ += " void add_{{FIELD_NAME}}({{FIELD_TYPE}}{{FIELD_NAME}}) {";
- code_ += " fbb_.{{ADD_FN}}(\\";
- if (is_scalar) {
- code_ += "{{ADD_OFFSET}}, {{ADD_NAME}}, {{ADD_VALUE}});";
- } else {
- code_ += "{{ADD_OFFSET}}, {{ADD_NAME}});";
- }
- code_ += " }";
- }
- }
-
- // Builder constructor
- code_ += " {{STRUCT_NAME}}Builder(flatbuffers::FlatBufferBuilder &_fbb)";
- code_ += " : fbb_(_fbb) {";
- code_ += " start_ = fbb_.StartTable();";
- code_ += " }";
-
- // Assignment operator;
- code_ += " {{STRUCT_NAME}}Builder &operator="
- "(const {{STRUCT_NAME}}Builder &);";
-
- // Finish() function.
- auto num_fields = NumToString(struct_def.fields.vec.size());
- code_ += " flatbuffers::Offset<{{STRUCT_NAME}}> Finish() {";
- code_ += " const auto end = fbb_.EndTable(start_, " + num_fields + ");";
- code_ += " auto o = flatbuffers::Offset<{{STRUCT_NAME}}>(end);";
-
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- const auto &field = **it;
- if (!field.deprecated && field.required) {
- code_.SetValue("FIELD_NAME", field.name);
- code_.SetValue("OFFSET_NAME", GenFieldOffsetName(field));
- code_ += " fbb_.Required(o, {{STRUCT_NAME}}::{{OFFSET_NAME}});";
- }
- }
- code_ += " return o;";
- code_ += " }";
- code_ += "};";
- code_ += "";
-
- // Generate a convenient CreateX function that uses the above builder
- // to create a table in one go.
- code_ += "inline flatbuffers::Offset<{{STRUCT_NAME}}> "
- "Create{{STRUCT_NAME}}(";
- code_ += " flatbuffers::FlatBufferBuilder &_fbb\\";
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- const auto &field = **it;
- if (!field.deprecated) {
- GenParam(field, false, ",\n ");
- }
- }
- code_ += ") {";
-
- code_ += " {{STRUCT_NAME}}Builder builder_(_fbb);";
- for (size_t size = struct_def.sortbysize ? sizeof(largest_scalar_t) : 1;
- size; size /= 2) {
- for (auto it = struct_def.fields.vec.rbegin();
- it != struct_def.fields.vec.rend(); ++it) {
- const auto &field = **it;
- if (!field.deprecated && (!struct_def.sortbysize ||
- size == SizeOf(field.value.type.base_type))) {
- code_.SetValue("FIELD_NAME", field.name);
- code_ += " builder_.add_{{FIELD_NAME}}({{FIELD_NAME}});";
- }
- }
- }
- code_ += " return builder_.Finish();";
- code_ += "}";
- code_ += "";
-
- // Generate a CreateXDirect function with vector types as parameters
- if (has_string_or_vector_fields) {
- code_ += "inline flatbuffers::Offset<{{STRUCT_NAME}}> "
- "Create{{STRUCT_NAME}}Direct(";
- code_ += " flatbuffers::FlatBufferBuilder &_fbb\\";
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- const auto &field = **it;
- if (!field.deprecated) {
- GenParam(field, true, ",\n ");
- }
- }
-
- // Need to call "Create" with the struct namespace.
- const auto qualified_create_name = struct_def.defined_namespace->GetFullyQualifiedName("Create");
- code_.SetValue("CREATE_NAME", TranslateNameSpace(qualified_create_name));
-
- code_ += ") {";
- code_ += " return {{CREATE_NAME}}{{STRUCT_NAME}}(";
- code_ += " _fbb\\";
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- const auto &field = **it;
- if (!field.deprecated) {
- code_.SetValue("FIELD_NAME", field.name);
-
- if (field.value.type.base_type == BASE_TYPE_STRING) {
- code_ += ",\n {{FIELD_NAME}} ? "
- "_fbb.CreateString({{FIELD_NAME}}) : 0\\";
- } else if (field.value.type.base_type == BASE_TYPE_VECTOR) {
- auto type = GenTypeWire(field.value.type.VectorType(), "", false);
- code_ += ",\n {{FIELD_NAME}} ? "
- "_fbb.CreateVector<" + type + ">(*{{FIELD_NAME}}) : 0\\";
- } else {
- code_ += ",\n {{FIELD_NAME}}\\";
- }
- }
- }
- code_ += ");";
- code_ += "}";
- code_ += "";
- }
- }
-
- std::string GenUnionUnpackVal(const FieldDef &afield,
- const char *vec_elem_access,
- const char *vec_type_access) {
- return afield.value.type.enum_def->name + "Union::UnPack(" + "_e" +
- vec_elem_access + ", " + afield.name + UnionTypeFieldSuffix() +
- "()" + vec_type_access + ", _resolver)";
- }
-
- std::string GenUnpackVal(const Type &type, const std::string &val,
- bool invector, const FieldDef &afield) {
- switch (type.base_type) {
- case BASE_TYPE_STRING: {
- return val + "->str()";
- }
- case BASE_TYPE_STRUCT: {
- const auto name = WrapInNameSpace(*type.struct_def);
- if (IsStruct(type)) {
- auto native_type = type.struct_def->attributes.Lookup("native_type");
- if (native_type) {
- return "flatbuffers::UnPack(*" + val + ")";
- } else if (invector || afield.native_inline) {
- return "*" + val;
- } else {
- const auto ptype = GenTypeNativePtr(name, &afield, true);
- return ptype + "(new " + name + "(*" + val + "))";
- }
- } else {
- const auto ptype = GenTypeNativePtr(NativeName(name, type.struct_def),
- &afield, true);
- return ptype + "(" + val + "->UnPack(_resolver))";
- }
- }
- case BASE_TYPE_UNION: {
- return GenUnionUnpackVal(afield,
- invector ? "->Get(_i)" : "",
- invector ? ("->GetEnum<" +
- type.enum_def->name +
- ">(_i)").c_str() : "");
- }
- default: {
- return val;
- break;
- }
- }
- };
-
- std::string GenUnpackFieldStatement(const FieldDef &field,
- const FieldDef *union_field) {
- std::string code;
- switch (field.value.type.base_type) {
- case BASE_TYPE_VECTOR: {
- std::string indexing;
- if (field.value.type.enum_def) {
- indexing += "(" + field.value.type.enum_def->name + ")";
- }
- indexing += "_e->Get(_i)";
- if (field.value.type.element == BASE_TYPE_BOOL) {
- indexing += " != 0";
- }
-
- // Generate code that pushes data from _e to _o in the form:
- // for (uoffset_t i = 0; i < _e->size(); ++i) {
- // _o->field.push_back(_e->Get(_i));
- // }
- auto name = field.name;
- if (field.value.type.element == BASE_TYPE_UTYPE) {
- name = StripUnionType(field.name);
- }
- auto access = field.value.type.element == BASE_TYPE_UTYPE
- ? ".type"
- : (field.value.type.element == BASE_TYPE_UNION
- ? ".value"
- : "");
- code += "{ _o->" + name + ".resize(_e->size()); ";
- code += "for (flatbuffers::uoffset_t _i = 0;";
- code += " _i < _e->size(); _i++) { ";
- code += "_o->" + name + "[_i]" + access + " = ";
- code += GenUnpackVal(field.value.type.VectorType(),
- indexing, true, field);
- code += "; } }";
- break;
- }
- case BASE_TYPE_UTYPE: {
- assert(union_field->value.type.base_type == BASE_TYPE_UNION);
- // Generate code that sets the union type, of the form:
- // _o->field.type = _e;
- code += "_o->" + union_field->name + ".type = _e;";
- break;
- }
- case BASE_TYPE_UNION: {
- // Generate code that sets the union value, of the form:
- // _o->field.value = Union::Unpack(_e, field_type(), resolver);
- code += "_o->" + field.name + ".value = ";
- code += GenUnionUnpackVal(field, "", "");
- code += ";";
- break;
- }
- default: {
- auto cpp_type = field.attributes.Lookup("cpp_type");
- if (cpp_type) {
- // Generate code that resolves the cpp pointer type, of the form:
- // if (resolver)
- // (*resolver)(&_o->field, (hash_value_t)(_e));
- // else
- // _o->field = nullptr;
- code += "if (_resolver) ";
- code += "(*_resolver)";
- code += "(reinterpret_cast<void **>(&_o->" + field.name + "), ";
- code += "static_cast<flatbuffers::hash_value_t>(_e));";
- code += " else ";
- code += "_o->" + field.name + " = nullptr;";
- } else {
- // Generate code for assigning the value, of the form:
- // _o->field = value;
- code += "_o->" + field.name + " = ";
- code += GenUnpackVal(field.value.type, "_e", false, field) + ";";
- }
- break;
- }
- }
- return code;
- }
-
- std::string GenCreateParam(const FieldDef &field) {
- std::string value = "_o->";
- if (field.value.type.base_type == BASE_TYPE_UTYPE) {
- value += StripUnionType(field.name);
- value += ".type";
- } else {
- value += field.name;
- }
- if (field.attributes.Lookup("cpp_type")) {
- auto type = GenTypeBasic(field.value.type, false);
- value = "_rehasher ? "
- "static_cast<" + type + ">((*_rehasher)(" + value + ")) : 0";
- }
-
- std::string code;
- switch (field.value.type.base_type) {
- // String fields are of the form:
- // _fbb.CreateString(_o->field)
- case BASE_TYPE_STRING: {
- code += "_fbb.CreateString(" + value + ")";
-
- // For optional fields, check to see if there actually is any data
- // in _o->field before attempting to access it.
- if (!field.required) {
- code = value + ".size() ? " + code + " : 0";
- }
- break;
- }
- // Vector fields come in several flavours, of the forms:
- // _fbb.CreateVector(_o->field);
- // _fbb.CreateVector((const utype*)_o->field.data(), _o->field.size());
- // _fbb.CreateVectorOfStrings(_o->field)
- // _fbb.CreateVectorOfStructs(_o->field)
- // _fbb.CreateVector<Offset<T>>(_o->field.size() [&](size_t i) {
- // return CreateT(_fbb, _o->Get(i), rehasher);
- // });
- case BASE_TYPE_VECTOR: {
- auto vector_type = field.value.type.VectorType();
- switch (vector_type.base_type) {
- case BASE_TYPE_STRING: {
- code += "_fbb.CreateVectorOfStrings(" + value + ")";
- break;
- }
- case BASE_TYPE_STRUCT: {
- if (IsStruct(vector_type)) {
- auto native_type =
- field.value.type.struct_def->attributes.Lookup("native_type");
- if (native_type) {
- code += "_fbb.CreateVectorOfNativeStructs<";
- code += WrapInNameSpace(*vector_type.struct_def) + ">";
- } else {
- code += "_fbb.CreateVectorOfStructs";
- }
- code += "(" + value + ")";
- } else {
- code += "_fbb.CreateVector<flatbuffers::Offset<";
- code += WrapInNameSpace(*vector_type.struct_def) + ">>";
- code += "(" + value + ".size(), [&](size_t i) {";
- code += " return Create" + vector_type.struct_def->name;
- code += "(_fbb, " + value + "[i]" + GenPtrGet(field) + ", ";
- code += "_rehasher); })";
- }
- break;
- }
- case BASE_TYPE_BOOL: {
- code += "_fbb.CreateVector(" + value + ")";
- break;
- }
- case BASE_TYPE_UNION: {
- code += "_fbb.CreateVector<flatbuffers::Offset<void>>(" + value +
- ".size(), [&](size_t i) { return " + value +
- "[i].Pack(_fbb, _rehasher); })";
- break;
- }
- case BASE_TYPE_UTYPE: {
- value = StripUnionType(value);
- code += "_fbb.CreateVector<uint8_t>(" + value +
- ".size(), [&](size_t i) { return static_cast<uint8_t>(" + value +
- "[i].type); })";
- break;
- }
- default: {
- if (field.value.type.enum_def) {
- // For enumerations, we need to get access to the array data for
- // the underlying storage type (eg. uint8_t).
- const auto basetype = GenTypeBasic(
- field.value.type.enum_def->underlying_type, false);
- code += "_fbb.CreateVector((const " + basetype + "*)" + value +
- ".data(), " + value + ".size())";
- } else {
- code += "_fbb.CreateVector(" + value + ")";
- }
- break;
- }
- }
-
- // For optional fields, check to see if there actually is any data
- // in _o->field before attempting to access it.
- if (!field.required) {
- code = value + ".size() ? " + code + " : 0";
- }
- break;
- }
- case BASE_TYPE_UNION: {
- // _o->field.Pack(_fbb);
- code += value + ".Pack(_fbb)";
- break;
- }
- case BASE_TYPE_STRUCT: {
- if (IsStruct(field.value.type)) {
- auto native_type =
- field.value.type.struct_def->attributes.Lookup("native_type");
- if (native_type) {
- code += "flatbuffers::Pack(" + value + ")";
- } else if (field.native_inline) {
- code += "&" + value;
- } else {
- code += value + " ? " + value + GenPtrGet(field) + " : 0";
- }
- } else {
- // _o->field ? CreateT(_fbb, _o->field.get(), _rehasher);
- const auto type = field.value.type.struct_def->name;
- code += value + " ? Create" + type;
- code += "(_fbb, " + value + GenPtrGet(field) + ", _rehasher)";
- code += " : 0";
- }
- break;
- }
- default: {
- code += value;
- break;
- }
- }
- return code;
- }
-
- // Generate code for tables that needs to come after the regular definition.
- void GenTablePost(const StructDef &struct_def) {
- code_.SetValue("STRUCT_NAME", struct_def.name);
- code_.SetValue("NATIVE_NAME", NativeName(struct_def.name, &struct_def));
-
- if (parser_.opts.generate_object_based_api) {
- // Generate the X::UnPack() method.
- code_ += "inline " + TableUnPackSignature(struct_def, false) + " {";
- code_ += " auto _o = new {{NATIVE_NAME}}();";
- code_ += " UnPackTo(_o, _resolver);";
- code_ += " return _o;";
- code_ += "}";
- code_ += "";
-
- code_ += "inline " + TableUnPackToSignature(struct_def, false) + " {";
- code_ += " (void)_o;";
- code_ += " (void)_resolver;";
-
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- const auto &field = **it;
- if (field.deprecated) {
- continue;
- }
-
- // Assign a value from |this| to |_o|. Values from |this| are stored
- // in a variable |_e| by calling this->field_type(). The value is then
- // assigned to |_o| using the GenUnpackFieldStatement.
- const bool is_union = field.value.type.base_type == BASE_TYPE_UTYPE;
- const auto statement =
- GenUnpackFieldStatement(field, is_union ? *(it + 1) : nullptr);
-
- code_.SetValue("FIELD_NAME", field.name);
- auto prefix = " { auto _e = {{FIELD_NAME}}(); ";
- auto check = IsScalar(field.value.type.base_type) ? "" : "if (_e) ";
- auto postfix = " };";
- code_ += std::string(prefix) + check + statement + postfix;
- }
- code_ += "}";
- code_ += "";
-
- // Generate the X::Pack member function that simply calls the global
- // CreateX function.
- code_ += "inline " + TablePackSignature(struct_def, false) + " {";
- code_ += " return Create{{STRUCT_NAME}}(_fbb, _o, _rehasher);";
- code_ += "}";
- code_ += "";
-
- // Generate a CreateX method that works with an unpacked C++ object.
- code_ += "inline " + TableCreateSignature(struct_def, false) + " {";
- code_ += " (void)_rehasher;";
- code_ += " (void)_o;";
-
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- auto &field = **it;
- if (field.deprecated) {
- continue;
- }
- code_ += " auto _" + field.name + " = " + GenCreateParam(field) + ";";
- }
- // Need to call "Create" with the struct namespace.
- const auto qualified_create_name = struct_def.defined_namespace->GetFullyQualifiedName("Create");
- code_.SetValue("CREATE_NAME", TranslateNameSpace(qualified_create_name));
-
- code_ += " return {{CREATE_NAME}}{{STRUCT_NAME}}(";
- code_ += " _fbb\\";
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- auto &field = **it;
- if (field.deprecated) {
- continue;
- }
-
- bool pass_by_address = false;
- if (field.value.type.base_type == BASE_TYPE_STRUCT) {
- if (IsStruct(field.value.type)) {
- auto native_type =
- field.value.type.struct_def->attributes.Lookup("native_type");
- if (native_type) {
- pass_by_address = true;
- }
- }
- }
-
- // Call the CreateX function using values from |_o|.
- if (pass_by_address) {
- code_ += ",\n &_" + field.name + "\\";
- } else {
- code_ += ",\n _" + field.name + "\\";
- }
- }
- code_ += ");";
- code_ += "}";
- code_ += "";
- }
- }
-
- static void GenPadding(
- const FieldDef &field, std::string *code_ptr, int *id,
- const std::function<void(int bits, std::string *code_ptr, int *id)> &f) {
- if (field.padding) {
- for (int i = 0; i < 4; i++) {
- if (static_cast<int>(field.padding) & (1 << i)) {
- f((1 << i) * 8, code_ptr, id);
- }
- }
- assert(!(field.padding & ~0xF));
- }
- }
-
- static void PaddingDefinition(int bits, std::string *code_ptr, int *id) {
- *code_ptr += " int" + NumToString(bits) + "_t padding" +
- NumToString((*id)++) + "__;";
- }
-
- static void PaddingInitializer(int bits, std::string *code_ptr, int *id) {
- (void)bits;
- *code_ptr += ",\n padding" + NumToString((*id)++) + "__(0)";
- }
-
- static void PaddingNoop(int bits, std::string *code_ptr, int *id) {
- (void)bits;
- *code_ptr += " (void)padding" + NumToString((*id)++) + "__;";
- }
-
- // Generate an accessor struct with constructor for a flatbuffers struct.
- void GenStruct(const StructDef &struct_def) {
- // Generate an accessor struct, with private variables of the form:
- // type name_;
- // Generates manual padding and alignment.
- // Variables are private because they contain little endian data on all
- // platforms.
- GenComment(struct_def.doc_comment);
- code_.SetValue("ALIGN", NumToString(struct_def.minalign));
- code_.SetValue("STRUCT_NAME", struct_def.name);
-
- code_ += "MANUALLY_ALIGNED_STRUCT({{ALIGN}}) "
- "{{STRUCT_NAME}} FLATBUFFERS_FINAL_CLASS {";
- code_ += " private:";
-
- int padding_id = 0;
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- const auto &field = **it;
- code_.SetValue("FIELD_TYPE",
- GenTypeGet(field.value.type, " ", "", " ", false));
- code_.SetValue("FIELD_NAME", field.name);
- code_ += " {{FIELD_TYPE}}{{FIELD_NAME}}_;";
-
- if (field.padding) {
- std::string padding;
- GenPadding(field, &padding, &padding_id, PaddingDefinition);
- code_ += padding;
- }
- }
-
- // Generate GetFullyQualifiedName
- code_ += "";
- code_ += " public:";
- GenFullyQualifiedNameGetter(struct_def.name);
-
- // Generate a default constructor.
- code_ += " {{STRUCT_NAME}}() {";
- code_ += " memset(this, 0, sizeof({{STRUCT_NAME}}));";
- code_ += " }";
-
- // Generate a copy constructor.
- code_ += " {{STRUCT_NAME}}(const {{STRUCT_NAME}} &_o) {";
- code_ += " memcpy(this, &_o, sizeof({{STRUCT_NAME}}));";
- code_ += " }";
-
- // Generate a constructor that takes all fields as arguments.
- std::string arg_list;
- std::string init_list;
- padding_id = 0;
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- const auto &field = **it;
- const auto member_name = field.name + "_";
- const auto arg_name = "_" + field.name;
- const auto arg_type =
- GenTypeGet(field.value.type, " ", "const ", " &", true);
-
- if (it != struct_def.fields.vec.begin()) {
- arg_list += ", ";
- init_list += ",\n ";
- }
- arg_list += arg_type;
- arg_list += arg_name;
- init_list += member_name;
- if (IsScalar(field.value.type.base_type)) {
- auto type = GenUnderlyingCast(field, false, arg_name);
- init_list += "(flatbuffers::EndianScalar(" + type + "))";
- } else {
- init_list += "(" + arg_name + ")";
- }
- if (field.padding) {
- GenPadding(field, &init_list, &padding_id, PaddingInitializer);
- }
- }
-
- code_.SetValue("ARG_LIST", arg_list);
- code_.SetValue("INIT_LIST", init_list);
- code_ += " {{STRUCT_NAME}}({{ARG_LIST}})";
- code_ += " : {{INIT_LIST}} {";
- padding_id = 0;
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- const auto &field = **it;
- if (field.padding) {
- std::string padding;
- GenPadding(field, &padding, &padding_id, PaddingNoop);
- code_ += padding;
- }
- }
- code_ += " }";
-
- // Generate accessor methods of the form:
- // type name() const { return flatbuffers::EndianScalar(name_); }
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- const auto &field = **it;
-
- auto field_type = GenTypeGet(field.value.type, " ", "const ", " &", true);
- auto is_scalar = IsScalar(field.value.type.base_type);
- auto member = field.name + "_";
- auto value = is_scalar ? "flatbuffers::EndianScalar(" + member + ")"
- : member;
-
- code_.SetValue("FIELD_NAME", field.name);
- code_.SetValue("FIELD_TYPE", field_type);
- code_.SetValue("FIELD_VALUE", GenUnderlyingCast(field, true, value));
-
- GenComment(field.doc_comment, " ");
- code_ += " {{FIELD_TYPE}}{{FIELD_NAME}}() const {";
- code_ += " return {{FIELD_VALUE}};";
- code_ += " }";
-
- if (parser_.opts.mutable_buffer) {
- auto mut_field_type = GenTypeGet(field.value.type, " ", "", " &", true);
- code_.SetValue("FIELD_TYPE", mut_field_type);
- if (is_scalar) {
- code_.SetValue("ARG", GenTypeBasic(field.value.type, true));
- code_.SetValue("FIELD_VALUE",
- GenUnderlyingCast(field, false, "_" + field.name));
-
- code_ += " void mutate_{{FIELD_NAME}}({{ARG}} _{{FIELD_NAME}}) {";
- code_ += " flatbuffers::WriteScalar(&{{FIELD_NAME}}_, "
- "{{FIELD_VALUE}});";
- code_ += " }";
- } else {
- code_ += " {{FIELD_TYPE}}mutable_{{FIELD_NAME}}() {";
- code_ += " return {{FIELD_NAME}}_;";
- code_ += " }";
- }
- }
-
- // Generate a comparison function for this field if it is a key.
- if (field.key) {
- code_ += " bool KeyCompareLessThan(const {{STRUCT_NAME}} *o) const {";
- code_ += " return {{FIELD_NAME}}() < o->{{FIELD_NAME}}();";
- code_ += " }";
- auto type = GenTypeBasic(field.value.type, false);
- if (parser_.opts.scoped_enums && field.value.type.enum_def &&
- IsScalar(field.value.type.base_type)) {
- type = GenTypeGet(field.value.type, " ", "const ", " *", true);
- }
-
- code_.SetValue("KEY_TYPE", type);
- code_ += " int KeyCompareWithValue({{KEY_TYPE}} val) const {";
- code_ += " const auto key = {{FIELD_NAME}}();";
- code_ += " return static_cast<int>(key > val) - static_cast<int>(key < val);";
- code_ += " }";
- }
- }
- code_ += "};";
-
- code_.SetValue("STRUCT_BYTE_SIZE", NumToString(struct_def.bytesize));
- code_ += "STRUCT_END({{STRUCT_NAME}}, {{STRUCT_BYTE_SIZE}});";
- code_ += "";
- }
-
- // Set up the correct namespace. Only open a namespace if the existing one is
- // different (closing/opening only what is necessary).
- //
- // The file must start and end with an empty (or null) namespace so that
- // namespaces are properly opened and closed.
- void SetNameSpace(const Namespace *ns) {
- if (cur_name_space_ == ns) {
- return;
- }
-
- // Compute the size of the longest common namespace prefix.
- // If cur_name_space is A::B::C::D and ns is A::B::E::F::G,
- // the common prefix is A::B:: and we have old_size = 4, new_size = 5
- // and common_prefix_size = 2
- size_t old_size = cur_name_space_ ? cur_name_space_->components.size() : 0;
- size_t new_size = ns ? ns->components.size() : 0;
-
- size_t common_prefix_size = 0;
- while (common_prefix_size < old_size && common_prefix_size < new_size &&
- ns->components[common_prefix_size] ==
- cur_name_space_->components[common_prefix_size]) {
- common_prefix_size++;
- }
-
- // Close cur_name_space in reverse order to reach the common prefix.
- // In the previous example, D then C are closed.
- for (size_t j = old_size; j > common_prefix_size; --j) {
- code_ += "} // namespace " + cur_name_space_->components[j - 1];
- }
- if (old_size != common_prefix_size) {
- code_ += "";
- }
-
- // open namespace parts to reach the ns namespace
- // in the previous example, E, then F, then G are opened
- for (auto j = common_prefix_size; j != new_size; ++j) {
- code_ += "namespace " + ns->components[j] + " {";
- }
- if (new_size != common_prefix_size) {
- code_ += "";
- }
-
- cur_name_space_ = ns;
- }
-};
-
-} // namespace cpp
-
-bool GenerateCPP(const Parser &parser, const std::string &path,
- const std::string &file_name) {
- cpp::CppGenerator generator(parser, path, file_name);
- return generator.generate();
-}
-
-std::string CPPMakeRule(const Parser &parser, const std::string &path,
- const std::string &file_name) {
- const auto filebase =
- flatbuffers::StripPath(flatbuffers::StripExtension(file_name));
- const auto included_files = parser.GetIncludedFilesRecursive(file_name);
- std::string make_rule = GeneratedFileName(path, filebase) + ": ";
- for (auto it = included_files.begin(); it != included_files.end(); ++it) {
- make_rule += " " + *it;
- }
- return make_rule;
-}
-
-} // namespace flatbuffers
diff --git a/third_party/flatbuffers/src/idl_gen_fbs.cpp b/third_party/flatbuffers/src/idl_gen_fbs.cpp
deleted file mode 100644
index 7752369..0000000
--- a/third_party/flatbuffers/src/idl_gen_fbs.cpp
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// independent from idl_parser, since this code is not needed for most clients
-
-#include "flatbuffers/flatbuffers.h"
-#include "flatbuffers/idl.h"
-#include "flatbuffers/util.h"
-#include "flatbuffers/code_generators.h"
-
-namespace flatbuffers {
-
-static std::string GenType(const Type &type) {
- switch (type.base_type) {
- case BASE_TYPE_STRUCT:
- return type.struct_def->defined_namespace->GetFullyQualifiedName(
- type.struct_def->name);
- case BASE_TYPE_UNION:
- return type.enum_def->defined_namespace->GetFullyQualifiedName(
- type.enum_def->name);
- case BASE_TYPE_VECTOR:
- return "[" + GenType(type.VectorType()) + "]";
- default:
- return kTypeNames[type.base_type];
- }
-}
-
-static void GenNameSpace(const Namespace &name_space, std::string *_schema,
- const Namespace **last_namespace) {
- if (*last_namespace == &name_space) return;
- *last_namespace = &name_space;
- auto &schema = *_schema;
- schema += "namespace ";
- for (auto it = name_space.components.begin();
- it != name_space.components.end(); ++it) {
- if (it != name_space.components.begin()) schema += ".";
- schema += *it;
- }
- schema += ";\n\n";
-}
-
-// Generate a flatbuffer schema from the Parser's internal representation.
-std::string GenerateFBS(const Parser &parser, const std::string &file_name) {
- // Proto namespaces may clash with table names, so we have to prefix all:
- if (!parser.opts.escape_proto_identifiers) {
- for (auto it = parser.namespaces_.begin(); it != parser.namespaces_.end();
- ++it) {
- for (auto comp = (*it)->components.begin(); comp != (*it)->components.end();
- ++comp) {
- (*comp) = "_" + (*comp);
- }
- }
- }
-
- std::string schema;
- schema += "// Generated from " + file_name + ".proto\n\n";
- if (parser.opts.include_dependence_headers) {
- #ifdef FBS_GEN_INCLUDES // TODO: currently all in one file.
- int num_includes = 0;
- for (auto it = parser.included_files_.begin();
- it != parser.included_files_.end(); ++it) {
- auto basename = flatbuffers::StripPath(
- flatbuffers::StripExtension(it->first));
- if (basename != file_name) {
- schema += "include \"" + basename + ".fbs\";\n";
- num_includes++;
- }
- }
- if (num_includes) schema += "\n";
- #endif
- }
- // Generate code for all the enum declarations.
- const Namespace *last_namespace = nullptr;
- for (auto enum_def_it = parser.enums_.vec.begin();
- enum_def_it != parser.enums_.vec.end(); ++enum_def_it) {
- EnumDef &enum_def = **enum_def_it;
- GenNameSpace(*enum_def.defined_namespace, &schema, &last_namespace);
- GenComment(enum_def.doc_comment, &schema, nullptr);
- schema += "enum " + enum_def.name + " : ";
- schema += GenType(enum_def.underlying_type) + " {\n";
- for (auto it = enum_def.vals.vec.begin();
- it != enum_def.vals.vec.end(); ++it) {
- auto &ev = **it;
- GenComment(ev.doc_comment, &schema, nullptr, " ");
- schema += " " + ev.name + " = " + NumToString(ev.value) + ",\n";
- }
- schema += "}\n\n";
- }
- // Generate code for all structs/tables.
- for (auto it = parser.structs_.vec.begin();
- it != parser.structs_.vec.end(); ++it) {
- StructDef &struct_def = **it;
- GenNameSpace(*struct_def.defined_namespace, &schema, &last_namespace);
- GenComment(struct_def.doc_comment, &schema, nullptr);
- schema += "table " + struct_def.name + " {\n";
- for (auto field_it = struct_def.fields.vec.begin();
- field_it != struct_def.fields.vec.end(); ++field_it) {
- auto &field = **field_it;
- GenComment(field.doc_comment, &schema, nullptr, " ");
- schema += " " + field.name + ":" + GenType(field.value.type);
- if (field.value.constant != "0") schema += " = " + field.value.constant;
- if (field.required) schema += " (required)";
- schema += ";\n";
- }
- schema += "}\n\n";
- }
- return schema;
-}
-
-bool GenerateFBS(const Parser &parser,
- const std::string &path,
- const std::string &file_name) {
- return SaveFile((path + file_name + ".fbs").c_str(),
- GenerateFBS(parser, file_name), false);
-}
-
-} // namespace flatbuffers
-
diff --git a/third_party/flatbuffers/src/idl_gen_general.cpp b/third_party/flatbuffers/src/idl_gen_general.cpp
deleted file mode 100644
index 1e9f3b6..0000000
--- a/third_party/flatbuffers/src/idl_gen_general.cpp
+++ /dev/null
@@ -1,1434 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// independent from idl_parser, since this code is not needed for most clients
-
-#include "flatbuffers/flatbuffers.h"
-#include "flatbuffers/idl.h"
-#include "flatbuffers/util.h"
-#include "flatbuffers/code_generators.h"
-#include <algorithm>
-
-namespace flatbuffers {
-
-// Convert an underscore_based_indentifier in to camelCase.
-// Also uppercases the first character if first is true.
-std::string MakeCamel(const std::string &in, bool first) {
- std::string s;
- for (size_t i = 0; i < in.length(); i++) {
- if (!i && first)
- s += static_cast<char>(toupper(in[0]));
- else if (in[i] == '_' && i + 1 < in.length())
- s += static_cast<char>(toupper(in[++i]));
- else
- s += in[i];
- }
- return s;
-}
-
-// These arrays need to correspond to the IDLOptions::k enum.
-
-struct LanguageParameters {
- IDLOptions::Language language;
- // Whether function names in the language typically start with uppercase.
- bool first_camel_upper;
- std::string file_extension;
- std::string string_type;
- std::string bool_type;
- std::string open_curly;
- std::string accessor_type;
- std::string const_decl;
- std::string unsubclassable_decl;
- std::string enum_decl;
- std::string enum_separator;
- std::string getter_prefix;
- std::string getter_suffix;
- std::string inheritance_marker;
- std::string namespace_ident;
- std::string namespace_begin;
- std::string namespace_end;
- std::string set_bb_byteorder;
- std::string get_bb_position;
- std::string get_fbb_offset;
- std::string accessor_prefix;
- std::string accessor_prefix_static;
- std::string optional_suffix;
- std::string includes;
- CommentConfig comment_config;
-};
-
-const LanguageParameters& GetLangParams(IDLOptions::Language lang) {
- static LanguageParameters language_parameters[] = {
- {
- IDLOptions::kJava,
- false,
- ".java",
- "String",
- "boolean ",
- " {\n",
- "class ",
- " final ",
- "final ",
- "final class ",
- ";\n",
- "()",
- "",
- " extends ",
- "package ",
- ";",
- "",
- "_bb.order(ByteOrder.LITTLE_ENDIAN); ",
- "position()",
- "offset()",
- "",
- "",
- "",
- "import java.nio.*;\nimport java.lang.*;\nimport java.util.*;\n"
- "import com.google.flatbuffers.*;\n\n@SuppressWarnings(\"unused\")\n",
- {
- "/**",
- " *",
- " */",
- },
- },
- {
- IDLOptions::kCSharp,
- true,
- ".cs",
- "string",
- "bool ",
- "\n{\n",
- "struct ",
- " readonly ",
- "",
- "enum ",
- ",\n",
- " { get",
- "} ",
- " : ",
- "namespace ",
- "\n{",
- "\n}\n",
- "",
- "Position",
- "Offset",
- "__p.",
- "Table.",
- "?",
- "using global::System;\nusing global::FlatBuffers;\n\n",
- {
- nullptr,
- "///",
- nullptr,
- },
- },
- };
-
- if (lang == IDLOptions::kJava) {
- return language_parameters[0];
- } else {
- assert(lang == IDLOptions::kCSharp);
- return language_parameters[1];
- }
-}
-
-namespace general {
-class GeneralGenerator : public BaseGenerator {
- public:
- GeneralGenerator(const Parser &parser, const std::string &path,
- const std::string &file_name)
- : BaseGenerator(parser, path, file_name, "", "."),
- lang_(GetLangParams(parser_.opts.lang)),
- cur_name_space_( nullptr ) {
- }
-
- GeneralGenerator &operator=(const GeneralGenerator &);
- bool generate() {
- std::string one_file_code;
- cur_name_space_ = parser_.namespaces_.back();
-
- for (auto it = parser_.enums_.vec.begin(); it != parser_.enums_.vec.end();
- ++it) {
- std::string enumcode;
- auto &enum_def = **it;
- if (!parser_.opts.one_file)
- cur_name_space_ = enum_def.defined_namespace;
- GenEnum(enum_def, &enumcode);
- if (parser_.opts.one_file) {
- one_file_code += enumcode;
- } else {
- if (!SaveType(enum_def.name, *enum_def.defined_namespace,
- enumcode, false)) return false;
- }
- }
-
- for (auto it = parser_.structs_.vec.begin();
- it != parser_.structs_.vec.end(); ++it) {
- std::string declcode;
- auto &struct_def = **it;
- if (!parser_.opts.one_file)
- cur_name_space_ = struct_def.defined_namespace;
- GenStruct(struct_def, &declcode);
- if (parser_.opts.one_file) {
- one_file_code += declcode;
- } else {
- if (!SaveType(struct_def.name, *struct_def.defined_namespace,
- declcode, true)) return false;
- }
- }
-
- if (parser_.opts.one_file) {
- return SaveType(file_name_, *parser_.namespaces_.back(),
- one_file_code, true);
- }
- return true;
- }
-
- // Save out the generated code for a single class while adding
- // declaration boilerplate.
- bool SaveType(const std::string &defname, const Namespace &ns,
- const std::string &classcode, bool needs_includes) {
- if (!classcode.length()) return true;
-
- std::string code;
- code = code + "// " + FlatBuffersGeneratedWarning();
- std::string namespace_name = FullNamespace(".", ns);
- if (!namespace_name.empty()) {
- code += lang_.namespace_ident + namespace_name + lang_.namespace_begin;
- code += "\n\n";
- }
- if (needs_includes) code += lang_.includes;
- code += classcode;
- if (!namespace_name.empty()) code += lang_.namespace_end;
- auto filename = NamespaceDir(ns) + defname + lang_.file_extension;
- return SaveFile(filename.c_str(), code, false);
- }
-
- const Namespace *CurrentNameSpace() const { return cur_name_space_; }
-
- std::string FunctionStart(char upper) {
- return std::string() + (lang_.language == IDLOptions::kJava
- ? static_cast<char>(tolower(upper))
- : upper);
-}
-
-static bool IsEnum(const Type& type) {
- return type.enum_def != nullptr && IsInteger(type.base_type);
-}
-
-std::string GenTypeBasic(const Type &type, bool enableLangOverrides) {
- static const char *java_typename[] = {
- #define FLATBUFFERS_TD(ENUM, IDLTYPE, CTYPE, JTYPE, GTYPE, NTYPE, PTYPE) \
- #JTYPE,
- FLATBUFFERS_GEN_TYPES(FLATBUFFERS_TD)
- #undef FLATBUFFERS_TD
- };
-
- static const char *csharp_typename[] = {
- #define FLATBUFFERS_TD(ENUM, IDLTYPE, CTYPE, JTYPE, GTYPE, NTYPE, PTYPE) \
- #NTYPE,
- FLATBUFFERS_GEN_TYPES(FLATBUFFERS_TD)
- #undef FLATBUFFERS_TD
- };
-
- if (enableLangOverrides) {
- if (lang_.language == IDLOptions::kCSharp) {
- if (IsEnum(type)) return WrapInNameSpace(*type.enum_def);
- if (type.base_type == BASE_TYPE_STRUCT) {
- return "Offset<" + WrapInNameSpace(*type.struct_def) + ">";
- }
- }
- }
-
- if (lang_.language == IDLOptions::kJava) {
- return java_typename[type.base_type];
- } else {
- assert(lang_.language == IDLOptions::kCSharp);
- return csharp_typename[type.base_type];
- }
-}
-
-std::string GenTypeBasic(const Type &type) {
- return GenTypeBasic(type, true);
-}
-
-std::string GenTypePointer(const Type &type) {
- switch (type.base_type) {
- case BASE_TYPE_STRING:
- return lang_.string_type;
- case BASE_TYPE_VECTOR:
- return GenTypeGet(type.VectorType());
- case BASE_TYPE_STRUCT:
- return WrapInNameSpace(*type.struct_def);
- case BASE_TYPE_UNION:
- // Unions in C# use a generic Table-derived type for better type safety
- if (lang_.language == IDLOptions::kCSharp) return "TTable";
- // fall through
- default:
- return "Table";
- }
-}
-
-std::string GenTypeGet(const Type &type) {
- return IsScalar(type.base_type)
- ? GenTypeBasic(type)
- : GenTypePointer(type);
-}
-
-// Find the destination type the user wants to receive the value in (e.g.
-// one size higher signed types for unsigned serialized values in Java).
-Type DestinationType(const Type &type, bool vectorelem) {
- if (lang_.language != IDLOptions::kJava) return type;
- switch (type.base_type) {
- // We use int for both uchar/ushort, since that generally means less casting
- // than using short for uchar.
- case BASE_TYPE_UCHAR: return Type(BASE_TYPE_INT);
- case BASE_TYPE_USHORT: return Type(BASE_TYPE_INT);
- case BASE_TYPE_UINT: return Type(BASE_TYPE_LONG);
- case BASE_TYPE_VECTOR:
- if (vectorelem)
- return DestinationType(type.VectorType(), vectorelem);
- // else fall thru:
- default: return type;
- }
-}
-
-std::string GenOffsetType(const StructDef &struct_def) {
- if(lang_.language == IDLOptions::kCSharp) {
- return "Offset<" + WrapInNameSpace(struct_def) + ">";
- } else {
- return "int";
- }
-}
-
-std::string GenOffsetConstruct(const StructDef &struct_def,
- const std::string &variable_name)
-{
- if(lang_.language == IDLOptions::kCSharp) {
- return "new Offset<" + WrapInNameSpace(struct_def) + ">(" + variable_name +
- ")";
- }
- return variable_name;
-}
-
-std::string GenVectorOffsetType() {
- if(lang_.language == IDLOptions::kCSharp) {
- return "VectorOffset";
- } else {
- return "int";
- }
-}
-
-// Generate destination type name
-std::string GenTypeNameDest(const Type &type)
-{
- return GenTypeGet(DestinationType(type, true));
-}
-
-// Mask to turn serialized value into destination type value.
-std::string DestinationMask(const Type &type, bool vectorelem) {
- if (lang_.language != IDLOptions::kJava) return "";
- switch (type.base_type) {
- case BASE_TYPE_UCHAR: return " & 0xFF";
- case BASE_TYPE_USHORT: return " & 0xFFFF";
- case BASE_TYPE_UINT: return " & 0xFFFFFFFFL";
- case BASE_TYPE_VECTOR:
- if (vectorelem)
- return DestinationMask(type.VectorType(), vectorelem);
- // else fall thru:
- default: return "";
- }
-}
-
-// Casts necessary to correctly read serialized data
-std::string DestinationCast(const Type &type) {
- if (type.base_type == BASE_TYPE_VECTOR) {
- return DestinationCast(type.VectorType());
- } else {
- switch (lang_.language) {
- case IDLOptions::kJava:
- // Cast necessary to correctly read serialized unsigned values.
- if (type.base_type == BASE_TYPE_UINT) return "(long)";
- break;
-
- case IDLOptions::kCSharp:
- // Cast from raw integral types to enum.
- if (IsEnum(type)) return "(" + WrapInNameSpace(*type.enum_def) + ")";
- break;
-
- default:
- break;
- }
- }
- return "";
-}
-
-// Cast statements for mutator method parameters.
-// In Java, parameters representing unsigned numbers need to be cast down to
-// their respective type. For example, a long holding an unsigned int value
-// would be cast down to int before being put onto the buffer. In C#, one cast
-// directly cast an Enum to its underlying type, which is essential before
-// putting it onto the buffer.
-std::string SourceCast(const Type &type, bool castFromDest) {
- if (type.base_type == BASE_TYPE_VECTOR) {
- return SourceCast(type.VectorType(), castFromDest);
- } else {
- switch (lang_.language) {
- case IDLOptions::kJava:
- if (castFromDest) {
- if (type.base_type == BASE_TYPE_UINT) return "(int)";
- else if (type.base_type == BASE_TYPE_USHORT) return "(short)";
- else if (type.base_type == BASE_TYPE_UCHAR) return "(byte)";
- }
- break;
- case IDLOptions::kCSharp:
- if (IsEnum(type)) return "(" + GenTypeBasic(type, false) + ")";
- break;
- default:
- break;
- }
- }
- return "";
-}
-
-std::string SourceCast(const Type &type) {
- return SourceCast(type, true);
-}
-
-std::string SourceCastBasic(const Type &type, bool castFromDest) {
- return IsScalar(type.base_type) ? SourceCast(type, castFromDest) : "";
-}
-
-std::string SourceCastBasic(const Type &type) {
- return SourceCastBasic(type, true);
-}
-
-
-std::string GenEnumDefaultValue(const Value &value) {
- auto enum_def = value.type.enum_def;
- auto vec = enum_def->vals.vec;
- auto default_value = StringToInt(value.constant.c_str());
-
- auto result = value.constant;
- for (auto it = vec.begin(); it != vec.end(); ++it) {
- auto enum_val = **it;
- if (enum_val.value == default_value) {
- result = WrapInNameSpace(*enum_def) + "." + enum_val.name;
- break;
- }
- }
-
- return result;
-}
-
-std::string GenDefaultValue(const Value &value, bool enableLangOverrides) {
- if (enableLangOverrides) {
- // handles both enum case and vector of enum case
- if (lang_.language == IDLOptions::kCSharp &&
- value.type.enum_def != nullptr &&
- value.type.base_type != BASE_TYPE_UNION) {
- return GenEnumDefaultValue(value);
- }
- }
-
- auto longSuffix = lang_.language == IDLOptions::kJava ? "L" : "";
- switch (value.type.base_type) {
- case BASE_TYPE_FLOAT: return value.constant + "f";
- case BASE_TYPE_BOOL: return value.constant == "0" ? "false" : "true";
- case BASE_TYPE_ULONG:
- {
- if (lang_.language != IDLOptions::kJava)
- return value.constant;
- // Converts the ulong into its bits signed equivalent
- uint64_t defaultValue = StringToUInt(value.constant.c_str());
- return NumToString(static_cast<int64_t>(defaultValue)) + longSuffix;
- }
- case BASE_TYPE_UINT:
- case BASE_TYPE_LONG: return value.constant + longSuffix;
- default: return value.constant;
- }
-}
-
-std::string GenDefaultValue(const Value &value) {
- return GenDefaultValue(value, true);
-}
-
-std::string GenDefaultValueBasic(const Value &value, bool enableLangOverrides) {
- if (!IsScalar(value.type.base_type)) {
- if (enableLangOverrides) {
- if (lang_.language == IDLOptions::kCSharp) {
- switch (value.type.base_type) {
- case BASE_TYPE_STRING:
- return "default(StringOffset)";
- case BASE_TYPE_STRUCT:
- return "default(Offset<" + WrapInNameSpace(*value.type.struct_def) +
- ">)";
- case BASE_TYPE_VECTOR:
- return "default(VectorOffset)";
- default:
- break;
- }
- }
- }
- return "0";
- }
- return GenDefaultValue(value, enableLangOverrides);
-}
-
-std::string GenDefaultValueBasic(const Value &value) {
- return GenDefaultValueBasic(value, true);
-}
-
-void GenEnum(EnumDef &enum_def, std::string *code_ptr) {
- std::string &code = *code_ptr;
- if (enum_def.generated) return;
-
- // Generate enum definitions of the form:
- // public static (final) int name = value;
- // In Java, we use ints rather than the Enum feature, because we want them
- // to map directly to how they're used in C/C++ and file formats.
- // That, and Java Enums are expensive, and not universally liked.
- GenComment(enum_def.doc_comment, code_ptr, &lang_.comment_config);
- code += std::string("public ") + lang_.enum_decl + enum_def.name;
- if (lang_.language == IDLOptions::kCSharp) {
- code += lang_.inheritance_marker +
- GenTypeBasic(enum_def.underlying_type, false);
- }
- code += lang_.open_curly;
- if (lang_.language == IDLOptions::kJava) {
- code += " private " + enum_def.name + "() { }\n";
- }
- for (auto it = enum_def.vals.vec.begin();
- it != enum_def.vals.vec.end();
- ++it) {
- auto &ev = **it;
- GenComment(ev.doc_comment, code_ptr, &lang_.comment_config, " ");
- if (lang_.language != IDLOptions::kCSharp) {
- code += " public static";
- code += lang_.const_decl;
- code += GenTypeBasic(enum_def.underlying_type, false);
- }
- code += " " + ev.name + " = ";
- code += NumToString(ev.value);
- code += lang_.enum_separator;
- }
-
- // Generate a generate string table for enum values.
- // We do not do that for C# where this functionality is native.
- if (lang_.language != IDLOptions::kCSharp) {
- // Problem is, if values are very sparse that could generate really big
- // tables. Ideally in that case we generate a map lookup instead, but for
- // the moment we simply don't output a table at all.
- auto range = enum_def.vals.vec.back()->value -
- enum_def.vals.vec.front()->value + 1;
- // Average distance between values above which we consider a table
- // "too sparse". Change at will.
- static const int kMaxSparseness = 5;
- if (range / static_cast<int64_t>(enum_def.vals.vec.size()) < kMaxSparseness) {
- code += "\n public static";
- code += lang_.const_decl;
- code += lang_.string_type;
- code += "[] names = { ";
- auto val = enum_def.vals.vec.front()->value;
- for (auto it = enum_def.vals.vec.begin();
- it != enum_def.vals.vec.end();
- ++it) {
- while (val++ != (*it)->value) code += "\"\", ";
- code += "\"" + (*it)->name + "\", ";
- }
- code += "};\n\n";
- code += " public static ";
- code += lang_.string_type;
- code += " " + MakeCamel("name", lang_.first_camel_upper);
- code += "(int e) { return names[e";
- if (enum_def.vals.vec.front()->value)
- code += " - " + enum_def.vals.vec.front()->name;
- code += "]; }\n";
- }
- }
-
- // Close the class
- code += "}";
- // Java does not need the closing semi-colon on class definitions.
- code += (lang_.language != IDLOptions::kJava) ? ";" : "";
- code += "\n\n";
-}
-
-// Returns the function name that is able to read a value of the given type.
-std::string GenGetter(const Type &type) {
- switch (type.base_type) {
- case BASE_TYPE_STRING: return lang_.accessor_prefix + "__string";
- case BASE_TYPE_STRUCT: return lang_.accessor_prefix + "__struct";
- case BASE_TYPE_UNION: return lang_.accessor_prefix + "__union";
- case BASE_TYPE_VECTOR: return GenGetter(type.VectorType());
- default: {
- std::string getter =
- lang_.accessor_prefix + "bb." + FunctionStart('G') + "et";
- if (type.base_type == BASE_TYPE_BOOL) {
- getter = "0!=" + getter;
- } else if (GenTypeBasic(type, false) != "byte") {
- getter += MakeCamel(GenTypeBasic(type, false));
- }
- return getter;
- }
- }
-}
-
-// Returns the function name that is able to read a value of the given type.
-std::string GenGetterForLookupByKey(flatbuffers::FieldDef *key_field,
- const std::string &data_buffer,
- const char *num = nullptr) {
- auto type = key_field->value.type;
- auto dest_mask = DestinationMask(type, true);
- auto dest_cast = DestinationCast(type);
- auto getter = data_buffer + "." + FunctionStart('G') + "et";
- if (GenTypeBasic(type, false) != "byte") {
- getter += MakeCamel(GenTypeBasic(type, false));
- }
- getter = dest_cast + getter + "(" + GenOffsetGetter(key_field, num) + ")"
- + dest_mask;
- return getter;
-}
-
-// Direct mutation is only allowed for scalar fields.
-// Hence a setter method will only be generated for such fields.
-std::string GenSetter(const Type &type) {
- if (IsScalar(type.base_type)) {
- std::string setter =
- lang_.accessor_prefix + "bb." + FunctionStart('P') + "ut";
- if (GenTypeBasic(type, false) != "byte" &&
- type.base_type != BASE_TYPE_BOOL) {
- setter += MakeCamel(GenTypeBasic(type, false));
- }
- return setter;
- } else {
- return "";
- }
-}
-
-// Returns the method name for use with add/put calls.
-std::string GenMethod(const Type &type) {
- return IsScalar(type.base_type)
- ? MakeCamel(GenTypeBasic(type, false))
- : (IsStruct(type) ? "Struct" : "Offset");
-}
-
-// Recursively generate arguments for a constructor, to deal with nested
-// structs.
-void GenStructArgs(const StructDef &struct_def, std::string *code_ptr,
- const char *nameprefix) {
- std::string &code = *code_ptr;
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end();
- ++it) {
- auto &field = **it;
- if (IsStruct(field.value.type)) {
- // Generate arguments for a struct inside a struct. To ensure names
- // don't clash, and to make it obvious these arguments are constructing
- // a nested struct, prefix the name with the field name.
- GenStructArgs(*field.value.type.struct_def, code_ptr,
- (nameprefix + (field.name + "_")).c_str());
- } else {
- code += ", ";
- code += GenTypeBasic(DestinationType(field.value.type, false));
- code += " ";
- code += nameprefix;
- code += MakeCamel(field.name, lang_.first_camel_upper);
- }
- }
-}
-
-// Recusively generate struct construction statements of the form:
-// builder.putType(name);
-// and insert manual padding.
-void GenStructBody(const StructDef &struct_def, std::string *code_ptr,
- const char *nameprefix) {
- std::string &code = *code_ptr;
- code += " builder." + FunctionStart('P') + "rep(";
- code += NumToString(struct_def.minalign) + ", ";
- code += NumToString(struct_def.bytesize) + ");\n";
- for (auto it = struct_def.fields.vec.rbegin();
- it != struct_def.fields.vec.rend(); ++it) {
- auto &field = **it;
- if (field.padding) {
- code += " builder." + FunctionStart('P') + "ad(";
- code += NumToString(field.padding) + ");\n";
- }
- if (IsStruct(field.value.type)) {
- GenStructBody(*field.value.type.struct_def, code_ptr,
- (nameprefix + (field.name + "_")).c_str());
- } else {
- code += " builder." + FunctionStart('P') + "ut";
- code += GenMethod(field.value.type) + "(";
- code += SourceCast(field.value.type);
- auto argname = nameprefix + MakeCamel(field.name, lang_.first_camel_upper);
- code += argname;
- code += ");\n";
- }
- }
-}
-
-std::string GenByteBufferLength(const char *bb_name) {
- std::string bb_len = bb_name;
- if (lang_.language == IDLOptions::kCSharp) bb_len += ".Length";
- else bb_len += ".array().length";
- return bb_len;
-}
-
-std::string GenOffsetGetter(flatbuffers::FieldDef *key_field,
- const char *num = nullptr) {
- std::string key_offset = "";
- key_offset += lang_.accessor_prefix_static + "__offset(" +
- NumToString(key_field->value.offset) + ", ";
- if (num) {
- key_offset += num;
- key_offset += (lang_.language == IDLOptions::kCSharp ?
- ".Value, builder.DataBuffer)" : ", _bb)");
- } else {
- key_offset += GenByteBufferLength("bb");
- key_offset += " - tableOffset, bb)";
- }
- return key_offset;
-}
-
-std::string GenLookupKeyGetter(flatbuffers::FieldDef *key_field) {
- std::string key_getter = " ";
- key_getter += "int tableOffset = " + lang_.accessor_prefix_static;
- key_getter += "__indirect(vectorLocation + 4 * (start + middle)";
- key_getter += ", bb);\n ";
- if (key_field->value.type.base_type == BASE_TYPE_STRING) {
- key_getter += "int comp = " + lang_.accessor_prefix_static;
- key_getter += FunctionStart('C') + "ompareStrings(";
- key_getter += GenOffsetGetter(key_field);
- key_getter += ", byteKey, bb);\n";
- } else {
- auto get_val = GenGetterForLookupByKey(key_field, "bb");
- if (lang_.language == IDLOptions::kCSharp) {
- key_getter += "int comp = " + get_val + ".CompareTo(key);\n";
- } else {
- key_getter += GenTypeNameDest(key_field->value.type) + " val = ";
- key_getter += get_val + ";\n";
- key_getter += " int comp = val > key ? 1 : val < key ? -1 : 0;\n";
- }
- }
- return key_getter;
-}
-
-
-std::string GenKeyGetter(flatbuffers::FieldDef *key_field) {
- std::string key_getter = "";
- auto data_buffer = (lang_.language == IDLOptions::kCSharp) ?
- "builder.DataBuffer" : "_bb";
- if (key_field->value.type.base_type == BASE_TYPE_STRING) {
- if (lang_.language == IDLOptions::kJava)
- key_getter += " return ";
- key_getter += lang_.accessor_prefix_static;
- key_getter += FunctionStart('C') + "ompareStrings(";
- key_getter += GenOffsetGetter(key_field, "o1") + ", ";
- key_getter += GenOffsetGetter(key_field, "o2") + ", " + data_buffer + ")";
- if (lang_.language == IDLOptions::kJava)
- key_getter += ";";
- }
- else {
- auto field_getter = GenGetterForLookupByKey(key_field, data_buffer, "o1");
- if (lang_.language == IDLOptions::kCSharp) {
- key_getter += field_getter;
- field_getter = GenGetterForLookupByKey(key_field, data_buffer, "o2");
- key_getter += ".CompareTo(" + field_getter + ")";
- }
- else {
- key_getter += "\n " + GenTypeNameDest(key_field->value.type) + " val_1 = ";
- key_getter += field_getter + ";\n " + GenTypeNameDest(key_field->value.type);
- key_getter += " val_2 = ";
- field_getter = GenGetterForLookupByKey(key_field, data_buffer, "o2");
- key_getter += field_getter + ";\n";
- key_getter += " return val_1 > val_2 ? 1 : val_1 < val_2 ? -1 : 0;\n ";
- }
- }
- return key_getter;
-}
-
-void GenStruct(StructDef &struct_def, std::string *code_ptr) {
- if (struct_def.generated) return;
- std::string &code = *code_ptr;
-
- // Generate a struct accessor class, with methods of the form:
- // public type name() { return bb.getType(i + offset); }
- // or for tables of the form:
- // public type name() {
- // int o = __offset(offset); return o != 0 ? bb.getType(o + i) : default;
- // }
- GenComment(struct_def.doc_comment, code_ptr, &lang_.comment_config);
- code += "public ";
- if (lang_.language == IDLOptions::kCSharp &&
- struct_def.attributes.Lookup("csharp_partial")) {
- // generate a partial class for this C# struct/table
- code += "partial ";
- } else {
- code += lang_.unsubclassable_decl;
- }
- code += lang_.accessor_type + struct_def.name;
- if (lang_.language == IDLOptions::kCSharp) {
- code += " : IFlatbufferObject";
- code += lang_.open_curly;
- code += " private ";
- code += struct_def.fixed ? "Struct" : "Table";
- code += " __p;\n";
-
- if (lang_.language == IDLOptions::kCSharp) {
- code += " public ByteBuffer ByteBuffer { get { return __p.bb; } }\n";
- }
-
- } else {
- code += lang_.inheritance_marker;
- code += struct_def.fixed ? "Struct" : "Table";
- code += lang_.open_curly;
- }
- if (!struct_def.fixed) {
- // Generate a special accessor for the table that when used as the root
- // of a FlatBuffer
- std::string method_name = FunctionStart('G') + "etRootAs" + struct_def.name;
- std::string method_signature = " public static " + struct_def.name + " " +
- method_name;
-
- // create convenience method that doesn't require an existing object
- code += method_signature + "(ByteBuffer _bb) ";
- code += "{ return " + method_name + "(_bb, new " + struct_def.name+ "()); }\n";
-
- // create method that allows object reuse
- code += method_signature + "(ByteBuffer _bb, " + struct_def.name + " obj) { ";
- code += lang_.set_bb_byteorder;
- code += "return (obj.__assign(_bb." + FunctionStart('G') + "etInt(_bb.";
- code += lang_.get_bb_position;
- code += ") + _bb.";
- code += lang_.get_bb_position;
- code += ", _bb)); }\n";
- if (parser_.root_struct_def_ == &struct_def) {
- if (parser_.file_identifier_.length()) {
- // Check if a buffer has the identifier.
- code += " public static ";
- code += lang_.bool_type + struct_def.name;
- code += "BufferHasIdentifier(ByteBuffer _bb) { return ";
- code += lang_.accessor_prefix_static + "__has_identifier(_bb, \"";
- code += parser_.file_identifier_;
- code += "\"); }\n";
- }
- }
- }
- // Generate the __init method that sets the field in a pre-existing
- // accessor object. This is to allow object reuse.
- code += " public void __init(int _i, ByteBuffer _bb) ";
- code += "{ " + lang_.accessor_prefix + "bb_pos = _i; ";
- code += lang_.accessor_prefix + "bb = _bb; }\n";
- code += " public " + struct_def.name + " __assign(int _i, ByteBuffer _bb) ";
- code += "{ __init(_i, _bb); return this; }\n\n";
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end();
- ++it) {
- auto &field = **it;
- if (field.deprecated) continue;
- GenComment(field.doc_comment, code_ptr, &lang_.comment_config, " ");
- std::string type_name = GenTypeGet(field.value.type);
- std::string type_name_dest = GenTypeNameDest(field.value.type);
- std::string conditional_cast = "";
- std::string optional = "";
- if (lang_.language == IDLOptions::kCSharp &&
- !struct_def.fixed &&
- (field.value.type.base_type == BASE_TYPE_STRUCT ||
- field.value.type.base_type == BASE_TYPE_UNION ||
- (field.value.type.base_type == BASE_TYPE_VECTOR &&
- field.value.type.element == BASE_TYPE_STRUCT))) {
- optional = lang_.optional_suffix;
- conditional_cast = "(" + type_name_dest + optional + ")";
- }
- std::string dest_mask = DestinationMask(field.value.type, true);
- std::string dest_cast = DestinationCast(field.value.type);
- std::string src_cast = SourceCast(field.value.type);
- std::string method_start = " public " + type_name_dest + optional + " " +
- MakeCamel(field.name, lang_.first_camel_upper);
- std::string obj = lang_.language == IDLOptions::kCSharp
- ? "(new " + type_name + "())"
- : "obj";
-
- // Most field accessors need to retrieve and test the field offset first,
- // this is the prefix code for that:
- auto offset_prefix = " { int o = " + lang_.accessor_prefix + "__offset(" +
- NumToString(field.value.offset) +
- "); return o != 0 ? ";
- // Generate the accessors that don't do object reuse.
- if (field.value.type.base_type == BASE_TYPE_STRUCT) {
- // Calls the accessor that takes an accessor object with a new object.
- if (lang_.language != IDLOptions::kCSharp) {
- code += method_start + "() { return ";
- code += MakeCamel(field.name, lang_.first_camel_upper);
- code += "(new ";
- code += type_name + "()); }\n";
- }
- } else if (field.value.type.base_type == BASE_TYPE_VECTOR &&
- field.value.type.element == BASE_TYPE_STRUCT) {
- // Accessors for vectors of structs also take accessor objects, this
- // generates a variant without that argument.
- if (lang_.language != IDLOptions::kCSharp) {
- code += method_start + "(int j) { return ";
- code += MakeCamel(field.name, lang_.first_camel_upper);
- code += "(new " + type_name + "(), j); }\n";
- }
- } else if (field.value.type.base_type == BASE_TYPE_UNION) {
- if (lang_.language == IDLOptions::kCSharp) {
- // Union types in C# use generic Table-derived type for better type
- // safety.
- method_start += "<TTable>";
- type_name = type_name_dest;
- }
- }
- std::string getter = dest_cast + GenGetter(field.value.type);
- code += method_start;
- std::string default_cast = "";
- // only create default casts for c# scalars or vectors of scalars
- if (lang_.language == IDLOptions::kCSharp &&
- (IsScalar(field.value.type.base_type) ||
- (field.value.type.base_type == BASE_TYPE_VECTOR &&
- IsScalar(field.value.type.element)))) {
- // For scalars, default value will be returned by GetDefaultValue().
- // If the scalar is an enum, GetDefaultValue() returns an actual c# enum
- // that doesn't need to be casted. However, default values for enum
- // elements of vectors are integer literals ("0") and are still casted
- // for clarity.
- if (field.value.type.enum_def == nullptr ||
- field.value.type.base_type == BASE_TYPE_VECTOR) {
- default_cast = "(" + type_name_dest + ")";
- }
- }
- std::string member_suffix = "; ";
- if (IsScalar(field.value.type.base_type)) {
- code += lang_.getter_prefix;
- member_suffix += lang_.getter_suffix;
- if (struct_def.fixed) {
- code += " { return " + getter;
- code += "(" + lang_.accessor_prefix + "bb_pos + ";
- code += NumToString(field.value.offset) + ")";
- code += dest_mask;
- } else {
- code += offset_prefix + getter;
- code += "(o + " + lang_.accessor_prefix + "bb_pos)" + dest_mask;
- code += " : " + default_cast;
- code += GenDefaultValue(field.value);
- }
- } else {
- switch (field.value.type.base_type) {
- case BASE_TYPE_STRUCT:
- if (lang_.language != IDLOptions::kCSharp) {
- code += "(" + type_name + " obj" + ")";
- } else {
- code += lang_.getter_prefix;
- member_suffix += lang_.getter_suffix;
- }
- if (struct_def.fixed) {
- code += " { return " + obj + ".__assign(" + lang_.accessor_prefix;
- code += "bb_pos + " + NumToString(field.value.offset) + ", ";
- code += lang_.accessor_prefix + "bb)";
- } else {
- code += offset_prefix + conditional_cast;
- code += obj + ".__assign(";
- code += field.value.type.struct_def->fixed
- ? "o + " + lang_.accessor_prefix + "bb_pos"
- : lang_.accessor_prefix + "__indirect(o + " +
- lang_.accessor_prefix + "bb_pos)";
- code += ", " + lang_.accessor_prefix + "bb) : null";
- }
- break;
- case BASE_TYPE_STRING:
- code += lang_.getter_prefix;
- member_suffix += lang_.getter_suffix;
- code += offset_prefix + getter + "(o + " + lang_.accessor_prefix;
- code += "bb_pos) : null";
- break;
- case BASE_TYPE_VECTOR: {
- auto vectortype = field.value.type.VectorType();
- code += "(";
- if (vectortype.base_type == BASE_TYPE_STRUCT) {
- if (lang_.language != IDLOptions::kCSharp)
- code += type_name + " obj, ";
- getter = obj + ".__assign";
- }
- code += "int j)" + offset_prefix + conditional_cast + getter +"(";
- auto index = lang_.accessor_prefix + "__vector(o) + j * " +
- NumToString(InlineSize(vectortype));
- if (vectortype.base_type == BASE_TYPE_STRUCT) {
- code += vectortype.struct_def->fixed
- ? index
- : lang_.accessor_prefix + "__indirect(" + index + ")";
- code += ", " + lang_.accessor_prefix + "bb";
- } else {
- code += index;
- }
- code += ")" + dest_mask + " : ";
-
- code += field.value.type.element == BASE_TYPE_BOOL ? "false" :
- (IsScalar(field.value.type.element) ? default_cast + "0" : "null");
- break;
- }
- case BASE_TYPE_UNION:
- if (lang_.language == IDLOptions::kCSharp) {
- code += "() where TTable : struct, IFlatbufferObject";
- code += offset_prefix + "(TTable?)" + getter;
- code += "<TTable>(o) : null";
- } else {
- code += "(" + type_name + " obj)" + offset_prefix + getter;
- code += "(obj, o) : null";
- }
- break;
- default:
- assert(0);
- }
- }
- code += member_suffix;
- code += "}\n";
- if (field.value.type.base_type == BASE_TYPE_VECTOR) {
- code += " public int " + MakeCamel(field.name, lang_.first_camel_upper);
- code += "Length";
- code += lang_.getter_prefix;
- code += offset_prefix;
- code += lang_.accessor_prefix + "__vector_len(o) : 0; ";
- code += lang_.getter_suffix;
- code += "}\n";
- }
- // Generate a ByteBuffer accessor for strings & vectors of scalars.
- if ((field.value.type.base_type == BASE_TYPE_VECTOR &&
- IsScalar(field.value.type.VectorType().base_type)) ||
- field.value.type.base_type == BASE_TYPE_STRING) {
- switch (lang_.language) {
- case IDLOptions::kJava:
- code += " public ByteBuffer ";
- code += MakeCamel(field.name, lang_.first_camel_upper);
- code += "AsByteBuffer() { return ";
- code += lang_.accessor_prefix + "__vector_as_bytebuffer(";
- code += NumToString(field.value.offset) + ", ";
- code += NumToString(field.value.type.base_type == BASE_TYPE_STRING
- ? 1
- : InlineSize(field.value.type.VectorType()));
- code += "); }\n";
- break;
- case IDLOptions::kCSharp:
- code += " public ArraySegment<byte>? Get";
- code += MakeCamel(field.name, lang_.first_camel_upper);
- code += "Bytes() { return ";
- code += lang_.accessor_prefix + "__vector_as_arraysegment(";
- code += NumToString(field.value.offset);
- code += "); }\n";
- break;
- default:
- break;
- }
- }
- // generate object accessors if is nested_flatbuffer
- auto nested = field.attributes.Lookup("nested_flatbuffer");
- if (nested) {
- auto nested_qualified_name =
- parser_.namespaces_.back()->GetFullyQualifiedName(nested->constant);
- auto nested_type = parser_.structs_.Lookup(nested_qualified_name);
- auto nested_type_name = WrapInNameSpace(*nested_type);
- auto nestedMethodName = MakeCamel(field.name, lang_.first_camel_upper)
- + "As" + nested_type_name;
- auto getNestedMethodName = nestedMethodName;
- if (lang_.language == IDLOptions::kCSharp) {
- getNestedMethodName = "Get" + nestedMethodName;
- conditional_cast = "(" + nested_type_name + lang_.optional_suffix + ")";
- }
- if (lang_.language != IDLOptions::kCSharp) {
- code += " public " + nested_type_name + lang_.optional_suffix + " ";
- code += nestedMethodName + "() { return ";
- code += getNestedMethodName + "(new " + nested_type_name + "()); }\n";
- } else {
- obj = "(new " + nested_type_name + "())";
- }
- code += " public " + nested_type_name + lang_.optional_suffix + " ";
- code += getNestedMethodName + "(";
- if (lang_.language != IDLOptions::kCSharp)
- code += nested_type_name + " obj";
- code += ") { int o = " + lang_.accessor_prefix + "__offset(";
- code += NumToString(field.value.offset) +"); ";
- code += "return o != 0 ? " + conditional_cast + obj + ".__assign(";
- code += lang_.accessor_prefix;
- code += "__indirect(" + lang_.accessor_prefix + "__vector(o)), ";
- code += lang_.accessor_prefix + "bb) : null; }\n";
- }
- // Generate mutators for scalar fields or vectors of scalars.
- if (parser_.opts.mutable_buffer) {
- auto underlying_type = field.value.type.base_type == BASE_TYPE_VECTOR
- ? field.value.type.VectorType()
- : field.value.type;
- // Boolean parameters have to be explicitly converted to byte
- // representation.
- auto setter_parameter = underlying_type.base_type == BASE_TYPE_BOOL
- ? "(byte)(" + field.name + " ? 1 : 0)"
- : field.name;
- auto mutator_prefix = MakeCamel("mutate", lang_.first_camel_upper);
- // A vector mutator also needs the index of the vector element it should
- // mutate.
- auto mutator_params = (field.value.type.base_type == BASE_TYPE_VECTOR
- ? "(int j, "
- : "(") + GenTypeNameDest(underlying_type) + " " + field.name + ") { ";
- auto setter_index = field.value.type.base_type == BASE_TYPE_VECTOR
- ? lang_.accessor_prefix + "__vector(o) + j * " +
- NumToString(InlineSize(underlying_type))
- : (struct_def.fixed
- ? lang_.accessor_prefix + "bb_pos + " +
- NumToString(field.value.offset)
- : "o + " + lang_.accessor_prefix + "bb_pos");
- if (IsScalar(field.value.type.base_type) ||
- (field.value.type.base_type == BASE_TYPE_VECTOR &&
- IsScalar(field.value.type.VectorType().base_type))) {
- code += " public ";
- code += struct_def.fixed ? "void " : lang_.bool_type;
- code += mutator_prefix + MakeCamel(field.name, true);
- code += mutator_params;
- if (struct_def.fixed) {
- code += GenSetter(underlying_type) + "(" + setter_index + ", ";
- code += src_cast + setter_parameter + "); }\n";
- } else {
- code += "int o = " + lang_.accessor_prefix + "__offset(";
- code += NumToString(field.value.offset) + ");";
- code += " if (o != 0) { " + GenSetter(underlying_type);
- code += "(" + setter_index + ", " + src_cast + setter_parameter +
- "); return true; } else { return false; } }\n";
- }
- }
- }
- }
- code += "\n";
- flatbuffers::FieldDef *key_field = nullptr;
- if (struct_def.fixed) {
- // create a struct constructor function
- code += " public static " + GenOffsetType(struct_def) + " ";
- code += FunctionStart('C') + "reate";
- code += struct_def.name + "(FlatBufferBuilder builder";
- GenStructArgs(struct_def, code_ptr, "");
- code += ") {\n";
- GenStructBody(struct_def, code_ptr, "");
- code += " return ";
- code += GenOffsetConstruct(struct_def,
- "builder." + std::string(lang_.get_fbb_offset));
- code += ";\n }\n";
- } else {
- // Generate a method that creates a table in one go. This is only possible
- // when the table has no struct fields, since those have to be created
- // inline, and there's no way to do so in Java.
- bool has_no_struct_fields = true;
- int num_fields = 0;
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- auto &field = **it;
- if (field.deprecated) continue;
- if (IsStruct(field.value.type)) {
- has_no_struct_fields = false;
- } else {
- num_fields++;
- }
- }
- if (has_no_struct_fields && num_fields) {
- // Generate a table constructor of the form:
- // public static int createName(FlatBufferBuilder builder, args...)
- code += " public static " + GenOffsetType(struct_def) + " ";
- code += FunctionStart('C') + "reate" + struct_def.name;
- code += "(FlatBufferBuilder builder";
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- auto &field = **it;
- if (field.deprecated) continue;
- code += ",\n ";
- code += GenTypeBasic(DestinationType(field.value.type, false));
- code += " ";
- code += field.name;
- if (!IsScalar(field.value.type.base_type)) code += "Offset";
-
- // Java doesn't have defaults, which means this method must always
- // supply all arguments, and thus won't compile when fields are added.
- if (lang_.language != IDLOptions::kJava) {
- code += " = ";
- code += GenDefaultValueBasic(field.value);
- }
- }
- code += ") {\n builder.";
- code += FunctionStart('S') + "tartObject(";
- code += NumToString(struct_def.fields.vec.size()) + ");\n";
- for (size_t size = struct_def.sortbysize ? sizeof(largest_scalar_t) : 1;
- size;
- size /= 2) {
- for (auto it = struct_def.fields.vec.rbegin();
- it != struct_def.fields.vec.rend(); ++it) {
- auto &field = **it;
- if (!field.deprecated &&
- (!struct_def.sortbysize ||
- size == SizeOf(field.value.type.base_type))) {
- code += " " + struct_def.name + ".";
- code += FunctionStart('A') + "dd";
- code += MakeCamel(field.name) + "(builder, " + field.name;
- if (!IsScalar(field.value.type.base_type)) code += "Offset";
- code += ");\n";
- }
- }
- }
- code += " return " + struct_def.name + ".";
- code += FunctionStart('E') + "nd" + struct_def.name;
- code += "(builder);\n }\n\n";
- }
- // Generate a set of static methods that allow table construction,
- // of the form:
- // public static void addName(FlatBufferBuilder builder, short name)
- // { builder.addShort(id, name, default); }
- // Unlike the Create function, these always work.
- code += " public static void " + FunctionStart('S') + "tart";
- code += struct_def.name;
- code += "(FlatBufferBuilder builder) { builder.";
- code += FunctionStart('S') + "tartObject(";
- code += NumToString(struct_def.fields.vec.size()) + "); }\n";
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- auto &field = **it;
- if (field.deprecated) continue;
- if (field.key) key_field = &field;
- code += " public static void " + FunctionStart('A') + "dd";
- code += MakeCamel(field.name);
- code += "(FlatBufferBuilder builder, ";
- code += GenTypeBasic(DestinationType(field.value.type, false));
- auto argname = MakeCamel(field.name, false);
- if (!IsScalar(field.value.type.base_type)) argname += "Offset";
- code += " " + argname + ") { builder." + FunctionStart('A') + "dd";
- code += GenMethod(field.value.type) + "(";
- code += NumToString(it - struct_def.fields.vec.begin()) + ", ";
- code += SourceCastBasic(field.value.type);
- code += argname;
- if (!IsScalar(field.value.type.base_type) &&
- field.value.type.base_type != BASE_TYPE_UNION &&
- lang_.language == IDLOptions::kCSharp) {
- code += ".Value";
- }
- code += ", ";
- if (lang_.language == IDLOptions::kJava)
- code += SourceCastBasic( field.value.type );
- code += GenDefaultValue(field.value, false);
- code += "); }\n";
- if (field.value.type.base_type == BASE_TYPE_VECTOR) {
- auto vector_type = field.value.type.VectorType();
- auto alignment = InlineAlignment(vector_type);
- auto elem_size = InlineSize(vector_type);
- if (!IsStruct(vector_type)) {
- // Generate a method to create a vector from a Java array.
- code += " public static " + GenVectorOffsetType() + " ";
- code += FunctionStart('C') + "reate";
- code += MakeCamel(field.name);
- code += "Vector(FlatBufferBuilder builder, ";
- code += GenTypeBasic(vector_type) + "[] data) ";
- code += "{ builder." + FunctionStart('S') + "tartVector(";
- code += NumToString(elem_size);
- code += ", data." + FunctionStart('L') + "ength, ";
- code += NumToString(alignment);
- code += "); for (int i = data.";
- code += FunctionStart('L') + "ength - 1; i >= 0; i--) builder.";
- code += FunctionStart('A') + "dd";
- code += GenMethod(vector_type);
- code += "(";
- code += SourceCastBasic(vector_type, false);
- code += "data[i]";
- if (lang_.language == IDLOptions::kCSharp &&
- (vector_type.base_type == BASE_TYPE_STRUCT ||
- vector_type.base_type == BASE_TYPE_STRING))
- code += ".Value";
- code += "); return ";
- code += "builder." + FunctionStart('E') + "ndVector(); }\n";
- }
- // Generate a method to start a vector, data to be added manually after.
- code += " public static void " + FunctionStart('S') + "tart";
- code += MakeCamel(field.name);
- code += "Vector(FlatBufferBuilder builder, int numElems) ";
- code += "{ builder." + FunctionStart('S') + "tartVector(";
- code += NumToString(elem_size);
- code += ", numElems, " + NumToString(alignment);
- code += "); }\n";
- }
- }
- code += " public static " + GenOffsetType(struct_def) + " ";
- code += FunctionStart('E') + "nd" + struct_def.name;
- code += "(FlatBufferBuilder builder) {\n int o = builder.";
- code += FunctionStart('E') + "ndObject();\n";
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end();
- ++it) {
- auto &field = **it;
- if (!field.deprecated && field.required) {
- code += " builder." + FunctionStart('R') + "equired(o, ";
- code += NumToString(field.value.offset);
- code += "); // " + field.name + "\n";
- }
- }
- code += " return " + GenOffsetConstruct(struct_def, "o") + ";\n }\n";
- if (parser_.root_struct_def_ == &struct_def) {
- code += " public static void ";
- code += FunctionStart('F') + "inish" + struct_def.name;
- code += "Buffer(FlatBufferBuilder builder, " + GenOffsetType(struct_def);
- code += " offset) {";
- code += " builder." + FunctionStart('F') + "inish(offset";
- if (lang_.language == IDLOptions::kCSharp) {
- code += ".Value";
- }
-
- if (parser_.file_identifier_.length())
- code += ", \"" + parser_.file_identifier_ + "\"";
- code += "); }\n";
- }
- }
- // Only generate key compare function for table,
- // because `key_field` is not set for struct
- if (struct_def.has_key && !struct_def.fixed) {
- if (lang_.language == IDLOptions::kJava) {
- code += "\n @Override\n protected int keysCompare(";
- code += "Integer o1, Integer o2, ByteBuffer _bb) {";
- code += GenKeyGetter(key_field);
- code += " }\n";
- }
- else {
- code += "\n public static VectorOffset ";
- code += "CreateMySortedVectorOfTables(FlatBufferBuilder builder, ";
- code += "Offset<" + struct_def.name + ">";
- code += "[] offsets) {\n";
- code += " Array.Sort(offsets, (Offset<" + struct_def.name +
- "> o1, Offset<" + struct_def.name + "> o2) => " + GenKeyGetter(key_field);
- code += ");\n";
- code += " return builder.CreateVectorOfTables(offsets);\n }\n";
- }
-
- code += "\n public static " + struct_def.name + lang_.optional_suffix;
- code += " " + FunctionStart('L') + "ookupByKey(" + GenVectorOffsetType();
- code += " vectorOffset, " + GenTypeNameDest(key_field->value.type);
- code += " key, ByteBuffer bb) {\n";
- if (key_field->value.type.base_type == BASE_TYPE_STRING) {
- code += " byte[] byteKey = ";
- if (lang_.language == IDLOptions::kJava)
- code += "key.getBytes(Table.UTF8_CHARSET.get());\n";
- else
- code += "System.Text.Encoding.UTF8.GetBytes(key);\n";
- }
- code += " int vectorLocation = " + GenByteBufferLength("bb");
- code += " - vectorOffset";
- if (lang_.language == IDLOptions::kCSharp) code += ".Value";
- code += ";\n int span = ";
- code += "bb." + FunctionStart('G') + "etInt(vectorLocation);\n";
- code += " int start = 0;\n";
- code += " vectorLocation += 4;\n";
- code += " while (span != 0) {\n";
- code += " int middle = span / 2;\n";
- code += GenLookupKeyGetter(key_field);
- code += " if (comp > 0) {\n";
- code += " span = middle;\n";
- code += " } else if (comp < 0) {\n";
- code += " middle++;\n";
- code += " start += middle;\n";
- code += " span -= middle;\n";
- code += " } else {\n";
- code += " return new " + struct_def.name;
- code += "().__assign(tableOffset, bb);\n";
- code += " }\n }\n";
- code += " return null;\n";
- code += " }\n";
- }
- code += "}";
- // Java does not need the closing semi-colon on class definitions.
- code += (lang_.language != IDLOptions::kJava) ? ";" : "";
- code += "\n\n";
-}
- const LanguageParameters& lang_;
- // This tracks the current namespace used to determine if a type need to be prefixed by its namespace
- const Namespace *cur_name_space_;
-};
-} // namespace general
-
-bool GenerateGeneral(const Parser &parser, const std::string &path,
- const std::string &file_name) {
- general::GeneralGenerator generator(parser, path, file_name);
- return generator.generate();
-}
-
-std::string GeneralMakeRule(const Parser &parser, const std::string &path,
- const std::string &file_name) {
- assert(parser.opts.lang <= IDLOptions::kMAX);
- const auto &lang = GetLangParams(parser.opts.lang);
-
- std::string make_rule;
-
- for (auto it = parser.enums_.vec.begin(); it != parser.enums_.vec.end();
- ++it) {
- auto &enum_def = **it;
- if (make_rule != "") make_rule += " ";
- std::string directory =
- BaseGenerator::NamespaceDir(parser, path, *enum_def.defined_namespace);
- make_rule += directory + enum_def.name + lang.file_extension;
- }
-
- for (auto it = parser.structs_.vec.begin(); it != parser.structs_.vec.end();
- ++it) {
- auto &struct_def = **it;
- if (make_rule != "") make_rule += " ";
- std::string directory =
- BaseGenerator::NamespaceDir(parser, path,
- *struct_def.defined_namespace);
- make_rule += directory + struct_def.name + lang.file_extension;
- }
-
- make_rule += ": ";
- auto included_files = parser.GetIncludedFilesRecursive(file_name);
- for (auto it = included_files.begin(); it != included_files.end(); ++it) {
- make_rule += " " + *it;
- }
- return make_rule;
-}
-
-std::string BinaryFileName(const Parser &parser,
- const std::string &path,
- const std::string &file_name) {
- auto ext = parser.file_extension_.length() ? parser.file_extension_ : "bin";
- return path + file_name + "." + ext;
-}
-
-bool GenerateBinary(const Parser &parser,
- const std::string &path,
- const std::string &file_name) {
- return !parser.builder_.GetSize() ||
- flatbuffers::SaveFile(
- BinaryFileName(parser, path, file_name).c_str(),
- reinterpret_cast<char *>(parser.builder_.GetBufferPointer()),
- parser.builder_.GetSize(),
- true);
-}
-
-std::string BinaryMakeRule(const Parser &parser,
- const std::string &path,
- const std::string &file_name) {
- if (!parser.builder_.GetSize()) return "";
- std::string filebase = flatbuffers::StripPath(
- flatbuffers::StripExtension(file_name));
- std::string make_rule = BinaryFileName(parser, path, filebase) + ": " +
- file_name;
- auto included_files = parser.GetIncludedFilesRecursive(
- parser.root_struct_def_->file);
- for (auto it = included_files.begin();
- it != included_files.end(); ++it) {
- make_rule += " " + *it;
- }
- return make_rule;
-}
-
-} // namespace flatbuffers
diff --git a/third_party/flatbuffers/src/idl_gen_go.cpp b/third_party/flatbuffers/src/idl_gen_go.cpp
deleted file mode 100644
index 58a60aa..0000000
--- a/third_party/flatbuffers/src/idl_gen_go.cpp
+++ /dev/null
@@ -1,809 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// independent from idl_parser, since this code is not needed for most clients
-
-#include <string>
-#include <sstream>
-
-#include "flatbuffers/flatbuffers.h"
-#include "flatbuffers/idl.h"
-#include "flatbuffers/util.h"
-#include "flatbuffers/code_generators.h"
-
-#ifdef _WIN32
-#include <direct.h>
-#define PATH_SEPARATOR "\\"
-#define mkdir(n, m) _mkdir(n)
-#else
-#include <sys/stat.h>
-#define PATH_SEPARATOR "/"
-#endif
-
-namespace flatbuffers {
-namespace go {
-
-// see https://golang.org/ref/spec#Keywords
-static const char *g_golang_keywords[] = {
- "break", "default", "func", "interface", "select", "case", "defer", "go",
- "map", "struct", "chan", "else", "goto", "package", "switch", "const",
- "fallthrough", "if", "range", "type", "continue", "for", "import", "return", "var",
-};
-
-static std::string GenGetter(const Type &type);
-static std::string GenMethod(const FieldDef &field);
-static void GenStructBuilder(const StructDef &struct_def,
- std::string *code_ptr);
-static void GenReceiver(const StructDef &struct_def, std::string *code_ptr);
-static std::string GenTypeBasic(const Type &type);
-static std::string GenTypeGet(const Type &type);
-static std::string TypeName(const FieldDef &field);
-static std::string GoIdentity(const std::string& name) {
- for (size_t i=0; i<sizeof(g_golang_keywords)/sizeof(g_golang_keywords[0]); i++) {
- if (name == g_golang_keywords[i]) {
- return MakeCamel(name + "_", false);
- }
- }
-
- return MakeCamel(name, false);
-}
-
-
-// Most field accessors need to retrieve and test the field offset first,
-// this is the prefix code for that.
-std::string OffsetPrefix(const FieldDef &field) {
- return "{\n\to := flatbuffers.UOffsetT(rcv._tab.Offset(" +
- NumToString(field.value.offset) +
- "))\n\tif o != 0 {\n";
-}
-
-// Begin a class declaration.
-static void BeginClass(const StructDef &struct_def, std::string *code_ptr) {
- std::string &code = *code_ptr;
-
- code += "type " + struct_def.name + " struct {\n\t";
-
- // _ is reserved in flatbuffers field names, so no chance of name conflict:
- code += "_tab ";
- code += struct_def.fixed ? "flatbuffers.Struct" : "flatbuffers.Table";
- code += "\n}\n\n";
-}
-
-// Begin enum code with a class declaration.
-static void BeginEnum(std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "const (\n";
-}
-
-// A single enum member.
-static void EnumMember(const EnumDef &enum_def, const EnumVal ev,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "\t";
- code += enum_def.name;
- code += ev.name;
- code += " = ";
- code += NumToString(ev.value) + "\n";
-}
-
-// End enum code.
-static void EndEnum(std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += ")\n\n";
-}
-
-// Begin enum name code.
-static void BeginEnumNames(const EnumDef &enum_def, std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "var EnumNames";
- code += enum_def.name;
- code += " = map[int]string{\n";
-}
-
-// A single enum name member.
-static void EnumNameMember(const EnumDef &enum_def, const EnumVal ev,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "\t";
- code += enum_def.name;
- code += ev.name;
- code += ":\"";
- code += ev.name;
- code += "\",\n";
-}
-
-// End enum name code.
-static void EndEnumNames(std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "}\n\n";
-}
-
-// Initialize a new struct or table from existing data.
-static void NewRootTypeFromBuffer(const StructDef &struct_def,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
-
- code += "func GetRootAs";
- code += struct_def.name;
- code += "(buf []byte, offset flatbuffers.UOffsetT) ";
- code += "*" + struct_def.name + "";
- code += " {\n";
- code += "\tn := flatbuffers.GetUOffsetT(buf[offset:])\n";
- code += "\tx := &" + struct_def.name + "{}\n";
- code += "\tx.Init(buf, n+offset)\n";
- code += "\treturn x\n";
- code += "}\n\n";
-}
-
-// Initialize an existing object with other data, to avoid an allocation.
-static void InitializeExisting(const StructDef &struct_def,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
-
- GenReceiver(struct_def, code_ptr);
- code += " Init(buf []byte, i flatbuffers.UOffsetT) ";
- code += "{\n";
- code += "\trcv._tab.Bytes = buf\n";
- code += "\trcv._tab.Pos = i\n";
- code += "}\n\n";
-}
-
-// Implement the table accessor
-static void GenTableAccessor(const StructDef &struct_def,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
-
- GenReceiver(struct_def, code_ptr);
- code += " Table() flatbuffers.Table ";
- code += "{\n";
-
- if (struct_def.fixed) {
- code += "\treturn rcv._tab.Table\n";
- } else {
- code += "\treturn rcv._tab\n";
- }
- code += "}\n\n";
-}
-
-// Get the length of a vector.
-static void GetVectorLen(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
-
- GenReceiver(struct_def, code_ptr);
- code += " " + MakeCamel(field.name) + "Length(";
- code += ") int " + OffsetPrefix(field);
- code += "\t\treturn rcv._tab.VectorLen(o)\n\t}\n";
- code += "\treturn 0\n}\n\n";
-}
-
-// Get a [ubyte] vector as a byte slice.
-static void GetUByteSlice(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
-
- GenReceiver(struct_def, code_ptr);
- code += " " + MakeCamel(field.name) + "Bytes(";
- code += ") []byte " + OffsetPrefix(field);
- code += "\t\treturn rcv._tab.ByteVector(o + rcv._tab.Pos)\n\t}\n";
- code += "\treturn nil\n}\n\n";
-}
-
-// Get the value of a struct's scalar.
-static void GetScalarFieldOfStruct(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- std::string getter = GenGetter(field.value.type);
- GenReceiver(struct_def, code_ptr);
- code += " " + MakeCamel(field.name);
- code += "() " + TypeName(field) + " {\n";
- code +="\treturn " + getter;
- code += "(rcv._tab.Pos + flatbuffers.UOffsetT(";
- code += NumToString(field.value.offset) + "))\n}\n";
-}
-
-// Get the value of a table's scalar.
-static void GetScalarFieldOfTable(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- std::string getter = GenGetter(field.value.type);
- GenReceiver(struct_def, code_ptr);
- code += " " + MakeCamel(field.name);
- code += "() " + TypeName(field) + " ";
- code += OffsetPrefix(field) + "\t\treturn " + getter;
- code += "(o + rcv._tab.Pos)\n\t}\n";
- code += "\treturn " + field.value.constant + "\n";
- code += "}\n\n";
-}
-
-// Get a struct by initializing an existing struct.
-// Specific to Struct.
-static void GetStructFieldOfStruct(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- GenReceiver(struct_def, code_ptr);
- code += " " + MakeCamel(field.name);
- code += "(obj *" + TypeName(field);
- code += ") *" + TypeName(field);
- code += " {\n";
- code += "\tif obj == nil {\n";
- code += "\t\tobj = new(" + TypeName(field) + ")\n";
- code += "\t}\n";
- code += "\tobj.Init(rcv._tab.Bytes, rcv._tab.Pos+";
- code += NumToString(field.value.offset) + ")";
- code += "\n\treturn obj\n";
- code += "}\n";
-}
-
-// Get a struct by initializing an existing struct.
-// Specific to Table.
-static void GetStructFieldOfTable(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- GenReceiver(struct_def, code_ptr);
- code += " " + MakeCamel(field.name);
- code += "(obj *";
- code += TypeName(field);
- code += ") *" + TypeName(field) + " " + OffsetPrefix(field);
- if (field.value.type.struct_def->fixed) {
- code += "\t\tx := o + rcv._tab.Pos\n";
- } else {
- code += "\t\tx := rcv._tab.Indirect(o + rcv._tab.Pos)\n";
- }
- code += "\t\tif obj == nil {\n";
- code += "\t\t\tobj = new(" + TypeName(field) + ")\n";
- code += "\t\t}\n";
- code += "\t\tobj.Init(rcv._tab.Bytes, x)\n";
- code += "\t\treturn obj\n\t}\n\treturn nil\n";
- code += "}\n\n";
-}
-
-// Get the value of a string.
-static void GetStringField(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- GenReceiver(struct_def, code_ptr);
- code += " " + MakeCamel(field.name);
- code += "() " + TypeName(field) + " ";
- code += OffsetPrefix(field) + "\t\treturn " + GenGetter(field.value.type);
- code += "(o + rcv._tab.Pos)\n\t}\n\treturn nil\n";
- code += "}\n\n";
-}
-
-// Get the value of a union from an object.
-static void GetUnionField(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- GenReceiver(struct_def, code_ptr);
- code += " " + MakeCamel(field.name) + "(";
- code += "obj " + TypeName(field) + ") bool ";
- code += OffsetPrefix(field);
- code += "\t\t" + GenGetter(field.value.type);
- code += "(obj, o)\n\t\treturn true\n\t}\n";
- code += "\treturn false\n";
- code += "}\n\n";
-}
-
-// Get the value of a vector's struct member.
-static void GetMemberOfVectorOfStruct(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- auto vectortype = field.value.type.VectorType();
-
- GenReceiver(struct_def, code_ptr);
- code += " " + MakeCamel(field.name);
- code += "(obj *" + TypeName(field);
- code += ", j int) bool " + OffsetPrefix(field);
- code += "\t\tx := rcv._tab.Vector(o)\n";
- code += "\t\tx += flatbuffers.UOffsetT(j) * ";
- code += NumToString(InlineSize(vectortype)) + "\n";
- if (!(vectortype.struct_def->fixed)) {
- code += "\t\tx = rcv._tab.Indirect(x)\n";
- }
- code += "\t\tobj.Init(rcv._tab.Bytes, x)\n";
- code += "\t\treturn true\n\t}\n";
- code += "\treturn false\n";
- code += "}\n\n";
-}
-
-// Get the value of a vector's non-struct member. Uses a named return
-// argument to conveniently set the zero value for the result.
-static void GetMemberOfVectorOfNonStruct(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- auto vectortype = field.value.type.VectorType();
-
- GenReceiver(struct_def, code_ptr);
- code += " " + MakeCamel(field.name);
- code += "(j int) " + TypeName(field) + " ";
- code += OffsetPrefix(field);
- code += "\t\ta := rcv._tab.Vector(o)\n";
- code += "\t\treturn " + GenGetter(field.value.type) + "(";
- code += "a + flatbuffers.UOffsetT(j*";
- code += NumToString(InlineSize(vectortype)) + "))\n";
- code += "\t}\n";
- if (vectortype.base_type == BASE_TYPE_STRING) {
- code += "\treturn nil\n";
- } else {
- code += "\treturn 0\n";
- }
- code += "}\n\n";
-}
-
-// Begin the creator function signature.
-static void BeginBuilderArgs(const StructDef &struct_def,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
-
- if (code.substr(code.length() - 2) != "\n\n") {
- // a previous mutate has not put an extra new line
- code += "\n";
- }
- code += "func Create" + struct_def.name;
- code += "(builder *flatbuffers.Builder";
-}
-
-// Recursively generate arguments for a constructor, to deal with nested
-// structs.
-static void StructBuilderArgs(const StructDef &struct_def,
- const char *nameprefix,
- std::string *code_ptr) {
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end();
- ++it) {
- auto &field = **it;
- if (IsStruct(field.value.type)) {
- // Generate arguments for a struct inside a struct. To ensure names
- // don't clash, and to make it obvious these arguments are constructing
- // a nested struct, prefix the name with the field name.
- StructBuilderArgs(*field.value.type.struct_def,
- (nameprefix + (field.name + "_")).c_str(),
- code_ptr);
- } else {
- std::string &code = *code_ptr;
- code += (std::string)", " + nameprefix;
- code += GoIdentity(field.name);
- code += " " + GenTypeBasic(field.value.type);
- }
- }
-}
-
-// End the creator function signature.
-static void EndBuilderArgs(std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += ") flatbuffers.UOffsetT {\n";
-}
-
-// Recursively generate struct construction statements and instert manual
-// padding.
-static void StructBuilderBody(const StructDef &struct_def,
- const char *nameprefix,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "\tbuilder.Prep(" + NumToString(struct_def.minalign) + ", ";
- code += NumToString(struct_def.bytesize) + ")\n";
- for (auto it = struct_def.fields.vec.rbegin();
- it != struct_def.fields.vec.rend();
- ++it) {
- auto &field = **it;
- if (field.padding)
- code += "\tbuilder.Pad(" + NumToString(field.padding) + ")\n";
- if (IsStruct(field.value.type)) {
- StructBuilderBody(*field.value.type.struct_def,
- (nameprefix + (field.name + "_")).c_str(),
- code_ptr);
- } else {
- code += "\tbuilder.Prepend" + GenMethod(field) + "(";
- code += nameprefix + GoIdentity(field.name) + ")\n";
- }
- }
-}
-
-static void EndBuilderBody(std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "\treturn builder.Offset()\n";
- code += "}\n";
-}
-
-// Get the value of a table's starting offset.
-static void GetStartOfTable(const StructDef &struct_def,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "func " + struct_def.name + "Start";
- code += "(builder *flatbuffers.Builder) {\n";
- code += "\tbuilder.StartObject(";
- code += NumToString(struct_def.fields.vec.size());
- code += ")\n}\n";
-}
-
-// Set the value of a table's field.
-static void BuildFieldOfTable(const StructDef &struct_def,
- const FieldDef &field,
- const size_t offset,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "func " + struct_def.name + "Add" + MakeCamel(field.name);
- code += "(builder *flatbuffers.Builder, ";
- code += GoIdentity(field.name) + " ";
- if (!IsScalar(field.value.type.base_type) && (!struct_def.fixed)) {
- code += "flatbuffers.UOffsetT";
- } else {
- code += GenTypeBasic(field.value.type);
- }
- code += ") {\n";
- code += "\tbuilder.Prepend";
- code += GenMethod(field) + "Slot(";
- code += NumToString(offset) + ", ";
- if (!IsScalar(field.value.type.base_type) && (!struct_def.fixed)) {
- code += "flatbuffers.UOffsetT";
- code += "(";
- code += GoIdentity(field.name) + ")";
- } else {
- code += GoIdentity(field.name);
- }
- code += ", " + field.value.constant;
- code += ")\n}\n";
-}
-
-// Set the value of one of the members of a table's vector.
-static void BuildVectorOfTable(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "func " + struct_def.name + "Start";
- code += MakeCamel(field.name);
- code += "Vector(builder *flatbuffers.Builder, numElems int) ";
- code += "flatbuffers.UOffsetT {\n\treturn builder.StartVector(";
- auto vector_type = field.value.type.VectorType();
- auto alignment = InlineAlignment(vector_type);
- auto elem_size = InlineSize(vector_type);
- code += NumToString(elem_size);
- code += ", numElems, " + NumToString(alignment);
- code += ")\n}\n";
-}
-
-// Get the offset of the end of a table.
-static void GetEndOffsetOnTable(const StructDef &struct_def,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "func " + struct_def.name + "End";
- code += "(builder *flatbuffers.Builder) flatbuffers.UOffsetT ";
- code += "{\n\treturn builder.EndObject()\n}\n";
-}
-
-// Generate the receiver for function signatures.
-static void GenReceiver(const StructDef &struct_def, std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "func (rcv *" + struct_def.name + ")";
-}
-
-// Generate a struct field getter, conditioned on its child type(s).
-static void GenStructAccessor(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- GenComment(field.doc_comment, code_ptr, nullptr, "");
- if (IsScalar(field.value.type.base_type)) {
- if (struct_def.fixed) {
- GetScalarFieldOfStruct(struct_def, field, code_ptr);
- } else {
- GetScalarFieldOfTable(struct_def, field, code_ptr);
- }
- } else {
- switch (field.value.type.base_type) {
- case BASE_TYPE_STRUCT:
- if (struct_def.fixed) {
- GetStructFieldOfStruct(struct_def, field, code_ptr);
- } else {
- GetStructFieldOfTable(struct_def, field, code_ptr);
- }
- break;
- case BASE_TYPE_STRING:
- GetStringField(struct_def, field, code_ptr);
- break;
- case BASE_TYPE_VECTOR: {
- auto vectortype = field.value.type.VectorType();
- if (vectortype.base_type == BASE_TYPE_STRUCT) {
- GetMemberOfVectorOfStruct(struct_def, field, code_ptr);
- } else {
- GetMemberOfVectorOfNonStruct(struct_def, field, code_ptr);
- }
- break;
- }
- case BASE_TYPE_UNION:
- GetUnionField(struct_def, field, code_ptr);
- break;
- default:
- assert(0);
- }
- }
- if (field.value.type.base_type == BASE_TYPE_VECTOR) {
- GetVectorLen(struct_def, field, code_ptr);
- if (field.value.type.element == BASE_TYPE_UCHAR) {
- GetUByteSlice(struct_def, field, code_ptr);
- }
- }
-}
-
-// Mutate the value of a struct's scalar.
-static void MutateScalarFieldOfStruct(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- std::string type = MakeCamel(GenTypeBasic(field.value.type));
- std::string setter = "rcv._tab.Mutate" + type;
- GenReceiver(struct_def, code_ptr);
- code += " Mutate" + MakeCamel(field.name);
- code += "(n " + TypeName(field) + ") bool {\n\treturn " + setter;
- code += "(rcv._tab.Pos+flatbuffers.UOffsetT(";
- code += NumToString(field.value.offset) + "), n)\n}\n\n";
-}
-
-// Mutate the value of a table's scalar.
-static void MutateScalarFieldOfTable(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- std::string type = MakeCamel(GenTypeBasic(field.value.type));
- std::string setter = "rcv._tab.Mutate" + type + "Slot";
- GenReceiver(struct_def, code_ptr);
- code += " Mutate" + MakeCamel(field.name);
- code += "(n " + TypeName(field) + ") bool {\n\treturn ";
- code += setter + "(" + NumToString(field.value.offset) + ", n)\n";
- code += "}\n\n";
-}
-
-// Generate a struct field setter, conditioned on its child type(s).
-static void GenStructMutator(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- GenComment(field.doc_comment, code_ptr, nullptr, "");
- if (IsScalar(field.value.type.base_type)) {
- if (struct_def.fixed) {
- MutateScalarFieldOfStruct(struct_def, field, code_ptr);
- } else {
- MutateScalarFieldOfTable(struct_def, field, code_ptr);
- }
- }
-}
-
-// Generate table constructors, conditioned on its members' types.
-static void GenTableBuilders(const StructDef &struct_def,
- std::string *code_ptr) {
- GetStartOfTable(struct_def, code_ptr);
-
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end();
- ++it) {
- auto &field = **it;
- if (field.deprecated) continue;
-
- auto offset = it - struct_def.fields.vec.begin();
- BuildFieldOfTable(struct_def, field, offset, code_ptr);
- if (field.value.type.base_type == BASE_TYPE_VECTOR) {
- BuildVectorOfTable(struct_def, field, code_ptr);
- }
- }
-
- GetEndOffsetOnTable(struct_def, code_ptr);
-}
-
-// Generate struct or table methods.
-static void GenStruct(const StructDef &struct_def,
- std::string *code_ptr) {
- if (struct_def.generated) return;
-
- GenComment(struct_def.doc_comment, code_ptr, nullptr);
- BeginClass(struct_def, code_ptr);
- if (!struct_def.fixed) {
- // Generate a special accessor for the table that has been declared as
- // the root type.
- NewRootTypeFromBuffer(struct_def, code_ptr);
- }
- // Generate the Init method that sets the field in a pre-existing
- // accessor object. This is to allow object reuse.
- InitializeExisting(struct_def, code_ptr);
- // Generate _tab accessor
- GenTableAccessor(struct_def, code_ptr);
-
- // Generate struct fields accessors
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end();
- ++it) {
- auto &field = **it;
- if (field.deprecated) continue;
-
- GenStructAccessor(struct_def, field, code_ptr);
- GenStructMutator(struct_def, field, code_ptr);
- }
-
- // Generate builders
- if (struct_def.fixed) {
- // create a struct constructor function
- GenStructBuilder(struct_def, code_ptr);
- } else {
- // Create a set of functions that allow table construction.
- GenTableBuilders(struct_def, code_ptr);
- }
-}
-
-// Generate enum declarations.
-static void GenEnum(const EnumDef &enum_def, std::string *code_ptr) {
- if (enum_def.generated) return;
-
- GenComment(enum_def.doc_comment, code_ptr, nullptr);
- BeginEnum(code_ptr);
- for (auto it = enum_def.vals.vec.begin();
- it != enum_def.vals.vec.end();
- ++it) {
- auto &ev = **it;
- GenComment(ev.doc_comment, code_ptr, nullptr, "\t");
- EnumMember(enum_def, ev, code_ptr);
- }
- EndEnum(code_ptr);
-
- BeginEnumNames(enum_def, code_ptr);
- for (auto it = enum_def.vals.vec.begin();
- it != enum_def.vals.vec.end();
- ++it) {
- auto &ev = **it;
- EnumNameMember(enum_def, ev, code_ptr);
- }
- EndEnumNames(code_ptr);
-}
-
-// Returns the function name that is able to read a value of the given type.
-static std::string GenGetter(const Type &type) {
- switch (type.base_type) {
- case BASE_TYPE_STRING: return "rcv._tab.ByteVector";
- case BASE_TYPE_UNION: return "rcv._tab.Union";
- case BASE_TYPE_VECTOR: return GenGetter(type.VectorType());
- default:
- return "rcv._tab.Get" + MakeCamel(GenTypeGet(type));
- }
-}
-
-// Returns the method name for use with add/put calls.
-static std::string GenMethod(const FieldDef &field) {
- return IsScalar(field.value.type.base_type)
- ? MakeCamel(GenTypeBasic(field.value.type))
- : (IsStruct(field.value.type) ? "Struct" : "UOffsetT");
-}
-
-static std::string GenTypeBasic(const Type &type) {
- static const char *ctypename[] = {
- #define FLATBUFFERS_TD(ENUM, IDLTYPE, CTYPE, JTYPE, GTYPE, NTYPE, PTYPE) \
- #GTYPE,
- FLATBUFFERS_GEN_TYPES(FLATBUFFERS_TD)
- #undef FLATBUFFERS_TD
- };
- return ctypename[type.base_type];
-}
-
-static std::string GenTypePointer(const Type &type) {
- switch (type.base_type) {
- case BASE_TYPE_STRING:
- return "[]byte";
- case BASE_TYPE_VECTOR:
- return GenTypeGet(type.VectorType());
- case BASE_TYPE_STRUCT:
- return type.struct_def->name;
- case BASE_TYPE_UNION:
- // fall through
- default:
- return "*flatbuffers.Table";
- }
-}
-
-static std::string GenTypeGet(const Type &type) {
- return IsScalar(type.base_type)
- ? GenTypeBasic(type)
- : GenTypePointer(type);
-}
-
-static std::string TypeName(const FieldDef &field) {
- return GenTypeGet(field.value.type);
-}
-
-// Create a struct with a builder and the struct's arguments.
-static void GenStructBuilder(const StructDef &struct_def,
- std::string *code_ptr) {
- BeginBuilderArgs(struct_def, code_ptr);
- StructBuilderArgs(struct_def, "", code_ptr);
- EndBuilderArgs(code_ptr);
-
- StructBuilderBody(struct_def, "", code_ptr);
- EndBuilderBody(code_ptr);
-}
-
-class GoGenerator : public BaseGenerator {
- public:
- GoGenerator(const Parser &parser, const std::string &path,
- const std::string &file_name, const std::string &go_namespace)
- : BaseGenerator(parser, path, file_name, "" /* not used*/, "" /* not used */) {
- std::istringstream iss(go_namespace);
- std::string component;
- while (std::getline(iss, component, '.')) {
- go_namespace_.components.push_back(component);
- }
- }
-
- bool generate() {
- for (auto it = parser_.enums_.vec.begin(); it != parser_.enums_.vec.end();
- ++it) {
- std::string enumcode;
- go::GenEnum(**it, &enumcode);
- if (!SaveType(**it, enumcode, false)) return false;
- }
-
- for (auto it = parser_.structs_.vec.begin();
- it != parser_.structs_.vec.end(); ++it) {
- std::string declcode;
- go::GenStruct(**it, &declcode);
- if (!SaveType(**it, declcode, true)) return false;
- }
-
- return true;
- }
-
- private:
- // Begin by declaring namespace and imports.
- void BeginFile(const std::string name_space_name, const bool needs_imports,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- code = code + "// " + FlatBuffersGeneratedWarning();
- code += "package " + name_space_name + "\n\n";
- if (needs_imports) {
- code += "import (\n";
- code += "\tflatbuffers \"github.com/google/flatbuffers/go\"\n";
- code += ")\n\n";
- }
- }
-
- // Save out the generated code for a Go Table type.
- bool SaveType(const Definition &def, const std::string &classcode,
- bool needs_imports) {
- if (!classcode.length()) return true;
-
- Namespace& ns = go_namespace_.components.empty() ? *def.defined_namespace : go_namespace_;
- std::string code = "";
- BeginFile(LastNamespacePart(ns), needs_imports, &code);
- code += classcode;
- std::string filename =
- NamespaceDir(ns) + def.name + ".go";
- return SaveFile(filename.c_str(), code, false);
- }
-
- Namespace go_namespace_;
-};
-} // namespace go
-
-bool GenerateGo(const Parser &parser, const std::string &path,
- const std::string &file_name) {
- go::GoGenerator generator(parser, path, file_name, parser.opts.go_namespace);
- return generator.generate();
-}
-
-} // namespace flatbuffers
diff --git a/third_party/flatbuffers/src/idl_gen_grpc.cpp b/third_party/flatbuffers/src/idl_gen_grpc.cpp
deleted file mode 100644
index 2daeac9..0000000
--- a/third_party/flatbuffers/src/idl_gen_grpc.cpp
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// independent from idl_parser, since this code is not needed for most clients
-
-#include "flatbuffers/flatbuffers.h"
-#include "flatbuffers/idl.h"
-#include "flatbuffers/util.h"
-#include "flatbuffers/code_generators.h"
-
-#include "src/compiler/cpp_generator.h"
-#include "src/compiler/go_generator.h"
-
-#if defined(_MSC_VER)
-#pragma warning(push)
-#pragma warning(disable: 4512) // C4512: 'class' : assignment operator could not be generated
-#endif
-
-namespace flatbuffers {
-
-class FlatBufMethod : public grpc_generator::Method {
- public:
- enum Streaming { kNone, kClient, kServer, kBiDi };
-
- FlatBufMethod(const RPCCall *method)
- : method_(method) {
- streaming_ = kNone;
- auto val = method_->attributes.Lookup("streaming");
- if (val) {
- if (val->constant == "client") streaming_ = kClient;
- if (val->constant == "server") streaming_ = kServer;
- if (val->constant == "bidi") streaming_ = kBiDi;
- }
- }
-
- std::string name() const { return method_->name; }
-
- std::string GRPCType(const StructDef &sd) const {
- return "flatbuffers::BufferRef<" + sd.name + ">";
- }
-
- std::string input_type_name() const {
- return GRPCType(*method_->request);
- }
- std::string output_type_name() const {
- return GRPCType(*method_->response);
- }
-
- std::string input_name() const {
- return (*method_->request).name;
- }
-
- std::string output_name() const {
- return (*method_->response).name;
- }
-
- bool NoStreaming() const { return streaming_ == kNone; }
- bool ClientOnlyStreaming() const { return streaming_ == kClient; }
- bool ServerOnlyStreaming() const { return streaming_ == kServer; }
- bool BidiStreaming() const { return streaming_ == kBiDi; }
-
- private:
- const RPCCall *method_;
- Streaming streaming_;
-};
-
-class FlatBufService : public grpc_generator::Service {
- public:
- FlatBufService(const ServiceDef *service) : service_(service) {}
-
- std::string name() const { return service_->name; }
-
- int method_count() const {
- return static_cast<int>(service_->calls.vec.size());
- };
-
- std::unique_ptr<const grpc_generator::Method> method(int i) const {
- return std::unique_ptr<const grpc_generator::Method>(
- new FlatBufMethod(service_->calls.vec[i]));
- };
-
- private:
- const ServiceDef *service_;
-};
-
-class FlatBufPrinter : public grpc_generator::Printer {
- public:
- FlatBufPrinter(std::string *str)
- : str_(str), escape_char_('$'), indent_(0) {}
-
- void Print(const std::map<std::string, std::string> &vars,
- const char *string_template) {
- std::string s = string_template;
- // Replace any occurrences of strings in "vars" that are surrounded
- // by the escape character by what they're mapped to.
- size_t pos;
- while ((pos = s.find(escape_char_)) != std::string::npos) {
- // Found an escape char, must also find the closing one.
- size_t pos2 = s.find(escape_char_, pos + 1);
- // If placeholder not closed, ignore.
- if (pos2 == std::string::npos) break;
- auto it = vars.find(s.substr(pos + 1, pos2 - pos - 1));
- // If unknown placeholder, ignore.
- if (it == vars.end()) break;
- // Subtitute placeholder.
- s.replace(pos, pos2 - pos + 1, it->second);
- }
- Print(s.c_str());
- }
-
- void Print(const char *s) {
- // Add this string, but for each part separated by \n, add indentation.
- for (;;) {
- // Current indentation.
- str_->insert(str_->end(), indent_ * 2, ' ');
- // See if this contains more than one line.
- const char * lf = strchr(s, '\n');
- if (lf) {
- (*str_) += std::string(s, lf + 1);
- s = lf + 1;
- if (!*s) break; // Only continue if there's more lines.
- } else {
- (*str_) += s;
- break;
- }
- }
- }
-
- void Indent() { indent_++; }
- void Outdent() { indent_--; assert(indent_ >= 0); }
-
- private:
- std::string *str_;
- char escape_char_;
- int indent_;
-};
-
-class FlatBufFile : public grpc_generator::File {
- public:
- FlatBufFile(const Parser &parser, const std::string &file_name)
- : parser_(parser), file_name_(file_name) {}
- FlatBufFile &operator=(const FlatBufFile &);
-
- std::string filename() const { return file_name_; }
- std::string filename_without_ext() const {
- return StripExtension(file_name_);
- }
-
- std::string message_header_ext() const { return "_generated.h"; }
- std::string service_header_ext() const { return ".grpc.fb.h"; }
-
- std::string package() const {
- return parser_.namespaces_.back()->GetFullyQualifiedName("");
- }
-
- std::vector<std::string> package_parts() const {
- return parser_.namespaces_.back()->components;
- }
-
- std::string additional_headers() const {
- return "#include \"flatbuffers/grpc.h\"\n";
- }
-
- std::string additional_imports() const {
- return "import \"github.com/google/flatbuffers/go\"";
- }
-
- int service_count() const {
- return static_cast<int>(parser_.services_.vec.size());
- };
-
- std::unique_ptr<const grpc_generator::Service> service(int i) const {
- return std::unique_ptr<const grpc_generator::Service> (
- new FlatBufService(parser_.services_.vec[i]));
- }
-
- std::unique_ptr<grpc_generator::Printer> CreatePrinter(std::string *str) const {
- return std::unique_ptr<grpc_generator::Printer>(
- new FlatBufPrinter(str));
- }
-
- private:
- const Parser &parser_;
- const std::string &file_name_;
-};
-
-class GoGRPCGenerator : public flatbuffers::BaseGenerator {
- public:
- GoGRPCGenerator(const Parser &parser, const std::string &path,
- const std::string &file_name)
- : BaseGenerator(parser, path, file_name, "", "" /*Unused*/),
- parser_(parser), path_(path), file_name_(file_name) {}
-
- bool generate() {
- FlatBufFile file(parser_, file_name_);
- grpc_go_generator::Parameters p;
- p.custom_method_io_type = "flatbuffers.Builder";
- for (int i = 0; i < file.service_count(); i++) {
- auto service = file.service(i);
- const Definition *def = parser_.services_.vec[i];
- p.package_name = LastNamespacePart(*(def->defined_namespace));
- std::string output = grpc_go_generator::GenerateServiceSource(&file, service.get(), &p);
- std::string filename = NamespaceDir(*def->defined_namespace) + def->name + "_grpc.go";
- if (!flatbuffers::SaveFile(filename.c_str(), output, false))
- return false;
- }
- return true;
- }
-
- protected:
- const Parser &parser_;
- const std::string &path_, &file_name_;
-};
-
-bool GenerateGoGRPC(const Parser &parser,
- const std::string &path,
- const std::string &file_name) {
- int nservices = 0;
- for (auto it = parser.services_.vec.begin();
- it != parser.services_.vec.end(); ++it) {
- if (!(*it)->generated) nservices++;
- }
- if (!nservices) return true;
- return GoGRPCGenerator(parser, path, file_name).generate();
-}
-
-bool GenerateCppGRPC(const Parser &parser,
- const std::string &path,
- const std::string &file_name) {
-
- int nservices = 0;
- for (auto it = parser.services_.vec.begin();
- it != parser.services_.vec.end(); ++it) {
- if (!(*it)->generated) nservices++;
- }
- if (!nservices) return true;
-
- grpc_cpp_generator::Parameters generator_parameters;
- // TODO(wvo): make the other parameters in this struct configurable.
- generator_parameters.use_system_headers = true;
-
- FlatBufFile fbfile(parser, file_name);
-
- std::string header_code =
- grpc_cpp_generator::GetHeaderPrologue(&fbfile, generator_parameters) +
- grpc_cpp_generator::GetHeaderIncludes(&fbfile, generator_parameters) +
- grpc_cpp_generator::GetHeaderServices(&fbfile, generator_parameters) +
- grpc_cpp_generator::GetHeaderEpilogue(&fbfile, generator_parameters);
-
- std::string source_code =
- grpc_cpp_generator::GetSourcePrologue(&fbfile, generator_parameters) +
- grpc_cpp_generator::GetSourceIncludes(&fbfile, generator_parameters) +
- grpc_cpp_generator::GetSourceServices(&fbfile, generator_parameters) +
- grpc_cpp_generator::GetSourceEpilogue(&fbfile, generator_parameters);
-
- return flatbuffers::SaveFile((path + file_name + ".grpc.fb.h").c_str(),
- header_code, false) &&
- flatbuffers::SaveFile((path + file_name + ".grpc.fb.cc").c_str(),
- source_code, false);
-}
-
-} // namespace flatbuffers
-
-#if defined(_MSC_VER)
-#pragma warning(pop)
-#endif
-
diff --git a/third_party/flatbuffers/src/idl_gen_js.cpp b/third_party/flatbuffers/src/idl_gen_js.cpp
deleted file mode 100644
index b2839e1..0000000
--- a/third_party/flatbuffers/src/idl_gen_js.cpp
+++ /dev/null
@@ -1,1170 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// independent from idl_parser, since this code is not needed for most clients
-#include <unordered_set>
-#include <unordered_map>
-#include <cassert>
-
-#include "flatbuffers/flatbuffers.h"
-#include "flatbuffers/idl.h"
-#include "flatbuffers/util.h"
-#include "flatbuffers/code_generators.h"
-
-namespace flatbuffers {
-
-const std::string kGeneratedFileNamePostfix = "_generated";
-
-struct JsLanguageParameters {
- IDLOptions::Language language;
- std::string file_extension;
-};
-
-struct ReexportDescription {
- std::string symbol;
- std::string source_namespace;
- std::string target_namespace;
-};
-
-const JsLanguageParameters& GetJsLangParams(IDLOptions::Language lang) {
- static JsLanguageParameters js_language_parameters[] = {
- {
- IDLOptions::kJs,
- ".js",
- },
- {
- IDLOptions::kTs,
- ".ts",
- },
- };
-
- if (lang == IDLOptions::kJs) {
- return js_language_parameters[0];
- } else {
- assert(lang == IDLOptions::kTs);
- return js_language_parameters[1];
- }
-}
-
-static std::string GeneratedFileName(const std::string &path,
- const std::string &file_name,
- const JsLanguageParameters &lang) {
- return path + file_name + kGeneratedFileNamePostfix + lang.file_extension;
-}
-
-namespace js {
-// Iterate through all definitions we haven't generate code for (enums, structs,
-// and tables) and output them to a single file.
-class JsGenerator : public BaseGenerator {
- public:
- typedef std::unordered_set<std::string> imported_fileset;
- typedef std::unordered_multimap<std::string, ReexportDescription>
- reexport_map;
-
- JsGenerator(const Parser &parser, const std::string &path,
- const std::string &file_name)
- : BaseGenerator(parser, path, file_name, "", "."),
- lang_(GetJsLangParams(parser_.opts.lang))
- {
- };
- // Iterate through all definitions we haven't generate code for (enums,
- // structs, and tables) and output them to a single file.
- bool generate() {
- if (IsEverythingGenerated()) return true;
-
- imported_fileset imported_files;
- reexport_map reexports;
-
- std::string enum_code, struct_code, import_code, exports_code, code;
- generateEnums(&enum_code, &exports_code, reexports);
- generateStructs(&struct_code, &exports_code, imported_files);
- generateImportDependencies(&import_code, imported_files);
- generateReexports(&import_code, reexports, imported_files);
-
- code = code + "// " + FlatBuffersGeneratedWarning();
-
- // Generate code for all the namespace declarations.
- GenNamespaces(&code, &exports_code);
-
- // Output the main declaration code from above.
- code += import_code;
-
- code += enum_code;
- code += struct_code;
-
- if (lang_.language == IDLOptions::kJs && !exports_code.empty() &&
- !parser_.opts.skip_js_exports) {
- code += "// Exports for Node.js and RequireJS\n";
- code += exports_code;
- }
-
- return SaveFile(GeneratedFileName(path_, file_name_, lang_).c_str(), code,
- false);
- }
-
- private:
- JsLanguageParameters lang_;
-
- // Generate code for imports
- void generateImportDependencies(std::string *code_ptr,
- const imported_fileset &imported_files) {
- std::string &code = *code_ptr;
- for (auto it = imported_files.begin(); it != imported_files.end(); ++it) {
- const auto &file = *it;
- const auto basename =
- flatbuffers::StripPath(flatbuffers::StripExtension(file));
- if (basename != file_name_) {
- const auto file_name = basename + kGeneratedFileNamePostfix;
- code += GenPrefixedImport(file, file_name);
- }
- }
- }
-
- // Generate reexports, which might not have been explicitly imported using the
- // "export import" trick
- void generateReexports(std::string *code_ptr,
- const reexport_map &reexports,
- imported_fileset imported_files) {
- if (!parser_.opts.reexport_ts_modules ||
- lang_.language != IDLOptions::kTs) {
- return;
- }
-
- std::string &code = *code_ptr;
- for (auto it = reexports.begin(); it != reexports.end(); ++it) {
- const auto &file = *it;
- const auto basename =
- flatbuffers::StripPath(flatbuffers::StripExtension(file.first));
- if (basename != file_name_) {
- const auto file_name = basename + kGeneratedFileNamePostfix;
-
- if (imported_files.find(file.first) == imported_files.end()) {
- code += GenPrefixedImport(file.first, file_name);
- imported_files.emplace(file.first);
- }
-
- code += "export namespace " + file.second.target_namespace + " { \n";
- code += "export import " + file.second.symbol + " = ";
- code += GenFileNamespacePrefix(file.first) + "." +
- file.second.source_namespace + "." + file.second.symbol +
- "; }\n";
- }
- }
- }
-
- // Generate code for all enums.
- void generateEnums(std::string *enum_code_ptr,
- std::string *exports_code_ptr,
- reexport_map &reexports) {
- for (auto it = parser_.enums_.vec.begin(); it != parser_.enums_.vec.end();
- ++it) {
- auto &enum_def = **it;
- GenEnum(enum_def, enum_code_ptr, exports_code_ptr, reexports);
- }
- }
-
- // Generate code for all structs.
- void generateStructs(std::string *decl_code_ptr,
- std::string *exports_code_ptr,
- imported_fileset &imported_files) {
- for (auto it = parser_.structs_.vec.begin();
- it != parser_.structs_.vec.end(); ++it) {
- auto &struct_def = **it;
- GenStruct(parser_, struct_def, decl_code_ptr, exports_code_ptr,
- imported_files);
- }
- }
- void GenNamespaces(std::string *code_ptr, std::string *exports_ptr) {
- if (lang_.language == IDLOptions::kTs &&
- parser_.opts.skip_flatbuffers_import) {
- return;
- }
-
- std::set<std::string> namespaces;
-
- for (auto it = parser_.namespaces_.begin();
- it != parser_.namespaces_.end(); ++it) {
- std::string namespace_so_far;
-
- // Gather all parent namespaces for this namespace
- for (auto component = (*it)->components.begin();
- component != (*it)->components.end(); ++component) {
- if (!namespace_so_far.empty()) {
- namespace_so_far += '.';
- }
- namespace_so_far += *component;
- namespaces.insert(namespace_so_far);
- }
- }
-
- // Make sure parent namespaces come before child namespaces
- std::vector<std::string> sorted_namespaces(
- namespaces.begin(), namespaces.end());
- std::sort(sorted_namespaces.begin(), sorted_namespaces.end());
-
- // Emit namespaces in a form that Closure Compiler can optimize
- std::string &code = *code_ptr;
- std::string &exports = *exports_ptr;
- for (auto it = sorted_namespaces.begin();
- it != sorted_namespaces.end(); it++) {
- if (lang_.language == IDLOptions::kTs) {
- if (it->find('.') == std::string::npos) {
- code += "import { flatbuffers } from \"./flatbuffers\"\n";
- break;
- }
- } else {
- code += "/**\n * @const\n * @namespace\n */\n";
- if (it->find('.') == std::string::npos) {
- code += "var ";
- if(parser_.opts.use_goog_js_export_format) {
- exports += "goog.exportSymbol('" + *it + "', " + *it + ");\n";
- } else {
- exports += "this." + *it + " = " + *it + ";\n";
- }
- }
- code += *it + " = " + *it + " || {};\n\n";
- }
- }
-}
-
-// Generate a documentation comment, if available.
-static void GenDocComment(const std::vector<std::string> &dc,
- std::string *code_ptr,
- const std::string &extra_lines,
- const char *indent = nullptr) {
- if (dc.empty() && extra_lines.empty()) {
- // Don't output empty comment blocks with 0 lines of comment content.
- return;
- }
-
- std::string &code = *code_ptr;
- if (indent) code += indent;
- code += "/**\n";
- for (auto it = dc.begin(); it != dc.end(); ++it) {
- if (indent) code += indent;
- code += " *" + *it + "\n";
- }
- if (!extra_lines.empty()) {
- if (!dc.empty()) {
- if (indent) code += indent;
- code += " *\n";
- }
- if (indent) code += indent;
- std::string::size_type start = 0;
- for (;;) {
- auto end = extra_lines.find('\n', start);
- if (end != std::string::npos) {
- code += " * " + extra_lines.substr(start, end - start) + "\n";
- start = end + 1;
- } else {
- code += " * " + extra_lines.substr(start) + "\n";
- break;
- }
- }
- }
- if (indent) code += indent;
- code += " */\n";
-}
-
-static void GenDocComment(std::string *code_ptr,
- const std::string &extra_lines) {
- GenDocComment(std::vector<std::string>(), code_ptr, extra_lines);
-}
-
-// Generate an enum declaration and an enum string lookup table.
-void GenEnum(EnumDef &enum_def, std::string *code_ptr,
- std::string *exports_ptr, reexport_map &reexports) {
- if (enum_def.generated) return;
- std::string &code = *code_ptr;
- std::string &exports = *exports_ptr;
- GenDocComment(enum_def.doc_comment, code_ptr, "@enum");
- if (lang_.language == IDLOptions::kTs) {
- code += "export namespace " + GetNameSpace(enum_def) + "{\n" +
- "export enum " + enum_def.name + "{\n";
- } else {
- if (enum_def.defined_namespace->components.empty()) {
- code += "var ";
- if(parser_.opts.use_goog_js_export_format) {
- exports += "goog.exportSymbol('" + enum_def.name + "', " +
- enum_def.name + ");\n";
- } else {
- exports += "this." + enum_def.name + " = " + enum_def.name + ";\n";
- }
- }
- code += WrapInNameSpace(enum_def) + " = {\n";
- }
- for (auto it = enum_def.vals.vec.begin();
- it != enum_def.vals.vec.end(); ++it) {
- auto &ev = **it;
- if (!ev.doc_comment.empty()) {
- if (it != enum_def.vals.vec.begin()) {
- code += '\n';
- }
- GenDocComment(ev.doc_comment, code_ptr, "", " ");
- }
- code += " " + ev.name;
- code += lang_.language == IDLOptions::kTs ? "= " : ": ";
- code += NumToString(ev.value);
- code += (it + 1) != enum_def.vals.vec.end() ? ",\n" : "\n";
-
- if (ev.union_type.struct_def) {
- ReexportDescription desc = {
- ev.name,
- GetNameSpace(*ev.union_type.struct_def),
- GetNameSpace(enum_def)
- };
- reexports.insert(std::make_pair(ev.union_type.struct_def->file,
- std::move(desc)));
- }
- }
-
- if (lang_.language == IDLOptions::kTs) {
- code += "}};\n\n";
- } else {
- code += "};\n\n";
- }
-}
-
-static std::string GenType(const Type &type) {
- switch (type.base_type) {
- case BASE_TYPE_BOOL:
- case BASE_TYPE_CHAR: return "Int8";
- case BASE_TYPE_UTYPE:
- case BASE_TYPE_UCHAR: return "Uint8";
- case BASE_TYPE_SHORT: return "Int16";
- case BASE_TYPE_USHORT: return "Uint16";
- case BASE_TYPE_INT: return "Int32";
- case BASE_TYPE_UINT: return "Uint32";
- case BASE_TYPE_LONG: return "Int64";
- case BASE_TYPE_ULONG: return "Uint64";
- case BASE_TYPE_FLOAT: return "Float32";
- case BASE_TYPE_DOUBLE: return "Float64";
- case BASE_TYPE_STRING: return "String";
- case BASE_TYPE_VECTOR: return GenType(type.VectorType());
- case BASE_TYPE_STRUCT: return type.struct_def->name;
- default: return "Table";
- }
-}
-
-std::string GenGetter(const Type &type, const std::string &arguments) {
- switch (type.base_type) {
- case BASE_TYPE_STRING: return "this.bb.__string" + arguments;
- case BASE_TYPE_STRUCT: return "this.bb.__struct" + arguments;
- case BASE_TYPE_UNION: return "this.bb.__union" + arguments;
- case BASE_TYPE_VECTOR: return GenGetter(type.VectorType(), arguments);
- default: {
- auto getter = "this.bb.read" + MakeCamel(GenType(type)) + arguments;
- if (type.base_type == BASE_TYPE_BOOL) {
- getter = "!!" + getter;
- }
- if (type.enum_def) {
- getter = "/** @type {" + WrapInNameSpace(*type.enum_def) + "} */ (" +
- getter + ")";
- }
- return getter;
- }
- }
-}
-
-std::string GenDefaultValue(const Value &value, const std::string &context) {
- if (value.type.enum_def) {
- if (auto val = value.type.enum_def->ReverseLookup(
- atoi(value.constant.c_str()), false)) {
- if (lang_.language == IDLOptions::kTs) {
- return GenPrefixedTypeName(WrapInNameSpace(*value.type.enum_def),
- value.type.enum_def->file) + "." + val->name;
- } else {
- return WrapInNameSpace(*value.type.enum_def) + "." + val->name;
- }
- } else {
- return "/** @type {" + WrapInNameSpace(*value.type.enum_def) + "} */ ("
- + value.constant + ")";
- }
- }
-
- switch (value.type.base_type) {
- case BASE_TYPE_BOOL:
- return value.constant == "0" ? "false" : "true";
-
- case BASE_TYPE_STRING:
- return "null";
-
- case BASE_TYPE_LONG:
- case BASE_TYPE_ULONG: {
- int64_t constant = StringToInt(value.constant.c_str());
- return context + ".createLong(" + NumToString((int32_t)constant) +
- ", " + NumToString((int32_t)(constant >> 32)) + ")";
- }
-
- default:
- return value.constant;
- }
-}
-
-std::string GenTypeName(const Type &type, bool input) {
- if (!input) {
- if (type.base_type == BASE_TYPE_STRING) {
- return "string|Uint8Array";
- }
- if (type.base_type == BASE_TYPE_STRUCT) {
- return WrapInNameSpace(*type.struct_def);
- }
- }
-
- switch (type.base_type) {
- case BASE_TYPE_BOOL: return "boolean";
- case BASE_TYPE_LONG:
- case BASE_TYPE_ULONG: return "flatbuffers.Long";
- default:
- if (IsScalar(type.base_type)) {
- if (type.enum_def) {
- return WrapInNameSpace(*type.enum_def);
- }
- return "number";
- }
- return "flatbuffers.Offset";
- }
-}
-
-// Returns the method name for use with add/put calls.
-static std::string GenWriteMethod(const Type &type) {
- // Forward to signed versions since unsigned versions don't exist
- switch (type.base_type) {
- case BASE_TYPE_UTYPE:
- case BASE_TYPE_UCHAR: return GenWriteMethod(Type(BASE_TYPE_CHAR));
- case BASE_TYPE_USHORT: return GenWriteMethod(Type(BASE_TYPE_SHORT));
- case BASE_TYPE_UINT: return GenWriteMethod(Type(BASE_TYPE_INT));
- case BASE_TYPE_ULONG: return GenWriteMethod(Type(BASE_TYPE_LONG));
- default: break;
- }
-
- return IsScalar(type.base_type)
- ? MakeCamel(GenType(type))
- : (IsStruct(type) ? "Struct" : "Offset");
-}
-
-template <typename T>
-static std::string MaybeAdd(T value) {
- return value != 0 ? " + " + NumToString(value) : "";
-}
-
-template <typename T>
-static std::string MaybeScale(T value) {
- return value != 1 ? " * " + NumToString(value) : "";
-}
-
-static std::string GenFileNamespacePrefix(const std::string &file) {
- return "NS" + std::to_string(
- static_cast<unsigned long long>(std::hash<std::string>()(file)));
-}
-
-static std::string GenPrefixedImport(const std::string &full_file_name,
- const std::string &base_file_name) {
- return "import * as "+ GenFileNamespacePrefix(full_file_name) +
- " from \"./" + base_file_name + "\";\n";
-}
-
-// Adds a source-dependent prefix, for of import * statements.
-std::string GenPrefixedTypeName(const std::string &typeName,
- const std::string &file) {
- const auto basename =
- flatbuffers::StripPath(flatbuffers::StripExtension(file));
- if (basename == file_name_) {
- return typeName;
- }
- return GenFileNamespacePrefix(file) + "." + typeName;
-}
-
-void GenStructArgs(const StructDef &struct_def,
- std::string *annotations,
- std::string *arguments,
- const std::string &nameprefix) {
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- auto &field = **it;
- if (IsStruct(field.value.type)) {
- // Generate arguments for a struct inside a struct. To ensure names
- // don't clash, and to make it obvious these arguments are constructing
- // a nested struct, prefix the name with the field name.
- GenStructArgs(*field.value.type.struct_def, annotations, arguments,
- nameprefix + field.name + "_");
- } else {
- *annotations += "@param {" + GenTypeName(field.value.type, true);
- *annotations += "} " + nameprefix + field.name + "\n";
-
- if (lang_.language == IDLOptions::kTs) {
- *arguments += ", " + nameprefix + field.name + ": " +
- GenTypeName(field.value.type, true);
- } else {
- *arguments += ", " + nameprefix + field.name;
- }
- }
- }
-}
-
-static void GenStructBody(const StructDef &struct_def,
- std::string *body,
- const std::string &nameprefix) {
- *body += " builder.prep(";
- *body += NumToString(struct_def.minalign) + ", ";
- *body += NumToString(struct_def.bytesize) + ");\n";
-
- for (auto it = struct_def.fields.vec.rbegin();
- it != struct_def.fields.vec.rend(); ++it) {
- auto &field = **it;
- if (field.padding) {
- *body += " builder.pad(" + NumToString(field.padding) + ");\n";
- }
- if (IsStruct(field.value.type)) {
- // Generate arguments for a struct inside a struct. To ensure names
- // don't clash, and to make it obvious these arguments are constructing
- // a nested struct, prefix the name with the field name.
- GenStructBody(*field.value.type.struct_def, body,
- nameprefix + field.name + "_");
- } else {
- *body += " builder.write" + GenWriteMethod(field.value.type) + "(";
- if (field.value.type.base_type == BASE_TYPE_BOOL) {
- *body += "+";
- }
- *body += nameprefix + field.name + ");\n";
- }
- }
-}
-
-// Generate an accessor struct with constructor for a flatbuffers struct.
-void GenStruct(const Parser &parser, StructDef &struct_def,
- std::string *code_ptr, std::string *exports_ptr,
- imported_fileset &imported_files) {
- if (struct_def.generated) return;
- std::string &code = *code_ptr;
- std::string &exports = *exports_ptr;
-
- std::string object_name;
-
- // Emit constructor
- if (lang_.language == IDLOptions::kTs) {
- object_name = struct_def.name;
- std::string object_namespace = GetNameSpace(struct_def);
- GenDocComment(struct_def.doc_comment, code_ptr, "@constructor");
- code += "export namespace " + object_namespace + "{\n";
- code += "export class " + struct_def.name;
- code += " {\n";
- code += " /**\n";
- code += " * @type {flatbuffers.ByteBuffer}\n";
- code += " */\n";
- code += " bb: flatbuffers.ByteBuffer= null;\n";
- code += "\n";
- code += " /**\n";
- code += " * @type {number}\n";
- code += " */\n";
- code += " bb_pos:number = 0;\n";
- } else {
- bool isStatement = struct_def.defined_namespace->components.empty();
- object_name = WrapInNameSpace(struct_def);
- GenDocComment(struct_def.doc_comment, code_ptr, "@constructor");
- if (isStatement) {
- if(parser_.opts.use_goog_js_export_format) {
- exports += "goog.exportSymbol('" + struct_def.name + "', " +
- struct_def.name + ");\n";
- } else {
- exports += "this." + struct_def.name + " = " + struct_def.name + ";\n";
- }
- code += "function " + object_name;
- } else {
- code += object_name + " = function";
- }
- code += "() {\n";
- code += " /**\n";
- code += " * @type {flatbuffers.ByteBuffer}\n";
- code += " */\n";
- code += " this.bb = null;\n";
- code += "\n";
- code += " /**\n";
- code += " * @type {number}\n";
- code += " */\n";
- code += " this.bb_pos = 0;\n";
- code += isStatement ? "}\n\n" : "};\n\n";
- }
-
- // Generate the __init method that sets the field in a pre-existing
- // accessor object. This is to allow object reuse.
- code += "/**\n";
- code += " * @param {number} i\n";
- code += " * @param {flatbuffers.ByteBuffer} bb\n";
- code += " * @returns {" + object_name + "}\n";
- code += " */\n";
-
- if (lang_.language == IDLOptions::kTs) {
- code += "__init(i:number, bb:flatbuffers.ByteBuffer):" + object_name +
- " {\n";
- } else {
- code += object_name + ".prototype.__init = function(i, bb) {\n";
- }
-
- code += " this.bb_pos = i;\n";
- code += " this.bb = bb;\n";
- code += " return this;\n";
- code += "};\n\n";
-
- // Generate a special accessor for the table that when used as the root of a
- // FlatBuffer
- if (!struct_def.fixed) {
- GenDocComment(code_ptr,
- "@param {flatbuffers.ByteBuffer} bb\n"
- "@param {" + object_name + "=} obj\n"
- "@returns {" + object_name + "}");
- if (lang_.language == IDLOptions::kTs) {
- code += "static getRootAs" + struct_def.name;
- code += "(bb:flatbuffers.ByteBuffer, obj?:" + object_name + "):" +
- object_name + " {\n";
- } else {
- code += object_name + ".getRootAs" + struct_def.name;
- code += " = function(bb, obj) {\n";
- }
- code += " return (obj || new " + object_name;
- code += ").__init(bb.readInt32(bb.position()) + bb.position(), bb);\n";
- code += "};\n\n";
-
- // Generate the identifier check method
- if (parser_.root_struct_def_ == &struct_def &&
- !parser_.file_identifier_.empty()) {
- GenDocComment(code_ptr,
- "@param {flatbuffers.ByteBuffer} bb\n"
- "@returns {boolean}");
- if (lang_.language == IDLOptions::kTs) {
- code +=
- "static bufferHasIdentifier(bb:flatbuffers.ByteBuffer):boolean {\n";
- } else {
- code += object_name + ".bufferHasIdentifier = function(bb) {\n";
- }
-
- code += " return bb.__has_identifier('" + parser_.file_identifier_;
- code += "');\n};\n\n";
- }
- }
-
- // Emit field accessors
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- auto &field = **it;
- if (field.deprecated) continue;
- auto offset_prefix = " var offset = this.bb.__offset(this.bb_pos, " +
- NumToString(field.value.offset) + ");\n return offset ? ";
-
- // Emit a scalar field
- if (IsScalar(field.value.type.base_type) ||
- field.value.type.base_type == BASE_TYPE_STRING) {
- GenDocComment(field.doc_comment, code_ptr,
- std::string(field.value.type.base_type == BASE_TYPE_STRING ?
- "@param {flatbuffers.Encoding=} optionalEncoding\n" : "") +
- "@returns {" + GenTypeName(field.value.type, false) + "}");
- if (lang_.language == IDLOptions::kTs) {
- std::string prefix = MakeCamel(field.name, false) + "(";
- if (field.value.type.base_type == BASE_TYPE_STRING) {
- code += prefix + "):string\n";
- code += prefix + "optionalEncoding:flatbuffers.Encoding"+"):" +
- GenTypeName(field.value.type, false)+"\n";
- code += prefix + "optionalEncoding?:any";
- } else {
- code += prefix;
- }
- if (field.value.type.enum_def) {
- code += "):" +
- GenPrefixedTypeName(GenTypeName(field.value.type, false),
- field.value.type.enum_def->file) + " {\n";
- } else {
- code += "):" + GenTypeName(field.value.type, false) + " {\n";
- }
- } else {
- code += object_name + ".prototype." + MakeCamel(field.name, false);
- code += " = function(";
- if (field.value.type.base_type == BASE_TYPE_STRING) {
- code += "optionalEncoding";
- }
- code += ") {\n";
- }
-
- if (struct_def.fixed) {
- code += " return " + GenGetter(field.value.type, "(this.bb_pos" +
- MaybeAdd(field.value.offset) + ")") + ";\n";
- } else {
- std::string index = "this.bb_pos + offset";
- if (field.value.type.base_type == BASE_TYPE_STRING) {
- index += ", optionalEncoding";
- }
- code += offset_prefix + GenGetter(field.value.type,
- "(" + index + ")") + " : " + GenDefaultValue(field.value, "this.bb");
- code += ";\n";
- }
- }
-
- // Emit an object field
- else {
- switch (field.value.type.base_type) {
- case BASE_TYPE_STRUCT: {
- auto type = WrapInNameSpace(*field.value.type.struct_def);
- GenDocComment(field.doc_comment, code_ptr,
- "@param {" + type + "=} obj\n@returns {" + type + "}");
- if (lang_.language == IDLOptions::kTs) {
- type = GenPrefixedTypeName(type, field.value.type.struct_def->file);
- code += MakeCamel(field.name, false);
- code += "(obj?:" + type + "):" + type + " {\n";
- } else {
- code += object_name + ".prototype." + MakeCamel(field.name, false);
- code += " = function(obj) {\n";
- }
-
- if (struct_def.fixed) {
- code += " return (obj || new " + type;
- code += ").__init(this.bb_pos";
- code += MaybeAdd(field.value.offset) + ", this.bb);\n";
- } else {
- code += offset_prefix + "(obj || new " + type + ").__init(";
- code += field.value.type.struct_def->fixed
- ? "this.bb_pos + offset"
- : "this.bb.__indirect(this.bb_pos + offset)";
- code += ", this.bb) : null;\n";
- }
-
- if (lang_.language == IDLOptions::kTs) {
- imported_files.insert(field.value.type.struct_def->file);
- }
-
- break;
- }
-
- case BASE_TYPE_VECTOR: {
- auto vectortype = field.value.type.VectorType();
- auto vectortypename = GenTypeName(vectortype, false);
- auto inline_size = InlineSize(vectortype);
- auto index = "this.bb.__vector(this.bb_pos + offset) + index" +
- MaybeScale(inline_size);
- std::string args = "@param {number} index\n";
- if (vectortype.base_type == BASE_TYPE_STRUCT) {
- args += "@param {" + vectortypename + "=} obj\n";
- } else if (vectortype.base_type == BASE_TYPE_STRING) {
- args += "@param {flatbuffers.Encoding=} optionalEncoding\n";
- }
- GenDocComment(field.doc_comment, code_ptr, args +
- "@returns {" + vectortypename + "}");
- if (lang_.language == IDLOptions::kTs) {
- std::string prefix = MakeCamel(field.name, false);
- prefix += "(index: number";
- if (vectortype.base_type == BASE_TYPE_STRUCT) {
- vectortypename = GenPrefixedTypeName(vectortypename,
- vectortype.struct_def->file);
- code += prefix + ", obj?:" + vectortypename;
- imported_files.insert(vectortype.struct_def->file);
- } else if (vectortype.base_type == BASE_TYPE_STRING) {
- code += prefix + "):string\n";
- code += prefix + ",optionalEncoding:flatbuffers.Encoding" + "):" +
- vectortypename + "\n";
- code += prefix + ",optionalEncoding?:any";
- } else {
- code += prefix;
- }
- code += "):" + vectortypename + " {\n";
- } else {
- code += object_name + ".prototype." + MakeCamel(field.name, false);
- code += " = function(index";
- if (vectortype.base_type == BASE_TYPE_STRUCT) {
- code += ", obj";
- } else if (vectortype.base_type == BASE_TYPE_STRING) {
- code += ", optionalEncoding";
- }
- code += ") {\n";
- }
-
- if (vectortype.base_type == BASE_TYPE_STRUCT) {
- code += offset_prefix + "(obj || new " + vectortypename;
- code += ").__init(";
- code += vectortype.struct_def->fixed
- ? index
- : "this.bb.__indirect(" + index + ")";
- code += ", this.bb)";
- } else {
- if (vectortype.base_type == BASE_TYPE_STRING) {
- index += ", optionalEncoding";
- }
- code += offset_prefix + GenGetter(vectortype, "(" + index + ")");
- }
- code += " : ";
- if (field.value.type.element == BASE_TYPE_BOOL) {
- code += "false";
- } else if (field.value.type.element == BASE_TYPE_LONG ||
- field.value.type.element == BASE_TYPE_ULONG) {
- code += "this.bb.createLong(0, 0)";
- } else if (IsScalar(field.value.type.element)) {
- if (field.value.type.enum_def) {
- code += "/** @type {" +
- WrapInNameSpace(*field.value.type.enum_def) + "} */ (" +
- field.value.constant + ")";
- } else {
- code += "0";
- }
- } else {
- code += "null";
- }
- code += ";\n";
- break;
- }
-
- case BASE_TYPE_UNION:
- GenDocComment(field.doc_comment, code_ptr,
- "@param {flatbuffers.Table} obj\n"
- "@returns {?flatbuffers.Table}");
- if (lang_.language == IDLOptions::kTs) {
- code += MakeCamel(field.name, false);
- code += "<T extends flatbuffers.Table>(obj:T):T {\n";
- } else {
- code += object_name + ".prototype." + MakeCamel(field.name, false);
- code += " = function(obj) {\n";
- }
-
- code += offset_prefix + GenGetter(field.value.type,
- "(obj, this.bb_pos + offset)") + " : null;\n";
- break;
-
- default:
- assert(0);
- }
- }
- code += "};\n\n";
-
- if(parser_.opts.use_goog_js_export_format) {
- exports += "goog.exportProperty(" + object_name + ".prototype, '" +
- MakeCamel(field.name, false) + "', " + object_name + ".prototype." +
- MakeCamel(field.name, false) + ");\n";
- }
-
- // Adds the mutable scalar value to the output
- if (IsScalar(field.value.type.base_type) && parser.opts.mutable_buffer) {
- std::string annotations =
- "@param {" + GenTypeName(field.value.type, true) + "} value\n";
- GenDocComment(code_ptr, annotations +
- "@returns {boolean}");
-
- if (lang_.language == IDLOptions::kTs) {
- std::string type;
- if (field.value.type.enum_def) {
- type = GenPrefixedTypeName(GenTypeName(field.value.type, true),
- field.value.type.enum_def->file);
- } else {
- type = GenTypeName(field.value.type, true);
- }
-
- code += "mutate_" + field.name + "(value:" + type + "):boolean {\n";
- } else {
- code += object_name + ".prototype.mutate_" + field.name +
- " = function(value) {\n";
- }
-
- code += " var offset = this.bb.__offset(this.bb_pos, " +
- NumToString(field.value.offset) + ");\n\n";
- code += " if (offset === 0) {\n";
- code += " return false;\n";
- code += " }\n\n";
-
- // special case for bools, which are treated as uint8
- code += " this.bb.write" + MakeCamel(GenType(field.value.type)) +
- "(this.bb_pos + offset, ";
- if (field.value.type.base_type == BASE_TYPE_BOOL &&
- lang_.language == IDLOptions::kTs) {
- code += "+";
- }
-
- code += "value);\n";
- code += " return true;\n";
- code += "};\n\n";
-
- if(parser_.opts.use_goog_js_export_format) {
- exports += "goog.exportProperty(" + object_name +
- ".prototype, 'mutate_" + field.name + "', " + object_name +
- ".prototype.mutate_" + field.name + ");\n";
- }
- }
-
- // Emit vector helpers
- if (field.value.type.base_type == BASE_TYPE_VECTOR) {
- // Emit a length helper
- GenDocComment(code_ptr, "@returns {number}");
- if (lang_.language == IDLOptions::kTs) {
- code += MakeCamel(field.name, false);
- code += "Length():number {\n" + offset_prefix;
- } else {
- code += object_name + ".prototype." + MakeCamel(field.name, false);
- code += "Length = function() {\n" + offset_prefix;
- }
-
- code += "this.bb.__vector_len(this.bb_pos + offset) : 0;\n};\n\n";
-
- if(parser_.opts.use_goog_js_export_format) {
- exports += "goog.exportProperty(" + object_name + ".prototype, '" +
- MakeCamel(field.name, false) + "Length', " + object_name +
- ".prototype." + MakeCamel(field.name, false) + "Length);\n";
- }
-
- // For scalar types, emit a typed array helper
- auto vectorType = field.value.type.VectorType();
- if (IsScalar(vectorType.base_type) && !IsLong(vectorType.base_type)) {
- GenDocComment(code_ptr, "@returns {" + GenType(vectorType) + "Array}");
-
- if (lang_.language == IDLOptions::kTs) {
- code += MakeCamel(field.name, false);
- code += "Array():" + GenType(vectorType) + "Array {\n" +
- offset_prefix;
- } else {
- code += object_name + ".prototype." + MakeCamel(field.name, false);
- code += "Array = function() {\n" + offset_prefix;
- }
-
- code += "new " + GenType(vectorType) + "Array(this.bb.bytes().buffer, "
- "this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), "
- "this.bb.__vector_len(this.bb_pos + offset)) : null;\n};\n\n";
-
- if(parser_.opts.use_goog_js_export_format) {
- exports += "goog.exportProperty(" + object_name + ".prototype, '" +
- MakeCamel(field.name, false) + "Array', " + object_name +
- ".prototype." + MakeCamel(field.name, false) + "Array);\n";
- }
- }
- }
- }
-
- // Emit a factory constructor
- if (struct_def.fixed) {
- std::string annotations = "@param {flatbuffers.Builder} builder\n";
- std::string arguments;
- GenStructArgs(struct_def, &annotations, &arguments, "");
- GenDocComment(code_ptr, annotations +
- "@returns {flatbuffers.Offset}");
-
- if (lang_.language == IDLOptions::kTs) {
- code += "static create" + struct_def.name + "(builder:flatbuffers.Builder";
- code += arguments + "):flatbuffers.Offset {\n";
- } else {
- code += object_name + ".create" + struct_def.name + " = function(builder";
- code += arguments + ") {\n";
- }
-
- GenStructBody(struct_def, &code, "");
- code += " return builder.offset();\n};\n\n";
- } else {
- // Generate a method to start building a new object
- GenDocComment(code_ptr,
- "@param {flatbuffers.Builder} builder");
-
- if (lang_.language == IDLOptions::kTs) {
- code += "static start" + struct_def.name;
- code += "(builder:flatbuffers.Builder) {\n";
- } else {
- code += object_name + ".start" + struct_def.name;
- code += " = function(builder) {\n";
- }
-
- code += " builder.startObject(" + NumToString(
- struct_def.fields.vec.size()) + ");\n";
- code += "};\n\n";
-
- // Generate a set of static methods that allow table construction
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- auto &field = **it;
- if (field.deprecated) continue;
- auto argname = MakeCamel(field.name, false);
- if (!IsScalar(field.value.type.base_type)) {
- argname += "Offset";
- }
-
- // Generate the field insertion method
- GenDocComment(code_ptr,
- "@param {flatbuffers.Builder} builder\n"
- "@param {" + GenTypeName(field.value.type, true) + "} " +
- argname);
-
- if (lang_.language == IDLOptions::kTs) {
- std::string argType;
- if (field.value.type.enum_def) {
- argType = GenPrefixedTypeName(GenTypeName(field.value.type, true),
- field.value.type.enum_def->file);
- } else {
- argType = GenTypeName(field.value.type, true);
- }
-
- code += "static add" + MakeCamel(field.name);
- code += "(builder:flatbuffers.Builder, " + argname + ":" + argType +
- ") {\n";
- } else {
- code += object_name + ".add" + MakeCamel(field.name);
- code += " = function(builder, " + argname + ") {\n";
- }
-
- code += " builder.addField" + GenWriteMethod(field.value.type) + "(";
- code += NumToString(it - struct_def.fields.vec.begin()) + ", ";
- if (field.value.type.base_type == BASE_TYPE_BOOL) {
- code += "+";
- }
- code += argname + ", ";
- if (!IsScalar(field.value.type.base_type)) {
- code += "0";
- } else {
- if (field.value.type.base_type == BASE_TYPE_BOOL) {
- code += "+";
- }
- code += GenDefaultValue(field.value, "builder");
- }
- code += ");\n};\n\n";
-
- if (field.value.type.base_type == BASE_TYPE_VECTOR) {
- auto vector_type = field.value.type.VectorType();
- auto alignment = InlineAlignment(vector_type);
- auto elem_size = InlineSize(vector_type);
-
- // Generate a method to create a vector from a JavaScript array
- if (!IsStruct(vector_type)) {
- GenDocComment(code_ptr,
- "@param {flatbuffers.Builder} builder\n"
- "@param {Array.<" + GenTypeName(vector_type, true) +
- ">} data\n"
- "@returns {flatbuffers.Offset}");
-
- if (lang_.language == IDLOptions::kTs) {
- code += "static create" + MakeCamel(field.name);
- std::string type = GenTypeName(vector_type, true) + "[]";
- if (type == "number[]") {
- type += " | Uint8Array";
- }
- code += "Vector(builder:flatbuffers.Builder, data:" + type +
- "):flatbuffers.Offset {\n";
- code += "if(!data){\n return null\n}\n";
- } else {
- code += object_name + ".create" + MakeCamel(field.name);
- code += "Vector = function(builder, data) {\n";
- }
-
- code += " builder.startVector(" + NumToString(elem_size);
- code += ", data.length, " + NumToString(alignment) + ");\n";
- code += " for (var i = data.length - 1; i >= 0; i--) {\n";
- code += " builder.add" + GenWriteMethod(vector_type) + "(";
- if (vector_type.base_type == BASE_TYPE_BOOL) {
- code += "+";
- }
- code += "data[i]);\n";
- code += " }\n";
- code += " return builder.endVector();\n";
- code += "};\n\n";
- }
-
- // Generate a method to start a vector, data to be added manually after
- GenDocComment(code_ptr,
- "@param {flatbuffers.Builder} builder\n"
- "@param {number} numElems");
-
- if (lang_.language == IDLOptions::kTs) {
- code += "static start" + MakeCamel(field.name);
- code += "Vector(builder:flatbuffers.Builder, numElems:number) {\n";
- } else {
- code += object_name + ".start" + MakeCamel(field.name);
- code += "Vector = function(builder, numElems) {\n";
- }
-
- code += " builder.startVector(" + NumToString(elem_size);
- code += ", numElems, " + NumToString(alignment) + ");\n";
- code += "};\n\n";
- }
- }
-
- // Generate a method to stop building a new object
- GenDocComment(code_ptr,
- "@param {flatbuffers.Builder} builder\n"
- "@returns {flatbuffers.Offset}");
-
- if (lang_.language == IDLOptions::kTs) {
- code += "static end" + struct_def.name;
- code += "(builder:flatbuffers.Builder):flatbuffers.Offset {\n";
- } else {
- code += object_name + ".end" + struct_def.name;
- code += " = function(builder) {\n";
- }
-
- code += " var offset = builder.endObject();\n";
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end(); ++it) {
- auto &field = **it;
- if (!field.deprecated && field.required) {
- code += " builder.requiredField(offset, ";
- code += NumToString(field.value.offset);
- code += "); // " + field.name + "\n";
- }
- }
- code += " return offset;\n";
- code += "};\n\n";
-
- // Generate the method to complete buffer construction
- if (parser_.root_struct_def_ == &struct_def) {
- GenDocComment(code_ptr,
- "@param {flatbuffers.Builder} builder\n"
- "@param {flatbuffers.Offset} offset");
-
- if (lang_.language == IDLOptions::kTs) {
- code += "static finish" + struct_def.name + "Buffer";
- code += "(builder:flatbuffers.Builder, offset:flatbuffers.Offset) {\n";
- } else {
- code += object_name + ".finish" + struct_def.name + "Buffer";
- code += " = function(builder, offset) {\n";
- }
-
- code += " builder.finish(offset";
- if (!parser_.file_identifier_.empty()) {
- code += ", '" + parser_.file_identifier_ + "'";
- }
- code += ");\n";
- code += "};\n\n";
- }
- }
-
- if (lang_.language == IDLOptions::kTs) {
- code += "}\n}\n";
- }
-}
-};
-} // namespace js
-
-bool GenerateJS(const Parser &parser, const std::string &path,
- const std::string &file_name) {
- js::JsGenerator generator(parser, path, file_name);
- return generator.generate();
-}
-
-std::string JSMakeRule(const Parser &parser,
- const std::string &path,
- const std::string &file_name) {
- assert(parser.opts.lang <= IDLOptions::kMAX);
- const auto &lang = GetJsLangParams(parser.opts.lang);
-
- std::string filebase = flatbuffers::StripPath(
- flatbuffers::StripExtension(file_name));
- std::string make_rule = GeneratedFileName(path, filebase, lang) + ": ";
-
- auto included_files = parser.GetIncludedFilesRecursive(file_name);
- for (auto it = included_files.begin();
- it != included_files.end(); ++it) {
- make_rule += " " + *it;
- }
-return make_rule;
-}
-
-} // namespace flatbuffers
diff --git a/third_party/flatbuffers/src/idl_gen_php.cpp b/third_party/flatbuffers/src/idl_gen_php.cpp
deleted file mode 100644
index a893f98..0000000
--- a/third_party/flatbuffers/src/idl_gen_php.cpp
+++ /dev/null
@@ -1,967 +0,0 @@
-/*
-* Copyright 2014 Google Inc. All rights reserved.
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-// independent from idl_parser, since this code is not needed for most clients
-
-#include <string>
-
-#include "flatbuffers/flatbuffers.h"
-#include "flatbuffers/idl.h"
-#include "flatbuffers/util.h"
-#include "flatbuffers/code_generators.h"
-
-namespace flatbuffers {
-namespace php {
- // Hardcode spaces per indentation.
- const std::string Indent = " ";
- class PhpGenerator : public BaseGenerator {
- public:
- PhpGenerator(const Parser &parser, const std::string &path,
- const std::string &file_name)
- : BaseGenerator(parser, path, file_name, "\\", "\\"){};
- bool generate() {
- if (!generateEnums()) return false;
- if (!generateStructs()) return false;
- return true;
- }
-
- private:
- bool generateEnums() {
- for (auto it = parser_.enums_.vec.begin();
- it != parser_.enums_.vec.end(); ++it) {
- auto &enum_def = **it;
- std::string enumcode;
- GenEnum(enum_def, &enumcode);
- if (!SaveType(enum_def, enumcode, false)) return false;
- }
- return true;
- }
-
- bool generateStructs() {
- for (auto it = parser_.structs_.vec.begin();
- it != parser_.structs_.vec.end(); ++it) {
- auto &struct_def = **it;
- std::string declcode;
- GenStruct(struct_def, &declcode);
- if (!SaveType(struct_def, declcode, true)) return false;
- }
- return true;
- }
-
- // Begin by declaring namespace and imports.
- void BeginFile(const std::string name_space_name,
- const bool needs_imports, std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "<?php\n";
- code = code + "// " + FlatBuffersGeneratedWarning();
- code += "namespace " + name_space_name + ";\n\n";
-
- if (needs_imports) {
- code += "use \\Google\\FlatBuffers\\Struct;\n";
- code += "use \\Google\\FlatBuffers\\Table;\n";
- code += "use \\Google\\FlatBuffers\\ByteBuffer;\n";
- code += "use \\Google\\FlatBuffers\\FlatBufferBuilder;\n";
- code += "\n";
- }
- }
-
- // Save out the generated code for a Php Table type.
- bool SaveType(const Definition &def, const std::string &classcode,
- bool needs_imports) {
- if (!classcode.length()) return true;
-
- std::string code = "";
- BeginFile(FullNamespace("\\", *def.defined_namespace),
- needs_imports, &code);
- code += classcode;
-
- std::string filename = NamespaceDir(*def.defined_namespace) +
- def.name + ".php";
- return SaveFile(filename.c_str(), code, false);
- }
-
- // Begin a class declaration.
- static void BeginClass(const StructDef &struct_def, std::string *code_ptr) {
- std::string &code = *code_ptr;
- if (struct_def.fixed) {
- code += "class " + struct_def.name + " extends Struct\n";
- } else {
- code += "class " + struct_def.name + " extends Table\n";
- }
- code += "{\n";
- }
-
- static void EndClass(std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "}\n";
- }
-
- // Begin enum code with a class declaration.
- static void BeginEnum(const std::string class_name, std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "class " + class_name + "\n{\n";
- }
-
- // A single enum member.
- static void EnumMember(const EnumVal ev, std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += Indent + "const ";
- code += ev.name;
- code += " = ";
- code += NumToString(ev.value) + ";\n";
- }
-
- // End enum code.
- static void EndEnum(std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "}\n";
- }
-
- // Initialize a new struct or table from existing data.
- static void NewRootTypeFromBuffer(const StructDef &struct_def,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
-
- code += Indent + "/**\n";
- code += Indent + " * @param ByteBuffer $bb\n";
- code += Indent + " * @return " + struct_def.name + "\n";
- code += Indent + " */\n";
- code += Indent + "public static function getRootAs";
- code += struct_def.name;
- code += "(ByteBuffer $bb)\n";
- code += Indent + "{\n";
-
- code += Indent + Indent + "$obj = new " + struct_def.name + "();\n";
- code += Indent + Indent;
- code += "return ($obj->init($bb->getInt($bb->getPosition())";
- code += " + $bb->getPosition(), $bb));\n";
- code += Indent + "}\n\n";
- }
-
- // Initialize an existing object with other data, to avoid an allocation.
- static void InitializeExisting(const StructDef &struct_def,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
-
- code += Indent + "/**\n";
- code += Indent + " * @param int $_i offset\n";
- code += Indent + " * @param ByteBuffer $_bb\n";
- code += Indent + " * @return " + struct_def.name + "\n";
- code += Indent + " **/\n";
- code += Indent + "public function init($_i, ByteBuffer $_bb)\n";
- code += Indent + "{\n";
- code += Indent + Indent + "$this->bb_pos = $_i;\n";
- code += Indent + Indent + "$this->bb = $_bb;\n";
- code += Indent + Indent + "return $this;\n";
- code += Indent + "}\n\n";
- }
-
- // Get the length of a vector.
- static void GetVectorLen(const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
-
- code += Indent + "/**\n";
- code += Indent + " * @return int\n";
- code += Indent + " */\n";
- code += Indent + "public function get";
- code += MakeCamel(field.name) + "Length()\n";
- code += Indent + "{\n";
- code += Indent + Indent + "$o = $this->__offset(";
- code += NumToString(field.value.offset) + ");\n";
- code += Indent + Indent;
- code += "return $o != 0 ? $this->__vector_len($o) : 0;\n";
- code += Indent + "}\n\n";
- }
-
- // Get a [ubyte] vector as a byte array.
- static void GetUByte(const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
-
- code += Indent + "/**\n";
- code += Indent + " * @return string\n";
- code += Indent + " */\n";
- code += Indent + "public function get";
- code += MakeCamel(field.name) + "Bytes()\n";
- code += Indent + "{\n";
- code += Indent + Indent + "return $this->__vector_as_bytes(";
- code += NumToString(field.value.offset) + ");\n";
- code += Indent + "}\n\n";
- }
-
- // Get the value of a struct's scalar.
- static void GetScalarFieldOfStruct(const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- std::string getter = GenGetter(field.value.type);
-
- code += Indent + "/**\n";
- code += Indent + " * @return ";
- code += GenTypeGet(field.value.type) + "\n";
- code += Indent + " */\n";
- code += Indent + "public function " + getter;
- code += MakeCamel(field.name) + "()\n";
- code += Indent + "{\n";
- code += Indent + Indent + "return ";
-
- code += "$this->bb->get";
- code += MakeCamel(GenTypeGet(field.value.type));
- code += "($this->bb_pos + ";
- code += NumToString(field.value.offset) + ")";
- code += ";\n";
-
- code += Indent + "}\n\n";
- }
-
- // Get the value of a table's scalar.
- void GetScalarFieldOfTable(const FieldDef &field, std::string *code_ptr) {
- std::string &code = *code_ptr;
- std::string getter = GenGetter(field.value.type);
-
- code += Indent + "/**\n";
- code += Indent + " * @return " + GenTypeGet(field.value.type) + "\n";
- code += Indent + " */\n";
- code += Indent + "public function get";
- code += MakeCamel(field.name);
- code += "()\n";
- code += Indent + "{\n";
- code += Indent + Indent +
- "$o = $this->__offset(" +
- NumToString(field.value.offset) +
- ");\n" + Indent + Indent + "return $o != 0 ? ";
- code += "$this->bb->get";
- code += MakeCamel(GenTypeGet(field.value.type)) + "($o + $this->bb_pos)";
- code += " : " + GenDefaultValue(field.value) + ";\n";
- code += Indent + "}\n\n";
- }
-
- // Get a struct by initializing an existing struct.
- // Specific to Struct.
- void GetStructFieldOfStruct(const FieldDef &field, std::string *code_ptr) {
- std::string &code = *code_ptr;
-
- code += Indent + "/**\n";
- code += Indent + " * @return " + GenTypeGet(field.value.type) + "\n";
- code += Indent + " */\n";
- code += Indent + "public function get";
- code += MakeCamel(field.name) + "()\n";
- code += Indent + "{\n";
- code += Indent + Indent + "$obj = new ";
- code += GenTypeGet(field.value.type) + "();\n";
- code += Indent + Indent + "$obj->init($this->bb_pos + ";
- code += NumToString(field.value.offset) + ", $this->bb);";
- code += "\n" + Indent + Indent + "return $obj;\n";
- code += Indent + "}\n\n";
- }
-
- // Get a struct by initializing an existing struct.
- // Specific to Table.
- void GetStructFieldOfTable(const FieldDef &field, std::string *code_ptr) {
- std::string &code = *code_ptr;
-
- code += Indent + "public function get";
- code += MakeCamel(field.name);
- code += "()\n";
- code += Indent + "{\n";
- code += Indent + Indent + "$obj = new ";
- code += MakeCamel(GenTypeGet(field.value.type)) + "();\n";
- code += Indent + Indent +
- "$o = $this->__offset(" +
- NumToString(field.value.offset) +
- ");\n";
- code += Indent + Indent;
- code += "return $o != 0 ? $obj->init(";
- if (field.value.type.struct_def->fixed)
- {
- code += "$o + $this->bb_pos, $this->bb) : ";
- } else {
- code += "$this->__indirect($o + $this->bb_pos), $this->bb) : ";
- }
- code += GenDefaultValue(field.value) + ";\n";
- code += Indent + "}\n\n";
- }
-
- // Get the value of a string.
- void GetStringField(const FieldDef &field, std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += Indent + "public function get";
- code += MakeCamel(field.name);
- code += "()\n";
- code += Indent + "{\n";
- code += Indent + Indent +
- "$o = $this->__offset(" +
- NumToString(field.value.offset) +
- ");\n";
- code += Indent + Indent;
- code += "return $o != 0 ? $this->__string($o + $this->bb_pos) : ";
- code += GenDefaultValue(field.value) + ";\n";
- code += Indent + "}\n\n";
- }
-
- // Get the value of a union from an object.
- void GetUnionField(const FieldDef &field, std::string *code_ptr) {
- std::string &code = *code_ptr;
-
- code += Indent + "/**\n";
- code += Indent + " * @return" + GenTypeBasic(field.value.type) + "\n";
- code += Indent + " */\n";
- code += Indent + "public function get";
- code += MakeCamel(field.name) + "($obj)\n";
- code += Indent + "{\n";
- code += Indent + Indent +
- "$o = $this->__offset(" +
- NumToString(field.value.offset) +
- ");\n";
- code += Indent + Indent;
- code += "return $o != 0 ? $this->__union($obj, $o) : null;\n";
- code += Indent + "}\n\n";
- }
-
- // Get the value of a vector's struct member.
- void GetMemberOfVectorOfStruct(const StructDef &struct_def,
- const FieldDef &field, std::string *code_ptr) {
- std::string &code = *code_ptr;
- auto vectortype = field.value.type.VectorType();
-
- code += Indent + "/**\n";
- code += Indent + " * @return" + GenTypeBasic(field.value.type) + "\n";
- code += Indent + " */\n";
- code += Indent + "public function get";
- code += MakeCamel(field.name);
- code += "($j)\n";
- code += Indent + "{\n";
- code += Indent + Indent +
- "$o = $this->__offset(" +
- NumToString(field.value.offset) +
- ");\n";
- code += Indent + Indent + "$obj = new ";
- code += MakeCamel(GenTypeGet(field.value.type)) + "();\n";
-
- switch (field.value.type.base_type) {
- case BASE_TYPE_STRUCT:
- if (struct_def.fixed) {
- code += Indent + Indent;
- code += "return $o != 0 ? $obj->init($this->bb_pos +"
- + NumToString(field.value.offset) + ", $this->bb) : null;\n";
- } else {
- code += Indent + Indent + "return $o != 0 ? $obj->init(";
- code += field.value.type.struct_def->fixed
- ? "$o + $this->bb_pos"
- : "$this->__indirect($o + $this->bb_pos)";
- code += ", $this->bb) : null;\n";
- }
- break;
- case BASE_TYPE_STRING:
- code += "// base_type_string\n";
- // TODO(chobie): do we need this?
- break;
- case BASE_TYPE_VECTOR:
- if (vectortype.base_type == BASE_TYPE_STRUCT) {
- code += Indent + Indent + "return $o != 0 ? $obj->init(";
- if (vectortype.struct_def->fixed) {
- code += "$this->__vector($o) + $j *";
- code += NumToString(InlineSize(vectortype));
- } else {
- code += "$this->__indirect($this->__vector($o) + $j * ";
- code += NumToString(InlineSize(vectortype)) + ")";
- }
- code += ", $this->bb) : null;\n";
- }
- break;
- case BASE_TYPE_UNION:
- code += Indent + Indent + "return $o != 0 ? $this->";
- code += GenGetter(field.value.type) + "($obj, $o); null;\n";
- break;
- default:
- break;
- }
-
- code += Indent + "}\n\n";
- }
-
- // Get the value of a vector's non-struct member. Uses a named return
- // argument to conveniently set the zero value for the result.
- void GetMemberOfVectorOfNonStruct(const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- auto vectortype = field.value.type.VectorType();
-
- code += Indent + "/**\n";
- code += Indent + " * @param int offset\n";
- code += Indent + " * @return " + GenTypeGet(field.value.type) + "\n";
- code += Indent + " */\n";
- code += Indent + "public function get";
- code += MakeCamel(field.name);
- code += "($j)\n";
- code += Indent + "{\n";
- code += Indent + Indent +
- "$o = $this->__offset(" +
- NumToString(field.value.offset) +
- ");\n";
-
- if (field.value.type.VectorType().base_type == BASE_TYPE_STRING) {
- code += Indent + Indent;
- code += "return $o != 0 ? $this->__string($this->__vector($o) + $j * ";
- code += NumToString(InlineSize(vectortype)) + ") : ";
- code += GenDefaultValue(field.value) + ";\n";
- } else {
- code += Indent + Indent + "return $o != 0 ? $this->bb->get";
- code += MakeCamel(GenTypeGet(field.value.type));
- code += "($this->__vector($o) + $j * ";
- code += NumToString(InlineSize(vectortype)) + ") : ";
- code += GenDefaultValue(field.value) + ";\n";
- }
- code += Indent + "}\n\n";
- }
-
- // Recursively generate arguments for a constructor, to deal with nested
- // structs.
- static void StructBuilderArgs(const StructDef &struct_def,
- const char *nameprefix,
- std::string *code_ptr) {
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end();
- ++it) {
- auto &field = **it;
- if (IsStruct(field.value.type)) {
- // Generate arguments for a struct inside a struct. To ensure names
- // don't clash, and to make it obvious
- // these arguments are constructing
- // a nested struct, prefix the name with the field name.
- StructBuilderArgs(*field.value.type.struct_def,
- (nameprefix + (field.name + "_")).c_str(),
- code_ptr);
- } else {
- std::string &code = *code_ptr;
- code += (std::string)", $" + nameprefix;
- code += MakeCamel(field.name, false);
- }
- }
- }
-
- // Recursively generate struct construction statements and instert manual
- // padding.
- static void StructBuilderBody(const StructDef &struct_def,
- const char *nameprefix,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += Indent + Indent + "$builder->prep(";
- code += NumToString(struct_def.minalign) + ", ";
- code += NumToString(struct_def.bytesize) + ");\n";
- for (auto it = struct_def.fields.vec.rbegin();
- it != struct_def.fields.vec.rend();
- ++it) {
- auto &field = **it;
- if (field.padding) {
- code += Indent + Indent + "$builder->pad(";
- code += NumToString(field.padding) + ");\n";
- }
- if (IsStruct(field.value.type)) {
- StructBuilderBody(*field.value.type.struct_def,
- (nameprefix + (field.name + "_")).c_str(),
- code_ptr);
- } else {
- code += Indent + Indent + "$builder->put" + GenMethod(field) + "($";
- code += nameprefix + MakeCamel(field.name, false) + ");\n";
- }
- }
- }
-
- // Get the value of a table's starting offset.
- static void GetStartOfTable(const StructDef &struct_def,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
-
- code += Indent + "/**\n";
- code += Indent + " * @param FlatBufferBuilder $builder\n";
- code += Indent + " * @return void\n";
- code += Indent + " */\n";
- code += Indent + "public static function start" + struct_def.name;
- code += "(FlatBufferBuilder $builder)\n";
- code += Indent + "{\n";
- code += Indent + Indent + "$builder->StartObject(";
- code += NumToString(struct_def.fields.vec.size());
- code += ");\n";
- code += Indent + "}\n\n";
-
- code += Indent + "/**\n";
- code += Indent + " * @param FlatBufferBuilder $builder\n";
- code += Indent + " * @return " + struct_def.name + "\n";
- code += Indent + " */\n";
- code += Indent + "public static function create" + struct_def.name;
- code += "(FlatBufferBuilder $builder, ";
-
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end();
- ++it) {
- auto &field = **it;
-
- if (field.deprecated) continue;
- code += "$" + field.name;
- if (!(it == (--struct_def.fields.vec.end()))) {
- code += ", ";
- }
- }
- code += ")\n";
- code += Indent + "{\n";
- code += Indent + Indent + "$builder->startObject(";
- code += NumToString(struct_def.fields.vec.size());
- code += ");\n";
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end();
- ++it) {
- auto &field = **it;
- if (field.deprecated) continue;
-
- code += Indent + Indent + "self::add";
- code += MakeCamel(field.name) + "($builder, $" + field.name + ");\n";
- }
-
- code += Indent + Indent + "$o = $builder->endObject();\n";
-
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end();
- ++it) {
- auto &field = **it;
- if (!field.deprecated && field.required) {
- code += Indent + Indent + "$builder->required($o, ";
- code += NumToString(field.value.offset);
- code += "); // " + field.name + "\n";
- }
- }
- code += Indent + Indent + "return $o;\n";
- code += Indent + "}\n\n";
- }
-
- // Set the value of a table's field.
- static void BuildFieldOfTable(const FieldDef &field,
- const size_t offset,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
-
-
- code += Indent + "/**\n";
- code += Indent + " * @param FlatBufferBuilder $builder\n";
- code += Indent + " * @param " + GenTypeBasic(field.value.type) + "\n";
- code += Indent + " * @return void\n";
- code += Indent + " */\n";
- code += Indent + "public static function ";
- code += "add" + MakeCamel(field.name);
- code += "(FlatBufferBuilder $builder, ";
- code += "$" + MakeCamel(field.name, false);
- code += ")\n";
- code += Indent + "{\n";
- code += Indent + Indent + "$builder->add";
- code += GenMethod(field) + "X(";
- code += NumToString(offset) + ", ";
-
-
- code += "$" + MakeCamel(field.name, false);
- code += ", ";
-
- if (field.value.type.base_type == BASE_TYPE_BOOL) {
- code += "false";
- } else {
- code += field.value.constant;
- }
- code += ");\n";
- code += Indent + "}\n\n";
- }
-
- // Set the value of one of the members of a table's vector.
- static void BuildVectorOfTable(const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
-
- auto vector_type = field.value.type.VectorType();
- auto alignment = InlineAlignment(vector_type);
- auto elem_size = InlineSize(vector_type);
- code += Indent + "/**\n";
- code += Indent + " * @param FlatBufferBuilder $builder\n";
- code += Indent + " * @param array offset array\n";
- code += Indent + " * @return int vector offset\n";
- code += Indent + " */\n";
- code += Indent + "public static function create";
- code += MakeCamel(field.name);
- code += "Vector(FlatBufferBuilder $builder, array $data)\n";
- code += Indent + "{\n";
- code += Indent + Indent + "$builder->startVector(";
- code += NumToString(elem_size);
- code += ", count($data), " + NumToString(alignment);
- code += ");\n";
- code += Indent + Indent;
- code += "for ($i = count($data) - 1; $i >= 0; $i--) {\n";
- if (IsScalar(field.value.type.VectorType().base_type)) {
- code += Indent + Indent + Indent;
- code += "$builder->add";
- code += MakeCamel(GenTypeBasic(field.value.type.VectorType()));
- code += "($data[$i]);\n";
- } else {
- code += Indent + Indent + Indent;
- code += "$builder->addOffset($data[$i]);\n";
- }
- code += Indent + Indent + "}\n";
- code += Indent + Indent + "return $builder->endVector();\n";
- code += Indent + "}\n\n";
-
-
- code += Indent + "/**\n";
- code += Indent + " * @param FlatBufferBuilder $builder\n";
- code += Indent + " * @param int $numElems\n";
- code += Indent + " * @return void\n";
- code += Indent + " */\n";
- code += Indent + "public static function start";
- code += MakeCamel(field.name);
- code += "Vector(FlatBufferBuilder $builder, $numElems)\n";
- code += Indent + "{\n";
- code += Indent + Indent + "$builder->startVector(";
- code += NumToString(elem_size);
- code += ", $numElems, " + NumToString(alignment);
- code += ");\n";
- code += Indent + "}\n\n";
- }
-
- // Get the offset of the end of a table.
- void GetEndOffsetOnTable(const StructDef &struct_def, std::string *code_ptr) {
- std::string &code = *code_ptr;
-
-
- code += Indent + "/**\n";
- code += Indent + " * @param FlatBufferBuilder $builder\n";
- code += Indent + " * @return int table offset\n";
- code += Indent + " */\n";
- code += Indent + "public static function end" + struct_def.name;
- code += "(FlatBufferBuilder $builder)\n";
- code += Indent + "{\n";
- code += Indent + Indent + "$o = $builder->endObject();\n";
-
-
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end();
- ++it) {
- auto &field = **it;
- if (!field.deprecated && field.required) {
- code += Indent + Indent + "$builder->required($o, ";
- code += NumToString(field.value.offset);
- code += "); // " + field.name + "\n";
- }
- }
- code += Indent + Indent + "return $o;\n";
- code += Indent + "}\n";
-
- if (parser_.root_struct_def_ == &struct_def) {
- code += "\n";
- code += Indent + "public static function finish";
- code += struct_def.name;
- code += "Buffer(FlatBufferBuilder $builder, $offset)\n";
- code += Indent + "{\n";
- code += Indent + Indent + "$builder->finish($offset";
-
- if (parser_.file_identifier_.length())
- code += ", \"" + parser_.file_identifier_ + "\"";
- code += ");\n";
- code += Indent + "}\n";
- }
- }
-
- // Generate a struct field, conditioned on its child type(s).
- void GenStructAccessor(const StructDef &struct_def, const FieldDef &field,
- std::string *code_ptr) {
- GenComment(field.doc_comment, code_ptr, nullptr);
-
- if (IsScalar(field.value.type.base_type)) {
- if (struct_def.fixed) {
- GetScalarFieldOfStruct(field, code_ptr);
- } else {
- GetScalarFieldOfTable(field, code_ptr);
- }
- } else {
- switch (field.value.type.base_type) {
- case BASE_TYPE_STRUCT:
- if (struct_def.fixed) {
- GetStructFieldOfStruct(field, code_ptr);
- } else {
- GetStructFieldOfTable(field, code_ptr);
- }
- break;
- case BASE_TYPE_STRING:
- GetStringField(field, code_ptr);
- break;
- case BASE_TYPE_VECTOR: {
- auto vectortype = field.value.type.VectorType();
- if (vectortype.base_type == BASE_TYPE_STRUCT) {
- GetMemberOfVectorOfStruct(struct_def, field, code_ptr);
- } else {
- GetMemberOfVectorOfNonStruct(field, code_ptr);
- }
- break;
- }
- case BASE_TYPE_UNION:
- GetUnionField(field, code_ptr);
- break;
- default:
- assert(0);
- }
- }
- if (field.value.type.base_type == BASE_TYPE_VECTOR) {
- GetVectorLen(field, code_ptr);
- if (field.value.type.element == BASE_TYPE_UCHAR) {
- GetUByte(field, code_ptr);
- }
- }
- }
-
- // Generate table constructors, conditioned on its members' types.
- void GenTableBuilders(const StructDef &struct_def, std::string *code_ptr) {
- GetStartOfTable(struct_def, code_ptr);
-
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end();
- ++it) {
- auto &field = **it;
- if (field.deprecated) continue;
-
- auto offset = it - struct_def.fields.vec.begin();
- if (field.value.type.base_type == BASE_TYPE_UNION) {
- std::string &code = *code_ptr;
- code += Indent + "public static function add";
- code += MakeCamel(field.name);
- code += "(FlatBufferBuilder $builder, $offset)\n";
- code += Indent + "{\n";
- code += Indent + Indent + "$builder->addOffsetX(";
- code += NumToString(offset) + ", $offset, 0);\n";
- code += Indent + "}\n\n";
- } else {
- BuildFieldOfTable(field, offset, code_ptr);
- }
- if (field.value.type.base_type == BASE_TYPE_VECTOR) {
- BuildVectorOfTable(field, code_ptr);
- }
- }
-
- GetEndOffsetOnTable(struct_def, code_ptr);
- }
-
- // Generate struct or table methods.
- void GenStruct(const StructDef &struct_def,
- std::string *code_ptr) {
- if (struct_def.generated) return;
-
- GenComment(struct_def.doc_comment, code_ptr, nullptr);
- BeginClass(struct_def, code_ptr);
-
- if (!struct_def.fixed) {
- // Generate a special accessor for the table that has been declared as
- // the root type.
- NewRootTypeFromBuffer(struct_def, code_ptr);
- }
-
- std::string &code = *code_ptr;
- if (!struct_def.fixed) {
- if (parser_.file_identifier_.length()) {
- // Return the identifier
- code += Indent + "public static function " + struct_def.name;
- code += "Identifier()\n";
- code += Indent + "{\n";
- code += Indent + Indent + "return \"";
- code += parser_.file_identifier_ + "\";\n";
- code += Indent + "}\n\n";
-
- // Check if a buffer has the identifier.
- code += Indent + "public static function " + struct_def.name;
- code += "BufferHasIdentifier(ByteBuffer $buf)\n";
- code += Indent + "{\n";
- code += Indent + Indent + "return self::";
- code += "__has_identifier($buf, self::";
- code += struct_def.name + "Identifier());\n";
- code += Indent + "}\n\n";
- }
-
- if (parser_.file_extension_.length()) {
- // Return the extension
- code += Indent + "public static function " + struct_def.name;
- code += "Extension()\n";
- code += Indent + "{\n";
- code += Indent + Indent + "return \"" + parser_.file_extension_;
- code += "\";\n";
- code += Indent + "}\n\n";
- }
- }
-
- // Generate the Init method that sets the field in a pre-existing
- // accessor object. This is to allow object reuse.
- InitializeExisting(struct_def, code_ptr);
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end();
- ++it) {
- auto &field = **it;
- if (field.deprecated) continue;
-
- GenStructAccessor(struct_def, field, code_ptr);
- }
-
- if (struct_def.fixed) {
- // create a struct constructor function
- GenStructBuilder(struct_def, code_ptr);
- } else {
- // Create a set of functions that allow table construction.
- GenTableBuilders(struct_def, code_ptr);
- }
- EndClass(code_ptr);
- }
-
- // Generate enum declarations.
- static void GenEnum(const EnumDef &enum_def, std::string *code_ptr) {
- if (enum_def.generated) return;
-
- GenComment(enum_def.doc_comment, code_ptr, nullptr);
- BeginEnum(enum_def.name, code_ptr);
- for (auto it = enum_def.vals.vec.begin();
- it != enum_def.vals.vec.end();
- ++it) {
- auto &ev = **it;
- GenComment(ev.doc_comment, code_ptr, nullptr);
- EnumMember(ev, code_ptr);
- }
-
- std::string &code = *code_ptr;
- code += "\n";
- code += Indent + "private static $names = array(\n";
- for (auto it = enum_def.vals.vec.begin();
- it != enum_def.vals.vec.end(); ++it) {
- auto &ev = **it;
- code += Indent + Indent + "\"" + ev.name + "\",\n";
- }
-
- code += Indent + ");\n\n";
- code += Indent + "public static function Name($e)\n";
- code += Indent + "{\n";
- code += Indent + Indent + "if (!isset(self::$names[$e])) {\n";
- code += Indent + Indent + Indent + "throw new \\Exception();\n";
- code += Indent + Indent + "}\n";
- code += Indent + Indent + "return self::$names[$e];\n";
- code += Indent + "}\n";
- EndEnum(code_ptr);
- }
-
- // Returns the function name that is able to read a value of the given type.
- static std::string GenGetter(const Type &type) {
- switch (type.base_type) {
- case BASE_TYPE_STRING: return "__string";
- case BASE_TYPE_STRUCT: return "__struct";
- case BASE_TYPE_UNION: return "__union";
- case BASE_TYPE_VECTOR: return GenGetter(type.VectorType());
- default:
- return "Get";
- }
- }
-
- // Returns the method name for use with add/put calls.
- static std::string GenMethod(const FieldDef &field) {
- return IsScalar(field.value.type.base_type)
- ? MakeCamel(GenTypeBasic(field.value.type))
- : (IsStruct(field.value.type) ? "Struct" : "Offset");
- }
-
- static std::string GenTypeBasic(const Type &type) {
- static const char *ctypename[] = {
-#define FLATBUFFERS_TD(ENUM, IDLTYPE, CTYPE, JTYPE, GTYPE, NTYPE, PTYPE) \
- #NTYPE,
- FLATBUFFERS_GEN_TYPES(FLATBUFFERS_TD)
-#undef FLATBUFFERS_TD
- };
- return ctypename[type.base_type];
- }
-
- std::string GenDefaultValue(const Value &value) {
- if (value.type.enum_def) {
- if (auto val = value.type.enum_def->ReverseLookup(
- atoi(value.constant.c_str()), false)) {
- return WrapInNameSpace(*value.type.enum_def) + "::" + val->name;
- }
- }
-
- switch (value.type.base_type) {
- case BASE_TYPE_BOOL:
- return value.constant == "0" ? "false" : "true";
-
- case BASE_TYPE_STRING:
- return "null";
-
- case BASE_TYPE_LONG:
- case BASE_TYPE_ULONG:
- if (value.constant != "0") {
- int64_t constant = StringToInt(value.constant.c_str());
- return NumToString(constant);
- }
- return "0";
-
- default:
- return value.constant;
- }
- }
-
- static std::string GenTypePointer(const Type &type) {
- switch (type.base_type) {
- case BASE_TYPE_STRING:
- return "string";
- case BASE_TYPE_VECTOR:
- return GenTypeGet(type.VectorType());
- case BASE_TYPE_STRUCT:
- return type.struct_def->name;
- case BASE_TYPE_UNION:
- // fall through
- default:
- return "Table";
- }
- }
-
- static std::string GenTypeGet(const Type &type) {
- return IsScalar(type.base_type)
- ? GenTypeBasic(type)
- : GenTypePointer(type);
- }
-
- // Create a struct with a builder and the struct's arguments.
- static void GenStructBuilder(const StructDef &struct_def,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "\n";
- code += Indent + "/**\n";
- code += Indent + " * @return int offset\n";
- code += Indent + " */\n";
- code += Indent + "public static function create" + struct_def.name;
- code += "(FlatBufferBuilder $builder";
- StructBuilderArgs(struct_def, "", code_ptr);
- code += ")\n";
- code += Indent + "{\n";
-
- StructBuilderBody(struct_def, "", code_ptr);
-
- code += Indent + Indent + "return $builder->offset();\n";
- code += Indent + "}\n";
- }
-
- };
- } // namespace php
-
- bool GeneratePhp(const Parser &parser, const std::string &path,
- const std::string &file_name) {
- php::PhpGenerator generator(parser, path, file_name);
- return generator.generate();
- }
- } // namespace flatbuffers
diff --git a/third_party/flatbuffers/src/idl_gen_python.cpp b/third_party/flatbuffers/src/idl_gen_python.cpp
deleted file mode 100644
index 76fea3e..0000000
--- a/third_party/flatbuffers/src/idl_gen_python.cpp
+++ /dev/null
@@ -1,671 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// independent from idl_parser, since this code is not needed for most clients
-
-#include <string>
-
-#include "flatbuffers/flatbuffers.h"
-#include "flatbuffers/idl.h"
-#include "flatbuffers/util.h"
-#include "flatbuffers/code_generators.h"
-
-namespace flatbuffers {
-namespace python {
-
-static std::string GenGetter(const Type &type);
-static std::string GenMethod(const FieldDef &field);
-static void GenStructBuilder(const StructDef &struct_def,
- std::string *code_ptr);
-static void GenReceiver(const StructDef &struct_def, std::string *code_ptr);
-static std::string GenTypeBasic(const Type &type);
-static std::string GenTypeGet(const Type &type);
-static std::string TypeName(const FieldDef &field);
-
-
-// Hardcode spaces per indentation.
-const std::string Indent = " ";
-
-// Most field accessors need to retrieve and test the field offset first,
-// this is the prefix code for that.
-std::string OffsetPrefix(const FieldDef &field) {
- return "\n" + Indent + Indent +
- "o = flatbuffers.number_types.UOffsetTFlags.py_type" +
- "(self._tab.Offset(" +
- NumToString(field.value.offset) +
- "))\n" + Indent + Indent + "if o != 0:\n";
-}
-
-// Begin a class declaration.
-static void BeginClass(const StructDef &struct_def, std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "class " + struct_def.name + "(object):\n";
- code += Indent + "__slots__ = ['_tab']";
- code += "\n\n";
-}
-
-// Begin enum code with a class declaration.
-static void BeginEnum(const std::string class_name, std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "class " + class_name + "(object):\n";
-}
-
-// A single enum member.
-static void EnumMember(const EnumVal ev, std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += Indent;
- code += ev.name;
- code += " = ";
- code += NumToString(ev.value) + "\n";
-}
-
-// End enum code.
-static void EndEnum(std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "\n";
-}
-
-// Initialize a new struct or table from existing data.
-static void NewRootTypeFromBuffer(const StructDef &struct_def,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
-
- code += Indent + "@classmethod\n";
- code += Indent + "def GetRootAs";
- code += struct_def.name;
- code += "(cls, buf, offset):";
- code += "\n";
- code += Indent + Indent;
- code += "n = flatbuffers.encode.Get";
- code += "(flatbuffers.packer.uoffset, buf, offset)\n";
- code += Indent + Indent + "x = " + struct_def.name + "()\n";
- code += Indent + Indent + "x.Init(buf, n + offset)\n";
- code += Indent + Indent + "return x\n";
- code += "\n";
-}
-
-// Initialize an existing object with other data, to avoid an allocation.
-static void InitializeExisting(const StructDef &struct_def,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
-
- GenReceiver(struct_def, code_ptr);
- code += "Init(self, buf, pos):\n";
- code += Indent + Indent + "self._tab = flatbuffers.table.Table(buf, pos)\n";
- code += "\n";
-}
-
-// Get the length of a vector.
-static void GetVectorLen(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
-
- GenReceiver(struct_def, code_ptr);
- code += MakeCamel(field.name) + "Length(self";
- code += "):" + OffsetPrefix(field);
- code += Indent + Indent + Indent + "return self._tab.VectorLen(o)\n";
- code += Indent + Indent + "return 0\n\n";
-}
-
-// Get the value of a struct's scalar.
-static void GetScalarFieldOfStruct(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- std::string getter = GenGetter(field.value.type);
- GenReceiver(struct_def, code_ptr);
- code += MakeCamel(field.name);
- code += "(self): return " + getter;
- code += "self._tab.Pos + flatbuffers.number_types.UOffsetTFlags.py_type(";
- code += NumToString(field.value.offset) + "))\n";
-}
-
-// Get the value of a table's scalar.
-static void GetScalarFieldOfTable(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- std::string getter = GenGetter(field.value.type);
- GenReceiver(struct_def, code_ptr);
- code += MakeCamel(field.name);
- code += "(self):";
- code += OffsetPrefix(field);
- code += Indent + Indent + Indent + "return " + getter;
- code += "o + self._tab.Pos)\n";
- code += Indent + Indent + "return " + field.value.constant + "\n\n";
-}
-
-// Get a struct by initializing an existing struct.
-// Specific to Struct.
-static void GetStructFieldOfStruct(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- GenReceiver(struct_def, code_ptr);
- code += MakeCamel(field.name);
- code += "(self, obj):\n";
- code += Indent + Indent + "obj.Init(self._tab.Bytes, self._tab.Pos + ";
- code += NumToString(field.value.offset) + ")";
- code += "\n" + Indent + Indent + "return obj\n\n";
-}
-
-// Get a struct by initializing an existing struct.
-// Specific to Table.
-static void GetStructFieldOfTable(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- GenReceiver(struct_def, code_ptr);
- code += MakeCamel(field.name);
- code += "(self):";
- code += OffsetPrefix(field);
- if (field.value.type.struct_def->fixed) {
- code += Indent + Indent + Indent + "x = o + self._tab.Pos\n";
- } else {
- code += Indent + Indent + Indent;
- code += "x = self._tab.Indirect(o + self._tab.Pos)\n";
- }
- code += Indent + Indent + Indent;
- code += "from ." + TypeName(field) + " import " + TypeName(field) + "\n";
- code += Indent + Indent + Indent + "obj = " + TypeName(field) + "()\n";
- code += Indent + Indent + Indent + "obj.Init(self._tab.Bytes, x)\n";
- code += Indent + Indent + Indent + "return obj\n";
- code += Indent + Indent + "return None\n\n";
-}
-
-// Get the value of a string.
-static void GetStringField(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- GenReceiver(struct_def, code_ptr);
- code += MakeCamel(field.name);
- code += "(self):";
- code += OffsetPrefix(field);
- code += Indent + Indent + Indent + "return " + GenGetter(field.value.type);
- code += "o + self._tab.Pos)\n";
- code += Indent + Indent + "return \"\"\n\n";
-}
-
-// Get the value of a union from an object.
-static void GetUnionField(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- GenReceiver(struct_def, code_ptr);
- code += MakeCamel(field.name) + "(self):";
- code += OffsetPrefix(field);
-
- // TODO(rw): this works and is not the good way to it:
- bool is_native_table = TypeName(field) == "*flatbuffers.Table";
- if (is_native_table) {
- code += Indent + Indent + Indent + "from flatbuffers.table import Table\n";
- } else {
- code += Indent + Indent + Indent;
- code += "from ." + TypeName(field) + " import " + TypeName(field) + "\n";
- }
- code += Indent + Indent + Indent + "obj = Table(bytearray(), 0)\n";
- code += Indent + Indent + Indent + GenGetter(field.value.type);
- code += "obj, o)\n" + Indent + Indent + Indent + "return obj\n";
- code += Indent + Indent + "return None\n\n";
-}
-
-// Get the value of a vector's struct member.
-static void GetMemberOfVectorOfStruct(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- auto vectortype = field.value.type.VectorType();
-
- GenReceiver(struct_def, code_ptr);
- code += MakeCamel(field.name);
- code += "(self, j):" + OffsetPrefix(field);
- code += Indent + Indent + Indent + "x = self._tab.Vector(o)\n";
- code += Indent + Indent + Indent;
- code += "x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * ";
- code += NumToString(InlineSize(vectortype)) + "\n";
- if (!(vectortype.struct_def->fixed)) {
- code += Indent + Indent + Indent + "x = self._tab.Indirect(x)\n";
- }
- code += Indent + Indent + Indent;
- code += "from ." + TypeName(field) + " import " + TypeName(field) + "\n";
- code += Indent + Indent + Indent + "obj = " + TypeName(field) + "()\n";
- code += Indent + Indent + Indent + "obj.Init(self._tab.Bytes, x)\n";
- code += Indent + Indent + Indent + "return obj\n";
- code += Indent + Indent + "return None\n\n";
-}
-
-// Get the value of a vector's non-struct member. Uses a named return
-// argument to conveniently set the zero value for the result.
-static void GetMemberOfVectorOfNonStruct(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- auto vectortype = field.value.type.VectorType();
-
- GenReceiver(struct_def, code_ptr);
- code += MakeCamel(field.name);
- code += "(self, j):";
- code += OffsetPrefix(field);
- code += Indent + Indent + Indent + "a = self._tab.Vector(o)\n";
- code += Indent + Indent + Indent;
- code += "return " + GenGetter(field.value.type);
- code += "a + flatbuffers.number_types.UOffsetTFlags.py_type(j * ";
- code += NumToString(InlineSize(vectortype)) + "))\n";
- if (vectortype.base_type == BASE_TYPE_STRING) {
- code += Indent + Indent + "return \"\"\n";
- } else {
- code += Indent + Indent + "return 0\n";
- }
- code += "\n";
-}
-
-// Begin the creator function signature.
-static void BeginBuilderArgs(const StructDef &struct_def,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
-
- code += "\n";
- code += "def Create" + struct_def.name;
- code += "(builder";
-}
-
-// Recursively generate arguments for a constructor, to deal with nested
-// structs.
-static void StructBuilderArgs(const StructDef &struct_def,
- const char *nameprefix,
- std::string *code_ptr) {
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end();
- ++it) {
- auto &field = **it;
- if (IsStruct(field.value.type)) {
- // Generate arguments for a struct inside a struct. To ensure names
- // don't clash, and to make it obvious these arguments are constructing
- // a nested struct, prefix the name with the field name.
- StructBuilderArgs(*field.value.type.struct_def,
- (nameprefix + (field.name + "_")).c_str(),
- code_ptr);
- } else {
- std::string &code = *code_ptr;
- code += (std::string)", " + nameprefix;
- code += MakeCamel(field.name, false);
- }
- }
-}
-
-// End the creator function signature.
-static void EndBuilderArgs(std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "):\n";
-}
-
-// Recursively generate struct construction statements and instert manual
-// padding.
-static void StructBuilderBody(const StructDef &struct_def,
- const char *nameprefix,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += " builder.Prep(" + NumToString(struct_def.minalign) + ", ";
- code += NumToString(struct_def.bytesize) + ")\n";
- for (auto it = struct_def.fields.vec.rbegin();
- it != struct_def.fields.vec.rend();
- ++it) {
- auto &field = **it;
- if (field.padding)
- code += " builder.Pad(" + NumToString(field.padding) + ")\n";
- if (IsStruct(field.value.type)) {
- StructBuilderBody(*field.value.type.struct_def,
- (nameprefix + (field.name + "_")).c_str(),
- code_ptr);
- } else {
- code += " builder.Prepend" + GenMethod(field) + "(";
- code += nameprefix + MakeCamel(field.name, false) + ")\n";
- }
- }
-}
-
-static void EndBuilderBody(std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += " return builder.Offset()\n";
-}
-
-// Get the value of a table's starting offset.
-static void GetStartOfTable(const StructDef &struct_def,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "def " + struct_def.name + "Start";
- code += "(builder): ";
- code += "builder.StartObject(";
- code += NumToString(struct_def.fields.vec.size());
- code += ")\n";
-}
-
-// Set the value of a table's field.
-static void BuildFieldOfTable(const StructDef &struct_def,
- const FieldDef &field,
- const size_t offset,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "def " + struct_def.name + "Add" + MakeCamel(field.name);
- code += "(builder, ";
- code += MakeCamel(field.name, false);
- code += "): ";
- code += "builder.Prepend";
- code += GenMethod(field) + "Slot(";
- code += NumToString(offset) + ", ";
- if (!IsScalar(field.value.type.base_type) && (!struct_def.fixed)) {
- code += "flatbuffers.number_types.UOffsetTFlags.py_type";
- code += "(";
- code += MakeCamel(field.name, false) + ")";
- } else {
- code += MakeCamel(field.name, false);
- }
- code += ", " + field.value.constant;
- code += ")\n";
-}
-
-// Set the value of one of the members of a table's vector.
-static void BuildVectorOfTable(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "def " + struct_def.name + "Start";
- code += MakeCamel(field.name);
- code += "Vector(builder, numElems): return builder.StartVector(";
- auto vector_type = field.value.type.VectorType();
- auto alignment = InlineAlignment(vector_type);
- auto elem_size = InlineSize(vector_type);
- code += NumToString(elem_size);
- code += ", numElems, " + NumToString(alignment);
- code += ")\n";
-}
-
-// Get the offset of the end of a table.
-static void GetEndOffsetOnTable(const StructDef &struct_def,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += "def " + struct_def.name + "End";
- code += "(builder): ";
- code += "return builder.EndObject()\n";
-}
-
-// Generate the receiver for function signatures.
-static void GenReceiver(const StructDef &struct_def, std::string *code_ptr) {
- std::string &code = *code_ptr;
- code += Indent + "# " + struct_def.name + "\n";
- code += Indent + "def ";
-}
-
-// Generate a struct field, conditioned on its child type(s).
-static void GenStructAccessor(const StructDef &struct_def,
- const FieldDef &field,
- std::string *code_ptr) {
- GenComment(field.doc_comment, code_ptr, nullptr, "# ");
- if (IsScalar(field.value.type.base_type)) {
- if (struct_def.fixed) {
- GetScalarFieldOfStruct(struct_def, field, code_ptr);
- } else {
- GetScalarFieldOfTable(struct_def, field, code_ptr);
- }
- } else {
- switch (field.value.type.base_type) {
- case BASE_TYPE_STRUCT:
- if (struct_def.fixed) {
- GetStructFieldOfStruct(struct_def, field, code_ptr);
- } else {
- GetStructFieldOfTable(struct_def, field, code_ptr);
- }
- break;
- case BASE_TYPE_STRING:
- GetStringField(struct_def, field, code_ptr);
- break;
- case BASE_TYPE_VECTOR: {
- auto vectortype = field.value.type.VectorType();
- if (vectortype.base_type == BASE_TYPE_STRUCT) {
- GetMemberOfVectorOfStruct(struct_def, field, code_ptr);
- } else {
- GetMemberOfVectorOfNonStruct(struct_def, field, code_ptr);
- }
- break;
- }
- case BASE_TYPE_UNION:
- GetUnionField(struct_def, field, code_ptr);
- break;
- default:
- assert(0);
- }
- }
- if (field.value.type.base_type == BASE_TYPE_VECTOR) {
- GetVectorLen(struct_def, field, code_ptr);
- }
-}
-
-// Generate table constructors, conditioned on its members' types.
-static void GenTableBuilders(const StructDef &struct_def,
- std::string *code_ptr) {
- GetStartOfTable(struct_def, code_ptr);
-
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end();
- ++it) {
- auto &field = **it;
- if (field.deprecated) continue;
-
- auto offset = it - struct_def.fields.vec.begin();
- BuildFieldOfTable(struct_def, field, offset, code_ptr);
- if (field.value.type.base_type == BASE_TYPE_VECTOR) {
- BuildVectorOfTable(struct_def, field, code_ptr);
- }
- }
-
- GetEndOffsetOnTable(struct_def, code_ptr);
-}
-
-// Generate struct or table methods.
-static void GenStruct(const StructDef &struct_def,
- std::string *code_ptr) {
- if (struct_def.generated) return;
-
- GenComment(struct_def.doc_comment, code_ptr, nullptr, "# ");
- BeginClass(struct_def, code_ptr);
- if (!struct_def.fixed) {
- // Generate a special accessor for the table that has been declared as
- // the root type.
- NewRootTypeFromBuffer(struct_def, code_ptr);
- }
- // Generate the Init method that sets the field in a pre-existing
- // accessor object. This is to allow object reuse.
- InitializeExisting(struct_def, code_ptr);
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end();
- ++it) {
- auto &field = **it;
- if (field.deprecated) continue;
-
- GenStructAccessor(struct_def, field, code_ptr);
- }
-
- if (struct_def.fixed) {
- // create a struct constructor function
- GenStructBuilder(struct_def, code_ptr);
- } else {
- // Create a set of functions that allow table construction.
- GenTableBuilders(struct_def, code_ptr);
- }
-}
-
-// Generate enum declarations.
-static void GenEnum(const EnumDef &enum_def, std::string *code_ptr) {
- if (enum_def.generated) return;
-
- GenComment(enum_def.doc_comment, code_ptr, nullptr, "# ");
- BeginEnum(enum_def.name, code_ptr);
- for (auto it = enum_def.vals.vec.begin();
- it != enum_def.vals.vec.end();
- ++it) {
- auto &ev = **it;
- GenComment(ev.doc_comment, code_ptr, nullptr, "# ");
- EnumMember(ev, code_ptr);
- }
- EndEnum(code_ptr);
-}
-
-// Returns the function name that is able to read a value of the given type.
-static std::string GenGetter(const Type &type) {
- switch (type.base_type) {
- case BASE_TYPE_STRING: return "self._tab.String(";
- case BASE_TYPE_UNION: return "self._tab.Union(";
- case BASE_TYPE_VECTOR: return GenGetter(type.VectorType());
- default:
- return "self._tab.Get(flatbuffers.number_types." + \
- MakeCamel(GenTypeGet(type)) + \
- "Flags, ";
- }
-}
-
-// Returns the method name for use with add/put calls.
-static std::string GenMethod(const FieldDef &field) {
- return IsScalar(field.value.type.base_type)
- ? MakeCamel(GenTypeBasic(field.value.type))
- : (IsStruct(field.value.type) ? "Struct" : "UOffsetTRelative");
-}
-
-static std::string GenTypeBasic(const Type &type) {
- static const char *ctypename[] = {
- #define FLATBUFFERS_TD(ENUM, IDLTYPE, CTYPE, JTYPE, GTYPE, NTYPE, PTYPE) \
- #PTYPE,
- FLATBUFFERS_GEN_TYPES(FLATBUFFERS_TD)
- #undef FLATBUFFERS_TD
- };
- return ctypename[type.base_type];
-}
-
-static std::string GenTypePointer(const Type &type) {
- switch (type.base_type) {
- case BASE_TYPE_STRING:
- return "string";
- case BASE_TYPE_VECTOR:
- return GenTypeGet(type.VectorType());
- case BASE_TYPE_STRUCT:
- return type.struct_def->name;
- case BASE_TYPE_UNION:
- // fall through
- default:
- return "*flatbuffers.Table";
- }
-}
-
-static std::string GenTypeGet(const Type &type) {
- return IsScalar(type.base_type)
- ? GenTypeBasic(type)
- : GenTypePointer(type);
-}
-
-static std::string TypeName(const FieldDef &field) {
- return GenTypeGet(field.value.type);
-}
-
-// Create a struct with a builder and the struct's arguments.
-static void GenStructBuilder(const StructDef &struct_def,
- std::string *code_ptr) {
- BeginBuilderArgs(struct_def, code_ptr);
- StructBuilderArgs(struct_def, "", code_ptr);
- EndBuilderArgs(code_ptr);
-
- StructBuilderBody(struct_def, "", code_ptr);
- EndBuilderBody(code_ptr);
-}
-
-class PythonGenerator : public BaseGenerator {
- public:
- PythonGenerator(const Parser &parser, const std::string &path,
- const std::string &file_name)
- : BaseGenerator(parser, path, file_name, "" /* not used */,
- "" /* not used */){};
- bool generate() {
- if (!generateEnums()) return false;
- if (!generateStructs()) return false;
- return true;
- }
-
- private:
- bool generateEnums() {
- for (auto it = parser_.enums_.vec.begin(); it != parser_.enums_.vec.end();
- ++it) {
- auto &enum_def = **it;
- std::string enumcode;
- GenEnum(enum_def, &enumcode);
- if (!SaveType(enum_def, enumcode, false)) return false;
- }
- return true;
- }
-
- bool generateStructs() {
- for (auto it = parser_.structs_.vec.begin();
- it != parser_.structs_.vec.end(); ++it) {
- auto &struct_def = **it;
- std::string declcode;
- GenStruct(struct_def, &declcode);
- if (!SaveType(struct_def, declcode, true)) return false;
- }
- return true;
- }
-
- // Begin by declaring namespace and imports.
- void BeginFile(const std::string name_space_name, const bool needs_imports,
- std::string *code_ptr) {
- std::string &code = *code_ptr;
- code = code + "# " + FlatBuffersGeneratedWarning();
- code += "# namespace: " + name_space_name + "\n\n";
- if (needs_imports) {
- code += "import flatbuffers\n\n";
- }
- }
-
- // Save out the generated code for a Python Table type.
- bool SaveType(const Definition &def, const std::string &classcode,
- bool needs_imports) {
- if (!classcode.length()) return true;
-
- std::string namespace_dir = path_;
- auto &namespaces = parser_.namespaces_.back()->components;
- for (auto it = namespaces.begin(); it != namespaces.end(); ++it) {
- if (it != namespaces.begin()) namespace_dir += kPathSeparator;
- namespace_dir += *it;
- std::string init_py_filename = namespace_dir + "/__init__.py";
- SaveFile(init_py_filename.c_str(), "", false);
- }
-
- std::string code = "";
- BeginFile(LastNamespacePart(*def.defined_namespace), needs_imports, &code);
- code += classcode;
- std::string filename = NamespaceDir(*def.defined_namespace) +
- def.name + ".py";
- return SaveFile(filename.c_str(), code, false);
- }
-};
-
-} // namespace python
-
-bool GeneratePython(const Parser &parser, const std::string &path,
- const std::string &file_name) {
- python::PythonGenerator generator(parser, path, file_name);
- return generator.generate();
-}
-
-} // namespace flatbuffers
diff --git a/third_party/flatbuffers/src/idl_gen_text.cpp b/third_party/flatbuffers/src/idl_gen_text.cpp
deleted file mode 100644
index dc445e5..0000000
--- a/third_party/flatbuffers/src/idl_gen_text.cpp
+++ /dev/null
@@ -1,369 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// independent from idl_parser, since this code is not needed for most clients
-
-#include "flatbuffers/flatbuffers.h"
-#include "flatbuffers/idl.h"
-#include "flatbuffers/util.h"
-
-namespace flatbuffers {
-
-static bool GenStruct(const StructDef &struct_def, const Table *table,
- int indent, const IDLOptions &opts,
- std::string *_text);
-
-// If indentation is less than 0, that indicates we don't want any newlines
-// either.
-const char *NewLine(const IDLOptions &opts) {
- return opts.indent_step >= 0 ? "\n" : "";
-}
-
-int Indent(const IDLOptions &opts) {
- return std::max(opts.indent_step, 0);
-}
-
-// Output an identifier with or without quotes depending on strictness.
-void OutputIdentifier(const std::string &name, const IDLOptions &opts,
- std::string *_text) {
- std::string &text = *_text;
- if (opts.strict_json) text += "\"";
- text += name;
- if (opts.strict_json) text += "\"";
-}
-
-// Print (and its template specialization below for pointers) generate text
-// for a single FlatBuffer value into JSON format.
-// The general case for scalars:
-template<typename T> bool Print(T val, Type type, int /*indent*/,
- Type * /*union_type*/,
- const IDLOptions &opts,
- std::string *_text) {
- std::string &text = *_text;
- if (type.enum_def && opts.output_enum_identifiers) {
- auto enum_val = type.enum_def->ReverseLookup(static_cast<int>(val));
- if (enum_val) {
- OutputIdentifier(enum_val->name, opts, _text);
- return true;
- }
- }
-
- if (type.base_type == BASE_TYPE_BOOL) {
- text += val != 0 ? "true" : "false";
- } else {
- text += NumToString(val);
- }
-
- return true;
-}
-
-// Print a vector a sequence of JSON values, comma separated, wrapped in "[]".
-template<typename T> bool PrintVector(const Vector<T> &v, Type type,
- int indent, const IDLOptions &opts,
- std::string *_text) {
- std::string &text = *_text;
- text += "[";
- text += NewLine(opts);
- for (uoffset_t i = 0; i < v.size(); i++) {
- if (i) {
- text += ",";
- text += NewLine(opts);
- }
- text.append(indent + Indent(opts), ' ');
- if (IsStruct(type)) {
- if (!Print(v.GetStructFromOffset(i * type.struct_def->bytesize), type,
- indent + Indent(opts), nullptr, opts, _text)) {
- return false;
- }
- } else {
- if (!Print(v[i], type, indent + Indent(opts), nullptr,
- opts, _text)) {
- return false;
- }
- }
- }
- text += NewLine(opts);
- text.append(indent, ' ');
- text += "]";
- return true;
-}
-
-static bool EscapeString(const String &s, std::string *_text, const IDLOptions& opts) {
- std::string &text = *_text;
- text += "\"";
- for (uoffset_t i = 0; i < s.size(); i++) {
- char c = s[i];
- switch (c) {
- case '\n': text += "\\n"; break;
- case '\t': text += "\\t"; break;
- case '\r': text += "\\r"; break;
- case '\b': text += "\\b"; break;
- case '\f': text += "\\f"; break;
- case '\"': text += "\\\""; break;
- case '\\': text += "\\\\"; break;
- default:
- if (c >= ' ' && c <= '~') {
- text += c;
- } else {
- // Not printable ASCII data. Let's see if it's valid UTF-8 first:
- const char *utf8 = s.c_str() + i;
- int ucc = FromUTF8(&utf8);
- if (ucc < 0) {
- if (opts.allow_non_utf8) {
- text += "\\x";
- text += IntToStringHex(static_cast<uint8_t>(c), 2);
- } else {
- // There are two cases here:
- //
- // 1) We reached here by parsing an IDL file. In that case,
- // we previously checked for non-UTF-8, so we shouldn't reach
- // here.
- //
- // 2) We reached here by someone calling GenerateText()
- // on a previously-serialized flatbuffer. The data might have
- // non-UTF-8 Strings, or might be corrupt.
- //
- // In both cases, we have to give up and inform the caller
- // they have no JSON.
- return false;
- }
- } else {
- if (ucc <= 0xFFFF) {
- // Parses as Unicode within JSON's \uXXXX range, so use that.
- text += "\\u";
- text += IntToStringHex(ucc, 4);
- } else if (ucc <= 0x10FFFF) {
- // Encode Unicode SMP values to a surrogate pair using two \u escapes.
- uint32_t base = ucc - 0x10000;
- auto high_surrogate = (base >> 10) + 0xD800;
- auto low_surrogate = (base & 0x03FF) + 0xDC00;
- text += "\\u";
- text += IntToStringHex(high_surrogate, 4);
- text += "\\u";
- text += IntToStringHex(low_surrogate, 4);
- }
- // Skip past characters recognized.
- i = static_cast<uoffset_t>(utf8 - s.c_str() - 1);
- }
- }
- break;
- }
- }
- text += "\"";
- return true;
-}
-
-// Specialization of Print above for pointer types.
-template<> bool Print<const void *>(const void *val,
- Type type, int indent,
- Type *union_type,
- const IDLOptions &opts,
- std::string *_text) {
- switch (type.base_type) {
- case BASE_TYPE_UNION:
- // If this assert hits, you have an corrupt buffer, a union type field
- // was not present or was out of range.
- assert(union_type);
- return Print<const void *>(val, *union_type, indent, nullptr, opts,
- _text);
- case BASE_TYPE_STRUCT:
- if (!GenStruct(*type.struct_def,
- reinterpret_cast<const Table *>(val),
- indent,
- opts,
- _text)) {
- return false;
- }
- break;
- case BASE_TYPE_STRING: {
- if (!EscapeString(*reinterpret_cast<const String *>(val), _text, opts)) {
- return false;
- }
- break;
- }
- case BASE_TYPE_VECTOR:
- type = type.VectorType();
- // Call PrintVector above specifically for each element type:
- switch (type.base_type) {
- #define FLATBUFFERS_TD(ENUM, IDLTYPE, CTYPE, JTYPE, GTYPE, NTYPE, \
- PTYPE) \
- case BASE_TYPE_ ## ENUM: \
- if (!PrintVector<CTYPE>( \
- *reinterpret_cast<const Vector<CTYPE> *>(val), \
- type, indent, opts, _text)) { \
- return false; \
- } \
- break;
- FLATBUFFERS_GEN_TYPES(FLATBUFFERS_TD)
- #undef FLATBUFFERS_TD
- }
- break;
- default: assert(0);
- }
- return true;
-}
-
-// Generate text for a scalar field.
-template<typename T> static bool GenField(const FieldDef &fd,
- const Table *table, bool fixed,
- const IDLOptions &opts,
- int indent,
- std::string *_text) {
- return Print(fixed ?
- reinterpret_cast<const Struct *>(table)->GetField<T>(fd.value.offset) :
- table->GetField<T>(fd.value.offset, 0), fd.value.type, indent, nullptr,
- opts, _text);
-}
-
-// Generate text for non-scalar field.
-static bool GenFieldOffset(const FieldDef &fd, const Table *table, bool fixed,
- int indent, Type *union_type,
- const IDLOptions &opts, std::string *_text) {
- const void *val = nullptr;
- if (fixed) {
- // The only non-scalar fields in structs are structs.
- assert(IsStruct(fd.value.type));
- val = reinterpret_cast<const Struct *>(table)->
- GetStruct<const void *>(fd.value.offset);
- } else {
- val = IsStruct(fd.value.type)
- ? table->GetStruct<const void *>(fd.value.offset)
- : table->GetPointer<const void *>(fd.value.offset);
- }
- return Print(val, fd.value.type, indent, union_type, opts, _text);
-}
-
-// Generate text for a struct or table, values separated by commas, indented,
-// and bracketed by "{}"
-static bool GenStruct(const StructDef &struct_def, const Table *table,
- int indent, const IDLOptions &opts,
- std::string *_text) {
- std::string &text = *_text;
- text += "{";
- int fieldout = 0;
- Type *union_type = nullptr;
- for (auto it = struct_def.fields.vec.begin();
- it != struct_def.fields.vec.end();
- ++it) {
- FieldDef &fd = **it;
- auto is_present = struct_def.fixed || table->CheckField(fd.value.offset);
- auto output_anyway = opts.output_default_scalars_in_json &&
- IsScalar(fd.value.type.base_type) &&
- !fd.deprecated;
- if (is_present || output_anyway) {
- if (fieldout++) {
- text += ",";
- }
- text += NewLine(opts);
- text.append(indent + Indent(opts), ' ');
- OutputIdentifier(fd.name, opts, _text);
- text += ": ";
- if (is_present) {
- switch (fd.value.type.base_type) {
- #define FLATBUFFERS_TD(ENUM, IDLTYPE, CTYPE, JTYPE, GTYPE, NTYPE, \
- PTYPE) \
- case BASE_TYPE_ ## ENUM: \
- if (!GenField<CTYPE>(fd, table, struct_def.fixed, \
- opts, indent + Indent(opts), _text)) { \
- return false; \
- } \
- break;
- FLATBUFFERS_GEN_TYPES_SCALAR(FLATBUFFERS_TD)
- #undef FLATBUFFERS_TD
- // Generate drop-thru case statements for all pointer types:
- #define FLATBUFFERS_TD(ENUM, IDLTYPE, CTYPE, JTYPE, GTYPE, NTYPE, \
- PTYPE) \
- case BASE_TYPE_ ## ENUM:
- FLATBUFFERS_GEN_TYPES_POINTER(FLATBUFFERS_TD)
- #undef FLATBUFFERS_TD
- if (!GenFieldOffset(fd, table, struct_def.fixed, indent + Indent(opts),
- union_type, opts, _text)) {
- return false;
- }
- break;
- }
- if (fd.value.type.base_type == BASE_TYPE_UTYPE) {
- auto enum_val = fd.value.type.enum_def->ReverseLookup(
- table->GetField<uint8_t>(fd.value.offset, 0));
- assert(enum_val);
- union_type = &enum_val->union_type;
- }
- }
- else
- {
- text += fd.value.constant;
- }
- }
- }
- text += NewLine(opts);
- text.append(indent, ' ');
- text += "}";
- return true;
-}
-
-// Generate a text representation of a flatbuffer in JSON format.
-bool GenerateText(const Parser &parser, const void *flatbuffer,
- std::string *_text) {
- std::string &text = *_text;
- assert(parser.root_struct_def_); // call SetRootType()
- text.reserve(1024); // Reduce amount of inevitable reallocs.
- if (!GenStruct(*parser.root_struct_def_,
- GetRoot<Table>(flatbuffer),
- 0,
- parser.opts,
- _text)) {
- return false;
- }
- text += NewLine(parser.opts);
- return true;
-}
-
-std::string TextFileName(const std::string &path,
- const std::string &file_name) {
- return path + file_name + ".json";
-}
-
-bool GenerateTextFile(const Parser &parser,
- const std::string &path,
- const std::string &file_name) {
- if (!parser.builder_.GetSize() || !parser.root_struct_def_) return true;
- std::string text;
- if (!GenerateText(parser, parser.builder_.GetBufferPointer(), &text)) {
- return false;
- }
- return flatbuffers::SaveFile(TextFileName(path, file_name).c_str(),
- text,
- false);
-}
-
-std::string TextMakeRule(const Parser &parser,
- const std::string &path,
- const std::string &file_name) {
- if (!parser.builder_.GetSize() || !parser.root_struct_def_) return "";
- std::string filebase = flatbuffers::StripPath(
- flatbuffers::StripExtension(file_name));
- std::string make_rule = TextFileName(path, filebase) + ": " + file_name;
- auto included_files = parser.GetIncludedFilesRecursive(
- parser.root_struct_def_->file);
- for (auto it = included_files.begin();
- it != included_files.end(); ++it) {
- make_rule += " " + *it;
- }
- return make_rule;
-}
-
-} // namespace flatbuffers
-
diff --git a/third_party/flatbuffers/src/idl_parser.cpp b/third_party/flatbuffers/src/idl_parser.cpp
deleted file mode 100644
index e20c275..0000000
--- a/third_party/flatbuffers/src/idl_parser.cpp
+++ /dev/null
@@ -1,2283 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <algorithm>
-#include <list>
-
-#ifdef _WIN32
-#if !defined(_USE_MATH_DEFINES)
-#define _USE_MATH_DEFINES // For M_PI.
-#endif // !defined(_USE_MATH_DEFINES)
-#endif // _WIN32
-
-#include <math.h>
-
-#include "flatbuffers/idl.h"
-#include "flatbuffers/util.h"
-
-namespace flatbuffers {
-
-const char *const kTypeNames[] = {
- #define FLATBUFFERS_TD(ENUM, IDLTYPE, CTYPE, JTYPE, GTYPE, NTYPE, PTYPE) \
- IDLTYPE,
- FLATBUFFERS_GEN_TYPES(FLATBUFFERS_TD)
- #undef FLATBUFFERS_TD
- nullptr
-};
-
-const char kTypeSizes[] = {
- #define FLATBUFFERS_TD(ENUM, IDLTYPE, CTYPE, JTYPE, GTYPE, NTYPE, PTYPE) \
- sizeof(CTYPE),
- FLATBUFFERS_GEN_TYPES(FLATBUFFERS_TD)
- #undef FLATBUFFERS_TD
-};
-
-// The enums in the reflection schema should match the ones we use internally.
-// Compare the last element to check if these go out of sync.
-static_assert(BASE_TYPE_UNION ==
- static_cast<BaseType>(reflection::Union),
- "enums don't match");
-
-// Any parsing calls have to be wrapped in this macro, which automates
-// handling of recursive error checking a bit. It will check the received
-// CheckedError object, and return straight away on error.
-#define ECHECK(call) { auto ce = (call); if (ce.Check()) return ce; }
-
-// These two functions are called hundreds of times below, so define a short
-// form:
-#define NEXT() ECHECK(Next())
-#define EXPECT(tok) ECHECK(Expect(tok))
-
-static bool ValidateUTF8(const std::string &str) {
- const char *s = &str[0];
- const char * const sEnd = s + str.length();
- while (s < sEnd) {
- if (FromUTF8(&s) < 0) {
- return false;
- }
- }
- return true;
-}
-
-CheckedError Parser::Error(const std::string &msg) {
- error_ = file_being_parsed_.length() ? AbsolutePath(file_being_parsed_) : "";
- #ifdef _WIN32
- error_ += "(" + NumToString(line_) + ")"; // MSVC alike
- #else
- if (file_being_parsed_.length()) error_ += ":";
- error_ += NumToString(line_) + ":0"; // gcc alike
- #endif
- error_ += ": error: " + msg;
- return CheckedError(true);
-}
-
-inline CheckedError NoError() { return CheckedError(false); }
-
-inline std::string OutOfRangeErrorMsg(int64_t val, const std::string &op,
- int64_t limit) {
- const std::string cause = NumToString(val) + op + NumToString(limit);
- return "constant does not fit (" + cause + ")";
-}
-
-// Ensure that integer values we parse fit inside the declared integer type.
-CheckedError Parser::CheckInRange(int64_t val, int64_t min, int64_t max) {
- if (val < min)
- return Error(OutOfRangeErrorMsg(val, " < ", min));
- else if (val > max)
- return Error(OutOfRangeErrorMsg(val, " > ", max));
- else
- return NoError();
-}
-
-// atot: templated version of atoi/atof: convert a string to an instance of T.
-template<typename T> inline CheckedError atot(const char *s, Parser &parser,
- T *val) {
- int64_t i = StringToInt(s);
- const int64_t min = std::numeric_limits<T>::min();
- const int64_t max = std::numeric_limits<T>::max();
- ECHECK(parser.CheckInRange(i, min, max));
- *val = (T)i;
- return NoError();
-}
-template<> inline CheckedError atot<uint64_t>(const char *s, Parser &parser,
- uint64_t *val) {
- (void)parser;
- *val = StringToUInt(s);
- return NoError();
-}
-template<> inline CheckedError atot<bool>(const char *s, Parser &parser,
- bool *val) {
- (void)parser;
- *val = 0 != atoi(s);
- return NoError();
-}
-template<> inline CheckedError atot<float>(const char *s, Parser &parser,
- float *val) {
- (void)parser;
- *val = static_cast<float>(strtod(s, nullptr));
- return NoError();
-}
-template<> inline CheckedError atot<double>(const char *s, Parser &parser,
- double *val) {
- (void)parser;
- *val = strtod(s, nullptr);
- return NoError();
-}
-
-template<> inline CheckedError atot<Offset<void>>(const char *s, Parser &parser,
- Offset<void> *val) {
- (void)parser;
- *val = Offset<void>(atoi(s));
- return NoError();
-}
-
-std::string Namespace::GetFullyQualifiedName(const std::string &name,
- size_t max_components) const {
- // Early exit if we don't have a defined namespace.
- if (components.size() == 0 || !max_components) {
- return name;
- }
- std::stringstream stream;
- for (size_t i = 0; i < std::min(components.size(), max_components);
- i++) {
- if (i) {
- stream << ".";
- }
- stream << components[i];
- }
- if (name.length()) stream << "." << name;
- return stream.str();
-}
-
-
-
-// Declare tokens we'll use. Single character tokens are represented by their
-// ascii character code (e.g. '{'), others above 256.
-#define FLATBUFFERS_GEN_TOKENS(TD) \
- TD(Eof, 256, "end of file") \
- TD(StringConstant, 257, "string constant") \
- TD(IntegerConstant, 258, "integer constant") \
- TD(FloatConstant, 259, "float constant") \
- TD(Identifier, 260, "identifier") \
- TD(Table, 261, "table") \
- TD(Struct, 262, "struct") \
- TD(Enum, 263, "enum") \
- TD(Union, 264, "union") \
- TD(NameSpace, 265, "namespace") \
- TD(RootType, 266, "root_type") \
- TD(FileIdentifier, 267, "file_identifier") \
- TD(FileExtension, 268, "file_extension") \
- TD(Include, 269, "include") \
- TD(Attribute, 270, "attribute") \
- TD(Null, 271, "null") \
- TD(Service, 272, "rpc_service") \
- TD(NativeInclude, 273, "native_include")
-#ifdef __GNUC__
-__extension__ // Stop GCC complaining about trailing comma with -Wpendantic.
-#endif
-enum {
- #define FLATBUFFERS_TOKEN(NAME, VALUE, STRING) kToken ## NAME = VALUE,
- FLATBUFFERS_GEN_TOKENS(FLATBUFFERS_TOKEN)
- #undef FLATBUFFERS_TOKEN
- #define FLATBUFFERS_TD(ENUM, IDLTYPE, CTYPE, JTYPE, GTYPE, NTYPE, PTYPE) \
- kToken ## ENUM,
- FLATBUFFERS_GEN_TYPES(FLATBUFFERS_TD)
- #undef FLATBUFFERS_TD
-};
-
-static std::string TokenToString(int t) {
- static const char *tokens[] = {
- #define FLATBUFFERS_TOKEN(NAME, VALUE, STRING) STRING,
- FLATBUFFERS_GEN_TOKENS(FLATBUFFERS_TOKEN)
- #undef FLATBUFFERS_TOKEN
- #define FLATBUFFERS_TD(ENUM, IDLTYPE, CTYPE, JTYPE, GTYPE, NTYPE, PTYPE) \
- IDLTYPE,
- FLATBUFFERS_GEN_TYPES(FLATBUFFERS_TD)
- #undef FLATBUFFERS_TD
- };
- if (t < 256) { // A single ascii char token.
- std::string s;
- s.append(1, static_cast<char>(t));
- return s;
- } else { // Other tokens.
- return tokens[t - 256];
- }
-}
-
-std::string Parser::TokenToStringId(int t) {
- return TokenToString(t) + (t == kTokenIdentifier ? ": " + attribute_ : "");
-}
-
-// Parses exactly nibbles worth of hex digits into a number, or error.
-CheckedError Parser::ParseHexNum(int nibbles, uint64_t *val) {
- for (int i = 0; i < nibbles; i++)
- if (!isxdigit(static_cast<const unsigned char>(cursor_[i])))
- return Error("escape code must be followed by " + NumToString(nibbles) +
- " hex digits");
- std::string target(cursor_, cursor_ + nibbles);
- *val = StringToUInt(target.c_str(), nullptr, 16);
- cursor_ += nibbles;
- return NoError();
-}
-
-CheckedError Parser::SkipByteOrderMark() {
- if (static_cast<unsigned char>(*cursor_) != 0xef) return NoError();
- cursor_++;
- if (static_cast<unsigned char>(*cursor_) != 0xbb) return Error("invalid utf-8 byte order mark");
- cursor_++;
- if (static_cast<unsigned char>(*cursor_) != 0xbf) return Error("invalid utf-8 byte order mark");
- cursor_++;
- return NoError();
-}
-
-bool IsIdentifierStart(char c) {
- return isalpha(static_cast<unsigned char>(c)) || c == '_';
-}
-
-CheckedError Parser::Next() {
- doc_comment_.clear();
- bool seen_newline = false;
- attribute_.clear();
- for (;;) {
- char c = *cursor_++;
- token_ = c;
- switch (c) {
- case '\0': cursor_--; token_ = kTokenEof; return NoError();
- case ' ': case '\r': case '\t': break;
- case '\n': line_++; seen_newline = true; break;
- case '{': case '}': case '(': case ')': case '[': case ']':
- case ',': case ':': case ';': case '=': return NoError();
- case '.':
- if(!isdigit(static_cast<const unsigned char>(*cursor_))) return NoError();
- return Error("floating point constant can\'t start with \".\"");
- case '\"':
- case '\'': {
- int unicode_high_surrogate = -1;
-
- while (*cursor_ != c) {
- if (*cursor_ < ' ' && *cursor_ >= 0)
- return Error("illegal character in string constant");
- if (*cursor_ == '\\') {
- cursor_++;
- if (unicode_high_surrogate != -1 &&
- *cursor_ != 'u') {
- return Error(
- "illegal Unicode sequence (unpaired high surrogate)");
- }
- switch (*cursor_) {
- case 'n': attribute_ += '\n'; cursor_++; break;
- case 't': attribute_ += '\t'; cursor_++; break;
- case 'r': attribute_ += '\r'; cursor_++; break;
- case 'b': attribute_ += '\b'; cursor_++; break;
- case 'f': attribute_ += '\f'; cursor_++; break;
- case '\"': attribute_ += '\"'; cursor_++; break;
- case '\'': attribute_ += '\''; cursor_++; break;
- case '\\': attribute_ += '\\'; cursor_++; break;
- case '/': attribute_ += '/'; cursor_++; break;
- case 'x': { // Not in the JSON standard
- cursor_++;
- uint64_t val;
- ECHECK(ParseHexNum(2, &val));
- attribute_ += static_cast<char>(val);
- break;
- }
- case 'u': {
- cursor_++;
- uint64_t val;
- ECHECK(ParseHexNum(4, &val));
- if (val >= 0xD800 && val <= 0xDBFF) {
- if (unicode_high_surrogate != -1) {
- return Error(
- "illegal Unicode sequence (multiple high surrogates)");
- } else {
- unicode_high_surrogate = static_cast<int>(val);
- }
- } else if (val >= 0xDC00 && val <= 0xDFFF) {
- if (unicode_high_surrogate == -1) {
- return Error(
- "illegal Unicode sequence (unpaired low surrogate)");
- } else {
- int code_point = 0x10000 +
- ((unicode_high_surrogate & 0x03FF) << 10) +
- (val & 0x03FF);
- ToUTF8(code_point, &attribute_);
- unicode_high_surrogate = -1;
- }
- } else {
- if (unicode_high_surrogate != -1) {
- return Error(
- "illegal Unicode sequence (unpaired high surrogate)");
- }
- ToUTF8(static_cast<int>(val), &attribute_);
- }
- break;
- }
- default: return Error("unknown escape code in string constant");
- }
- } else { // printable chars + UTF-8 bytes
- if (unicode_high_surrogate != -1) {
- return Error(
- "illegal Unicode sequence (unpaired high surrogate)");
- }
- attribute_ += *cursor_++;
- }
- }
- if (unicode_high_surrogate != -1) {
- return Error(
- "illegal Unicode sequence (unpaired high surrogate)");
- }
- cursor_++;
- if (!opts.allow_non_utf8 && !ValidateUTF8(attribute_)) {
- return Error("illegal UTF-8 sequence");
- }
- token_ = kTokenStringConstant;
- return NoError();
- }
- case '/':
- if (*cursor_ == '/') {
- const char *start = ++cursor_;
- while (*cursor_ && *cursor_ != '\n' && *cursor_ != '\r') cursor_++;
- if (*start == '/') { // documentation comment
- if (cursor_ != source_ && !seen_newline)
- return Error(
- "a documentation comment should be on a line on its own");
- doc_comment_.push_back(std::string(start + 1, cursor_));
- }
- break;
- } else if (*cursor_ == '*') {
- cursor_++;
- // TODO: make nested.
- while (*cursor_ != '*' || cursor_[1] != '/') {
- if (*cursor_ == '\n') line_++;
- if (!*cursor_) return Error("end of file in comment");
- cursor_++;
- }
- cursor_ += 2;
- break;
- }
- // fall thru
- default:
- if (IsIdentifierStart(c)) {
- // Collect all chars of an identifier:
- const char *start = cursor_ - 1;
- while (isalnum(static_cast<unsigned char>(*cursor_)) ||
- *cursor_ == '_')
- cursor_++;
- attribute_.append(start, cursor_);
- // First, see if it is a type keyword from the table of types:
- #define FLATBUFFERS_TD(ENUM, IDLTYPE, CTYPE, JTYPE, GTYPE, NTYPE, \
- PTYPE) \
- if (attribute_ == IDLTYPE) { \
- token_ = kToken ## ENUM; \
- return NoError(); \
- }
- FLATBUFFERS_GEN_TYPES(FLATBUFFERS_TD)
- #undef FLATBUFFERS_TD
- // If it's a boolean constant keyword, turn those into integers,
- // which simplifies our logic downstream.
- if (attribute_ == "true" || attribute_ == "false") {
- attribute_ = NumToString(attribute_ == "true");
- token_ = kTokenIntegerConstant;
- return NoError();
- }
- // Check for declaration keywords:
- if (attribute_ == "table") {
- token_ = kTokenTable;
- return NoError();
- }
- if (attribute_ == "struct") {
- token_ = kTokenStruct;
- return NoError();
- }
- if (attribute_ == "enum") {
- token_ = kTokenEnum;
- return NoError();
- }
- if (attribute_ == "union") {
- token_ = kTokenUnion;
- return NoError();
- }
- if (attribute_ == "namespace") {
- token_ = kTokenNameSpace;
- return NoError();
- }
- if (attribute_ == "root_type") {
- token_ = kTokenRootType;
- return NoError();
- }
- if (attribute_ == "include") {
- token_ = kTokenInclude;
- return NoError();
- }
- if (attribute_ == "attribute") {
- token_ = kTokenAttribute;
- return NoError();
- }
- if (attribute_ == "file_identifier") {
- token_ = kTokenFileIdentifier;
- return NoError();
- }
- if (attribute_ == "file_extension") {
- token_ = kTokenFileExtension;
- return NoError();
- }
- if (attribute_ == "null") {
- token_ = kTokenNull;
- return NoError();
- }
- if (attribute_ == "rpc_service") {
- token_ = kTokenService;
- return NoError();
- }
- if (attribute_ == "native_include") {
- token_ = kTokenNativeInclude;
- return NoError();
- }
- // If not, it is a user-defined identifier:
- token_ = kTokenIdentifier;
- return NoError();
- } else if (isdigit(static_cast<unsigned char>(c)) || c == '-') {
- const char *start = cursor_ - 1;
- if (c == '-' && *cursor_ == '0' &&
- (cursor_[1] == 'x' || cursor_[1] == 'X')) {
- ++start;
- ++cursor_;
- attribute_.append(&c, &c + 1);
- c = '0';
- }
- if (c == '0' && (*cursor_ == 'x' || *cursor_ == 'X')) {
- cursor_++;
- while (isxdigit(static_cast<unsigned char>(*cursor_))) cursor_++;
- attribute_.append(start + 2, cursor_);
- attribute_ = NumToString(static_cast<int64_t>(
- StringToUInt(attribute_.c_str(), nullptr, 16)));
- token_ = kTokenIntegerConstant;
- return NoError();
- }
- while (isdigit(static_cast<unsigned char>(*cursor_))) cursor_++;
- if (*cursor_ == '.' || *cursor_ == 'e' || *cursor_ == 'E') {
- if (*cursor_ == '.') {
- cursor_++;
- while (isdigit(static_cast<unsigned char>(*cursor_))) cursor_++;
- }
- // See if this float has a scientific notation suffix. Both JSON
- // and C++ (through strtod() we use) have the same format:
- if (*cursor_ == 'e' || *cursor_ == 'E') {
- cursor_++;
- if (*cursor_ == '+' || *cursor_ == '-') cursor_++;
- while (isdigit(static_cast<unsigned char>(*cursor_))) cursor_++;
- }
- token_ = kTokenFloatConstant;
- } else {
- token_ = kTokenIntegerConstant;
- }
- attribute_.append(start, cursor_);
- return NoError();
- }
- std::string ch;
- ch = c;
- if (c < ' ' || c > '~') ch = "code: " + NumToString(c);
- return Error("illegal character: " + ch);
- }
- }
-}
-
-// Check if a given token is next.
-bool Parser::Is(int t) {
- return t == token_;
-}
-
-// Expect a given token to be next, consume it, or error if not present.
-CheckedError Parser::Expect(int t) {
- if (t != token_) {
- return Error("expecting: " + TokenToString(t) + " instead got: " +
- TokenToStringId(token_));
- }
- NEXT();
- return NoError();
-}
-
-CheckedError Parser::ParseNamespacing(std::string *id, std::string *last) {
- while (Is('.')) {
- NEXT();
- *id += ".";
- *id += attribute_;
- if (last) *last = attribute_;
- EXPECT(kTokenIdentifier);
- }
- return NoError();
-}
-
-EnumDef *Parser::LookupEnum(const std::string &id) {
- // Search thru parent namespaces.
- for (int components = static_cast<int>(namespaces_.back()->components.size());
- components >= 0; components--) {
- auto ed = enums_.Lookup(
- namespaces_.back()->GetFullyQualifiedName(id, components));
- if (ed) return ed;
- }
- return nullptr;
-}
-
-CheckedError Parser::ParseTypeIdent(Type &type) {
- std::string id = attribute_;
- EXPECT(kTokenIdentifier);
- ECHECK(ParseNamespacing(&id, nullptr));
- auto enum_def = LookupEnum(id);
- if (enum_def) {
- type = enum_def->underlying_type;
- if (enum_def->is_union) type.base_type = BASE_TYPE_UNION;
- } else {
- type.base_type = BASE_TYPE_STRUCT;
- type.struct_def = LookupCreateStruct(id);
- }
- return NoError();
-}
-
-// Parse any IDL type.
-CheckedError Parser::ParseType(Type &type) {
- if (token_ >= kTokenBOOL && token_ <= kTokenSTRING) {
- type.base_type = static_cast<BaseType>(token_ - kTokenNONE);
- NEXT();
- } else {
- if (token_ == kTokenIdentifier) {
- ECHECK(ParseTypeIdent(type));
- } else if (token_ == '[') {
- NEXT();
- Type subtype;
- ECHECK(ParseType(subtype));
- if (subtype.base_type == BASE_TYPE_VECTOR) {
- // We could support this, but it will complicate things, and it's
- // easier to work around with a struct around the inner vector.
- return Error(
- "nested vector types not supported (wrap in table first).");
- }
- type = Type(BASE_TYPE_VECTOR, subtype.struct_def, subtype.enum_def);
- type.element = subtype.base_type;
- EXPECT(']');
- } else {
- return Error("illegal type syntax");
- }
- }
- return NoError();
-}
-
-CheckedError Parser::AddField(StructDef &struct_def, const std::string &name,
- const Type &type, FieldDef **dest) {
- auto &field = *new FieldDef();
- field.value.offset =
- FieldIndexToOffset(static_cast<voffset_t>(struct_def.fields.vec.size()));
- field.name = name;
- field.file = struct_def.file;
- field.value.type = type;
- if (struct_def.fixed) { // statically compute the field offset
- auto size = InlineSize(type);
- auto alignment = InlineAlignment(type);
- // structs_ need to have a predictable format, so we need to align to
- // the largest scalar
- struct_def.minalign = std::max(struct_def.minalign, alignment);
- struct_def.PadLastField(alignment);
- field.value.offset = static_cast<voffset_t>(struct_def.bytesize);
- struct_def.bytesize += size;
- }
- if (struct_def.fields.Add(name, &field))
- return Error("field already exists: " + name);
- *dest = &field;
- return NoError();
-}
-
-CheckedError Parser::ParseField(StructDef &struct_def) {
- std::string name = attribute_;
- std::vector<std::string> dc = doc_comment_;
- EXPECT(kTokenIdentifier);
- EXPECT(':');
- Type type;
- ECHECK(ParseType(type));
-
- if (struct_def.fixed && !IsScalar(type.base_type) && !IsStruct(type))
- return Error("structs_ may contain only scalar or struct fields");
-
- FieldDef *typefield = nullptr;
- if (type.base_type == BASE_TYPE_UNION) {
- // For union fields, add a second auto-generated field to hold the type,
- // with a special suffix.
- ECHECK(AddField(struct_def, name + UnionTypeFieldSuffix(),
- type.enum_def->underlying_type, &typefield));
- } else if (type.base_type == BASE_TYPE_VECTOR &&
- type.element == BASE_TYPE_UNION) {
- // Only cpp supports the union vector feature so far.
- if (opts.lang_to_generate != IDLOptions::kCpp) {
- return Error("Vectors of unions are not yet supported in all "
- "the specified programming languages.");
- }
- // For vector of union fields, add a second auto-generated vector field to
- // hold the types, with a special suffix.
- Type union_vector(BASE_TYPE_VECTOR, nullptr, type.enum_def);
- union_vector.element = BASE_TYPE_UTYPE;
- ECHECK(AddField(struct_def, name + UnionTypeFieldSuffix(),
- union_vector, &typefield));
- }
-
- FieldDef *field;
- ECHECK(AddField(struct_def, name, type, &field));
-
- if (token_ == '=') {
- NEXT();
- if (!IsScalar(type.base_type))
- return Error("default values currently only supported for scalars");
- ECHECK(ParseSingleValue(field->value));
- }
- if (IsFloat(field->value.type.base_type)) {
- if (!strpbrk(field->value.constant.c_str(), ".eE"))
- field->value.constant += ".0";
- }
-
- if (type.enum_def &&
- IsScalar(type.base_type) &&
- !struct_def.fixed &&
- !type.enum_def->attributes.Lookup("bit_flags") &&
- !type.enum_def->ReverseLookup(static_cast<int>(
- StringToInt(field->value.constant.c_str()))))
- return Error("enum " + type.enum_def->name +
- " does not have a declaration for this field\'s default of " +
- field->value.constant);
-
- field->doc_comment = dc;
- ECHECK(ParseMetaData(&field->attributes));
- field->deprecated = field->attributes.Lookup("deprecated") != nullptr;
- auto hash_name = field->attributes.Lookup("hash");
- if (hash_name) {
- switch (type.base_type) {
- case BASE_TYPE_INT:
- case BASE_TYPE_UINT: {
- if (FindHashFunction32(hash_name->constant.c_str()) == nullptr)
- return Error("Unknown hashing algorithm for 32 bit types: " +
- hash_name->constant);
- break;
- }
- case BASE_TYPE_LONG:
- case BASE_TYPE_ULONG: {
- if (FindHashFunction64(hash_name->constant.c_str()) == nullptr)
- return Error("Unknown hashing algorithm for 64 bit types: " +
- hash_name->constant);
- break;
- }
- default:
- return Error(
- "only int, uint, long and ulong data types support hashing.");
- }
- }
- auto cpp_type = field->attributes.Lookup("cpp_type");
- if (cpp_type) {
- if (!hash_name)
- return Error("cpp_type can only be used with a hashed field");
- }
- if (field->deprecated && struct_def.fixed)
- return Error("can't deprecate fields in a struct");
- field->required = field->attributes.Lookup("required") != nullptr;
- if (field->required && (struct_def.fixed ||
- IsScalar(field->value.type.base_type)))
- return Error("only non-scalar fields in tables may be 'required'");
- field->key = field->attributes.Lookup("key") != nullptr;
- if (field->key) {
- if (struct_def.has_key)
- return Error("only one field may be set as 'key'");
- struct_def.has_key = true;
- if (!IsScalar(field->value.type.base_type)) {
- field->required = true;
- if (field->value.type.base_type != BASE_TYPE_STRING)
- return Error("'key' field must be string or scalar type");
- }
- }
-
- field->native_inline = field->attributes.Lookup("native_inline") != nullptr;
- if (field->native_inline && !IsStruct(field->value.type))
- return Error("native_inline can only be defined on structs'");
-
- auto nested = field->attributes.Lookup("nested_flatbuffer");
- if (nested) {
- if (nested->type.base_type != BASE_TYPE_STRING)
- return Error(
- "nested_flatbuffer attribute must be a string (the root type)");
- if (field->value.type.base_type != BASE_TYPE_VECTOR ||
- field->value.type.element != BASE_TYPE_UCHAR)
- return Error(
- "nested_flatbuffer attribute may only apply to a vector of ubyte");
- // This will cause an error if the root type of the nested flatbuffer
- // wasn't defined elsewhere.
- LookupCreateStruct(nested->constant);
- }
-
- if (typefield) {
- // If this field is a union, and it has a manually assigned id,
- // the automatically added type field should have an id as well (of N - 1).
- auto attr = field->attributes.Lookup("id");
- if (attr) {
- auto id = atoi(attr->constant.c_str());
- auto val = new Value();
- val->type = attr->type;
- val->constant = NumToString(id - 1);
- typefield->attributes.Add("id", val);
- }
- }
-
- EXPECT(';');
- return NoError();
-}
-
-CheckedError Parser::ParseString(Value &val) {
- auto s = attribute_;
- EXPECT(kTokenStringConstant);
- val.constant = NumToString(builder_.CreateString(s).o);
- return NoError();
-}
-
-CheckedError Parser::ParseAnyValue(Value &val, FieldDef *field,
- size_t parent_fieldn,
- const StructDef *parent_struct_def) {
- switch (val.type.base_type) {
- case BASE_TYPE_UNION: {
- assert(field);
- std::string constant;
- // Find corresponding type field we may have already parsed.
- for (auto elem = field_stack_.rbegin();
- elem != field_stack_.rbegin() + parent_fieldn; ++elem) {
- auto &type = elem->second->value.type;
- if (type.base_type == BASE_TYPE_UTYPE &&
- type.enum_def == val.type.enum_def) {
- constant = elem->first.constant;
- break;
- }
- }
- if (constant.empty()) {
- // We haven't seen the type field yet. Sadly a lot of JSON writers
- // output these in alphabetical order, meaning it comes after this
- // value. So we scan past the value to find it, then come back here.
- auto type_name = field->name + UnionTypeFieldSuffix();
- assert(parent_struct_def);
- auto type_field = parent_struct_def->fields.Lookup(type_name);
- assert(type_field); // Guaranteed by ParseField().
- // Remember where we are in the source file, so we can come back here.
- auto backup = *static_cast<ParserState *>(this);
- ECHECK(SkipAnyJsonValue()); // The table.
- EXPECT(',');
- auto next_name = attribute_;
- if (Is(kTokenStringConstant)) {
- NEXT();
- } else {
- EXPECT(kTokenIdentifier);
- }
- if (next_name != type_name)
- return Error("missing type field after this union value: " +
- type_name);
- EXPECT(':');
- Value type_val = type_field->value;
- ECHECK(ParseAnyValue(type_val, type_field, 0, nullptr));
- constant = type_val.constant;
- // Got the information we needed, now rewind:
- *static_cast<ParserState *>(this) = backup;
- }
- uint8_t enum_idx;
- ECHECK(atot(constant.c_str(), *this, &enum_idx));
- auto enum_val = val.type.enum_def->ReverseLookup(enum_idx);
- if (!enum_val) return Error("illegal type id for: " + field->name);
- if (enum_val->union_type.base_type == BASE_TYPE_STRUCT) {
- ECHECK(ParseTable(*enum_val->union_type.struct_def, &val.constant,
- nullptr));
- if (enum_val->union_type.struct_def->fixed) {
- // All BASE_TYPE_UNION values are offsets, so turn this into one.
- SerializeStruct(*enum_val->union_type.struct_def, val);
- builder_.ClearOffsets();
- val.constant = NumToString(builder_.GetSize());
- }
- } else if (enum_val->union_type.base_type == BASE_TYPE_STRING) {
- ECHECK(ParseString(val));
- } else {
- assert(false);
- }
- break;
- }
- case BASE_TYPE_STRUCT:
- ECHECK(ParseTable(*val.type.struct_def, &val.constant, nullptr));
- break;
- case BASE_TYPE_STRING: {
- ECHECK(ParseString(val));
- break;
- }
- case BASE_TYPE_VECTOR: {
- EXPECT('[');
- uoffset_t off;
- ECHECK(ParseVector(val.type.VectorType(), &off));
- val.constant = NumToString(off);
- break;
- }
- case BASE_TYPE_INT:
- case BASE_TYPE_UINT:
- case BASE_TYPE_LONG:
- case BASE_TYPE_ULONG: {
- if (field && field->attributes.Lookup("hash") &&
- (token_ == kTokenIdentifier || token_ == kTokenStringConstant)) {
- ECHECK(ParseHash(val, field));
- } else {
- ECHECK(ParseSingleValue(val));
- }
- break;
- }
- default:
- ECHECK(ParseSingleValue(val));
- break;
- }
- return NoError();
-}
-
-void Parser::SerializeStruct(const StructDef &struct_def, const Value &val) {
- assert(val.constant.length() == struct_def.bytesize);
- builder_.Align(struct_def.minalign);
- builder_.PushBytes(reinterpret_cast<const uint8_t *>(val.constant.c_str()),
- struct_def.bytesize);
- builder_.AddStructOffset(val.offset, builder_.GetSize());
-}
-
-CheckedError Parser::ParseTable(const StructDef &struct_def, std::string *value,
- uoffset_t *ovalue) {
- EXPECT('{');
- size_t fieldn = 0;
- for (;;) {
- if ((!opts.strict_json || !fieldn) && Is('}')) { NEXT(); break; }
- std::string name = attribute_;
- if (Is(kTokenStringConstant)) {
- NEXT();
- } else {
- EXPECT(opts.strict_json ? kTokenStringConstant : kTokenIdentifier);
- }
- auto field = struct_def.fields.Lookup(name);
- if (!field) {
- if (!opts.skip_unexpected_fields_in_json) {
- return Error("unknown field: " + name);
- } else {
- EXPECT(':');
- ECHECK(SkipAnyJsonValue());
- }
- } else {
- EXPECT(':');
- if (Is(kTokenNull)) {
- NEXT(); // Ignore this field.
- } else {
- Value val = field->value;
- ECHECK(ParseAnyValue(val, field, fieldn, &struct_def));
- // Hardcoded insertion-sort with error-check.
- // If fields are specified in order, then this loop exits immediately.
- auto elem = field_stack_.rbegin();
- for (; elem != field_stack_.rbegin() + fieldn; ++elem) {
- auto existing_field = elem->second;
- if (existing_field == field)
- return Error("field set more than once: " + field->name);
- if (existing_field->value.offset < field->value.offset) break;
- }
- // Note: elem points to before the insertion point, thus .base() points
- // to the correct spot.
- field_stack_.insert(elem.base(), std::make_pair(val, field));
- fieldn++;
- }
- }
- if (Is('}')) { NEXT(); break; }
- EXPECT(',');
- }
-
- if (struct_def.fixed && fieldn != struct_def.fields.vec.size())
- return Error("struct: wrong number of initializers: " + struct_def.name);
-
- auto start = struct_def.fixed
- ? builder_.StartStruct(struct_def.minalign)
- : builder_.StartTable();
-
- for (size_t size = struct_def.sortbysize ? sizeof(largest_scalar_t) : 1;
- size;
- size /= 2) {
- // Go through elements in reverse, since we're building the data backwards.
- for (auto it = field_stack_.rbegin();
- it != field_stack_.rbegin() + fieldn; ++it) {
- auto &field_value = it->first;
- auto field = it->second;
- if (!struct_def.sortbysize ||
- size == SizeOf(field_value.type.base_type)) {
- switch (field_value.type.base_type) {
- #define FLATBUFFERS_TD(ENUM, IDLTYPE, CTYPE, JTYPE, GTYPE, NTYPE, \
- PTYPE) \
- case BASE_TYPE_ ## ENUM: \
- builder_.Pad(field->padding); \
- if (struct_def.fixed) { \
- CTYPE val; \
- ECHECK(atot(field_value.constant.c_str(), *this, &val)); \
- builder_.PushElement(val); \
- } else { \
- CTYPE val, valdef; \
- ECHECK(atot(field_value.constant.c_str(), *this, &val)); \
- ECHECK(atot(field->value.constant.c_str(), *this, &valdef)); \
- builder_.AddElement(field_value.offset, val, valdef); \
- } \
- break;
- FLATBUFFERS_GEN_TYPES_SCALAR(FLATBUFFERS_TD);
- #undef FLATBUFFERS_TD
- #define FLATBUFFERS_TD(ENUM, IDLTYPE, CTYPE, JTYPE, GTYPE, NTYPE, \
- PTYPE) \
- case BASE_TYPE_ ## ENUM: \
- builder_.Pad(field->padding); \
- if (IsStruct(field->value.type)) { \
- SerializeStruct(*field->value.type.struct_def, field_value); \
- } else { \
- CTYPE val; \
- ECHECK(atot(field_value.constant.c_str(), *this, &val)); \
- builder_.AddOffset(field_value.offset, val); \
- } \
- break;
- FLATBUFFERS_GEN_TYPES_POINTER(FLATBUFFERS_TD);
- #undef FLATBUFFERS_TD
- }
- }
- }
- }
- for (size_t i = 0; i < fieldn; i++) field_stack_.pop_back();
-
- if (struct_def.fixed) {
- builder_.ClearOffsets();
- builder_.EndStruct();
- assert(value);
- // Temporarily store this struct in the value string, since it is to
- // be serialized in-place elsewhere.
- value->assign(
- reinterpret_cast<const char *>(builder_.GetCurrentBufferPointer()),
- struct_def.bytesize);
- builder_.PopBytes(struct_def.bytesize);
- assert(!ovalue);
- } else {
- auto val = builder_.EndTable(start,
- static_cast<voffset_t>(struct_def.fields.vec.size()));
- if (ovalue) *ovalue = val;
- if (value) *value = NumToString(val);
- }
- return NoError();
-}
-
-CheckedError Parser::ParseVector(const Type &type, uoffset_t *ovalue) {
- int count = 0;
- for (;;) {
- if ((!opts.strict_json || !count) && Is(']')) { NEXT(); break; }
- Value val;
- val.type = type;
- ECHECK(ParseAnyValue(val, nullptr, 0, nullptr));
- field_stack_.push_back(std::make_pair(val, nullptr));
- count++;
- if (Is(']')) { NEXT(); break; }
- EXPECT(',');
- }
-
- builder_.StartVector(count * InlineSize(type) / InlineAlignment(type),
- InlineAlignment(type));
- for (int i = 0; i < count; i++) {
- // start at the back, since we're building the data backwards.
- auto &val = field_stack_.back().first;
- switch (val.type.base_type) {
- #define FLATBUFFERS_TD(ENUM, IDLTYPE, CTYPE, JTYPE, GTYPE, NTYPE, PTYPE) \
- case BASE_TYPE_ ## ENUM: \
- if (IsStruct(val.type)) SerializeStruct(*val.type.struct_def, val); \
- else { \
- CTYPE elem; \
- ECHECK(atot(val.constant.c_str(), *this, &elem)); \
- builder_.PushElement(elem); \
- } \
- break;
- FLATBUFFERS_GEN_TYPES(FLATBUFFERS_TD)
- #undef FLATBUFFERS_TD
- }
- field_stack_.pop_back();
- }
-
- builder_.ClearOffsets();
- *ovalue = builder_.EndVector(count);
- return NoError();
-}
-
-CheckedError Parser::ParseMetaData(SymbolTable<Value> *attributes) {
- if (Is('(')) {
- NEXT();
- for (;;) {
- auto name = attribute_;
- EXPECT(kTokenIdentifier);
- if (known_attributes_.find(name) == known_attributes_.end())
- return Error("user define attributes must be declared before use: " +
- name);
- auto e = new Value();
- attributes->Add(name, e);
- if (Is(':')) {
- NEXT();
- ECHECK(ParseSingleValue(*e));
- }
- if (Is(')')) { NEXT(); break; }
- EXPECT(',');
- }
- }
- return NoError();
-}
-
-CheckedError Parser::TryTypedValue(int dtoken, bool check, Value &e,
- BaseType req, bool *destmatch) {
- bool match = dtoken == token_;
- if (match) {
- *destmatch = true;
- e.constant = attribute_;
- if (!check) {
- if (e.type.base_type == BASE_TYPE_NONE) {
- e.type.base_type = req;
- } else {
- return Error(std::string("type mismatch: expecting: ") +
- kTypeNames[e.type.base_type] +
- ", found: " +
- kTypeNames[req]);
- }
- }
- NEXT();
- }
- return NoError();
-}
-
-CheckedError Parser::ParseEnumFromString(Type &type, int64_t *result) {
- *result = 0;
- // Parse one or more enum identifiers, separated by spaces.
- const char *next = attribute_.c_str();
- do {
- const char *divider = strchr(next, ' ');
- std::string word;
- if (divider) {
- word = std::string(next, divider);
- next = divider + strspn(divider, " ");
- } else {
- word = next;
- next += word.length();
- }
- if (type.enum_def) { // The field has an enum type
- auto enum_val = type.enum_def->vals.Lookup(word);
- if (!enum_val)
- return Error("unknown enum value: " + word +
- ", for enum: " + type.enum_def->name);
- *result |= enum_val->value;
- } else { // No enum type, probably integral field.
- if (!IsInteger(type.base_type))
- return Error("not a valid value for this field: " + word);
- // TODO: could check if its a valid number constant here.
- const char *dot = strrchr(word.c_str(), '.');
- if (!dot)
- return Error("enum values need to be qualified by an enum type");
- std::string enum_def_str(word.c_str(), dot);
- std::string enum_val_str(dot + 1, word.c_str() + word.length());
- auto enum_def = LookupEnum(enum_def_str);
- if (!enum_def) return Error("unknown enum: " + enum_def_str);
- auto enum_val = enum_def->vals.Lookup(enum_val_str);
- if (!enum_val) return Error("unknown enum value: " + enum_val_str);
- *result |= enum_val->value;
- }
- } while(*next);
- return NoError();
-}
-
-
-CheckedError Parser::ParseHash(Value &e, FieldDef* field) {
- assert(field);
- Value *hash_name = field->attributes.Lookup("hash");
- switch (e.type.base_type) {
- case BASE_TYPE_INT: {
- auto hash = FindHashFunction32(hash_name->constant.c_str());
- int32_t hashed_value = static_cast<int32_t>(hash(attribute_.c_str()));
- e.constant = NumToString(hashed_value);
- break;
- }
- case BASE_TYPE_UINT: {
- auto hash = FindHashFunction32(hash_name->constant.c_str());
- uint32_t hashed_value = hash(attribute_.c_str());
- e.constant = NumToString(hashed_value);
- break;
- }
- case BASE_TYPE_LONG: {
- auto hash = FindHashFunction64(hash_name->constant.c_str());
- int64_t hashed_value = static_cast<int64_t>(hash(attribute_.c_str()));
- e.constant = NumToString(hashed_value);
- break;
- }
- case BASE_TYPE_ULONG: {
- auto hash = FindHashFunction64(hash_name->constant.c_str());
- uint64_t hashed_value = hash(attribute_.c_str());
- e.constant = NumToString(hashed_value);
- break;
- }
- default:
- assert(0);
- }
- NEXT();
- return NoError();
-}
-
-CheckedError Parser::ParseSingleValue(Value &e) {
- // First see if this could be a conversion function:
- if (token_ == kTokenIdentifier && *cursor_ == '(') {
- auto functionname = attribute_;
- NEXT();
- EXPECT('(');
- ECHECK(ParseSingleValue(e));
- EXPECT(')');
- #define FLATBUFFERS_FN_DOUBLE(name, op) \
- if (functionname == name) { \
- auto x = strtod(e.constant.c_str(), nullptr); \
- e.constant = NumToString(op); \
- }
- FLATBUFFERS_FN_DOUBLE("deg", x / M_PI * 180);
- FLATBUFFERS_FN_DOUBLE("rad", x * M_PI / 180);
- FLATBUFFERS_FN_DOUBLE("sin", sin(x));
- FLATBUFFERS_FN_DOUBLE("cos", cos(x));
- FLATBUFFERS_FN_DOUBLE("tan", tan(x));
- FLATBUFFERS_FN_DOUBLE("asin", asin(x));
- FLATBUFFERS_FN_DOUBLE("acos", acos(x));
- FLATBUFFERS_FN_DOUBLE("atan", atan(x));
- // TODO(wvo): add more useful conversion functions here.
- #undef FLATBUFFERS_FN_DOUBLE
- // Then check if this could be a string/identifier enum value:
- } else if (e.type.base_type != BASE_TYPE_STRING &&
- e.type.base_type != BASE_TYPE_NONE &&
- (token_ == kTokenIdentifier || token_ == kTokenStringConstant)) {
- if (IsIdentifierStart(attribute_[0])) { // Enum value.
- int64_t val;
- ECHECK(ParseEnumFromString(e.type, &val));
- e.constant = NumToString(val);
- NEXT();
- } else { // Numeric constant in string.
- if (IsInteger(e.type.base_type)) {
- char *end;
- e.constant = NumToString(StringToInt(attribute_.c_str(), &end));
- if (*end)
- return Error("invalid integer: " + attribute_);
- } else if (IsFloat(e.type.base_type)) {
- char *end;
- e.constant = NumToString(strtod(attribute_.c_str(), &end));
- if (*end)
- return Error("invalid float: " + attribute_);
- } else {
- assert(0); // Shouldn't happen, we covered all types.
- e.constant = "0";
- }
- NEXT();
- }
- } else {
- bool match = false;
- ECHECK(TryTypedValue(kTokenIntegerConstant,
- IsScalar(e.type.base_type),
- e,
- BASE_TYPE_INT,
- &match));
- ECHECK(TryTypedValue(kTokenFloatConstant,
- IsFloat(e.type.base_type),
- e,
- BASE_TYPE_FLOAT,
- &match));
- ECHECK(TryTypedValue(kTokenStringConstant,
- e.type.base_type == BASE_TYPE_STRING,
- e,
- BASE_TYPE_STRING,
- &match));
- if (!match)
- return Error("cannot parse value starting with: " +
- TokenToStringId(token_));
- }
- return NoError();
-}
-
-StructDef *Parser::LookupCreateStruct(const std::string &name,
- bool create_if_new, bool definition) {
- std::string qualified_name = namespaces_.back()->GetFullyQualifiedName(name);
- // See if it exists pre-declared by an unqualified use.
- auto struct_def = structs_.Lookup(name);
- if (struct_def && struct_def->predecl) {
- if (definition) {
- // Make sure it has the current namespace, and is registered under its
- // qualified name.
- struct_def->defined_namespace = namespaces_.back();
- structs_.Move(name, qualified_name);
- }
- return struct_def;
- }
- // See if it exists pre-declared by an qualified use.
- struct_def = structs_.Lookup(qualified_name);
- if (struct_def && struct_def->predecl) {
- if (definition) {
- // Make sure it has the current namespace.
- struct_def->defined_namespace = namespaces_.back();
- }
- return struct_def;
- }
- if (!definition) {
- // Search thru parent namespaces.
- for (size_t components = namespaces_.back()->components.size();
- components && !struct_def; components--) {
- struct_def = structs_.Lookup(
- namespaces_.back()->GetFullyQualifiedName(name, components - 1));
- }
- }
- if (!struct_def && create_if_new) {
- struct_def = new StructDef();
- if (definition) {
- structs_.Add(qualified_name, struct_def);
- struct_def->name = name;
- struct_def->defined_namespace = namespaces_.back();
- } else {
- // Not a definition.
- // Rather than failing, we create a "pre declared" StructDef, due to
- // circular references, and check for errors at the end of parsing.
- // It is defined in the root namespace, since we don't know what the
- // final namespace will be.
- // TODO: maybe safer to use special namespace?
- structs_.Add(name, struct_def);
- struct_def->name = name;
- struct_def->defined_namespace = new Namespace();
- namespaces_.insert(namespaces_.begin(), struct_def->defined_namespace);
- }
- }
- return struct_def;
-}
-
-CheckedError Parser::ParseEnum(bool is_union, EnumDef **dest) {
- std::vector<std::string> enum_comment = doc_comment_;
- NEXT();
- std::string enum_name = attribute_;
- EXPECT(kTokenIdentifier);
- auto &enum_def = *new EnumDef();
- enum_def.name = enum_name;
- enum_def.file = file_being_parsed_;
- enum_def.doc_comment = enum_comment;
- enum_def.is_union = is_union;
- enum_def.defined_namespace = namespaces_.back();
- if (enums_.Add(namespaces_.back()->GetFullyQualifiedName(enum_name),
- &enum_def))
- return Error("enum already exists: " + enum_name);
- if (is_union) {
- enum_def.underlying_type.base_type = BASE_TYPE_UTYPE;
- enum_def.underlying_type.enum_def = &enum_def;
- } else {
- if (opts.proto_mode) {
- enum_def.underlying_type.base_type = BASE_TYPE_INT;
- } else {
- // Give specialized error message, since this type spec used to
- // be optional in the first FlatBuffers release.
- if (!Is(':')) {
- return Error("must specify the underlying integer type for this"
- " enum (e.g. \': short\', which was the default).");
- } else {
- NEXT();
- }
- // Specify the integer type underlying this enum.
- ECHECK(ParseType(enum_def.underlying_type));
- if (!IsInteger(enum_def.underlying_type.base_type))
- return Error("underlying enum type must be integral");
- }
- // Make this type refer back to the enum it was derived from.
- enum_def.underlying_type.enum_def = &enum_def;
- }
- ECHECK(ParseMetaData(&enum_def.attributes));
- EXPECT('{');
- if (is_union) enum_def.vals.Add("NONE", new EnumVal("NONE", 0));
- for (;;) {
- if (opts.proto_mode && attribute_ == "option") {
- ECHECK(ParseProtoOption());
- } else {
- auto value_name = attribute_;
- auto full_name = value_name;
- std::vector<std::string> value_comment = doc_comment_;
- EXPECT(kTokenIdentifier);
- if (is_union) {
- ECHECK(ParseNamespacing(&full_name, &value_name));
- if (opts.union_value_namespacing) {
- // Since we can't namespace the actual enum identifiers, turn
- // namespace parts into part of the identifier.
- value_name = full_name;
- std::replace(value_name.begin(), value_name.end(), '.', '_');
- }
- }
- auto prevsize = enum_def.vals.vec.size();
- auto value = enum_def.vals.vec.size()
- ? enum_def.vals.vec.back()->value + 1
- : 0;
- auto &ev = *new EnumVal(value_name, value);
- if (enum_def.vals.Add(value_name, &ev))
- return Error("enum value already exists: " + value_name);
- ev.doc_comment = value_comment;
- if (is_union) {
- if (Is(':')) {
- NEXT();
- ECHECK(ParseType(ev.union_type));
- if (ev.union_type.base_type != BASE_TYPE_STRUCT &&
- ev.union_type.base_type != BASE_TYPE_STRING)
- return Error("union value type may only be table/struct/string");
- enum_def.uses_type_aliases = true;
- } else {
- ev.union_type = Type(BASE_TYPE_STRUCT, LookupCreateStruct(full_name));
- }
- }
- if (Is('=')) {
- NEXT();
- ev.value = StringToInt(attribute_.c_str());
- EXPECT(kTokenIntegerConstant);
- if (!opts.proto_mode && prevsize &&
- enum_def.vals.vec[prevsize - 1]->value >= ev.value)
- return Error("enum values must be specified in ascending order");
- }
- if (opts.proto_mode && Is('[')) {
- NEXT();
- // ignore attributes on enums.
- while (token_ != ']') NEXT();
- NEXT();
- }
- }
- if (!Is(opts.proto_mode ? ';' : ',')) break;
- NEXT();
- if (Is('}')) break;
- }
- EXPECT('}');
- if (enum_def.attributes.Lookup("bit_flags")) {
- for (auto it = enum_def.vals.vec.begin(); it != enum_def.vals.vec.end();
- ++it) {
- if (static_cast<size_t>((*it)->value) >=
- SizeOf(enum_def.underlying_type.base_type) * 8)
- return Error("bit flag out of range of underlying integral type");
- (*it)->value = 1LL << (*it)->value;
- }
- }
- if (dest) *dest = &enum_def;
- types_.Add(namespaces_.back()->GetFullyQualifiedName(enum_def.name),
- new Type(BASE_TYPE_UNION, nullptr, &enum_def));
- return NoError();
-}
-
-CheckedError Parser::StartStruct(const std::string &name, StructDef **dest) {
- auto &struct_def = *LookupCreateStruct(name, true, true);
- if (!struct_def.predecl) return Error("datatype already exists: " + name);
- struct_def.predecl = false;
- struct_def.name = name;
- struct_def.file = file_being_parsed_;
- // Move this struct to the back of the vector just in case it was predeclared,
- // to preserve declaration order.
- *std::remove(structs_.vec.begin(), structs_.vec.end(), &struct_def) = &struct_def;
- *dest = &struct_def;
- return NoError();
-}
-
-CheckedError Parser::CheckClash(std::vector<FieldDef*> &fields,
- StructDef *struct_def,
- const char *suffix,
- BaseType basetype) {
- auto len = strlen(suffix);
- for (auto it = fields.begin(); it != fields.end(); ++it) {
- auto &fname = (*it)->name;
- if (fname.length() > len &&
- fname.compare(fname.length() - len, len, suffix) == 0 &&
- (*it)->value.type.base_type != BASE_TYPE_UTYPE) {
- auto field = struct_def->fields.Lookup(
- fname.substr(0, fname.length() - len));
- if (field && field->value.type.base_type == basetype)
- return Error("Field " + fname +
- " would clash with generated functions for field " +
- field->name);
- }
- }
- return NoError();
-}
-
-static bool compareFieldDefs(const FieldDef *a, const FieldDef *b) {
- auto a_id = atoi(a->attributes.Lookup("id")->constant.c_str());
- auto b_id = atoi(b->attributes.Lookup("id")->constant.c_str());
- return a_id < b_id;
-}
-
-CheckedError Parser::ParseDecl() {
- std::vector<std::string> dc = doc_comment_;
- bool fixed = Is(kTokenStruct);
- if (fixed) NEXT() else EXPECT(kTokenTable);
- std::string name = attribute_;
- EXPECT(kTokenIdentifier);
- StructDef *struct_def;
- ECHECK(StartStruct(name, &struct_def));
- struct_def->doc_comment = dc;
- struct_def->fixed = fixed;
- ECHECK(ParseMetaData(&struct_def->attributes));
- struct_def->sortbysize =
- struct_def->attributes.Lookup("original_order") == nullptr && !fixed;
- EXPECT('{');
- while (token_ != '}') ECHECK(ParseField(*struct_def));
- auto force_align = struct_def->attributes.Lookup("force_align");
- if (fixed && force_align) {
- auto align = static_cast<size_t>(atoi(force_align->constant.c_str()));
- if (force_align->type.base_type != BASE_TYPE_INT ||
- align < struct_def->minalign ||
- align > FLATBUFFERS_MAX_ALIGNMENT ||
- align & (align - 1))
- return Error("force_align must be a power of two integer ranging from the"
- "struct\'s natural alignment to " +
- NumToString(FLATBUFFERS_MAX_ALIGNMENT));
- struct_def->minalign = align;
- }
- struct_def->PadLastField(struct_def->minalign);
- // Check if this is a table that has manual id assignments
- auto &fields = struct_def->fields.vec;
- if (!struct_def->fixed && fields.size()) {
- size_t num_id_fields = 0;
- for (auto it = fields.begin(); it != fields.end(); ++it) {
- if ((*it)->attributes.Lookup("id")) num_id_fields++;
- }
- // If any fields have ids..
- if (num_id_fields) {
- // Then all fields must have them.
- if (num_id_fields != fields.size())
- return Error(
- "either all fields or no fields must have an 'id' attribute");
- // Simply sort by id, then the fields are the same as if no ids had
- // been specified.
- std::sort(fields.begin(), fields.end(), compareFieldDefs);
- // Verify we have a contiguous set, and reassign vtable offsets.
- for (int i = 0; i < static_cast<int>(fields.size()); i++) {
- if (i != atoi(fields[i]->attributes.Lookup("id")->constant.c_str()))
- return Error("field id\'s must be consecutive from 0, id " +
- NumToString(i) + " missing or set twice");
- fields[i]->value.offset = FieldIndexToOffset(static_cast<voffset_t>(i));
- }
- }
- }
-
- ECHECK(CheckClash(fields, struct_def, UnionTypeFieldSuffix(),
- BASE_TYPE_UNION));
- ECHECK(CheckClash(fields, struct_def, "Type", BASE_TYPE_UNION));
- ECHECK(CheckClash(fields, struct_def, "_length", BASE_TYPE_VECTOR));
- ECHECK(CheckClash(fields, struct_def, "Length", BASE_TYPE_VECTOR));
- ECHECK(CheckClash(fields, struct_def, "_byte_vector", BASE_TYPE_STRING));
- ECHECK(CheckClash(fields, struct_def, "ByteVector", BASE_TYPE_STRING));
- EXPECT('}');
- types_.Add(namespaces_.back()->GetFullyQualifiedName(struct_def->name),
- new Type(BASE_TYPE_STRUCT, struct_def, nullptr));
- return NoError();
-}
-
-CheckedError Parser::ParseService() {
- std::vector<std::string> service_comment = doc_comment_;
- NEXT();
- auto service_name = attribute_;
- EXPECT(kTokenIdentifier);
- auto &service_def = *new ServiceDef();
- service_def.name = service_name;
- service_def.file = file_being_parsed_;
- service_def.doc_comment = service_comment;
- service_def.defined_namespace = namespaces_.back();
- if (services_.Add(namespaces_.back()->GetFullyQualifiedName(service_name),
- &service_def))
- return Error("service already exists: " + service_name);
- ECHECK(ParseMetaData(&service_def.attributes));
- EXPECT('{');
- do {
- auto rpc_name = attribute_;
- EXPECT(kTokenIdentifier);
- EXPECT('(');
- Type reqtype, resptype;
- ECHECK(ParseTypeIdent(reqtype));
- EXPECT(')');
- EXPECT(':');
- ECHECK(ParseTypeIdent(resptype));
- if (reqtype.base_type != BASE_TYPE_STRUCT || reqtype.struct_def->fixed ||
- resptype.base_type != BASE_TYPE_STRUCT || resptype.struct_def->fixed)
- return Error("rpc request and response types must be tables");
- auto &rpc = *new RPCCall();
- rpc.name = rpc_name;
- rpc.request = reqtype.struct_def;
- rpc.response = resptype.struct_def;
- if (service_def.calls.Add(rpc_name, &rpc))
- return Error("rpc already exists: " + rpc_name);
- ECHECK(ParseMetaData(&rpc.attributes));
- EXPECT(';');
- } while (token_ != '}');
- NEXT();
- return NoError();
-}
-
-bool Parser::SetRootType(const char *name) {
- root_struct_def_ = structs_.Lookup(name);
- if (!root_struct_def_)
- root_struct_def_ = structs_.Lookup(
- namespaces_.back()->GetFullyQualifiedName(name));
- return root_struct_def_ != nullptr;
-}
-
-void Parser::MarkGenerated() {
- // This function marks all existing definitions as having already
- // been generated, which signals no code for included files should be
- // generated.
- for (auto it = enums_.vec.begin();
- it != enums_.vec.end(); ++it) {
- (*it)->generated = true;
- }
- for (auto it = structs_.vec.begin();
- it != structs_.vec.end(); ++it) {
- (*it)->generated = true;
- }
- for (auto it = services_.vec.begin();
- it != services_.vec.end(); ++it) {
- (*it)->generated = true;
- }
-}
-
-CheckedError Parser::ParseNamespace() {
- NEXT();
- auto ns = new Namespace();
- namespaces_.push_back(ns);
- if (token_ != ';') {
- for (;;) {
- ns->components.push_back(attribute_);
- EXPECT(kTokenIdentifier);
- if (Is('.')) NEXT() else break;
- }
- }
- EXPECT(';');
- return NoError();
-}
-
-static bool compareEnumVals(const EnumVal *a, const EnumVal* b) {
- return a->value < b->value;
-}
-
-// Best effort parsing of .proto declarations, with the aim to turn them
-// in the closest corresponding FlatBuffer equivalent.
-// We parse everything as identifiers instead of keywords, since we don't
-// want protobuf keywords to become invalid identifiers in FlatBuffers.
-CheckedError Parser::ParseProtoDecl() {
- bool isextend = attribute_ == "extend";
- if (attribute_ == "package") {
- // These are identical in syntax to FlatBuffer's namespace decl.
- ECHECK(ParseNamespace());
- } else if (attribute_ == "message" || isextend) {
- std::vector<std::string> struct_comment = doc_comment_;
- NEXT();
- StructDef *struct_def = nullptr;
- if (isextend) {
- if (Is('.')) NEXT(); // qualified names may start with a . ?
- auto id = attribute_;
- EXPECT(kTokenIdentifier);
- ECHECK(ParseNamespacing(&id, nullptr));
- struct_def = LookupCreateStruct(id, false);
- if (!struct_def)
- return Error("cannot extend unknown message type: " + id);
- } else {
- std::string name = attribute_;
- EXPECT(kTokenIdentifier);
- ECHECK(StartStruct(name, &struct_def));
- // Since message definitions can be nested, we create a new namespace.
- auto ns = new Namespace();
- // Copy of current namespace.
- *ns = *namespaces_.back();
- // But with current message name.
- ns->components.push_back(name);
- namespaces_.push_back(ns);
- }
- struct_def->doc_comment = struct_comment;
- ECHECK(ParseProtoFields(struct_def, isextend, false));
- if (!isextend) {
- // We have to remove the nested namespace, but we can't just throw it
- // away, so put it at the beginning of the vector.
- auto ns = namespaces_.back();
- namespaces_.pop_back();
- namespaces_.insert(namespaces_.begin(), ns);
- }
- if (Is(';')) NEXT();
- } else if (attribute_ == "enum") {
- // These are almost the same, just with different terminator:
- EnumDef *enum_def;
- ECHECK(ParseEnum(false, &enum_def));
- if (Is(';')) NEXT();
- // Protobuf allows them to be specified in any order, so sort afterwards.
- auto &v = enum_def->vals.vec;
- std::sort(v.begin(), v.end(), compareEnumVals);
-
- // Temp: remove any duplicates, as .fbs files can't handle them.
- for (auto it = v.begin(); it != v.end(); ) {
- if (it != v.begin() && it[0]->value == it[-1]->value) it = v.erase(it);
- else ++it;
- }
- } else if (attribute_ == "syntax") { // Skip these.
- NEXT();
- EXPECT('=');
- EXPECT(kTokenStringConstant);
- EXPECT(';');
- } else if (attribute_ == "option") { // Skip these.
- ECHECK(ParseProtoOption());
- EXPECT(';');
- } else if (attribute_ == "service") { // Skip these.
- NEXT();
- EXPECT(kTokenIdentifier);
- ECHECK(ParseProtoCurliesOrIdent());
- } else {
- return Error("don\'t know how to parse .proto declaration starting with " +
- TokenToStringId(token_));
- }
- return NoError();
-}
-
-CheckedError Parser::ParseProtoFields(StructDef *struct_def, bool isextend,
- bool inside_oneof) {
- EXPECT('{');
- while (token_ != '}') {
- if (attribute_ == "message" || attribute_ == "extend" ||
- attribute_ == "enum") {
- // Nested declarations.
- ECHECK(ParseProtoDecl());
- } else if (attribute_ == "extensions") { // Skip these.
- NEXT();
- EXPECT(kTokenIntegerConstant);
- if (Is(kTokenIdentifier)) {
- NEXT(); // to
- NEXT(); // num
- }
- EXPECT(';');
- } else if (attribute_ == "option") { // Skip these.
- ECHECK(ParseProtoOption());
- EXPECT(';');
- } else if (attribute_ == "reserved") { // Skip these.
- NEXT();
- EXPECT(kTokenIntegerConstant);
- while (Is(',')) { NEXT(); EXPECT(kTokenIntegerConstant); }
- EXPECT(';');
- } else {
- std::vector<std::string> field_comment = doc_comment_;
- // Parse the qualifier.
- bool required = false;
- bool repeated = false;
- bool oneof = false;
- if (!inside_oneof) {
- if (attribute_ == "optional") {
- // This is the default.
- EXPECT(kTokenIdentifier);
- } else if (attribute_ == "required") {
- required = true;
- EXPECT(kTokenIdentifier);
- } else if (attribute_ == "repeated") {
- repeated = true;
- EXPECT(kTokenIdentifier);
- } else if (attribute_ == "oneof") {
- oneof = true;
- EXPECT(kTokenIdentifier);
- } else {
- // can't error, proto3 allows decls without any of the above.
- }
- }
- StructDef *anonymous_struct = nullptr;
- Type type;
- if (attribute_ == "group" || oneof) {
- if (!oneof) EXPECT(kTokenIdentifier);
- auto name = "Anonymous" + NumToString(anonymous_counter++);
- ECHECK(StartStruct(name, &anonymous_struct));
- type = Type(BASE_TYPE_STRUCT, anonymous_struct);
- } else {
- ECHECK(ParseTypeFromProtoType(&type));
- }
- // Repeated elements get mapped to a vector.
- if (repeated) {
- type.element = type.base_type;
- type.base_type = BASE_TYPE_VECTOR;
- }
- std::string name = attribute_;
- // Protos may use our keywords "attribute" & "namespace" as an identifier.
- if (Is(kTokenAttribute) || Is(kTokenNameSpace)) {
- NEXT();
- // TODO: simpler to just not make these keywords?
- name += "_"; // Have to make it not a keyword.
- } else {
- EXPECT(kTokenIdentifier);
- }
- if (!oneof) {
- // Parse the field id. Since we're just translating schemas, not
- // any kind of binary compatibility, we can safely ignore these, and
- // assign our own.
- EXPECT('=');
- EXPECT(kTokenIntegerConstant);
- }
- FieldDef *field = nullptr;
- if (isextend) {
- // We allow a field to be re-defined when extending.
- // TODO: are there situations where that is problematic?
- field = struct_def->fields.Lookup(name);
- }
- if (!field) ECHECK(AddField(*struct_def, name, type, &field));
- field->doc_comment = field_comment;
- if (!IsScalar(type.base_type)) field->required = required;
- // See if there's a default specified.
- if (Is('[')) {
- NEXT();
- for (;;) {
- auto key = attribute_;
- ECHECK(ParseProtoKey());
- EXPECT('=');
- auto val = attribute_;
- ECHECK(ParseProtoCurliesOrIdent());
- if (key == "default") {
- // Temp: skip non-numeric defaults (enums).
- auto numeric = strpbrk(val.c_str(), "0123456789-+.");
- if (IsScalar(type.base_type) && numeric == val.c_str())
- field->value.constant = val;
- } else if (key == "deprecated") {
- field->deprecated = val == "true";
- }
- if (!Is(',')) break;
- NEXT();
- }
- EXPECT(']');
- }
- if (anonymous_struct) {
- ECHECK(ParseProtoFields(anonymous_struct, false, oneof));
- if (Is(';')) NEXT();
- } else {
- EXPECT(';');
- }
- }
- }
- NEXT();
- return NoError();
-}
-
-CheckedError Parser::ParseProtoKey() {
- if (token_ == '(') {
- NEXT();
- // Skip "(a.b)" style custom attributes.
- while (token_ == '.' || token_ == kTokenIdentifier) NEXT();
- EXPECT(')');
- while (Is('.')) { NEXT(); EXPECT(kTokenIdentifier); }
- } else {
- EXPECT(kTokenIdentifier);
- }
- return NoError();
-}
-
-CheckedError Parser::ParseProtoCurliesOrIdent() {
- if (Is('{')) {
- NEXT();
- for (int nesting = 1; nesting; ) {
- if (token_ == '{') nesting++;
- else if (token_ == '}') nesting--;
- NEXT();
- }
- } else {
- NEXT(); // Any single token.
- }
- return NoError();
-}
-
-CheckedError Parser::ParseProtoOption() {
- NEXT();
- ECHECK(ParseProtoKey());
- EXPECT('=');
- ECHECK(ParseProtoCurliesOrIdent());
- return NoError();
-}
-
-// Parse a protobuf type, and map it to the corresponding FlatBuffer one.
-CheckedError Parser::ParseTypeFromProtoType(Type *type) {
- struct type_lookup { const char *proto_type; BaseType fb_type; };
- static type_lookup lookup[] = {
- { "float", BASE_TYPE_FLOAT }, { "double", BASE_TYPE_DOUBLE },
- { "int32", BASE_TYPE_INT }, { "int64", BASE_TYPE_LONG },
- { "uint32", BASE_TYPE_UINT }, { "uint64", BASE_TYPE_ULONG },
- { "sint32", BASE_TYPE_INT }, { "sint64", BASE_TYPE_LONG },
- { "fixed32", BASE_TYPE_UINT }, { "fixed64", BASE_TYPE_ULONG },
- { "sfixed32", BASE_TYPE_INT }, { "sfixed64", BASE_TYPE_LONG },
- { "bool", BASE_TYPE_BOOL },
- { "string", BASE_TYPE_STRING },
- { "bytes", BASE_TYPE_STRING },
- { nullptr, BASE_TYPE_NONE }
- };
- for (auto tl = lookup; tl->proto_type; tl++) {
- if (attribute_ == tl->proto_type) {
- type->base_type = tl->fb_type;
- NEXT();
- return NoError();
- }
- }
- if (Is('.')) NEXT(); // qualified names may start with a . ?
- ECHECK(ParseTypeIdent(*type));
- return NoError();
-}
-
-CheckedError Parser::SkipAnyJsonValue() {
- switch (token_) {
- case '{':
- ECHECK(SkipJsonObject());
- break;
- case kTokenStringConstant:
- ECHECK(SkipJsonString());
- break;
- case '[':
- ECHECK(SkipJsonArray());
- break;
- case kTokenIntegerConstant:
- EXPECT(kTokenIntegerConstant);
- break;
- case kTokenFloatConstant:
- EXPECT(kTokenFloatConstant);
- break;
- default:
- return Error(std::string("Unexpected token:") + std::string(1, static_cast<char>(token_)));
- }
- return NoError();
-}
-
-CheckedError Parser::SkipJsonObject() {
- EXPECT('{');
- size_t fieldn = 0;
-
- for (;;) {
- if ((!opts.strict_json || !fieldn) && Is('}')) break;
-
- if (!Is(kTokenStringConstant)) {
- EXPECT(opts.strict_json ? kTokenStringConstant : kTokenIdentifier);
- }
- else {
- NEXT();
- }
-
- EXPECT(':');
- ECHECK(SkipAnyJsonValue());
- fieldn++;
-
- if (Is('}')) break;
- EXPECT(',');
- }
-
- NEXT();
- return NoError();
-}
-
-CheckedError Parser::SkipJsonArray() {
- EXPECT('[');
-
- for (;;) {
- if (Is(']')) break;
-
- ECHECK(SkipAnyJsonValue());
-
- if (Is(']')) break;
- EXPECT(',');
- }
-
- NEXT();
- return NoError();
-}
-
-CheckedError Parser::SkipJsonString() {
- EXPECT(kTokenStringConstant);
- return NoError();
-}
-
-bool Parser::Parse(const char *source, const char **include_paths,
- const char *source_filename) {
- return !DoParse(source, include_paths, source_filename).Check();
-}
-
-CheckedError Parser::DoParse(const char *source, const char **include_paths,
- const char *source_filename) {
- file_being_parsed_ = source_filename ? source_filename : "";
- if (source_filename &&
- included_files_.find(source_filename) == included_files_.end()) {
- included_files_[source_filename] = true;
- files_included_per_file_[source_filename] = std::set<std::string>();
- }
- if (!include_paths) {
- static const char *current_directory[] = { "", nullptr };
- include_paths = current_directory;
- }
- source_ = cursor_ = source;
- line_ = 1;
- error_.clear();
- field_stack_.clear();
- builder_.Clear();
- // Start with a blank namespace just in case this file doesn't have one.
- namespaces_.push_back(new Namespace());
- ECHECK(SkipByteOrderMark());
- NEXT();
-
- if (Is(kTokenEof))
- return Error("input file is empty");
-
- // Includes must come before type declarations:
- for (;;) {
- // Parse pre-include proto statements if any:
- if (opts.proto_mode &&
- (attribute_ == "option" || attribute_ == "syntax" ||
- attribute_ == "package")) {
- ECHECK(ParseProtoDecl());
- } else if (Is(kTokenNativeInclude)) {
- NEXT();
- native_included_files_.emplace_back(attribute_);
- EXPECT(kTokenStringConstant);
- } else if (Is(kTokenInclude) ||
- (opts.proto_mode &&
- attribute_ == "import" &&
- Is(kTokenIdentifier))) {
- NEXT();
- if (opts.proto_mode && attribute_ == "public") NEXT();
- auto name = attribute_;
- EXPECT(kTokenStringConstant);
- // Look for the file in include_paths.
- std::string filepath;
- for (auto paths = include_paths; paths && *paths; paths++) {
- filepath = flatbuffers::ConCatPathFileName(*paths, name);
- if(FileExists(filepath.c_str())) break;
- }
- if (filepath.empty())
- return Error("unable to locate include file: " + name);
- if (source_filename)
- files_included_per_file_[source_filename].insert(filepath);
- if (included_files_.find(filepath) == included_files_.end()) {
- // We found an include file that we have not parsed yet.
- // Load it and parse it.
- std::string contents;
- if (!LoadFile(filepath.c_str(), true, &contents))
- return Error("unable to load include file: " + name);
- ECHECK(DoParse(contents.c_str(), include_paths, filepath.c_str()));
- // We generally do not want to output code for any included files:
- if (!opts.generate_all) MarkGenerated();
- // This is the easiest way to continue this file after an include:
- // instead of saving and restoring all the state, we simply start the
- // file anew. This will cause it to encounter the same include
- // statement again, but this time it will skip it, because it was
- // entered into included_files_.
- // This is recursive, but only go as deep as the number of include
- // statements.
- return DoParse(source, include_paths, source_filename);
- }
- EXPECT(';');
- } else {
- break;
- }
- }
- // Now parse all other kinds of declarations:
- while (token_ != kTokenEof) {
- if (opts.proto_mode) {
- ECHECK(ParseProtoDecl());
- } else if (token_ == kTokenNameSpace) {
- ECHECK(ParseNamespace());
- } else if (token_ == '{') {
- if (!root_struct_def_)
- return Error("no root type set to parse json with");
- if (builder_.GetSize()) {
- return Error("cannot have more than one json object in a file");
- }
- uoffset_t toff;
- ECHECK(ParseTable(*root_struct_def_, nullptr, &toff));
- builder_.Finish(Offset<Table>(toff),
- file_identifier_.length() ? file_identifier_.c_str() : nullptr);
- } else if (token_ == kTokenEnum) {
- ECHECK(ParseEnum(false, nullptr));
- } else if (token_ == kTokenUnion) {
- ECHECK(ParseEnum(true, nullptr));
- } else if (token_ == kTokenRootType) {
- NEXT();
- auto root_type = attribute_;
- EXPECT(kTokenIdentifier);
- ECHECK(ParseNamespacing(&root_type, nullptr));
- if (!SetRootType(root_type.c_str()))
- return Error("unknown root type: " + root_type);
- if (root_struct_def_->fixed)
- return Error("root type must be a table");
- EXPECT(';');
- } else if (token_ == kTokenFileIdentifier) {
- NEXT();
- file_identifier_ = attribute_;
- EXPECT(kTokenStringConstant);
- if (file_identifier_.length() !=
- FlatBufferBuilder::kFileIdentifierLength)
- return Error("file_identifier must be exactly " +
- NumToString(FlatBufferBuilder::kFileIdentifierLength) +
- " characters");
- EXPECT(';');
- } else if (token_ == kTokenFileExtension) {
- NEXT();
- file_extension_ = attribute_;
- EXPECT(kTokenStringConstant);
- EXPECT(';');
- } else if(token_ == kTokenInclude) {
- return Error("includes must come before declarations");
- } else if(token_ == kTokenAttribute) {
- NEXT();
- auto name = attribute_;
- EXPECT(kTokenStringConstant);
- EXPECT(';');
- known_attributes_[name] = false;
- } else if (token_ == kTokenService) {
- ECHECK(ParseService());
- } else {
- ECHECK(ParseDecl());
- }
- }
- for (auto it = structs_.vec.begin(); it != structs_.vec.end(); ++it) {
- if ((*it)->predecl) {
- return Error("type referenced but not defined: " + (*it)->name);
- }
- }
- // This check has to happen here and not earlier, because only now do we
- // know for sure what the type of these are.
- for (auto it = enums_.vec.begin(); it != enums_.vec.end(); ++it) {
- auto &enum_def = **it;
- if (enum_def.is_union) {
- for (auto val_it = enum_def.vals.vec.begin();
- val_it != enum_def.vals.vec.end();
- ++val_it) {
- auto &val = **val_it;
- if (opts.lang_to_generate != IDLOptions::kCpp &&
- val.union_type.struct_def && val.union_type.struct_def->fixed)
- return Error(
- "only tables can be union elements in the generated language: "
- + val.name);
- }
- }
- }
- return NoError();
-}
-
-std::set<std::string> Parser::GetIncludedFilesRecursive(
- const std::string &file_name) const {
- std::set<std::string> included_files;
- std::list<std::string> to_process;
-
- if (file_name.empty()) return included_files;
- to_process.push_back(file_name);
-
- while (!to_process.empty()) {
- std::string current = to_process.front();
- to_process.pop_front();
- included_files.insert(current);
-
- auto new_files = files_included_per_file_.at(current);
- for (auto it = new_files.begin(); it != new_files.end(); ++it) {
- if (included_files.find(*it) == included_files.end())
- to_process.push_back(*it);
- }
- }
-
- return included_files;
-}
-
-// Schema serialization functionality:
-
-template<typename T> bool compareName(const T* a, const T* b) {
- return a->defined_namespace->GetFullyQualifiedName(a->name)
- < b->defined_namespace->GetFullyQualifiedName(b->name);
-}
-
-template<typename T> void AssignIndices(const std::vector<T *> &defvec) {
- // Pre-sort these vectors, such that we can set the correct indices for them.
- auto vec = defvec;
- std::sort(vec.begin(), vec.end(), compareName<T>);
- for (int i = 0; i < static_cast<int>(vec.size()); i++) vec[i]->index = i;
-}
-
-void Parser::Serialize() {
- builder_.Clear();
- AssignIndices(structs_.vec);
- AssignIndices(enums_.vec);
- std::vector<Offset<reflection::Object>> object_offsets;
- for (auto it = structs_.vec.begin(); it != structs_.vec.end(); ++it) {
- auto offset = (*it)->Serialize(&builder_, *this);
- object_offsets.push_back(offset);
- (*it)->serialized_location = offset.o;
- }
- std::vector<Offset<reflection::Enum>> enum_offsets;
- for (auto it = enums_.vec.begin(); it != enums_.vec.end(); ++it) {
- auto offset = (*it)->Serialize(&builder_, *this);
- enum_offsets.push_back(offset);
- (*it)->serialized_location = offset.o;
- }
- auto schema_offset = reflection::CreateSchema(
- builder_,
- builder_.CreateVectorOfSortedTables(&object_offsets),
- builder_.CreateVectorOfSortedTables(&enum_offsets),
- builder_.CreateString(file_identifier_),
- builder_.CreateString(file_extension_),
- root_struct_def_
- ? root_struct_def_->serialized_location
- : 0);
- builder_.Finish(schema_offset, reflection::SchemaIdentifier());
-}
-
-Offset<reflection::Object> StructDef::Serialize(FlatBufferBuilder *builder,
- const Parser &parser) const {
- std::vector<Offset<reflection::Field>> field_offsets;
- for (auto it = fields.vec.begin(); it != fields.vec.end(); ++it) {
- field_offsets.push_back(
- (*it)->Serialize(builder,
- static_cast<uint16_t>(it - fields.vec.begin()), parser));
- }
- auto qualified_name = defined_namespace->GetFullyQualifiedName(name);
- return reflection::CreateObject(*builder,
- builder->CreateString(qualified_name),
- builder->CreateVectorOfSortedTables(
- &field_offsets),
- fixed,
- static_cast<int>(minalign),
- static_cast<int>(bytesize),
- SerializeAttributes(builder, parser),
- parser.opts.binary_schema_comments
- ? builder->CreateVectorOfStrings(
- doc_comment)
- : 0);
-}
-
-Offset<reflection::Field> FieldDef::Serialize(FlatBufferBuilder *builder,
- uint16_t id,
- const Parser &parser) const {
- return reflection::CreateField(*builder,
- builder->CreateString(name),
- value.type.Serialize(builder),
- id,
- value.offset,
- IsInteger(value.type.base_type)
- ? StringToInt(value.constant.c_str())
- : 0,
- IsFloat(value.type.base_type)
- ? strtod(value.constant.c_str(), nullptr)
- : 0.0,
- deprecated,
- required,
- key,
- SerializeAttributes(builder, parser),
- parser.opts.binary_schema_comments
- ? builder->CreateVectorOfStrings(doc_comment)
- : 0);
- // TODO: value.constant is almost always "0", we could save quite a bit of
- // space by sharing it. Same for common values of value.type.
-}
-
-Offset<reflection::Enum> EnumDef::Serialize(FlatBufferBuilder *builder,
- const Parser &parser) const {
- std::vector<Offset<reflection::EnumVal>> enumval_offsets;
- for (auto it = vals.vec.begin(); it != vals.vec.end(); ++it) {
- enumval_offsets.push_back((*it)->Serialize(builder));
- }
- auto qualified_name = defined_namespace->GetFullyQualifiedName(name);
- return reflection::CreateEnum(*builder,
- builder->CreateString(qualified_name),
- builder->CreateVector(enumval_offsets),
- is_union,
- underlying_type.Serialize(builder),
- SerializeAttributes(builder, parser),
- parser.opts.binary_schema_comments
- ? builder->CreateVectorOfStrings(doc_comment)
- : 0);
-}
-
-Offset<reflection::EnumVal> EnumVal::Serialize(FlatBufferBuilder *builder) const
- {
- return reflection::CreateEnumVal(*builder,
- builder->CreateString(name),
- value,
- union_type.struct_def
- ? union_type.struct_def->
- serialized_location
- : 0,
- union_type.Serialize(builder));
-}
-
-Offset<reflection::Type> Type::Serialize(FlatBufferBuilder *builder) const {
- return reflection::CreateType(*builder,
- static_cast<reflection::BaseType>(base_type),
- static_cast<reflection::BaseType>(element),
- struct_def ? struct_def->index :
- (enum_def ? enum_def->index : -1));
-}
-
-flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<
- reflection::KeyValue>>>
- Definition::SerializeAttributes(FlatBufferBuilder *builder,
- const Parser &parser) const {
- std::vector<flatbuffers::Offset<reflection::KeyValue>> attrs;
- for (auto kv = attributes.dict.begin(); kv != attributes.dict.end(); ++kv) {
- auto it = parser.known_attributes_.find(kv->first);
- assert(it != parser.known_attributes_.end());
- if (!it->second) { // Custom attribute.
- attrs.push_back(
- reflection::CreateKeyValue(*builder, builder->CreateString(kv->first),
- builder->CreateString(
- kv->second->constant)));
- }
- }
- if (attrs.size()) {
- return builder->CreateVectorOfSortedTables(&attrs);
- } else {
- return 0;
- }
-}
-
-std::string Parser::ConformTo(const Parser &base) {
- for (auto sit = structs_.vec.begin(); sit != structs_.vec.end(); ++sit) {
- auto &struct_def = **sit;
- auto qualified_name =
- struct_def.defined_namespace->GetFullyQualifiedName(struct_def.name);
- auto struct_def_base = base.structs_.Lookup(qualified_name);
- if (!struct_def_base) continue;
- for (auto fit = struct_def.fields.vec.begin();
- fit != struct_def.fields.vec.end(); ++fit) {
- auto &field = **fit;
- auto field_base = struct_def_base->fields.Lookup(field.name);
- if (field_base) {
- if (field.value.offset != field_base->value.offset)
- return "offsets differ for field: " + field.name;
- if (field.value.constant != field_base->value.constant)
- return "defaults differ for field: " + field.name;
- if (!EqualByName(field.value.type, field_base->value.type))
- return "types differ for field: " + field.name;
- } else {
- // Doesn't have to exist, deleting fields is fine.
- // But we should check if there is a field that has the same offset
- // but is incompatible (in the case of field renaming).
- for (auto fbit = struct_def_base->fields.vec.begin();
- fbit != struct_def_base->fields.vec.end(); ++fbit) {
- field_base = *fbit;
- if (field.value.offset == field_base->value.offset) {
- if (!EqualByName(field.value.type, field_base->value.type))
- return "field renamed to different type: " + field.name;
- break;
- }
- }
- }
- }
- }
- for (auto eit = enums_.vec.begin(); eit != enums_.vec.end(); ++eit) {
- auto &enum_def = **eit;
- auto qualified_name =
- enum_def.defined_namespace->GetFullyQualifiedName(enum_def.name);
- auto enum_def_base = base.enums_.Lookup(qualified_name);
- if (!enum_def_base) continue;
- for (auto evit = enum_def.vals.vec.begin();
- evit != enum_def.vals.vec.end(); ++evit) {
- auto &enum_val = **evit;
- auto enum_val_base = enum_def_base->vals.Lookup(enum_val.name);
- if (enum_val_base) {
- if (enum_val.value != enum_val_base->value)
- return "values differ for enum: " + enum_val.name;
- }
- }
- }
- return "";
-}
-
-} // namespace flatbuffers
diff --git a/third_party/flatbuffers/src/reflection.cpp b/third_party/flatbuffers/src/reflection.cpp
deleted file mode 100644
index cb30c7f..0000000
--- a/third_party/flatbuffers/src/reflection.cpp
+++ /dev/null
@@ -1,710 +0,0 @@
-/*
- * Copyright 2015 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "flatbuffers/reflection.h"
-#include "flatbuffers/util.h"
-
-// Helper functionality for reflection.
-
-namespace flatbuffers {
-
-int64_t GetAnyValueI(reflection::BaseType type, const uint8_t *data) {
-# define FLATBUFFERS_GET(T) static_cast<int64_t>(ReadScalar<T>(data))
- switch (type) {
- case reflection::UType:
- case reflection::Bool:
- case reflection::UByte: return FLATBUFFERS_GET(uint8_t);
- case reflection::Byte: return FLATBUFFERS_GET(int8_t);
- case reflection::Short: return FLATBUFFERS_GET(int16_t);
- case reflection::UShort: return FLATBUFFERS_GET(uint16_t);
- case reflection::Int: return FLATBUFFERS_GET(int32_t);
- case reflection::UInt: return FLATBUFFERS_GET(uint32_t);
- case reflection::Long: return FLATBUFFERS_GET(int64_t);
- case reflection::ULong: return FLATBUFFERS_GET(uint64_t);
- case reflection::Float: return FLATBUFFERS_GET(float);
- case reflection::Double: return FLATBUFFERS_GET(double);
- case reflection::String: {
- auto s = reinterpret_cast<const String *>(ReadScalar<uoffset_t>(data) +
- data);
- return s ? StringToInt(s->c_str()) : 0;
- }
- default: return 0; // Tables & vectors do not make sense.
- }
-# undef FLATBUFFERS_GET
-}
-
-double GetAnyValueF(reflection::BaseType type, const uint8_t *data) {
- switch (type) {
- case reflection::Float: return static_cast<double>(ReadScalar<float>(data));
- case reflection::Double: return ReadScalar<double>(data);
- case reflection::String: {
- auto s = reinterpret_cast<const String *>(ReadScalar<uoffset_t>(data) +
- data);
- return s ? strtod(s->c_str(), nullptr) : 0.0;
- }
- default: return static_cast<double>(GetAnyValueI(type, data));
- }
-}
-
-std::string GetAnyValueS(reflection::BaseType type, const uint8_t *data,
- const reflection::Schema *schema, int type_index) {
- switch (type) {
- case reflection::Float:
- case reflection::Double: return NumToString(GetAnyValueF(type, data));
- case reflection::String: {
- auto s = reinterpret_cast<const String *>(ReadScalar<uoffset_t>(data) +
- data);
- return s ? s->c_str() : "";
- }
- case reflection::Obj:
- if (schema) {
- // Convert the table to a string. This is mostly for debugging purposes,
- // and does NOT promise to be JSON compliant.
- // Also prefixes the type.
- auto &objectdef = *schema->objects()->Get(type_index);
- auto s = objectdef.name()->str();
- if (objectdef.is_struct()) {
- s += "(struct)"; // TODO: implement this as well.
- } else {
- auto table_field = reinterpret_cast<const Table *>(
- ReadScalar<uoffset_t>(data) + data);
- s += " { ";
- auto fielddefs = objectdef.fields();
- for (auto it = fielddefs->begin(); it != fielddefs->end(); ++it) {
- auto &fielddef = **it;
- if (!table_field->CheckField(fielddef.offset())) continue;
- auto val = GetAnyFieldS(*table_field, fielddef, schema);
- if (fielddef.type()->base_type() == reflection::String)
- val = "\"" + val + "\""; // Doesn't deal with escape codes etc.
- s += fielddef.name()->str();
- s += ": ";
- s += val;
- s += ", ";
- }
- s += "}";
- }
- return s;
- } else {
- return "(table)";
- }
- case reflection::Vector:
- return "[(elements)]"; // TODO: implement this as well.
- case reflection::Union:
- return "(union)"; // TODO: implement this as well.
- default: return NumToString(GetAnyValueI(type, data));
- }
-}
-
-void SetAnyValueI(reflection::BaseType type, uint8_t *data, int64_t val) {
-# define FLATBUFFERS_SET(T) WriteScalar(data, static_cast<T>(val))
- switch (type) {
- case reflection::UType:
- case reflection::Bool:
- case reflection::UByte: FLATBUFFERS_SET(uint8_t ); break;
- case reflection::Byte: FLATBUFFERS_SET(int8_t ); break;
- case reflection::Short: FLATBUFFERS_SET(int16_t ); break;
- case reflection::UShort: FLATBUFFERS_SET(uint16_t); break;
- case reflection::Int: FLATBUFFERS_SET(int32_t ); break;
- case reflection::UInt: FLATBUFFERS_SET(uint32_t); break;
- case reflection::Long: FLATBUFFERS_SET(int64_t ); break;
- case reflection::ULong: FLATBUFFERS_SET(uint64_t); break;
- case reflection::Float: FLATBUFFERS_SET(float ); break;
- case reflection::Double: FLATBUFFERS_SET(double ); break;
- // TODO: support strings
- default: break;
- }
-# undef FLATBUFFERS_SET
-}
-
-void SetAnyValueF(reflection::BaseType type, uint8_t *data, double val) {
- switch (type) {
- case reflection::Float: WriteScalar(data, static_cast<float>(val)); break;
- case reflection::Double: WriteScalar(data, val); break;
- // TODO: support strings.
- default: SetAnyValueI(type, data, static_cast<int64_t>(val)); break;
- }
-}
-
-void SetAnyValueS(reflection::BaseType type, uint8_t *data, const char *val) {
- switch (type) {
- case reflection::Float:
- case reflection::Double:
- SetAnyValueF(type, data, strtod(val, nullptr));
- break;
- // TODO: support strings.
- default: SetAnyValueI(type, data, StringToInt(val)); break;
- }
-}
-
-// Resize a FlatBuffer in-place by iterating through all offsets in the buffer
-// and adjusting them by "delta" if they straddle the start offset.
-// Once that is done, bytes can now be inserted/deleted safely.
-// "delta" may be negative (shrinking).
-// Unless "delta" is a multiple of the largest alignment, you'll create a small
-// amount of garbage space in the buffer (usually 0..7 bytes).
-// If your FlatBuffer's root table is not the schema's root table, you should
-// pass in your root_table type as well.
-class ResizeContext {
- public:
- ResizeContext(const reflection::Schema &schema, uoffset_t start, int delta,
- std::vector<uint8_t> *flatbuf,
- const reflection::Object *root_table = nullptr)
- : schema_(schema), startptr_(flatbuf->data() + start),
- delta_(delta), buf_(*flatbuf),
- dag_check_(flatbuf->size() / sizeof(uoffset_t), false) {
- auto mask = static_cast<int>(sizeof(largest_scalar_t) - 1);
- delta_ = (delta_ + mask) & ~mask;
- if (!delta_) return; // We can't shrink by less than largest_scalar_t.
- // Now change all the offsets by delta_.
- auto root = GetAnyRoot(buf_.data());
- Straddle<uoffset_t, 1>(buf_.data(), root, buf_.data());
- ResizeTable(root_table ? *root_table : *schema.root_table(), root);
- // We can now add or remove bytes at start.
- if (delta_ > 0) buf_.insert(buf_.begin() + start, delta_, 0);
- else buf_.erase(buf_.begin() + start, buf_.begin() + start - delta_);
- }
-
- // Check if the range between first (lower address) and second straddles
- // the insertion point. If it does, change the offset at offsetloc (of
- // type T, with direction D).
- template<typename T, int D> void Straddle(const void *first,
- const void *second,
- void *offsetloc) {
- if (first <= startptr_ && second >= startptr_) {
- WriteScalar<T>(offsetloc, ReadScalar<T>(offsetloc) + delta_ * D);
- DagCheck(offsetloc) = true;
- }
- }
-
- // This returns a boolean that records if the corresponding offset location
- // has been modified already. If so, we can't even read the corresponding
- // offset, since it is pointing to a location that is illegal until the
- // resize actually happens.
- // This must be checked for every offset, since we can't know which offsets
- // will straddle and which won't.
- uint8_t &DagCheck(const void *offsetloc) {
- auto dag_idx = reinterpret_cast<const uoffset_t *>(offsetloc) -
- reinterpret_cast<const uoffset_t *>(buf_.data());
- return dag_check_[dag_idx];
- }
-
- void ResizeTable(const reflection::Object &objectdef, Table *table) {
- if (DagCheck(table))
- return; // Table already visited.
- auto vtable = table->GetVTable();
- // Early out: since all fields inside the table must point forwards in
- // memory, if the insertion point is before the table we can stop here.
- auto tableloc = reinterpret_cast<uint8_t *>(table);
- if (startptr_ <= tableloc) {
- // Check if insertion point is between the table and a vtable that
- // precedes it. This can't happen in current construction code, but check
- // just in case we ever change the way flatbuffers are built.
- Straddle<soffset_t, -1>(vtable, table, table);
- } else {
- // Check each field.
- auto fielddefs = objectdef.fields();
- for (auto it = fielddefs->begin(); it != fielddefs->end(); ++it) {
- auto &fielddef = **it;
- auto base_type = fielddef.type()->base_type();
- // Ignore scalars.
- if (base_type <= reflection::Double) continue;
- // Ignore fields that are not stored.
- auto offset = table->GetOptionalFieldOffset(fielddef.offset());
- if (!offset) continue;
- // Ignore structs.
- auto subobjectdef = base_type == reflection::Obj ?
- schema_.objects()->Get(fielddef.type()->index()) : nullptr;
- if (subobjectdef && subobjectdef->is_struct()) continue;
- // Get this fields' offset, and read it if safe.
- auto offsetloc = tableloc + offset;
- if (DagCheck(offsetloc))
- continue; // This offset already visited.
- auto ref = offsetloc + ReadScalar<uoffset_t>(offsetloc);
- Straddle<uoffset_t, 1>(offsetloc, ref, offsetloc);
- // Recurse.
- switch (base_type) {
- case reflection::Obj: {
- ResizeTable(*subobjectdef, reinterpret_cast<Table *>(ref));
- break;
- }
- case reflection::Vector: {
- auto elem_type = fielddef.type()->element();
- if (elem_type != reflection::Obj && elem_type != reflection::String)
- break;
- auto vec = reinterpret_cast<Vector<uoffset_t> *>(ref);
- auto elemobjectdef = elem_type == reflection::Obj
- ? schema_.objects()->Get(fielddef.type()->index())
- : nullptr;
- if (elemobjectdef && elemobjectdef->is_struct()) break;
- for (uoffset_t i = 0; i < vec->size(); i++) {
- auto loc = vec->Data() + i * sizeof(uoffset_t);
- if (DagCheck(loc))
- continue; // This offset already visited.
- auto dest = loc + vec->Get(i);
- Straddle<uoffset_t, 1>(loc, dest ,loc);
- if (elemobjectdef)
- ResizeTable(*elemobjectdef, reinterpret_cast<Table *>(dest));
- }
- break;
- }
- case reflection::Union: {
- ResizeTable(GetUnionType(schema_, objectdef, fielddef, *table),
- reinterpret_cast<Table *>(ref));
- break;
- }
- case reflection::String:
- break;
- default:
- assert(false);
- }
- }
- // Check if the vtable offset points beyond the insertion point.
- // Must do this last, since GetOptionalFieldOffset above still reads
- // this value.
- Straddle<soffset_t, -1>(table, vtable, table);
- }
- }
-
- void operator=(const ResizeContext &rc);
-
- private:
- const reflection::Schema &schema_;
- uint8_t *startptr_;
- int delta_;
- std::vector<uint8_t> &buf_;
- std::vector<uint8_t> dag_check_;
-};
-
-void SetString(const reflection::Schema &schema, const std::string &val,
- const String *str, std::vector<uint8_t> *flatbuf,
- const reflection::Object *root_table) {
- auto delta = static_cast<int>(val.size()) - static_cast<int>(str->Length());
- auto str_start = static_cast<uoffset_t>(
- reinterpret_cast<const uint8_t *>(str) - flatbuf->data());
- auto start = str_start + static_cast<uoffset_t>(sizeof(uoffset_t));
- if (delta) {
- // Clear the old string, since we don't want parts of it remaining.
- memset(flatbuf->data() + start, 0, str->Length());
- // Different size, we must expand (or contract).
- ResizeContext(schema, start, delta, flatbuf, root_table);
- // Set the new length.
- WriteScalar(flatbuf->data() + str_start,
- static_cast<uoffset_t>(val.size()));
- }
- // Copy new data. Safe because we created the right amount of space.
- memcpy(flatbuf->data() + start, val.c_str(), val.size() + 1);
-}
-
-uint8_t *ResizeAnyVector(const reflection::Schema &schema, uoffset_t newsize,
- const VectorOfAny *vec, uoffset_t num_elems,
- uoffset_t elem_size, std::vector<uint8_t> *flatbuf,
- const reflection::Object *root_table) {
- auto delta_elem = static_cast<int>(newsize) - static_cast<int>(num_elems);
- auto delta_bytes = delta_elem * static_cast<int>(elem_size);
- auto vec_start = reinterpret_cast<const uint8_t *>(vec) - flatbuf->data();
- auto start = static_cast<uoffset_t>(vec_start + sizeof(uoffset_t) +
- elem_size * num_elems);
- if (delta_bytes) {
- if (delta_elem < 0) {
- // Clear elements we're throwing away, since some might remain in the
- // buffer.
- auto size_clear = -delta_elem * elem_size;
- memset(flatbuf->data() + start - size_clear, 0, size_clear);
- }
- ResizeContext(schema, start, delta_bytes, flatbuf, root_table);
- WriteScalar(flatbuf->data() + vec_start, newsize); // Length field.
- // Set new elements to 0.. this can be overwritten by the caller.
- if (delta_elem > 0) {
- memset(flatbuf->data() + start, 0, delta_elem * elem_size);
- }
- }
- return flatbuf->data() + start;
-}
-
-const uint8_t *AddFlatBuffer(std::vector<uint8_t> &flatbuf,
- const uint8_t *newbuf, size_t newlen) {
- // Align to sizeof(uoffset_t) past sizeof(largest_scalar_t) since we're
- // going to chop off the root offset.
- while ((flatbuf.size() & (sizeof(uoffset_t) - 1)) ||
- !(flatbuf.size() & (sizeof(largest_scalar_t) - 1))) {
- flatbuf.push_back(0);
- }
- auto insertion_point = static_cast<uoffset_t>(flatbuf.size());
- // Insert the entire FlatBuffer minus the root pointer.
- flatbuf.insert(flatbuf.end(), newbuf + sizeof(uoffset_t), newbuf + newlen);
- auto root_offset = ReadScalar<uoffset_t>(newbuf) - sizeof(uoffset_t);
- return flatbuf.data() + insertion_point + root_offset;
-}
-
-void CopyInline(FlatBufferBuilder &fbb, const reflection::Field &fielddef,
- const Table &table, size_t align, size_t size) {
- fbb.Align(align);
- fbb.PushBytes(table.GetStruct<const uint8_t *>(fielddef.offset()), size);
- fbb.TrackField(fielddef.offset(), fbb.GetSize());
-}
-
-Offset<const Table *> CopyTable(FlatBufferBuilder &fbb,
- const reflection::Schema &schema,
- const reflection::Object &objectdef,
- const Table &table,
- bool use_string_pooling) {
- // Before we can construct the table, we have to first generate any
- // subobjects, and collect their offsets.
- std::vector<uoffset_t> offsets;
- auto fielddefs = objectdef.fields();
- for (auto it = fielddefs->begin(); it != fielddefs->end(); ++it) {
- auto &fielddef = **it;
- // Skip if field is not present in the source.
- if (!table.CheckField(fielddef.offset())) continue;
- uoffset_t offset = 0;
- switch (fielddef.type()->base_type()) {
- case reflection::String: {
- offset = use_string_pooling
- ? fbb.CreateSharedString(GetFieldS(table, fielddef)).o
- : fbb.CreateString(GetFieldS(table, fielddef)).o;
- break;
- }
- case reflection::Obj: {
- auto &subobjectdef = *schema.objects()->Get(fielddef.type()->index());
- if (!subobjectdef.is_struct()) {
- offset = CopyTable(fbb, schema, subobjectdef,
- *GetFieldT(table, fielddef)).o;
- }
- break;
- }
- case reflection::Union: {
- auto &subobjectdef = GetUnionType(schema, objectdef, fielddef, table);
- offset = CopyTable(fbb, schema, subobjectdef,
- *GetFieldT(table, fielddef)).o;
- break;
- }
- case reflection::Vector: {
- auto vec = table.GetPointer<const Vector<Offset<Table>> *>(
- fielddef.offset());
- auto element_base_type = fielddef.type()->element();
- auto elemobjectdef = element_base_type == reflection::Obj
- ? schema.objects()->Get(fielddef.type()->index())
- : nullptr;
- switch (element_base_type) {
- case reflection::String: {
- std::vector<Offset<const String *>> elements(vec->size());
- auto vec_s = reinterpret_cast<const Vector<Offset<String>> *>(vec);
- for (uoffset_t i = 0; i < vec_s->size(); i++) {
- elements[i] = use_string_pooling
- ? fbb.CreateSharedString(vec_s->Get(i)).o
- : fbb.CreateString(vec_s->Get(i)).o;
- }
- offset = fbb.CreateVector(elements).o;
- break;
- }
- case reflection::Obj: {
- if (!elemobjectdef->is_struct()) {
- std::vector<Offset<const Table *>> elements(vec->size());
- for (uoffset_t i = 0; i < vec->size(); i++) {
- elements[i] =
- CopyTable(fbb, schema, *elemobjectdef, *vec->Get(i));
- }
- offset = fbb.CreateVector(elements).o;
- break;
- }
- // FALL-THRU:
- }
- default: { // Scalars and structs.
- auto element_size = GetTypeSize(element_base_type);
- if (elemobjectdef && elemobjectdef->is_struct())
- element_size = elemobjectdef->bytesize();
- fbb.StartVector(element_size, vec->size());
- fbb.PushBytes(vec->Data(), element_size * vec->size());
- offset = fbb.EndVector(vec->size());
- break;
- }
- }
- break;
- }
- default: // Scalars.
- break;
- }
- if (offset) {
- offsets.push_back(offset);
- }
- }
- // Now we can build the actual table from either offsets or scalar data.
- auto start = objectdef.is_struct()
- ? fbb.StartStruct(objectdef.minalign())
- : fbb.StartTable();
- size_t offset_idx = 0;
- for (auto it = fielddefs->begin(); it != fielddefs->end(); ++it) {
- auto &fielddef = **it;
- if (!table.CheckField(fielddef.offset())) continue;
- auto base_type = fielddef.type()->base_type();
- switch (base_type) {
- case reflection::Obj: {
- auto &subobjectdef = *schema.objects()->Get(fielddef.type()->index());
- if (subobjectdef.is_struct()) {
- CopyInline(fbb, fielddef, table, subobjectdef.minalign(),
- subobjectdef.bytesize());
- break;
- }
- // else: FALL-THRU:
- }
- case reflection::Union:
- case reflection::String:
- case reflection::Vector:
- fbb.AddOffset(fielddef.offset(), Offset<void>(offsets[offset_idx++]));
- break;
- default: { // Scalars.
- auto size = GetTypeSize(base_type);
- CopyInline(fbb, fielddef, table, size, size);
- break;
- }
- }
- }
- assert(offset_idx == offsets.size());
- if (objectdef.is_struct()) {
- fbb.ClearOffsets();
- return fbb.EndStruct();
- } else {
- return fbb.EndTable(start, static_cast<voffset_t>(fielddefs->size()));
- }
-}
-
-bool VerifyStruct(flatbuffers::Verifier &v,
- const flatbuffers::Table &parent_table,
- voffset_t field_offset,
- const reflection::Object &obj,
- bool required) {
- auto offset = parent_table.GetOptionalFieldOffset(field_offset);
- if (required && !offset) {
- return false;
- }
-
- return !offset || v.Verify(reinterpret_cast<const uint8_t*>(&parent_table)
- + offset, obj.bytesize());
-}
-
-bool VerifyVectorOfStructs(flatbuffers::Verifier &v,
- const flatbuffers::Table &parent_table,
- voffset_t field_offset,
- const reflection::Object &obj,
- bool required) {
- auto p = parent_table.GetPointer<const uint8_t*>(field_offset);
- const uint8_t* end;
- if (required && !p) {
- return false;
- }
-
- return !p || v.VerifyVector(p, obj.bytesize(), &end);
-}
-
-// forward declare to resolve cyclic deps between VerifyObject and VerifyVector
-bool VerifyObject(flatbuffers::Verifier &v,
- const reflection::Schema &schema,
- const reflection::Object &obj,
- const flatbuffers::Table *table,
- bool isRequired);
-
-bool VerifyVector(flatbuffers::Verifier &v,
- const reflection::Schema &schema,
- const flatbuffers::Table &table,
- const reflection::Field &vec_field) {
- assert(vec_field.type()->base_type() == reflection::Vector);
- if (!table.VerifyField<uoffset_t>(v, vec_field.offset()))
- return false;
-
- switch (vec_field.type()->element()) {
- case reflection::None:
- assert(false);
- break;
- case reflection::UType:
- return v.Verify(flatbuffers::GetFieldV<uint8_t>(table, vec_field));
- case reflection::Bool:
- case reflection::Byte:
- case reflection::UByte:
- return v.Verify(flatbuffers::GetFieldV<int8_t>(table, vec_field));
- case reflection::Short:
- case reflection::UShort:
- return v.Verify(flatbuffers::GetFieldV<int16_t>(table, vec_field));
- case reflection::Int:
- case reflection::UInt:
- return v.Verify(flatbuffers::GetFieldV<int32_t>(table, vec_field));
- case reflection::Long:
- case reflection::ULong:
- return v.Verify(flatbuffers::GetFieldV<int64_t>(table, vec_field));
- case reflection::Float:
- return v.Verify(flatbuffers::GetFieldV<float>(table, vec_field));
- case reflection::Double:
- return v.Verify(flatbuffers::GetFieldV<double>(table, vec_field));
- case reflection::String: {
- auto vecString =
- flatbuffers::GetFieldV<flatbuffers::
- Offset<flatbuffers::String>>(table, vec_field);
- if (v.Verify(vecString) && v.VerifyVectorOfStrings(vecString)) {
- return true;
- } else {
- return false;
- }
- }
- case reflection::Vector:
- assert(false);
- break;
- case reflection::Obj: {
- auto obj = schema.objects()->Get(vec_field.type()->index());
- if (obj->is_struct()) {
- if (!VerifyVectorOfStructs(v, table, vec_field.offset(), *obj,
- vec_field.required())) {
- return false;
- }
- } else {
- auto vec =
- flatbuffers::GetFieldV<flatbuffers::
- Offset<flatbuffers::Table>>(table, vec_field);
- if (!v.Verify(vec))
- return false;
- if (vec) {
- for (uoffset_t j = 0; j < vec->size(); j++) {
- if (!VerifyObject(v, schema, *obj, vec->Get(j), true)) {
- return false;
- }
- }
- }
- }
- return true;
- }
- case reflection::Union:
- assert(false);
- break;
- default:
- assert(false);
- break;
- }
-
- return false;
-}
-
-bool VerifyObject(flatbuffers::Verifier &v,
- const reflection::Schema &schema,
- const reflection::Object &obj,
- const flatbuffers::Table *table,
- bool required) {
- if (!table) {
- if (!required)
- return true;
- else
- return false;
- }
-
- if (!table->VerifyTableStart(v))
- return false;
-
- for (uoffset_t i = 0; i < obj.fields()->size(); i++) {
- auto field_def = obj.fields()->Get(i);
- switch (field_def->type()->base_type()) {
- case reflection::None:
- assert(false);
- break;
- case reflection::UType:
- if (!table->VerifyField<uint8_t>(v, field_def->offset()))
- return false;
- break;
- case reflection::Bool:
- case reflection::Byte:
- case reflection::UByte:
- if (!table->VerifyField<int8_t>(v, field_def->offset()))
- return false;
- break;
- case reflection::Short:
- case reflection::UShort:
- if (!table->VerifyField<int16_t>(v, field_def->offset()))
- return false;
- break;
- case reflection::Int:
- case reflection::UInt:
- if (!table->VerifyField<int32_t>(v, field_def->offset()))
- return false;
- break;
- case reflection::Long:
- case reflection::ULong:
- if (!table->VerifyField<int64_t>(v, field_def->offset()))
- return false;
- break;
- case reflection::Float:
- if (!table->VerifyField<float>(v, field_def->offset()))
- return false;
- break;
- case reflection::Double:
- if (!table->VerifyField<double>(v, field_def->offset()))
- return false;
- break;
- case reflection::String:
- if (!table->VerifyField<uoffset_t>(v, field_def->offset()) ||
- !v.Verify(flatbuffers::GetFieldS(*table, *field_def))) {
- return false;
- }
- break;
- case reflection::Vector:
- if (!VerifyVector(v, schema, *table, *field_def))
- return false;
- break;
- case reflection::Obj: {
- auto child_obj = schema.objects()->Get(field_def->type()->index());
- if (child_obj->is_struct()) {
- if (!VerifyStruct(v, *table, field_def->offset(), *child_obj,
- field_def->required())) {
- return false;
- }
- } else {
- if (!VerifyObject(v, schema, *child_obj,
- flatbuffers::GetFieldT(*table, *field_def),
- field_def->required())) {
- return false;
- }
- }
- break;
- }
- case reflection::Union: {
- // get union type from the prev field
- voffset_t utype_offset = field_def->offset() - sizeof(voffset_t);
- auto utype = table->GetField<uint8_t>(utype_offset, 0);
- if (utype != 0) {
- // Means we have this union field present
- auto fb_enum = schema.enums()->Get(field_def->type()->index());
- auto child_obj = fb_enum->values()->Get(utype)->object();
- if (!VerifyObject(v, schema, *child_obj,
- flatbuffers::GetFieldT(*table, *field_def),
- field_def->required())) {
- return false;
- }
- }
- break;
- }
- default:
- assert(false);
- break;
- }
- }
-
- return true;
-}
-
-bool Verify(const reflection::Schema &schema,
- const reflection::Object &root,
- const uint8_t *buf,
- size_t length) {
- Verifier v(buf, length);
- return VerifyObject(v, schema, root, flatbuffers::GetAnyRoot(buf), true);
-}
-
-} // namespace flatbuffers
diff --git a/third_party/flatbuffers/src/util.cpp b/third_party/flatbuffers/src/util.cpp
deleted file mode 100644
index f4aecb5..0000000
--- a/third_party/flatbuffers/src/util.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright 2016 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "flatbuffers/util.h"
-
-namespace flatbuffers {
-
-bool FileExistsRaw(const char *name) {
- std::ifstream ifs(name);
- return ifs.good();
-}
-
-bool LoadFileRaw(const char *name, bool binary, std::string *buf) {
- if (DirExists(name)) return false;
- std::ifstream ifs(name, binary ? std::ifstream::binary : std::ifstream::in);
- if (!ifs.is_open()) return false;
- if (binary) {
- // The fastest way to read a file into a string.
- ifs.seekg(0, std::ios::end);
- auto size = ifs.tellg();
- (*buf).resize(static_cast<size_t>(size));
- ifs.seekg(0, std::ios::beg);
- ifs.read(&(*buf)[0], (*buf).size());
- } else {
- // This is slower, but works correctly on all platforms for text files.
- std::ostringstream oss;
- oss << ifs.rdbuf();
- *buf = oss.str();
- }
- return !ifs.bad();
-}
-
-static LoadFileFunction g_load_file_function = LoadFileRaw;
-static FileExistsFunction g_file_exists_function = FileExistsRaw;
-
-bool LoadFile(const char *name, bool binary, std::string *buf) {
- assert(g_load_file_function);
- return g_load_file_function(name, binary, buf);
-}
-
-bool FileExists(const char *name) {
- assert(g_file_exists_function);
- return g_file_exists_function(name);
-}
-
-bool DirExists(const char *name) {
- #ifdef _WIN32
- #define flatbuffers_stat _stat
- #define FLATBUFFERS_S_IFDIR _S_IFDIR
- #else
- #define flatbuffers_stat stat
- #define FLATBUFFERS_S_IFDIR S_IFDIR
- #endif
- struct flatbuffers_stat file_info;
- if (flatbuffers_stat(name, &file_info) != 0) return false;
- return (file_info.st_mode & FLATBUFFERS_S_IFDIR) != 0;
-}
-
-LoadFileFunction SetLoadFileFunction(LoadFileFunction load_file_function) {
- LoadFileFunction previous_function = g_load_file_function;
- g_load_file_function = load_file_function ? load_file_function : LoadFileRaw;
- return previous_function;
-}
-
-FileExistsFunction SetFileExistsFunction(
- FileExistsFunction file_exists_function) {
- FileExistsFunction previous_function = g_file_exists_function;
- g_file_exists_function = file_exists_function ?
- file_exists_function : FileExistsRaw;
- return previous_function;
-}
-
-} // namespace flatbuffers
diff --git a/third_party/flatbuffers/tests/FlatBuffers.Test/Assert.cs b/third_party/flatbuffers/tests/FlatBuffers.Test/Assert.cs
deleted file mode 100644
index 488c338..0000000
--- a/third_party/flatbuffers/tests/FlatBuffers.Test/Assert.cs
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace FlatBuffers.Test
-{
-
- public class AssertFailedException : Exception
- {
- private readonly object _expected;
- private readonly object _actual;
-
- public AssertFailedException(object expected, object actual)
- {
- _expected = expected;
- _actual = actual;
- }
-
- public override string Message
- {
- get { return string.Format("Expected {0} but saw {1}", _expected, _actual); }
- }
- }
-
- public class AssertArrayFailedException : Exception
- {
- private readonly int _index;
- private readonly object _expected;
- private readonly object _actual;
-
- public AssertArrayFailedException(int index, object expected, object actual)
- {
- _index = index;
- _expected = expected;
- _actual = actual;
- }
-
- public override string Message
- {
- get { return string.Format("Expected {0} at index {1} but saw {2}", _expected, _index, _actual); }
- }
- }
-
- public class AssertUnexpectedThrowException : Exception
- {
- private readonly object _expected;
-
- public AssertUnexpectedThrowException(object expected)
- {
- _expected = expected;
- }
-
- public override string Message
- {
- get { return string.Format("Expected exception of type {0}", _expected); }
- }
- }
-
- public static class Assert
- {
- public static void AreEqual<T>(T expected, T actual)
- {
- if (!expected.Equals(actual))
- {
- throw new AssertFailedException(expected, actual);
- }
- }
-
- public static void ArrayEqual<T>(T[] expected, T[] actual)
- {
- if (expected.Length != actual.Length)
- {
- throw new AssertFailedException(expected, actual);
- }
-
- for(var i = 0; i < expected.Length; ++i)
- {
- if (!expected[i].Equals(actual[i]))
- {
- throw new AssertArrayFailedException(i, expected, actual);
- }
- }
- }
-
- public static void IsTrue(bool value)
- {
- if (!value)
- {
- throw new AssertFailedException(true, value);
- }
- }
-
- public static void IsFalse(bool value)
- {
- if (value)
- {
- throw new AssertFailedException(false, value);
- }
- }
-
- public static void Throws<T>(Action action) where T : Exception
- {
- var caught = false;
- try
- {
- action();
- }
- catch (T)
- {
- caught = true;
- }
-
- if (!caught)
- {
- throw new AssertUnexpectedThrowException(typeof (T));
- }
- }
- }
-}
diff --git a/third_party/flatbuffers/tests/FlatBuffers.Test/ByteBufferTests.cs b/third_party/flatbuffers/tests/FlatBuffers.Test/ByteBufferTests.cs
deleted file mode 100644
index 3324f12..0000000
--- a/third_party/flatbuffers/tests/FlatBuffers.Test/ByteBufferTests.cs
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-using System;
-
-namespace FlatBuffers.Test
-{
- [FlatBuffersTestClass]
- public class ByteBufferTests
- {
-
- [FlatBuffersTestMethod]
- public void ByteBuffer_Length_MatchesBufferLength()
- {
- var buffer = new byte[1000];
- var uut = new ByteBuffer(buffer);
- Assert.AreEqual(buffer.Length, uut.Length);
- }
-
- [FlatBuffersTestMethod]
- public void ByteBuffer_PutBytePopulatesBufferAtZeroOffset()
- {
- var buffer = new byte[1];
- var uut = new ByteBuffer(buffer);
- uut.PutByte(0, (byte)99);
-
- Assert.AreEqual((byte)99, buffer[0]);
- }
-
-#if !BYTEBUFFER_NO_BOUNDS_CHECK
- [FlatBuffersTestMethod]
- public void ByteBuffer_PutByteCannotPutAtOffsetPastLength()
- {
- var buffer = new byte[1];
- var uut = new ByteBuffer(buffer);
- Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutByte(1, 99));
- }
-#endif
-
- [FlatBuffersTestMethod]
- public void ByteBuffer_PutShortPopulatesBufferCorrectly()
- {
- var buffer = new byte[2];
- var uut = new ByteBuffer(buffer);
- uut.PutShort(0, (short)1);
-
- // Ensure Endianness was written correctly
- Assert.AreEqual((byte)1, buffer[0]);
- Assert.AreEqual((byte)0, buffer[1]);
- }
-
-#if !BYTEBUFFER_NO_BOUNDS_CHECK
- [FlatBuffersTestMethod]
- public void ByteBuffer_PutShortCannotPutAtOffsetPastLength()
- {
- var buffer = new byte[2];
- var uut = new ByteBuffer(buffer);
- Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutShort(2, 99));
- }
-#endif
-
-#if !BYTEBUFFER_NO_BOUNDS_CHECK
- [FlatBuffersTestMethod]
- public void ByteBuffer_PutShortChecksLength()
- {
- var buffer = new byte[1];
- var uut = new ByteBuffer(buffer);
- Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutShort(0, 99));
- }
-
- [FlatBuffersTestMethod]
- public void ByteBuffer_PutShortChecksLengthAndOffset()
- {
- var buffer = new byte[2];
- var uut = new ByteBuffer(buffer);
- Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutShort(1, 99));
- }
-#endif
-
- [FlatBuffersTestMethod]
- public void ByteBuffer_PutIntPopulatesBufferCorrectly()
- {
- var buffer = new byte[4];
- var uut = new ByteBuffer(buffer);
- uut.PutInt(0, 0x0A0B0C0D);
-
- // Ensure Endianness was written correctly
- Assert.AreEqual(0x0D, buffer[0]);
- Assert.AreEqual(0x0C, buffer[1]);
- Assert.AreEqual(0x0B, buffer[2]);
- Assert.AreEqual(0x0A, buffer[3]);
- }
-
- #if !BYTEBUFFER_NO_BOUNDS_CHECK
- [FlatBuffersTestMethod]
- public void ByteBuffer_PutIntCannotPutAtOffsetPastLength()
- {
- var buffer = new byte[4];
- var uut = new ByteBuffer(buffer);
- Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutInt(2, 0x0A0B0C0D));
- }
-
- [FlatBuffersTestMethod]
- public void ByteBuffer_PutIntChecksLength()
- {
- var buffer = new byte[1];
- var uut = new ByteBuffer(buffer);
- Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutInt(0, 0x0A0B0C0D));
- }
-
- [FlatBuffersTestMethod]
- public void ByteBuffer_PutIntChecksLengthAndOffset()
- {
- var buffer = new byte[4];
- var uut = new ByteBuffer(buffer);
- Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutInt(2, 0x0A0B0C0D));
- }
-#endif
-
- [FlatBuffersTestMethod]
- public void ByteBuffer_PutLongPopulatesBufferCorrectly()
- {
- var buffer = new byte[8];
- var uut = new ByteBuffer(buffer);
- uut.PutLong(0, 0x010203040A0B0C0D);
-
- // Ensure Endianness was written correctly
- Assert.AreEqual(0x0D, buffer[0]);
- Assert.AreEqual(0x0C, buffer[1]);
- Assert.AreEqual(0x0B, buffer[2]);
- Assert.AreEqual(0x0A, buffer[3]);
- Assert.AreEqual(0x04, buffer[4]);
- Assert.AreEqual(0x03, buffer[5]);
- Assert.AreEqual(0x02, buffer[6]);
- Assert.AreEqual(0x01, buffer[7]);
- }
-
-#if !BYTEBUFFER_NO_BOUNDS_CHECK
- [FlatBuffersTestMethod]
- public void ByteBuffer_PutLongCannotPutAtOffsetPastLength()
- {
- var buffer = new byte[8];
- var uut = new ByteBuffer(buffer);
- Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutLong(2, 0x010203040A0B0C0D));
- }
-
- [FlatBuffersTestMethod]
- public void ByteBuffer_PutLongChecksLength()
- {
- var buffer = new byte[1];
- var uut = new ByteBuffer(buffer);
- Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutLong(0, 0x010203040A0B0C0D));
- }
-
- [FlatBuffersTestMethod]
- public void ByteBuffer_PutLongChecksLengthAndOffset()
- {
- var buffer = new byte[8];
- var uut = new ByteBuffer(buffer);
- Assert.Throws<ArgumentOutOfRangeException>(() => uut.PutLong(2, 0x010203040A0B0C0D));
- }
-#endif
-
- [FlatBuffersTestMethod]
- public void ByteBuffer_GetByteReturnsCorrectData()
- {
- var buffer = new byte[1];
- buffer[0] = 99;
- var uut = new ByteBuffer(buffer);
- Assert.AreEqual((byte)99, uut.Get(0));
- }
-
-#if !BYTEBUFFER_NO_BOUNDS_CHECK
- [FlatBuffersTestMethod]
- public void ByteBuffer_GetByteChecksOffset()
- {
- var buffer = new byte[1];
- var uut = new ByteBuffer(buffer);
- Assert.Throws<ArgumentOutOfRangeException>(()=>uut.Get(1));
- }
-#endif
-
- [FlatBuffersTestMethod]
- public void ByteBuffer_GetShortReturnsCorrectData()
- {
- var buffer = new byte[2];
- buffer[0] = 1;
- buffer[1] = 0;
- var uut = new ByteBuffer(buffer);
- Assert.AreEqual(1, uut.GetShort(0));
- }
-
-#if !BYTEBUFFER_NO_BOUNDS_CHECK
- [FlatBuffersTestMethod]
- public void ByteBuffer_GetShortChecksOffset()
- {
- var buffer = new byte[2];
- var uut = new ByteBuffer(buffer);
- Assert.Throws<ArgumentOutOfRangeException>(() => uut.GetShort(2));
- }
-
- [FlatBuffersTestMethod]
- public void ByteBuffer_GetShortChecksLength()
- {
- var buffer = new byte[2];
- var uut = new ByteBuffer(buffer);
- Assert.Throws<ArgumentOutOfRangeException>(() => uut.GetShort(1));
- }
-#endif
-
- [FlatBuffersTestMethod]
- public void ByteBuffer_GetIntReturnsCorrectData()
- {
- var buffer = new byte[4];
- buffer[0] = 0x0D;
- buffer[1] = 0x0C;
- buffer[2] = 0x0B;
- buffer[3] = 0x0A;
- var uut = new ByteBuffer(buffer);
- Assert.AreEqual(0x0A0B0C0D, uut.GetInt(0));
- }
-
-#if !BYTEBUFFER_NO_BOUNDS_CHECK
- [FlatBuffersTestMethod]
- public void ByteBuffer_GetIntChecksOffset()
- {
- var buffer = new byte[4];
- var uut = new ByteBuffer(buffer);
- Assert.Throws<ArgumentOutOfRangeException>(() => uut.GetInt(4));
- }
-
- [FlatBuffersTestMethod]
- public void ByteBuffer_GetIntChecksLength()
- {
- var buffer = new byte[2];
- var uut = new ByteBuffer(buffer);
- Assert.Throws<ArgumentOutOfRangeException>(() => uut.GetInt(0));
- }
-#endif
-
- [FlatBuffersTestMethod]
- public void ByteBuffer_GetLongReturnsCorrectData()
- {
- var buffer = new byte[8];
- buffer[0] = 0x0D;
- buffer[1] = 0x0C;
- buffer[2] = 0x0B;
- buffer[3] = 0x0A;
- buffer[4] = 0x04;
- buffer[5] = 0x03;
- buffer[6] = 0x02;
- buffer[7] = 0x01;
- var uut = new ByteBuffer(buffer);
- Assert.AreEqual(0x010203040A0B0C0D, uut.GetLong(0));
- }
-
-#if !BYTEBUFFER_NO_BOUNDS_CHECK
- [FlatBuffersTestMethod]
- public void ByteBuffer_GetLongChecksOffset()
- {
- var buffer = new byte[8];
- var uut = new ByteBuffer(buffer);
- Assert.Throws<ArgumentOutOfRangeException>(() => uut.GetLong(8));
- }
-
- [FlatBuffersTestMethod]
- public void ByteBuffer_GetLongChecksLength()
- {
- var buffer = new byte[7];
- var uut = new ByteBuffer(buffer);
- Assert.Throws<ArgumentOutOfRangeException>(() => uut.GetLong(0));
- }
-#endif
-
- [FlatBuffersTestMethod]
- public void ByteBuffer_ReverseBytesUshort()
- {
- const ushort original = (ushort)0x1234U;
- var reverse = ByteBuffer.ReverseBytes(original);
- Assert.AreEqual(0x3412U, reverse);
-
- var rereverse = ByteBuffer.ReverseBytes(reverse);
- Assert.AreEqual(original, rereverse);
- }
-
- [FlatBuffersTestMethod]
- public void ByteBuffer_ReverseBytesUint()
- {
- const uint original = 0x12345678;
- var reverse = ByteBuffer.ReverseBytes(original);
- Assert.AreEqual(0x78563412U, reverse);
-
- var rereverse = ByteBuffer.ReverseBytes(reverse);
- Assert.AreEqual(original, rereverse);
- }
-
- [FlatBuffersTestMethod]
- public void ByteBuffer_ReverseBytesUlong()
- {
- const ulong original = 0x1234567890ABCDEFUL;
- var reverse = ByteBuffer.ReverseBytes(original);
- Assert.AreEqual(0xEFCDAB9078563412UL, reverse);
-
- var rereverse = ByteBuffer.ReverseBytes(reverse);
- Assert.AreEqual(original, rereverse);
- }
- }
-}
diff --git a/third_party/flatbuffers/tests/FlatBuffers.Test/FlatBufferBuilderTests.cs b/third_party/flatbuffers/tests/FlatBuffers.Test/FlatBufferBuilderTests.cs
deleted file mode 100644
index f02df44..0000000
--- a/third_party/flatbuffers/tests/FlatBuffers.Test/FlatBufferBuilderTests.cs
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * Copyright 2016 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-namespace FlatBuffers.Test
-{
- [FlatBuffersTestClass]
- public class FlatBufferBuilderTests
- {
- private FlatBufferBuilder CreateBuffer(bool forceDefaults = true)
- {
- var fbb = new FlatBufferBuilder(16) {ForceDefaults = forceDefaults};
- fbb.StartObject(1);
- return fbb;
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WithForceDefaults_WhenAddBool_AndDefaultValue_OffsetIncreasesBySize()
- {
- var fbb = CreateBuffer();
- var storedOffset = fbb.Offset;
- fbb.AddBool(0, false, false);
- var endOffset = fbb.Offset;
- Assert.AreEqual(sizeof(bool), endOffset-storedOffset);
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WithForceDefaults_WhenAddSByte_AndDefaultValue_OffsetIncreasesBySize()
- {
- var fbb = CreateBuffer();
- var storedOffset = fbb.Offset;
- fbb.AddSbyte(0, 0, 0);
- var endOffset = fbb.Offset;
- Assert.AreEqual(sizeof(sbyte), endOffset - storedOffset);
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WithForceDefaults_WhenAddByte_AndDefaultValue_OffsetIncreasesBySize()
- {
- var fbb = CreateBuffer();
- var storedOffset = fbb.Offset;
- fbb.AddByte(0, 0, 0);
- var endOffset = fbb.Offset;
- Assert.AreEqual(sizeof(byte), endOffset - storedOffset);
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WithForceDefaults_WhenAddShort_AndDefaultValue_OffsetIncreasesBySize()
- {
- var fbb = CreateBuffer();
- var storedOffset = fbb.Offset;
- fbb.AddShort(0, 0, 0);
- var endOffset = fbb.Offset;
- Assert.AreEqual(sizeof(short), endOffset - storedOffset);
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WithForceDefaults_WhenAddUShort_AndDefaultValue_OffsetIncreasesBySize()
- {
- var fbb = CreateBuffer();
- var storedOffset = fbb.Offset;
- fbb.AddUshort(0, 0, 0);
- var endOffset = fbb.Offset;
- Assert.AreEqual(sizeof(ushort), endOffset - storedOffset);
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WithForceDefaults_WhenAddInt_AndDefaultValue_OffsetIncreasesBySize()
- {
- var fbb = CreateBuffer();
- var storedOffset = fbb.Offset;
- fbb.AddInt(0, 0, 0);
- var endOffset = fbb.Offset;
- Assert.AreEqual(sizeof(int), endOffset - storedOffset);
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WithForceDefaults_WhenAddUInt_AndDefaultValue_OffsetIncreasesBySize()
- {
- var fbb = CreateBuffer();
- var storedOffset = fbb.Offset;
- fbb.AddUint(0, 0, 0);
- var endOffset = fbb.Offset;
- Assert.AreEqual(sizeof(uint), endOffset - storedOffset);
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WithForceDefaults_WhenAddLong_AndDefaultValue_OffsetIncreasesBySize()
- {
- var fbb = CreateBuffer();
- var storedOffset = fbb.Offset;
- fbb.AddLong(0, 0, 0);
- var endOffset = fbb.Offset;
- Assert.AreEqual(sizeof(long), endOffset - storedOffset);
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WithForceDefaults_WhenAddULong_AndDefaultValue_OffsetIncreasesBySize()
- {
- var fbb = CreateBuffer();
- var storedOffset = fbb.Offset;
- fbb.AddUlong(0, 0, 0);
- var endOffset = fbb.Offset;
- Assert.AreEqual(sizeof(ulong), endOffset - storedOffset);
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WithForceDefaults_WhenAddFloat_AndDefaultValue_OffsetIncreasesBySize()
- {
- var fbb = CreateBuffer();
- var storedOffset = fbb.Offset;
- fbb.AddFloat(0, 0, 0);
- var endOffset = fbb.Offset;
- Assert.AreEqual(sizeof(float), endOffset - storedOffset);
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WithForceDefaults_WhenAddDouble_AndDefaultValue_OffsetIncreasesBySize()
- {
- var fbb = CreateBuffer();
- var storedOffset = fbb.Offset;
- fbb.AddDouble(0, 0, 0);
- var endOffset = fbb.Offset;
- Assert.AreEqual(sizeof(double), endOffset - storedOffset);
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WhenAddBool_AndDefaultValue_OffsetIsUnchanged()
- {
- var fbb = CreateBuffer(false);
- var storedOffset = fbb.Offset;
- fbb.AddBool(0, false, false);
- var endOffset = fbb.Offset;
- Assert.AreEqual(endOffset, storedOffset);
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WhenAddSByte_AndDefaultValue_OffsetIsUnchanged()
- {
- var fbb = CreateBuffer(false);
- var storedOffset = fbb.Offset;
- fbb.AddSbyte(0, 0, 0);
- var endOffset = fbb.Offset;
- Assert.AreEqual(endOffset, storedOffset);
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WhenAddByte_AndDefaultValue_OffsetIsUnchanged()
- {
- var fbb = CreateBuffer(false);
- var storedOffset = fbb.Offset;
- fbb.AddByte(0, 0, 0);
- var endOffset = fbb.Offset;
- Assert.AreEqual(endOffset, storedOffset);
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WhenAddShort_AndDefaultValue_OffsetIsUnchanged()
- {
- var fbb = CreateBuffer(false);
- var storedOffset = fbb.Offset;
- fbb.AddShort(0, 0, 0);
- var endOffset = fbb.Offset;
- Assert.AreEqual(endOffset, storedOffset);
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WhenAddUShort_AndDefaultValue_OffsetIsUnchanged()
- {
- var fbb = CreateBuffer(false);
- var storedOffset = fbb.Offset;
- fbb.AddUshort(0, 0, 0);
- var endOffset = fbb.Offset;
- Assert.AreEqual(endOffset, storedOffset);
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WhenAddInt_AndDefaultValue_OffsetIsUnchanged()
- {
- var fbb = CreateBuffer(false);
- var storedOffset = fbb.Offset;
- fbb.AddInt(0, 0, 0);
- var endOffset = fbb.Offset;
- Assert.AreEqual(endOffset, storedOffset);
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WhenAddUInt_AndDefaultValue_OffsetIsUnchanged()
- {
- var fbb = CreateBuffer(false);
- var storedOffset = fbb.Offset;
- fbb.AddUint(0, 0, 0);
- var endOffset = fbb.Offset;
- Assert.AreEqual(endOffset, storedOffset);
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WhenAddLong_AndDefaultValue_OffsetIsUnchanged()
- {
- var fbb = CreateBuffer(false);
- var storedOffset = fbb.Offset;
- fbb.AddLong(0, 0, 0);
- var endOffset = fbb.Offset;
- Assert.AreEqual(endOffset, storedOffset);
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WhenAddULong_AndDefaultValue_OffsetIsUnchanged()
- {
- var fbb = CreateBuffer(false);
- var storedOffset = fbb.Offset;
- fbb.AddUlong(0, 0, 0);
- var endOffset = fbb.Offset;
- Assert.AreEqual(endOffset, storedOffset);
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WhenAddFloat_AndDefaultValue_OffsetIsUnchanged()
- {
- var fbb = CreateBuffer(false);
- var storedOffset = fbb.Offset;
- fbb.AddFloat(0, 0, 0);
- var endOffset = fbb.Offset;
- Assert.AreEqual(endOffset, storedOffset);
- }
-
- [FlatBuffersTestMethod]
- public void FlatBufferBuilder_WhenAddDouble_AndDefaultValue_OffsetIsUnchanged()
- {
- var fbb = CreateBuffer(false);
- var storedOffset = fbb.Offset;
- fbb.AddDouble(0, 0, 0);
- var endOffset = fbb.Offset;
- Assert.AreEqual(endOffset, storedOffset);
- }
- }
-}
diff --git a/third_party/flatbuffers/tests/FlatBuffers.Test/FlatBuffers.Test.csproj b/third_party/flatbuffers/tests/FlatBuffers.Test/FlatBuffers.Test.csproj
deleted file mode 100644
index eda44c7..0000000
--- a/third_party/flatbuffers/tests/FlatBuffers.Test/FlatBuffers.Test.csproj
+++ /dev/null
@@ -1,125 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProjectGuid>{9DB0B5E7-757E-4BD1-A5F6-279390331254}</ProjectGuid>
- <OutputType>Exe</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>FlatBuffers.Test</RootNamespace>
- <AssemblyName>FlatBuffers.Test</AssemblyName>
- <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
- <FileAlignment>512</FileAlignment>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
- <DebugSymbols>true</DebugSymbols>
- <DebugType>full</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>bin\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <DebugType>pdbonly</DebugType>
- <Optimize>true</Optimize>
- <OutputPath>bin\Release\</OutputPath>
- <DefineConstants>TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- </PropertyGroup>
- <PropertyGroup>
- <StartupObject />
- </PropertyGroup>
- <ItemGroup>
- <Reference Include="System" />
- <Reference Include="System.Core">
- <RequiredTargetFramework>3.5</RequiredTargetFramework>
- </Reference>
- </ItemGroup>
- <ItemGroup>
- <Compile Include="..\..\net\FlatBuffers\ByteBuffer.cs">
- <Link>FlatBuffers\ByteBuffer.cs</Link>
- </Compile>
- <Compile Include="..\..\net\FlatBuffers\IFlatbufferObject.cs">
- <Link>FlatBuffers\IFlatbufferObject.cs</Link>
- </Compile>
- <Compile Include="..\..\net\FlatBuffers\Offset.cs">
- <Link>FlatBuffers\Offset.cs</Link>
- </Compile>
- <Compile Include="..\..\net\FlatBuffers\FlatBufferBuilder.cs">
- <Link>FlatBuffers\FlatBufferBuilder.cs</Link>
- </Compile>
- <Compile Include="..\..\net\FlatBuffers\FlatBufferConstants.cs">
- <Link>FlatBuffers\FlatBufferConstants.cs</Link>
- </Compile>
- <Compile Include="..\..\net\FlatBuffers\Struct.cs">
- <Link>FlatBuffers\Struct.cs</Link>
- </Compile>
- <Compile Include="..\..\net\FlatBuffers\Table.cs">
- <Link>FlatBuffers\Table.cs</Link>
- </Compile>
- <Compile Include="..\MyGame\Example\Any.cs">
- <Link>MyGame\Example\Any.cs</Link>
- </Compile>
- <Compile Include="..\MyGame\Example\Color.cs">
- <Link>MyGame\Example\Color.cs</Link>
- </Compile>
- <Compile Include="..\MyGame\Example\Monster.cs">
- <Link>MyGame\Example\Monster.cs</Link>
- </Compile>
- <Compile Include="..\MyGame\Example\Stat.cs">
- <Link>MyGame\Example\Stat.cs</Link>
- </Compile>
- <Compile Include="..\MyGame\Example\Test.cs">
- <Link>MyGame\Example\Test.cs</Link>
- </Compile>
- <Compile Include="..\MyGame\Example\TestSimpleTableWithEnum.cs">
- <Link>MyGame\Example\TestSimpleTableWithEnum.cs</Link>
- </Compile>
- <Compile Include="..\MyGame\Example\Vec3.cs">
- <Link>MyGame\Example\Vec3.cs</Link>
- </Compile>
- <Compile Include="..\MyGame\Example\Ability.cs">
- <Link>MyGame\Example\Ability.cs</Link>
- </Compile>
- <Compile Include="..\namespace_test\NamespaceA\NamespaceB\EnumInNestedNS.cs">
- <Link>NamespaceA\NamespaceB\EnumInNestedNS.cs</Link>
- </Compile>
- <Compile Include="..\namespace_test\NamespaceA\NamespaceB\StructInNestedNS.cs">
- <Link>NamespaceA\NamespaceB\StructInNestedNS.cs</Link>
- </Compile>
- <Compile Include="..\namespace_test\NamespaceA\NamespaceB\TableInNestedNS.cs">
- <Link>NamespaceA\NamespaceB\TableInNestedNS.cs</Link>
- </Compile>
- <Compile Include="..\namespace_test\NamespaceA\TableInFirstNS.cs">
- <Link>NamespaceA\TableInFirstNS.cs</Link>
- </Compile>
- <Compile Include="Assert.cs" />
- <Compile Include="ByteBufferTests.cs" />
- <Compile Include="FlatBufferBuilderTests.cs" />
- <Compile Include="FlatBuffersFuzzTests.cs" />
- <Compile Include="FlatBuffersTestClassAttribute.cs" />
- <Compile Include="FlatBuffersTestMethodAttribute.cs" />
- <Compile Include="FuzzTestData.cs" />
- <Compile Include="Lcg.cs" />
- <Compile Include="Program.cs" />
- <Compile Include="Properties\AssemblyInfo.cs" />
- <Compile Include="FlatBuffersExampleTests.cs" />
- <Compile Include="TestTable.cs" />
- </ItemGroup>
- <ItemGroup>
- <Content Include="..\monsterdata_test.mon">
- <Link>Resources\monsterdata_test.mon</Link>
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- </ItemGroup>
- <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
- <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
- Other similar extension points exist, see Microsoft.Common.targets.
- <Target Name="BeforeBuild">
- </Target>
- <Target Name="AfterBuild">
- </Target>
- -->
-</Project>
diff --git a/third_party/flatbuffers/tests/FlatBuffers.Test/FlatBuffersExampleTests.cs b/third_party/flatbuffers/tests/FlatBuffers.Test/FlatBuffersExampleTests.cs
deleted file mode 100644
index d032d7e..0000000
--- a/third_party/flatbuffers/tests/FlatBuffers.Test/FlatBuffersExampleTests.cs
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-using System.IO;
-using System.Text;
-using MyGame.Example;
-
-namespace FlatBuffers.Test
-{
- [FlatBuffersTestClass]
- public class FlatBuffersExampleTests
- {
- public void RunTests()
- {
- CanCreateNewFlatBufferFromScratch();
- CanReadCppGeneratedWireFile();
- TestEnums();
- }
-
- [FlatBuffersTestMethod]
- public void CanCreateNewFlatBufferFromScratch()
- {
- // Second, let's create a FlatBuffer from scratch in C#, and test it also.
- // We use an initial size of 1 to exercise the reallocation algorithm,
- // normally a size larger than the typical FlatBuffer you generate would be
- // better for performance.
- var fbb = new FlatBufferBuilder(1);
-
- StringOffset[] names = { fbb.CreateString("Frodo"), fbb.CreateString("Barney"), fbb.CreateString("Wilma") };
- Offset<Monster>[] off = new Offset<Monster>[3];
- Monster.StartMonster(fbb);
- Monster.AddName(fbb, names[0]);
- off[0] = Monster.EndMonster(fbb);
- Monster.StartMonster(fbb);
- Monster.AddName(fbb, names[1]);
- off[1] = Monster.EndMonster(fbb);
- Monster.StartMonster(fbb);
- Monster.AddName(fbb, names[2]);
- off[2] = Monster.EndMonster(fbb);
- var sortMons = Monster.CreateMySortedVectorOfTables(fbb, off);
-
- // We set up the same values as monsterdata.json:
-
- var str = fbb.CreateString("MyMonster");
- var test1 = fbb.CreateString("test1");
- var test2 = fbb.CreateString("test2");
-
-
- Monster.StartInventoryVector(fbb, 5);
- for (int i = 4; i >= 0; i--)
- {
- fbb.AddByte((byte)i);
- }
- var inv = fbb.EndVector();
-
- var fred = fbb.CreateString("Fred");
- Monster.StartMonster(fbb);
- Monster.AddName(fbb, fred);
- var mon2 = Monster.EndMonster(fbb);
-
- Monster.StartTest4Vector(fbb, 2);
- MyGame.Example.Test.CreateTest(fbb, (short)10, (sbyte)20);
- MyGame.Example.Test.CreateTest(fbb, (short)30, (sbyte)40);
- var test4 = fbb.EndVector();
-
- Monster.StartTestarrayofstringVector(fbb, 2);
- fbb.AddOffset(test2.Value);
- fbb.AddOffset(test1.Value);
- var testArrayOfString = fbb.EndVector();
-
- Monster.StartMonster(fbb);
- Monster.AddPos(fbb, Vec3.CreateVec3(fbb, 1.0f, 2.0f, 3.0f, 3.0,
- Color.Green, (short)5, (sbyte)6));
- Monster.AddHp(fbb, (short)80);
- Monster.AddName(fbb, str);
- Monster.AddInventory(fbb, inv);
- Monster.AddTestType(fbb, Any.Monster);
- Monster.AddTest(fbb, mon2.Value);
- Monster.AddTest4(fbb, test4);
- Monster.AddTestarrayofstring(fbb, testArrayOfString);
- Monster.AddTestbool(fbb, false);
- Monster.AddTestarrayoftables(fbb, sortMons);
- var mon = Monster.EndMonster(fbb);
-
- Monster.FinishMonsterBuffer(fbb, mon);
-
-
- // Dump to output directory so we can inspect later, if needed
- using (var ms = new MemoryStream(fbb.DataBuffer.Data, fbb.DataBuffer.Position, fbb.Offset))
- {
- var data = ms.ToArray();
- File.WriteAllBytes(@"Resources/monsterdata_cstest.mon",data);
- }
-
- // Now assert the buffer
- TestBuffer(fbb.DataBuffer);
-
- //Attempt to mutate Monster fields and check whether the buffer has been mutated properly
- // revert to original values after testing
- Monster monster = Monster.GetRootAsMonster(fbb.DataBuffer);
-
- // mana is optional and does not exist in the buffer so the mutation should fail
- // the mana field should retain its default value
- Assert.AreEqual(monster.MutateMana((short)10), false);
- Assert.AreEqual(monster.Mana, (short)150);
-
- // Accessing a vector of sorted by the key tables
- Assert.AreEqual(monster.Testarrayoftables(0).Value.Name, "Barney");
- Assert.AreEqual(monster.Testarrayoftables(1).Value.Name, "Frodo");
- Assert.AreEqual(monster.Testarrayoftables(2).Value.Name, "Wilma");
-
- // Example of searching for a table by the key
- Assert.IsTrue(Monster.LookupByKey(sortMons, "Frodo", fbb.DataBuffer) != null);
- Assert.IsTrue(Monster.LookupByKey(sortMons, "Barney", fbb.DataBuffer) != null);
- Assert.IsTrue(Monster.LookupByKey(sortMons, "Wilma", fbb.DataBuffer)!= null);
-
- // testType is an existing field and mutating it should succeed
- Assert.AreEqual(monster.TestType, Any.Monster);
- Assert.AreEqual(monster.MutateTestType(Any.NONE), true);
- Assert.AreEqual(monster.TestType, Any.NONE);
- Assert.AreEqual(monster.MutateTestType(Any.Monster), true);
- Assert.AreEqual(monster.TestType, Any.Monster);
-
- //mutate the inventory vector
- Assert.AreEqual(monster.MutateInventory(0, 1), true);
- Assert.AreEqual(monster.MutateInventory(1, 2), true);
- Assert.AreEqual(monster.MutateInventory(2, 3), true);
- Assert.AreEqual(monster.MutateInventory(3, 4), true);
- Assert.AreEqual(monster.MutateInventory(4, 5), true);
-
- for (int i = 0; i < monster.InventoryLength; i++)
- {
- Assert.AreEqual(monster.Inventory(i), i + 1);
- }
-
- //reverse mutation
- Assert.AreEqual(monster.MutateInventory(0, 0), true);
- Assert.AreEqual(monster.MutateInventory(1, 1), true);
- Assert.AreEqual(monster.MutateInventory(2, 2), true);
- Assert.AreEqual(monster.MutateInventory(3, 3), true);
- Assert.AreEqual(monster.MutateInventory(4, 4), true);
-
- // get a struct field and edit one of its fields
- Vec3 pos = (Vec3)monster.Pos;
- Assert.AreEqual(pos.X, 1.0f);
- pos.MutateX(55.0f);
- Assert.AreEqual(pos.X, 55.0f);
- pos.MutateX(1.0f);
- Assert.AreEqual(pos.X, 1.0f);
-
- TestBuffer(fbb.DataBuffer);
- }
-
- private void TestBuffer(ByteBuffer bb)
- {
- var monster = Monster.GetRootAsMonster(bb);
-
- Assert.AreEqual(80, monster.Hp);
- Assert.AreEqual(150, monster.Mana);
- Assert.AreEqual("MyMonster", monster.Name);
-
- var pos = monster.Pos.Value;
- Assert.AreEqual(1.0f, pos.X);
- Assert.AreEqual(2.0f, pos.Y);
- Assert.AreEqual(3.0f, pos.Z);
-
- Assert.AreEqual(3.0f, pos.Test1);
- Assert.AreEqual(Color.Green, pos.Test2);
- var t = (MyGame.Example.Test)pos.Test3;
- Assert.AreEqual((short)5, t.A);
- Assert.AreEqual((sbyte)6, t.B);
-
- Assert.AreEqual(Any.Monster, monster.TestType);
-
- var monster2 = monster.Test<Monster>().Value;
- Assert.AreEqual("Fred", monster2.Name);
-
-
- Assert.AreEqual(5, monster.InventoryLength);
- var invsum = 0;
- for (var i = 0; i < monster.InventoryLength; i++)
- {
- invsum += monster.Inventory(i);
- }
- Assert.AreEqual(10, invsum);
-
- var test0 = monster.Test4(0).Value;
- var test1 = monster.Test4(1).Value;
- Assert.AreEqual(2, monster.Test4Length);
-
- Assert.AreEqual(100, test0.A + test0.B + test1.A + test1.B);
-
- Assert.AreEqual(2, monster.TestarrayofstringLength);
- Assert.AreEqual("test1", monster.Testarrayofstring(0));
- Assert.AreEqual("test2", monster.Testarrayofstring(1));
-
- Assert.AreEqual(false, monster.Testbool);
-
- var nameBytes = monster.GetNameBytes().Value;
- Assert.AreEqual("MyMonster", Encoding.UTF8.GetString(nameBytes.Array, nameBytes.Offset, nameBytes.Count));
-
- if (0 == monster.TestarrayofboolsLength)
- {
- Assert.IsFalse(monster.GetTestarrayofboolsBytes().HasValue);
- }
- else
- {
- Assert.IsTrue(monster.GetTestarrayofboolsBytes().HasValue);
- }
- }
-
- [FlatBuffersTestMethod]
- public void CanReadCppGeneratedWireFile()
- {
- var data = File.ReadAllBytes(@"Resources/monsterdata_test.mon");
- var bb = new ByteBuffer(data);
- TestBuffer(bb);
- }
-
- [FlatBuffersTestMethod]
- public void TestEnums()
- {
- Assert.AreEqual("Red", Color.Red.ToString());
- Assert.AreEqual("Blue", Color.Blue.ToString());
- Assert.AreEqual("NONE", Any.NONE.ToString());
- Assert.AreEqual("Monster", Any.Monster.ToString());
- }
-
- [FlatBuffersTestMethod]
- public void TestNestedFlatBuffer()
- {
- const string nestedMonsterName = "NestedMonsterName";
- const short nestedMonsterHp = 600;
- const short nestedMonsterMana = 1024;
- // Create nested buffer as a Monster type
- var fbb1 = new FlatBufferBuilder(16);
- var str1 = fbb1.CreateString(nestedMonsterName);
- Monster.StartMonster(fbb1);
- Monster.AddName(fbb1, str1);
- Monster.AddHp(fbb1, nestedMonsterHp);
- Monster.AddMana(fbb1, nestedMonsterMana);
- var monster1 = Monster.EndMonster(fbb1);
- Monster.FinishMonsterBuffer(fbb1, monster1);
- var fbb1Bytes = fbb1.SizedByteArray();
- fbb1 = null;
-
- // Create a Monster which has the first buffer as a nested buffer
- var fbb2 = new FlatBufferBuilder(16);
- var str2 = fbb2.CreateString("My Monster");
- var nestedBuffer = Monster.CreateTestnestedflatbufferVector(fbb2, fbb1Bytes);
- Monster.StartMonster(fbb2);
- Monster.AddName(fbb2, str2);
- Monster.AddHp(fbb2, 50);
- Monster.AddMana(fbb2, 32);
- Monster.AddTestnestedflatbuffer(fbb2, nestedBuffer);
- var monster = Monster.EndMonster(fbb2);
- Monster.FinishMonsterBuffer(fbb2, monster);
-
- // Now test the data extracted from the nested buffer
- var mons = Monster.GetRootAsMonster(fbb2.DataBuffer);
- var nestedMonster = mons.GetTestnestedflatbufferAsMonster().Value;
-
- Assert.AreEqual(nestedMonsterMana, nestedMonster.Mana);
- Assert.AreEqual(nestedMonsterHp, nestedMonster.Hp);
- Assert.AreEqual(nestedMonsterName, nestedMonster.Name);
- }
- }
-}
diff --git a/third_party/flatbuffers/tests/FlatBuffers.Test/FlatBuffersFuzzTests.cs b/third_party/flatbuffers/tests/FlatBuffers.Test/FlatBuffersFuzzTests.cs
deleted file mode 100644
index e8182d7..0000000
--- a/third_party/flatbuffers/tests/FlatBuffers.Test/FlatBuffersFuzzTests.cs
+++ /dev/null
@@ -1,742 +0,0 @@
-/*
- * Copyright 2015 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-using System;
-
-namespace FlatBuffers.Test
-{
- [FlatBuffersTestClass]
- public class FlatBuffersFuzzTests
- {
- private readonly Lcg _lcg = new Lcg();
-
- [FlatBuffersTestMethod]
- public void TestObjects()
- {
- CheckObjects(11, 100);
- }
-
- [FlatBuffersTestMethod]
- public void TestNumbers()
- {
- var builder = new FlatBufferBuilder(1);
- Assert.ArrayEqual(new byte[] { 0 }, builder.DataBuffer.Data);
- builder.AddBool(true);
- Assert.ArrayEqual(new byte[] { 1 }, builder.DataBuffer.Data);
- builder.AddSbyte(-127);
- Assert.ArrayEqual(new byte[] { 129, 1 }, builder.DataBuffer.Data);
- builder.AddByte(255);
- Assert.ArrayEqual(new byte[] { 0, 255, 129, 1 }, builder.DataBuffer.Data); // First pad
- builder.AddShort(-32222);
- Assert.ArrayEqual(new byte[] { 0, 0, 0x22, 0x82, 0, 255, 129, 1 }, builder.DataBuffer.Data); // Second pad
- builder.AddUshort(0xFEEE);
- Assert.ArrayEqual(new byte[] { 0xEE, 0xFE, 0x22, 0x82, 0, 255, 129, 1 }, builder.DataBuffer.Data); // no pad
- builder.AddInt(-53687092);
- Assert.ArrayEqual(new byte[] { 0, 0, 0, 0, 204, 204, 204, 252, 0xEE, 0xFE, 0x22, 0x82, 0, 255, 129, 1 }, builder.DataBuffer.Data); // third pad
- builder.AddUint(0x98765432);
- Assert.ArrayEqual(new byte[] { 0x32, 0x54, 0x76, 0x98, 204, 204, 204, 252, 0xEE, 0xFE, 0x22, 0x82, 0, 255, 129, 1 }, builder.DataBuffer.Data); // no pad
- }
-
- [FlatBuffersTestMethod]
- public void TestNumbers64()
- {
- var builder = new FlatBufferBuilder(1);
- builder.AddUlong(0x1122334455667788);
- Assert.ArrayEqual(new byte[] { 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11 }, builder.DataBuffer.Data);
-
- builder = new FlatBufferBuilder(1);
- builder.AddLong(0x1122334455667788);
- Assert.ArrayEqual(new byte[] { 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11 }, builder.DataBuffer.Data);
- }
-
- [FlatBuffersTestMethod]
- public void TestVector_1xUInt8()
- {
- var builder = new FlatBufferBuilder(1);
- builder.StartVector(sizeof(byte), 1, 1);
- Assert.ArrayEqual(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 }, builder.DataBuffer.Data);
- builder.AddByte(1);
- Assert.ArrayEqual(new byte[] { 0, 0, 0, 0, 1, 0, 0, 0 }, builder.DataBuffer.Data);
- builder.EndVector();
- Assert.ArrayEqual(new byte[] { 1, 0, 0, 0, 1, 0, 0, 0 }, builder.DataBuffer.Data);
- }
-
- [FlatBuffersTestMethod]
- public void TestVector_2xUint8()
- {
- var builder = new FlatBufferBuilder(1);
- builder.StartVector(sizeof(byte), 2, 1);
- Assert.ArrayEqual(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 }, builder.DataBuffer.Data);
- builder.AddByte(1);
- Assert.ArrayEqual(new byte[] { 0, 0, 0, 0, 0, 1, 0, 0 }, builder.DataBuffer.Data);
- builder.AddByte(2);
- Assert.ArrayEqual(new byte[] { 0, 0, 0, 0, 2, 1, 0, 0 }, builder.DataBuffer.Data);
- builder.EndVector();
- Assert.ArrayEqual(new byte[] { 2, 0, 0, 0, 2, 1, 0, 0 }, builder.DataBuffer.Data);
- }
-
- [FlatBuffersTestMethod]
- public void TestVector_1xUInt16()
- {
- var builder = new FlatBufferBuilder(1);
- builder.StartVector(sizeof(ushort), 1, 1);
- Assert.ArrayEqual(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 }, builder.DataBuffer.Data);
- builder.AddUshort(1);
- Assert.ArrayEqual(new byte[] { 0, 0, 0, 0, 1, 0, 0, 0 }, builder.DataBuffer.Data);
- builder.EndVector();
- Assert.ArrayEqual(new byte[] { 1, 0, 0, 0, 1, 0, 0, 0 }, builder.DataBuffer.Data);
- }
-
- [FlatBuffersTestMethod]
- public void TestVector_2xUInt16()
- {
- var builder = new FlatBufferBuilder(1);
- builder.StartVector(sizeof(ushort), 2, 1);
- Assert.ArrayEqual(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 }, builder.DataBuffer.Data);
- builder.AddUshort(0xABCD);
- Assert.ArrayEqual(new byte[] { 0, 0, 0, 0, 0, 0, 0xCD, 0xAB }, builder.DataBuffer.Data);
- builder.AddUshort(0xDCBA);
- Assert.ArrayEqual(new byte[] { 0, 0, 0, 0, 0xBA, 0xDC, 0xCD, 0xAB }, builder.DataBuffer.Data);
- builder.EndVector();
- Assert.ArrayEqual(new byte[] { 2, 0, 0, 0, 0xBA, 0xDC, 0xCD, 0xAB }, builder.DataBuffer.Data);
- }
-
- [FlatBuffersTestMethod]
- public void TestCreateAsciiString()
- {
- var builder = new FlatBufferBuilder(1);
- builder.CreateString("foo");
- Assert.ArrayEqual(new byte[] { 3, 0, 0, 0, (byte)'f', (byte)'o', (byte)'o', 0 }, builder.DataBuffer.Data);
-
- builder.CreateString("moop");
- Assert.ArrayEqual(new byte[]
- {
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0, // Padding to 32 bytes
- 4, 0, 0, 0,
- (byte)'m', (byte)'o', (byte)'o', (byte)'p',
- 0, 0, 0, 0, // zero terminator with 3 byte pad
- 3, 0, 0, 0,
- (byte)'f', (byte)'o', (byte)'o', 0
- }, builder.DataBuffer.Data);
- }
-
- [FlatBuffersTestMethod]
- public void TestCreateArbitarytring()
- {
- var builder = new FlatBufferBuilder(1);
- builder.CreateString("\x01\x02\x03");
- Assert.ArrayEqual(new byte[]
- {
- 3, 0, 0, 0,
- 0x01, 0x02, 0x03, 0
- }, builder.DataBuffer.Data); // No padding
- builder.CreateString("\x04\x05\x06\x07");
- Assert.ArrayEqual(new byte[]
- {
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0, // Padding to 32 bytes
- 4, 0, 0, 0,
- 0x04, 0x05, 0x06, 0x07,
- 0, 0, 0, 0, // zero terminator with 3 byte pad
- 3, 0, 0, 0,
- 0x01, 0x02, 0x03, 0
- }, builder.DataBuffer.Data); // No padding
- }
-
- [FlatBuffersTestMethod]
- public void TestEmptyVTable()
- {
- var builder = new FlatBufferBuilder(1);
- builder.StartObject(0);
- Assert.ArrayEqual(new byte[] { 0 }, builder.DataBuffer.Data);
- builder.EndObject();
- Assert.ArrayEqual(new byte[]
- {
- 4, 0, 4, 0,
- 4, 0, 0, 0
- },
- builder.DataBuffer.Data);
- }
-
- [FlatBuffersTestMethod]
- public void TestVTableWithOneBool()
- {
- var builder = new FlatBufferBuilder(1);
- builder.StartObject(1);
- Assert.ArrayEqual(new byte[] { 0 }, builder.DataBuffer.Data);
- builder.AddBool(0, true, false);
- builder.EndObject();
- Assert.ArrayEqual(new byte[]
- {
- 0, 0, // padding to 16 bytes
- 6, 0, // vtable bytes
- 8, 0, // object length inc vtable offset
- 7, 0, // start of bool value
- 6, 0, 0, 0, // int32 offset for start of vtable
- 0, 0, 0, // padding
- 1, // value 0
- },
- builder.DataBuffer.Data);
- }
-
- [FlatBuffersTestMethod]
- public void TestVTableWithOneBool_DefaultValue()
- {
- var builder = new FlatBufferBuilder(1);
- builder.StartObject(1);
- Assert.ArrayEqual(new byte[] { 0 }, builder.DataBuffer.Data);
- builder.AddBool(0, false, false);
- builder.EndObject();
- Assert.ArrayEqual(new byte[]
- {
- 0, 0, 0, 0, 0, 0, // padding to 16 bytes
- 6, 0, // vtable bytes
- 4, 0, // end of object from here
- 0, 0, // entry 0 is empty (default value)
- 6, 0, 0, 0, // int32 offset for start of vtable
- },
- builder.DataBuffer.Data);
- }
-
- [FlatBuffersTestMethod]
- public void TestVTableWithOneInt16()
- {
- var builder = new FlatBufferBuilder(1);
- builder.StartObject(1);
- Assert.ArrayEqual(new byte[] { 0 }, builder.DataBuffer.Data);
- builder.AddShort(0, 0x789A, 0);
- builder.EndObject();
- Assert.ArrayEqual(new byte[]
- {
- 0, 0, // padding to 16 bytes
- 6, 0, // vtable bytes
- 8, 0, // object length inc vtable offset
- 6, 0, // start of int16 value
- 6, 0, 0, 0, // int32 offset for start of vtable
- 0, 0, // padding
- 0x9A, 0x78, //value 0
- },
- builder.DataBuffer.Data);
- }
-
- [FlatBuffersTestMethod]
- public void TestVTableWithTwoInt16()
- {
- var builder = new FlatBufferBuilder(1);
- builder.StartObject(2);
- Assert.ArrayEqual(new byte[] { 0 }, builder.DataBuffer.Data);
- builder.AddShort(0, 0x3456, 0);
- builder.AddShort(1, 0x789A, 0);
- builder.EndObject();
- Assert.ArrayEqual(new byte[]
- {
- 8, 0, // vtable bytes
- 8, 0, // object length inc vtable offset
- 6, 0, // start of int16 value 0
- 4, 0, // start of int16 value 1
- 8, 0, 0, 0, // int32 offset for start of vtable
- 0x9A, 0x78, // value 1
- 0x56, 0x34, // value 0
- },
- builder.DataBuffer.Data);
- }
-
- [FlatBuffersTestMethod]
- public void TestVTableWithInt16AndBool()
- {
- var builder = new FlatBufferBuilder(1);
- builder.StartObject(2);
- Assert.ArrayEqual(new byte[] { 0 }, builder.DataBuffer.Data);
- builder.AddShort(0, 0x3456, 0);
- builder.AddBool(1, true, false);
- builder.EndObject();
- Assert.ArrayEqual(new byte[]
- {
- 8, 0, // vtable bytes
- 8, 0, // object length inc vtable offset
- 6, 0, // start of int16 value 0
- 5, 0, // start of bool value 1
- 8, 0, 0, 0, // int32 offset for start of vtable
- 0, 1, // padding + value 1
- 0x56, 0x34, // value 0
- },
- builder.DataBuffer.Data);
- }
-
- [FlatBuffersTestMethod]
- public void TestVTableWithEmptyVector()
- {
- var builder = new FlatBufferBuilder(1);
- builder.StartVector(sizeof(byte), 0, 1);
- var vecEnd = builder.EndVector();
-
- builder.StartObject(1);
-
- builder.AddOffset(0, vecEnd.Value, 0);
- builder.EndObject();
- Assert.ArrayEqual(new byte[]
- {
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, // Padding to 32 bytes
- 6, 0, // vtable bytes
- 8, 0, // object length inc vtable offset
- 4, 0, // start of vector offset value 0
- 6, 0, 0, 0, // int32 offset for start of vtable
- 4, 0, 0, 0,
- 0, 0, 0, 0,
- },
- builder.DataBuffer.Data);
- }
-
- [FlatBuffersTestMethod]
- public void TestVTableWithEmptyVectorAndScalars()
- {
- var builder = new FlatBufferBuilder(1);
- builder.StartVector(sizeof(byte), 0, 1);
- var vecEnd = builder.EndVector();
-
- builder.StartObject(2);
- builder.AddShort(0, 55, 0);
- builder.AddOffset(1, vecEnd.Value, 0);
- builder.EndObject();
- Assert.ArrayEqual(new byte[]
- {
- 0, 0, 0, 0,
- 0, 0, 0, 0, // Padding to 32 bytes
- 8, 0, // vtable bytes
- 12, 0, // object length inc vtable offset
- 10, 0, // offset to int16 value 0
- 4, 0, // start of vector offset value 1
- 8, 0, 0, 0, // int32 offset for start of vtable
- 8, 0, 0, 0, // value 1
- 0, 0, 55, 0, // value 0
- 0, 0, 0, 0, // length of vector (not in sctruc)
- },
- builder.DataBuffer.Data);
- }
-
-
- [FlatBuffersTestMethod]
- public void TestVTableWith_1xInt16_and_Vector_or_2xInt16()
- {
- var builder = new FlatBufferBuilder(1);
- builder.StartVector(sizeof(short), 2, 1);
- builder.AddShort(0x1234);
- builder.AddShort(0x5678);
- var vecEnd = builder.EndVector();
-
- builder.StartObject(2);
- builder.AddOffset(1, vecEnd.Value, 0);
- builder.AddShort(0, 55, 0);
- builder.EndObject();
- Assert.ArrayEqual(new byte[]
- {
- 0, 0, 0, 0, // Padding to 32 bytes
- 8, 0, // vtable bytes
- 12, 0, // object length
- 6, 0, // start of value 0 from end of vtable
- 8, 0, // start of value 1 from end of buffer
- 8, 0, 0, 0, // int32 offset for start of vtable
- 0, 0, 55, 0, // padding + value 0
- 4, 0, 0, 0, // position of vector from here
- 2, 0, 0, 0, // length of vector
- 0x78, 0x56, // vector value 0
- 0x34, 0x12, // vector value 1
- },
- builder.DataBuffer.Data);
- }
-
- [FlatBuffersTestMethod]
- public void TestVTableWithAStruct_of_int8_int16_int32()
- {
- var builder = new FlatBufferBuilder(1);
- builder.StartObject(1);
- builder.Prep(4+4+4, 0);
- builder.AddSbyte(55);
- builder.Pad(3);
- builder.AddShort(0x1234);
- builder.Pad(2);
- builder.AddInt(0x12345678);
- var structStart = builder.Offset;
- builder.AddStruct(0, structStart, 0);
- builder.EndObject();
- Assert.ArrayEqual(new byte[]
- {
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, // Padding to 32 bytes
- 6, 0, // vtable bytes
- 16, 0, // object length
- 4, 0, // start of struct from here
- 6, 0, 0, 0, // int32 offset for start of vtable
- 0x78, 0x56, 0x34, 0x12, // struct value 2
- 0x00, 0x00, 0x34, 0x12, // struct value 1
- 0x00, 0x00, 0x00, 55, // struct value 0
- },
- builder.DataBuffer.Data);
- }
-
- [FlatBuffersTestMethod]
- public void TestVTableWithAVectorOf_2xStructOf_2xInt8()
- {
- var builder = new FlatBufferBuilder(1);
- builder.StartVector(sizeof(byte)*2, 2, 1);
- builder.AddByte(33);
- builder.AddByte(44);
- builder.AddByte(55);
- builder.AddByte(66);
- var vecEnd = builder.EndVector();
-
- builder.StartObject(1);
- builder.AddOffset(0, vecEnd.Value, 0);
- builder.EndObject();
-
- Assert.ArrayEqual(new byte[]
- {
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, // Padding to 32 bytes
- 6, 0, // vtable bytes
- 8, 0, // object length
- 4, 0, // offset of vector offset
- 6, 0, 0, 0, // int32 offset for start of vtable
- 4, 0, 0, 0, // Vector start offset
- 2, 0, 0, 0, // Vector len
- 66, // vector 1, 1
- 55, // vector 1, 0
- 44, // vector 0, 1
- 33, // vector 0, 0
- },
- builder.DataBuffer.Data);
- }
-
- [FlatBuffersTestMethod]
- public void TestVTableWithSomeElements()
- {
- var builder = new FlatBufferBuilder(1);
- builder.StartObject(2);
- builder.AddByte(0, 33, 0);
- builder.AddShort(1, 66, 0);
- var off = builder.EndObject();
- builder.Finish(off);
-
- Assert.ArrayEqual(new byte[]
- {
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0, //Padding to 32 bytes
- 12, 0, 0, 0, // root of table, pointing to vtable offset
- 8, 0, // vtable bytes
- 8, 0, // object length
- 7, 0, // start of value 0
- 4, 0, // start of value 1
- 8, 0, 0, 0, // int32 offset for start of vtable
- 66, 0, // value 1
- 0, 33, // value 0
-
- },
- builder.DataBuffer.Data);
- }
-
- [FlatBuffersTestMethod]
- public void TestTwoFinishTable()
- {
- var builder = new FlatBufferBuilder(1);
- builder.StartObject(2);
- builder.AddByte(0, 33, 0);
- builder.AddByte(1, 44, 0);
- var off0 = builder.EndObject();
- builder.Finish(off0);
-
- builder.StartObject(3);
- builder.AddByte(0, 55, 0);
- builder.AddByte(1, 66, 0);
- builder.AddByte(2, 77, 0);
- var off1 = builder.EndObject();
- builder.Finish(off1);
-
- Assert.ArrayEqual(new byte[]
- {
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0, // padding to 64 bytes
- 16, 0, 0, 0, // root of table, pointing to vtable offset (obj1)
- 0, 0, // padding
-
- 10, 0, // vtable bytes
- 8, 0, // object length
- 7, 0, // start of value 0
- 6, 0, // start of value 1
- 5, 0, // start of value 2
- 10, 0, 0, 0, // int32 offset for start of vtable
- 0, // pad
- 77, // values 2, 1, 0
- 66,
- 55,
-
- 12, 0, 0, 0, // root of table, pointing to vtable offset (obj0)
- 8, 0, // vtable bytes
- 8, 0, // object length
- 7, 0, // start of value 0
- 6, 0, // start of value 1
- 8, 0, 0, 0, // int32 offset for start of vtable
- 0, 0, // pad
- 44, // value 1, 0
- 33,
- },
- builder.DataBuffer.Data);
- }
-
- [FlatBuffersTestMethod]
- public void TestBunchOfBools()
- {
- var builder = new FlatBufferBuilder(1);
- builder.StartObject(8);
- for (var i = 0; i < 8; i++)
- {
- builder.AddBool(i, true, false);
- }
- var off = builder.EndObject();
- builder.Finish(off);
-
- Assert.ArrayEqual(new byte[]
- {
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0, // padding to 64 bytes
-
- 24, 0, 0, 0, // root of table, pointing to vtable offset (obj0)
- 20, 0, // vtable bytes
- 12, 0, // object length
- 11, 0, // start of value 0
- 10, 0, // start of value 1
- 9, 0, // start of value 2
- 8, 0, // start of value 3
- 7, 0, // start of value 4
- 6, 0, // start of value 5
- 5, 0, // start of value 6
- 4, 0, // start of value 7
-
- 20, 0, 0, 0, // int32 offset for start of vtable
-
- 1, 1, 1, 1, // values
- 1, 1, 1, 1,
-
- },
- builder.DataBuffer.Data);
- }
-
- [FlatBuffersTestMethod]
- public void TestWithFloat()
- {
- var builder = new FlatBufferBuilder(1);
- builder.StartObject(1);
- builder.AddFloat(0, 1, 0);
- builder.EndObject();
-
-
- Assert.ArrayEqual(new byte[]
- {
- 0, 0,
- 6, 0, // vtable bytes
- 8, 0, // object length
- 4, 0, // start of value 0
- 6, 0, 0, 0, // int32 offset for start of vtable
- 0, 0, 128, 63, // value
-
- },
- builder.DataBuffer.Data);
- }
-
- private void CheckObjects(int fieldCount, int objectCount)
- {
- _lcg.Reset();
-
- const int testValuesMax = 11;
-
- var builder = new FlatBufferBuilder(1);
-
- var objects = new int[objectCount];
-
- for (var i = 0; i < objectCount; ++i)
- {
- builder.StartObject(fieldCount);
-
- for (var j = 0; j < fieldCount; ++j)
- {
- var fieldType = _lcg.Next()%testValuesMax;
-
- switch (fieldType)
- {
- case 0:
- {
- builder.AddBool(j, FuzzTestData.BoolValue, false);
- break;
- }
- case 1:
- {
- builder.AddSbyte(j, FuzzTestData.Int8Value, 0);
- break;
- }
- case 2:
- {
- builder.AddByte(j, FuzzTestData.UInt8Value, 0);
- break;
- }
- case 3:
- {
- builder.AddShort(j, FuzzTestData.Int16Value, 0);
- break;
- }
- case 4:
- {
- builder.AddUshort(j, FuzzTestData.UInt16Value, 0);
- break;
- }
- case 5:
- {
- builder.AddInt(j, FuzzTestData.Int32Value, 0);
- break;
- }
- case 6:
- {
- builder.AddUint(j, FuzzTestData.UInt32Value, 0);
- break;
- }
- case 7:
- {
- builder.AddLong(j, FuzzTestData.Int64Value, 0);
- break;
- }
- case 8:
- {
- builder.AddUlong(j, FuzzTestData.UInt64Value, 0);
- break;
- }
- case 9:
- {
- builder.AddFloat(j, FuzzTestData.Float32Value, 0);
- break;
- }
- case 10:
- {
- builder.AddDouble(j, FuzzTestData.Float64Value, 0);
- break;
- }
- default:
- throw new Exception("Unreachable");
- }
-
- }
-
- var offset = builder.EndObject();
-
- // Store the object offset
- objects[i] = offset;
- }
-
- _lcg.Reset();
-
- // Test all objects are readable and return expected values...
- for (var i = 0; i < objectCount; ++i)
- {
- var table = new TestTable(builder.DataBuffer, builder.DataBuffer.Length - objects[i]);
-
- for (var j = 0; j < fieldCount; ++j)
- {
- var fieldType = _lcg.Next() % testValuesMax;
- var fc = 2 + j; // 2 == VtableMetadataFields
- var f = fc * 2;
-
- switch (fieldType)
- {
- case 0:
- {
- Assert.AreEqual(FuzzTestData.BoolValue, table.GetSlot(f, false));
- break;
- }
- case 1:
- {
- Assert.AreEqual(FuzzTestData.Int8Value, table.GetSlot(f, (sbyte)0));
- break;
- }
- case 2:
- {
- Assert.AreEqual(FuzzTestData.UInt8Value, table.GetSlot(f, (byte)0));
- break;
- }
- case 3:
- {
- Assert.AreEqual(FuzzTestData.Int16Value, table.GetSlot(f, (short)0));
- break;
- }
- case 4:
- {
- Assert.AreEqual(FuzzTestData.UInt16Value, table.GetSlot(f, (ushort)0));
- break;
- }
- case 5:
- {
- Assert.AreEqual(FuzzTestData.Int32Value, table.GetSlot(f, (int)0));
- break;
- }
- case 6:
- {
- Assert.AreEqual(FuzzTestData.UInt32Value, table.GetSlot(f, (uint)0));
- break;
- }
- case 7:
- {
- Assert.AreEqual(FuzzTestData.Int64Value, table.GetSlot(f, (long)0));
- break;
- }
- case 8:
- {
- Assert.AreEqual(FuzzTestData.UInt64Value, table.GetSlot(f, (ulong)0));
- break;
- }
- case 9:
- {
- Assert.AreEqual(FuzzTestData.Float32Value, table.GetSlot(f, (float)0));
- break;
- }
- case 10:
- {
- Assert.AreEqual(FuzzTestData.Float64Value, table.GetSlot(f, (double)0));
- break;
- }
- default:
- throw new Exception("Unreachable");
- }
-
- }
-
- }
-
- }
- }
-}
diff --git a/third_party/flatbuffers/tests/FlatBuffers.Test/FlatBuffersTestClassAttribute.cs b/third_party/flatbuffers/tests/FlatBuffers.Test/FlatBuffersTestClassAttribute.cs
deleted file mode 100644
index f31e38b..0000000
--- a/third_party/flatbuffers/tests/FlatBuffers.Test/FlatBuffersTestClassAttribute.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2016 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace FlatBuffers.Test
-{
- [AttributeUsage(AttributeTargets.Class)]
- public class FlatBuffersTestClassAttribute : Attribute
- {
- }
-}
diff --git a/third_party/flatbuffers/tests/FlatBuffers.Test/FlatBuffersTestMethodAttribute.cs b/third_party/flatbuffers/tests/FlatBuffers.Test/FlatBuffersTestMethodAttribute.cs
deleted file mode 100644
index 989dae5..0000000
--- a/third_party/flatbuffers/tests/FlatBuffers.Test/FlatBuffersTestMethodAttribute.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2016 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- using System;
-
-namespace FlatBuffers.Test
-{
- [AttributeUsage(AttributeTargets.Method)]
- public class FlatBuffersTestMethodAttribute : Attribute
- {
- }
-}
\ No newline at end of file
diff --git a/third_party/flatbuffers/tests/FlatBuffers.Test/FuzzTestData.cs b/third_party/flatbuffers/tests/FlatBuffers.Test/FuzzTestData.cs
deleted file mode 100644
index 119e44e..0000000
--- a/third_party/flatbuffers/tests/FlatBuffers.Test/FuzzTestData.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2016 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-using System;
-
-namespace FlatBuffers.Test
-{
- internal static class FuzzTestData
- {
- private static readonly byte[] _overflowInt32 = new byte[] {0x83, 0x33, 0x33, 0x33};
- private static readonly byte[] _overflowInt64 = new byte[] { 0x84, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 };
-
- public static readonly bool BoolValue = true;
- public static readonly sbyte Int8Value = -127; // 0x81
- public static readonly byte UInt8Value = 255; // 0xFF
- public static readonly short Int16Value = -32222; // 0x8222;
- public static readonly ushort UInt16Value = 65262; // 0xFEEE
- public static readonly int Int32Value = BitConverter.ToInt32(_overflowInt32, 0);
- public static readonly uint UInt32Value = 0xFDDDDDDD;
- public static readonly long Int64Value = BitConverter.ToInt64(_overflowInt64, 0);
- public static readonly ulong UInt64Value = 0xFCCCCCCCCCCCCCCC;
- public static readonly float Float32Value = 3.14159f;
- public static readonly double Float64Value = 3.14159265359;
- }
-}
\ No newline at end of file
diff --git a/third_party/flatbuffers/tests/FlatBuffers.Test/Lcg.cs b/third_party/flatbuffers/tests/FlatBuffers.Test/Lcg.cs
deleted file mode 100644
index c329ed8..0000000
--- a/third_party/flatbuffers/tests/FlatBuffers.Test/Lcg.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2016 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-namespace FlatBuffers.Test
-{
- /// <summary>
- /// Lcg Pseudo RNG
- /// </summary>
- internal sealed class Lcg
- {
- private const uint InitialValue = 10000;
- private uint _state;
-
- public Lcg()
- {
- _state = InitialValue;
- }
-
- public uint Next()
- {
- return (_state = 69069 * _state + 362437);
- }
-
- public void Reset()
- {
- _state = InitialValue;
- }
- }
-}
\ No newline at end of file
diff --git a/third_party/flatbuffers/tests/FlatBuffers.Test/Program.cs b/third_party/flatbuffers/tests/FlatBuffers.Test/Program.cs
deleted file mode 100644
index f8cec4e..0000000
--- a/third_party/flatbuffers/tests/FlatBuffers.Test/Program.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-
-namespace FlatBuffers.Test
-{
- static class Program
- {
- public static int Main(string[] args)
- {
- var testResults = new List<bool>();
-
- var testClasses = Assembly.GetExecutingAssembly().GetExportedTypes()
- .Where(t => t.IsClass && t.GetCustomAttributes(typeof (FlatBuffersTestClassAttribute), false).Length > 0);
-
- foreach (var testClass in testClasses)
- {
- var methods = testClass.GetMethods(BindingFlags.Public |
- BindingFlags.Instance)
- .Where(m => m.GetCustomAttributes(typeof(FlatBuffersTestMethodAttribute), false).Length > 0);
-
- var inst = Activator.CreateInstance(testClass);
-
- foreach (var method in methods)
- {
- try
- {
- method.Invoke(inst, new object[] { });
- testResults.Add(true);
- }
- catch (Exception ex)
- {
- Console.WriteLine("{0}: FAILED when invoking {1} with error {2}",
- testClass.Name ,method.Name, ex.GetBaseException());
- testResults.Add(false);
- }
- }
- }
-
- var failedCount = testResults.Count(i => i == false);
-
- Console.WriteLine("{0} tests run, {1} failed", testResults.Count, failedCount);
-
- if (failedCount > 0)
- {
- return -1;
- }
- return 0;
- }
- }
-}
diff --git a/third_party/flatbuffers/tests/FlatBuffers.Test/Properties/AssemblyInfo.cs b/third_party/flatbuffers/tests/FlatBuffers.Test/Properties/AssemblyInfo.cs
deleted file mode 100644
index 2e33f08..0000000
--- a/third_party/flatbuffers/tests/FlatBuffers.Test/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("FlatBuffers.Test")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("FlatBuffers.Test")]
-[assembly: AssemblyCopyright("Copyright (c) 2014 Google Inc")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("a1d58a51-3e74-4ae9-aac7-5a399c9eed1a")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/third_party/flatbuffers/tests/FlatBuffers.Test/Resources/monsterdata_test.mon b/third_party/flatbuffers/tests/FlatBuffers.Test/Resources/monsterdata_test.mon
deleted file mode 100644
index 2bf6d15..0000000
--- a/third_party/flatbuffers/tests/FlatBuffers.Test/Resources/monsterdata_test.mon
+++ /dev/null
Binary files differ
diff --git a/third_party/flatbuffers/tests/FlatBuffers.Test/TestTable.cs b/third_party/flatbuffers/tests/FlatBuffers.Test/TestTable.cs
deleted file mode 100644
index 2b506b6..0000000
--- a/third_party/flatbuffers/tests/FlatBuffers.Test/TestTable.cs
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright 2016 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-namespace FlatBuffers.Test
-{
- /// <summary>
- /// A test Table object that gives easy access to the slot data
- /// </summary>
- internal struct TestTable
- {
- Table t;
-
- public TestTable(ByteBuffer bb, int pos)
- {
- t.bb = bb;
- t.bb_pos = pos;
- }
-
- public bool GetSlot(int slot, bool def)
- {
- var off = t.__offset(slot);
-
- if (off == 0)
- {
- return def;
- }
- return t.bb.GetSbyte(t.bb_pos + off) != 0;
- }
-
- public sbyte GetSlot(int slot, sbyte def)
- {
- var off = t.__offset(slot);
-
- if (off == 0)
- {
- return def;
- }
- return t.bb.GetSbyte(t.bb_pos + off);
- }
-
- public byte GetSlot(int slot, byte def)
- {
- var off = t.__offset(slot);
-
- if (off == 0)
- {
- return def;
- }
- return t.bb.Get(t.bb_pos + off);
- }
-
- public short GetSlot(int slot, short def)
- {
- var off = t.__offset(slot);
-
- if (off == 0)
- {
- return def;
- }
- return t.bb.GetShort(t.bb_pos + off);
- }
-
- public ushort GetSlot(int slot, ushort def)
- {
- var off = t.__offset(slot);
-
- if (off == 0)
- {
- return def;
- }
- return t.bb.GetUshort(t.bb_pos + off);
- }
-
- public int GetSlot(int slot, int def)
- {
- var off = t.__offset(slot);
-
- if (off == 0)
- {
- return def;
- }
- return t.bb.GetInt(t.bb_pos + off);
- }
-
- public uint GetSlot(int slot, uint def)
- {
- var off = t.__offset(slot);
-
- if (off == 0)
- {
- return def;
- }
- return t.bb.GetUint(t.bb_pos + off);
- }
-
- public long GetSlot(int slot, long def)
- {
- var off = t.__offset(slot);
-
- if (off == 0)
- {
- return def;
- }
- return t.bb.GetLong(t.bb_pos + off);
- }
-
- public ulong GetSlot(int slot, ulong def)
- {
- var off = t.__offset(slot);
-
- if (off == 0)
- {
- return def;
- }
- return t.bb.GetUlong(t.bb_pos + off);
- }
-
- public float GetSlot(int slot, float def)
- {
- var off = t.__offset(slot);
-
- if (off == 0)
- {
- return def;
- }
- return t.bb.GetFloat(t.bb_pos + off);
- }
-
- public double GetSlot(int slot, double def)
- {
- var off = t.__offset(slot);
-
- if (off == 0)
- {
- return def;
- }
- return t.bb.GetDouble(t.bb_pos + off);
- }
- }
-}
diff --git a/third_party/flatbuffers/tests/GoTest.sh b/third_party/flatbuffers/tests/GoTest.sh
deleted file mode 100755
index 7be4aff..0000000
--- a/third_party/flatbuffers/tests/GoTest.sh
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/bin/bash -eu
-#
-# Copyright 2014 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-pushd "$(dirname $0)" >/dev/null
-test_dir="$(pwd)"
-go_path=${test_dir}/go_gen
-go_src=${go_path}/src
-
-# Emit Go code for the example schema in the test dir:
-../flatc -g monster_test.fbs
-
-# Go requires a particular layout of files in order to link multiple packages.
-# Copy flatbuffer Go files to their own package directories to compile the
-# test binary:
-mkdir -p ${go_src}/MyGame/Example
-mkdir -p ${go_src}/github.com/google/flatbuffers/go
-mkdir -p ${go_src}/flatbuffers_test
-
-cp -a MyGame/Example/*.go ./go_gen/src/MyGame/Example/
-cp -a ../go/* ./go_gen/src/github.com/google/flatbuffers/go
-cp -a ./go_test.go ./go_gen/src/flatbuffers_test/
-
-# Run tests with necessary flags.
-# Developers may wish to see more detail by appending the verbosity flag
-# -test.v to arguments for this command, as in:
-# go -test -test.v ...
-# Developers may also wish to run benchmarks, which may be achieved with the
-# flag -test.bench and the wildcard regexp ".":
-# go -test -test.bench=. ...
-GOPATH=${go_path} go test flatbuffers_test \
- --test.coverpkg=github.com/google/flatbuffers/go \
- --cpp_data=${test_dir}/monsterdata_test.mon \
- --out_data=${test_dir}/monsterdata_go_wire.mon \
- --test.bench=. \
- --test.benchtime=3s \
- --fuzz=true \
- --fuzz_fields=4 \
- --fuzz_objects=10000
-
-GO_TEST_RESULT=$?
-rm -rf ${go_path}/{pkg,src}
-if [[ $GO_TEST_RESULT == 0 ]]; then
- echo "OK: Go tests passed."
-else
- echo "KO: Go tests failed."
- exit 1
-fi
-
-NOT_FMT_FILES=$(gofmt -l MyGame)
-if [[ ${NOT_FMT_FILES} != "" ]]; then
- echo "These files are not well gofmt'ed:\n\n${NOT_FMT_FILES}"
- # enable this when enums are properly formated
- # exit 1
-fi
diff --git a/third_party/flatbuffers/tests/JavaScriptTest.js b/third_party/flatbuffers/tests/JavaScriptTest.js
deleted file mode 100644
index 7ed313a..0000000
--- a/third_party/flatbuffers/tests/JavaScriptTest.js
+++ /dev/null
@@ -1,350 +0,0 @@
-// Run this using JavaScriptTest.sh
-var assert = require('assert');
-var fs = require('fs');
-
-var flatbuffers = require('../js/flatbuffers').flatbuffers;
-var MyGame = require(process.argv[2]).MyGame;
-
-function main() {
-
- // First, let's test reading a FlatBuffer generated by C++ code:
- // This file was generated from monsterdata_test.json
- var data = new Uint8Array(fs.readFileSync('monsterdata_test.mon'));
-
- // Now test it:
-
- var bb = new flatbuffers.ByteBuffer(data);
- testBuffer(bb);
-
- // Second, let's create a FlatBuffer from scratch in JavaScript, and test it also.
- // We use an initial size of 1 to exercise the reallocation algorithm,
- // normally a size larger than the typical FlatBuffer you generate would be
- // better for performance.
- var fbb = new flatbuffers.Builder(1);
-
- // We set up the same values as monsterdata.json:
-
- var str = fbb.createString('MyMonster');
-
- var inv = MyGame.Example.Monster.createInventoryVector(fbb, [0, 1, 2, 3, 4]);
-
- var fred = fbb.createString('Fred');
- MyGame.Example.Monster.startMonster(fbb);
- MyGame.Example.Monster.addName(fbb, fred);
- var mon2 = MyGame.Example.Monster.endMonster(fbb);
-
- MyGame.Example.Monster.startTest4Vector(fbb, 2);
- MyGame.Example.Test.createTest(fbb, 10, 20);
- MyGame.Example.Test.createTest(fbb, 30, 40);
- var test4 = fbb.endVector();
-
- var testArrayOfString = MyGame.Example.Monster.createTestarrayofstringVector(fbb, [
- fbb.createString('test1'),
- fbb.createString('test2')
- ]);
-
- MyGame.Example.Monster.startMonster(fbb);
- MyGame.Example.Monster.addPos(fbb, MyGame.Example.Vec3.createVec3(fbb, 1, 2, 3, 3, MyGame.Example.Color.Green, 5, 6));
- MyGame.Example.Monster.addHp(fbb, 80);
- MyGame.Example.Monster.addName(fbb, str);
- MyGame.Example.Monster.addInventory(fbb, inv);
- MyGame.Example.Monster.addTestType(fbb, MyGame.Example.Any.Monster);
- MyGame.Example.Monster.addTest(fbb, mon2);
- MyGame.Example.Monster.addTest4(fbb, test4);
- MyGame.Example.Monster.addTestarrayofstring(fbb, testArrayOfString);
- MyGame.Example.Monster.addTestbool(fbb, false);
- var mon = MyGame.Example.Monster.endMonster(fbb);
-
- MyGame.Example.Monster.finishMonsterBuffer(fbb, mon);
-
- // Write the result to a file for debugging purposes:
- // Note that the binaries are not necessarily identical, since the JSON
- // parser may serialize in a slightly different order than the above
- // JavaScript code. They are functionally equivalent though.
-
- fs.writeFileSync('monsterdata_javascript_wire.mon', new Buffer(fbb.asUint8Array()));
-
- // Tests mutation first. This will verify that we did not trample any other
- // part of the byte buffer.
- testMutation(fbb.dataBuffer());
-
- testBuffer(fbb.dataBuffer());
-
- test64bit();
- testUnicode();
- fuzzTest1();
-
- console.log('FlatBuffers test: completed successfully');
-}
-
-function testMutation(bb) {
- var monster = MyGame.Example.Monster.getRootAsMonster(bb);
-
- monster.mutate_hp(120);
- assert.strictEqual(monster.hp(), 120);
-
- monster.mutate_hp(80);
- assert.strictEqual(monster.hp(), 80);
-
- var manaRes = monster.mutate_mana(10);
- assert.strictEqual(manaRes, false); // Field was NOT present, because default value.
-
- // TODO: There is not the availability to mutate structs or vectors.
-}
-
-function testBuffer(bb) {
- assert.ok(MyGame.Example.Monster.bufferHasIdentifier(bb));
-
- var monster = MyGame.Example.Monster.getRootAsMonster(bb);
-
- assert.strictEqual(monster.hp(), 80);
- assert.strictEqual(monster.mana(), 150); // default
-
- assert.strictEqual(monster.name(), 'MyMonster');
-
- var pos = monster.pos();
- assert.strictEqual(pos.x(), 1);
- assert.strictEqual(pos.y(), 2);
- assert.strictEqual(pos.z(), 3);
- assert.strictEqual(pos.test1(), 3);
- assert.strictEqual(pos.test2(), MyGame.Example.Color.Green);
- var t = pos.test3();
- assert.strictEqual(t.a(), 5);
- assert.strictEqual(t.b(), 6);
-
- assert.strictEqual(monster.testType(), MyGame.Example.Any.Monster);
- var monster2 = new MyGame.Example.Monster();
- assert.strictEqual(monster.test(monster2) != null, true);
- assert.strictEqual(monster2.name(), 'Fred');
-
- assert.strictEqual(monster.inventoryLength(), 5);
- var invsum = 0;
- for (var i = 0; i < monster.inventoryLength(); i++) {
- invsum += monster.inventory(i);
- }
- assert.strictEqual(invsum, 10);
-
- var invsum2 = 0;
- var invArr = monster.inventoryArray();
- for (var i = 0; i < invArr.length; i++) {
- invsum2 += invArr[i];
- }
- assert.strictEqual(invsum2, 10);
-
- var test_0 = monster.test4(0);
- var test_1 = monster.test4(1);
- assert.strictEqual(monster.test4Length(), 2);
- assert.strictEqual(test_0.a() + test_0.b() + test_1.a() + test_1.b(), 100);
-
- assert.strictEqual(monster.testarrayofstringLength(), 2);
- assert.strictEqual(monster.testarrayofstring(0), 'test1');
- assert.strictEqual(monster.testarrayofstring(1), 'test2');
-
- assert.strictEqual(monster.testbool(), false);
-}
-
-function test64bit() {
- var fbb = new flatbuffers.Builder();
- var required = fbb.createString('required');
-
- MyGame.Example.Stat.startStat(fbb);
- var stat2 = MyGame.Example.Stat.endStat(fbb);
-
- MyGame.Example.Monster.startMonster(fbb);
- MyGame.Example.Monster.addName(fbb, required);
- MyGame.Example.Monster.addTestempty(fbb, stat2);
- var mon2 = MyGame.Example.Monster.endMonster(fbb);
-
- MyGame.Example.Stat.startStat(fbb);
- // 2541551405100253985 = 0x87654321(low part) + 0x23456789 * 0x100000000(high part);
- MyGame.Example.Stat.addVal(fbb, new flatbuffers.Long(0x87654321, 0x23456789)); // the low part is Uint32
- var stat = MyGame.Example.Stat.endStat(fbb);
-
- MyGame.Example.Monster.startMonster(fbb);
- MyGame.Example.Monster.addName(fbb, required);
- MyGame.Example.Monster.addEnemy(fbb, mon2);
- MyGame.Example.Monster.addTestempty(fbb, stat);
- var mon = MyGame.Example.Monster.endMonster(fbb);
-
- MyGame.Example.Monster.finishMonsterBuffer(fbb, mon);
- var bytes = fbb.asUint8Array();
-
- ////////////////////////////////////////////////////////////////
-
- var bb = new flatbuffers.ByteBuffer(bytes);
- assert.ok(MyGame.Example.Monster.bufferHasIdentifier(bb));
- var mon = MyGame.Example.Monster.getRootAsMonster(bb);
-
- var stat = mon.testempty();
- assert.strictEqual(stat != null, true);
- assert.strictEqual(stat.val() != null, true);
- assert.strictEqual(stat.val().toFloat64(), 2541551405100253985);
-
- var mon2 = mon.enemy();
- assert.strictEqual(mon2 != null, true);
- stat = mon2.testempty();
- assert.strictEqual(stat != null, true);
- assert.strictEqual(stat.val() != null, true);
- assert.strictEqual(stat.val().low, 0); // default value
- assert.strictEqual(stat.val().high, 0);
-}
-
-function testUnicode() {
- var correct = fs.readFileSync('unicode_test.mon');
- var json = JSON.parse(fs.readFileSync('unicode_test.json', 'utf8'));
-
- // Test reading
- function testReadingUnicode(bb) {
- var monster = MyGame.Example.Monster.getRootAsMonster(bb);
- assert.strictEqual(monster.name(), json.name);
- assert.deepEqual(new Buffer(monster.name(flatbuffers.Encoding.UTF8_BYTES)), new Buffer(json.name));
- assert.strictEqual(monster.testarrayoftablesLength(), json.testarrayoftables.length);
- json.testarrayoftables.forEach(function(table, i) {
- var value = monster.testarrayoftables(i);
- assert.strictEqual(value.name(), table.name);
- assert.deepEqual(new Buffer(value.name(flatbuffers.Encoding.UTF8_BYTES)), new Buffer(table.name));
- });
- assert.strictEqual(monster.testarrayofstringLength(), json.testarrayofstring.length);
- json.testarrayofstring.forEach(function(string, i) {
- assert.strictEqual(monster.testarrayofstring(i), string);
- assert.deepEqual(new Buffer(monster.testarrayofstring(i, flatbuffers.Encoding.UTF8_BYTES)), new Buffer(string));
- });
- }
- testReadingUnicode(new flatbuffers.ByteBuffer(new Uint8Array(correct)));
-
- // Test writing
- var fbb = new flatbuffers.Builder();
- var name = fbb.createString(json.name);
- var testarrayoftablesOffsets = json.testarrayoftables.map(function(table) {
- var name = fbb.createString(new Uint8Array(new Buffer(table.name)));
- MyGame.Example.Monster.startMonster(fbb);
- MyGame.Example.Monster.addName(fbb, name);
- return MyGame.Example.Monster.endMonster(fbb);
- });
- var testarrayoftablesOffset = MyGame.Example.Monster.createTestarrayoftablesVector(fbb,
- testarrayoftablesOffsets);
- var testarrayofstringOffset = MyGame.Example.Monster.createTestarrayofstringVector(fbb,
- json.testarrayofstring.map(function(string) { return fbb.createString(string); }));
- MyGame.Example.Monster.startMonster(fbb);
- MyGame.Example.Monster.addTestarrayofstring(fbb, testarrayofstringOffset);
- MyGame.Example.Monster.addTestarrayoftables(fbb, testarrayoftablesOffset);
- MyGame.Example.Monster.addName(fbb, name);
- MyGame.Example.Monster.finishMonsterBuffer(fbb, MyGame.Example.Monster.endMonster(fbb));
- testReadingUnicode(new flatbuffers.ByteBuffer(fbb.asUint8Array()));
-}
-
-var __imul = Math.imul ? Math.imul : function(a, b) {
- var ah = a >> 16 & 65535;
- var bh = b >> 16 & 65535;
- var al = a & 65535;
- var bl = b & 65535;
- return al * bl + (ah * bl + al * bh << 16) | 0;
-};
-
-// Include simple random number generator to ensure results will be the
-// same cross platform.
-// http://en.wikipedia.org/wiki/Park%E2%80%93Miller_random_number_generator
-var lcg_seed = 48271;
-
-function lcg_rand() {
- return lcg_seed = (__imul(lcg_seed, 279470273) >>> 0) % 4294967291;
-}
-
-function lcg_reset() {
- lcg_seed = 48271;
-}
-
-// Converts a Field ID to a virtual table offset.
-function fieldIndexToOffset(field_id) {
- // Should correspond to what EndTable() below builds up.
- var fixed_fields = 2; // Vtable size and Object Size.
- return (field_id + fixed_fields) * 2;
-}
-
-// Low level stress/fuzz test: serialize/deserialize a variety of
-// different kinds of data in different combinations
-function fuzzTest1() {
-
- // Values we're testing against: chosen to ensure no bits get chopped
- // off anywhere, and also be different from eachother.
- var bool_val = true;
- var char_val = -127; // 0x81
- var uchar_val = 0xFF;
- var short_val = -32222; // 0x8222;
- var ushort_val = 0xFEEE;
- var int_val = 0x83333333 | 0;
- var uint_val = 0xFDDDDDDD;
- var long_val = new flatbuffers.Long(0x44444444, 0x84444444);
- var ulong_val = new flatbuffers.Long(0xCCCCCCCC, 0xFCCCCCCC);
- var float_val = new Float32Array([3.14159])[0];
- var double_val = 3.14159265359;
-
- var test_values_max = 11;
- var fields_per_object = 4;
- var num_fuzz_objects = 10000; // The higher, the more thorough :)
-
- var builder = new flatbuffers.Builder();
-
- lcg_reset(); // Keep it deterministic.
-
- var objects = [];
-
- // Generate num_fuzz_objects random objects each consisting of
- // fields_per_object fields, each of a random type.
- for (var i = 0; i < num_fuzz_objects; i++) {
- builder.startObject(fields_per_object);
- for (var f = 0; f < fields_per_object; f++) {
- var choice = lcg_rand() % test_values_max;
- switch (choice) {
- case 0: builder.addFieldInt8(f, bool_val, 0); break;
- case 1: builder.addFieldInt8(f, char_val, 0); break;
- case 2: builder.addFieldInt8(f, uchar_val, 0); break;
- case 3: builder.addFieldInt16(f, short_val, 0); break;
- case 4: builder.addFieldInt16(f, ushort_val, 0); break;
- case 5: builder.addFieldInt32(f, int_val, 0); break;
- case 6: builder.addFieldInt32(f, uint_val, 0); break;
- case 7: builder.addFieldInt64(f, long_val, flatbuffers.Long.ZERO); break;
- case 8: builder.addFieldInt64(f, ulong_val, flatbuffers.Long.ZERO); break;
- case 9: builder.addFieldFloat32(f, float_val, 0); break;
- case 10: builder.addFieldFloat64(f, double_val, 0); break;
- }
- }
- objects.push(builder.endObject());
- }
- builder.prep(8, 0); // Align whole buffer.
-
- lcg_reset(); // Reset.
-
- builder.finish(objects[objects.length - 1]);
- var bytes = new Uint8Array(builder.asUint8Array());
- var view = new DataView(bytes.buffer);
-
- // Test that all objects we generated are readable and return the
- // expected values. We generate random objects in the same order
- // so this is deterministic.
- for (var i = 0; i < num_fuzz_objects; i++) {
- var offset = bytes.length - objects[i];
- for (var f = 0; f < fields_per_object; f++) {
- var choice = lcg_rand() % test_values_max;
- var vtable_offset = fieldIndexToOffset(f);
- var vtable = offset - view.getInt32(offset, true);
- assert.ok(vtable_offset < view.getInt16(vtable, true));
- var field_offset = offset + view.getInt16(vtable + vtable_offset, true);
- switch (choice) {
- case 0: assert.strictEqual(!!view.getInt8(field_offset), bool_val); break;
- case 1: assert.strictEqual(view.getInt8(field_offset), char_val); break;
- case 2: assert.strictEqual(view.getUint8(field_offset), uchar_val); break;
- case 3: assert.strictEqual(view.getInt16(field_offset, true), short_val); break;
- case 4: assert.strictEqual(view.getUint16(field_offset, true), ushort_val); break;
- case 5: assert.strictEqual(view.getInt32(field_offset, true), int_val); break;
- case 6: assert.strictEqual(view.getUint32(field_offset, true), uint_val); break;
- case 7: assert.strictEqual(view.getInt32(field_offset, true), long_val.low); assert.strictEqual(view.getInt32(field_offset + 4, true), long_val.high); break;
- case 8: assert.strictEqual(view.getInt32(field_offset, true), ulong_val.low); assert.strictEqual(view.getInt32(field_offset + 4, true), ulong_val.high); break;
- case 9: assert.strictEqual(view.getFloat32(field_offset, true), float_val); break;
- case 10: assert.strictEqual(view.getFloat64(field_offset, true), double_val); break;
- }
- }
- }
-}
-
-main();
diff --git a/third_party/flatbuffers/tests/JavaScriptTest.sh b/third_party/flatbuffers/tests/JavaScriptTest.sh
deleted file mode 100755
index cdba5fa..0000000
--- a/third_party/flatbuffers/tests/JavaScriptTest.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-#
-# Copyright 2016 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-pushd "$(dirname $0)" >/dev/null
-../flatc -b monster_test.fbs unicode_test.json
-node JavaScriptTest ./monster_test_generated
diff --git a/third_party/flatbuffers/tests/JavaTest.bat b/third_party/flatbuffers/tests/JavaTest.bat
deleted file mode 100755
index aa72613..0000000
--- a/third_party/flatbuffers/tests/JavaTest.bat
+++ /dev/null
@@ -1,21 +0,0 @@
-@echo off
-rem Copyright 2014 Google Inc. All rights reserved.
-rem
-rem Licensed under the Apache License, Version 2.0 (the "License");
-rem you may not use this file except in compliance with the License.
-rem You may obtain a copy of the License at
-rem
-rem http://www.apache.org/licenses/LICENSE-2.0
-rem
-rem Unless required by applicable law or agreed to in writing, software
-rem distributed under the License is distributed on an "AS IS" BASIS,
-rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-rem See the License for the specific language governing permissions and
-rem limitations under the License.
-
-rem Compile then run the Java test.
-
-set batch_file_dir=%~d0%~p0
-
-javac -g -classpath %batch_file_dir%\..\java;%batch_file_dir%;%batch_file_dir%\namespace_test JavaTest.java
-java -classpath %batch_file_dir%\..\java;%batch_file_dir%;%batch_file_dir%\namespace_test JavaTest
diff --git a/third_party/flatbuffers/tests/JavaTest.java b/third_party/flatbuffers/tests/JavaTest.java
deleted file mode 100755
index d53e973..0000000
--- a/third_party/flatbuffers/tests/JavaTest.java
+++ /dev/null
@@ -1,358 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.io.*;
-import java.nio.ByteBuffer;
-import MyGame.Example.*;
-import NamespaceA.*;
-import NamespaceA.NamespaceB.*;
-import com.google.flatbuffers.FlatBufferBuilder;
-
-class JavaTest {
- public static void main(String[] args) {
-
- // First, let's test reading a FlatBuffer generated by C++ code:
- // This file was generated from monsterdata_test.json
-
- byte[] data = null;
- File file = new File("monsterdata_test.mon");
- RandomAccessFile f = null;
- try {
- f = new RandomAccessFile(file, "r");
- data = new byte[(int)f.length()];
- f.readFully(data);
- f.close();
- } catch(java.io.IOException e) {
- System.out.println("FlatBuffers test: couldn't read file");
- return;
- }
-
- // Now test it:
-
- ByteBuffer bb = ByteBuffer.wrap(data);
- TestBuffer(bb);
-
- // Second, let's create a FlatBuffer from scratch in Java, and test it also.
- // We use an initial size of 1 to exercise the reallocation algorithm,
- // normally a size larger than the typical FlatBuffer you generate would be
- // better for performance.
- FlatBufferBuilder fbb = new FlatBufferBuilder(1);
-
- int[] names = {fbb.createString("Frodo"), fbb.createString("Barney"), fbb.createString("Wilma")};
- int[] off = new int[3];
- Monster.startMonster(fbb);
- Monster.addName(fbb, names[0]);
- off[0] = Monster.endMonster(fbb);
- Monster.startMonster(fbb);
- Monster.addName(fbb, names[1]);
- off[1] = Monster.endMonster(fbb);
- Monster.startMonster(fbb);
- Monster.addName(fbb, names[2]);
- off[2] = Monster.endMonster(fbb);
- int sortMons = fbb.createSortedVectorOfTables(new Monster(), off);
-
- // We set up the same values as monsterdata.json:
-
- int str = fbb.createString("MyMonster");
-
- int inv = Monster.createInventoryVector(fbb, new byte[] { 0, 1, 2, 3, 4 });
-
- int fred = fbb.createString("Fred");
- Monster.startMonster(fbb);
- Monster.addName(fbb, fred);
- int mon2 = Monster.endMonster(fbb);
-
- Monster.startTest4Vector(fbb, 2);
- Test.createTest(fbb, (short)10, (byte)20);
- Test.createTest(fbb, (short)30, (byte)40);
- int test4 = fbb.endVector();
-
- int testArrayOfString = Monster.createTestarrayofstringVector(fbb, new int[] {
- fbb.createString("test1"),
- fbb.createString("test2")
- });
-
- Monster.startMonster(fbb);
- Monster.addPos(fbb, Vec3.createVec3(fbb, 1.0f, 2.0f, 3.0f, 3.0,
- Color.Green, (short)5, (byte)6));
- Monster.addHp(fbb, (short)80);
- Monster.addName(fbb, str);
- Monster.addInventory(fbb, inv);
- Monster.addTestType(fbb, (byte)Any.Monster);
- Monster.addTest(fbb, mon2);
- Monster.addTest4(fbb, test4);
- Monster.addTestarrayofstring(fbb, testArrayOfString);
- Monster.addTestbool(fbb, false);
- Monster.addTesthashu32Fnv1(fbb, Integer.MAX_VALUE + 1L);
- Monster.addTestarrayoftables(fbb, sortMons);
- int mon = Monster.endMonster(fbb);
-
- Monster.finishMonsterBuffer(fbb, mon);
-
- // Write the result to a file for debugging purposes:
- // Note that the binaries are not necessarily identical, since the JSON
- // parser may serialize in a slightly different order than the above
- // Java code. They are functionally equivalent though.
-
- try {
- DataOutputStream os = new DataOutputStream(new FileOutputStream(
- "monsterdata_java_wire.mon"));
- os.write(fbb.dataBuffer().array(), fbb.dataBuffer().position(), fbb.offset());
- os.close();
- } catch(java.io.IOException e) {
- System.out.println("FlatBuffers test: couldn't write file");
- return;
- }
-
- // Test it:
- TestExtendedBuffer(fbb.dataBuffer());
-
- // Make sure it also works with read only ByteBuffers. This is slower,
- // since creating strings incurs an additional copy
- // (see Table.__string).
- TestExtendedBuffer(fbb.dataBuffer().asReadOnlyBuffer());
-
- TestEnums();
-
- //Attempt to mutate Monster fields and check whether the buffer has been mutated properly
- // revert to original values after testing
- Monster monster = Monster.getRootAsMonster(fbb.dataBuffer());
-
- // mana is optional and does not exist in the buffer so the mutation should fail
- // the mana field should retain its default value
- TestEq(monster.mutateMana((short)10), false);
- TestEq(monster.mana(), (short)150);
-
- // Accessing a vector of sorted by the key tables
- TestEq(monster.testarrayoftables(0).name(), "Barney");
- TestEq(monster.testarrayoftables(1).name(), "Frodo");
- TestEq(monster.testarrayoftables(2).name(), "Wilma");
-
- // Example of searching for a table by the key
- TestEq(Monster.lookupByKey(sortMons, "Frodo", fbb.dataBuffer()).name(), "Frodo");
- TestEq(Monster.lookupByKey(sortMons, "Barney", fbb.dataBuffer()).name(), "Barney");
- TestEq(Monster.lookupByKey(sortMons, "Wilma", fbb.dataBuffer()).name(), "Wilma");
-
- // testType is an existing field and mutating it should succeed
- TestEq(monster.testType(), (byte)Any.Monster);
- TestEq(monster.mutateTestType(Any.NONE), true);
- TestEq(monster.testType(), (byte)Any.NONE);
- TestEq(monster.mutateTestType(Any.Monster), true);
- TestEq(monster.testType(), (byte)Any.Monster);
-
- //mutate the inventory vector
- TestEq(monster.mutateInventory(0, 1), true);
- TestEq(monster.mutateInventory(1, 2), true);
- TestEq(monster.mutateInventory(2, 3), true);
- TestEq(monster.mutateInventory(3, 4), true);
- TestEq(monster.mutateInventory(4, 5), true);
-
- for (int i = 0; i < monster.inventoryLength(); i++) {
- TestEq(monster.inventory(i), i + 1);
- }
-
- //reverse mutation
- TestEq(monster.mutateInventory(0, 0), true);
- TestEq(monster.mutateInventory(1, 1), true);
- TestEq(monster.mutateInventory(2, 2), true);
- TestEq(monster.mutateInventory(3, 3), true);
- TestEq(monster.mutateInventory(4, 4), true);
-
- // get a struct field and edit one of its fields
- Vec3 pos = monster.pos();
- TestEq(pos.x(), 1.0f);
- pos.mutateX(55.0f);
- TestEq(pos.x(), 55.0f);
- pos.mutateX(1.0f);
- TestEq(pos.x(), 1.0f);
-
- TestExtendedBuffer(fbb.dataBuffer().asReadOnlyBuffer());
-
- TestNamespaceNesting();
-
- TestNestedFlatBuffer();
-
- TestCreateByteVector();
-
- TestCreateUninitializedVector();
-
- System.out.println("FlatBuffers test: completed successfully");
- }
-
- static void TestEnums() {
- TestEq(Color.name(Color.Red), "Red");
- TestEq(Color.name(Color.Blue), "Blue");
- TestEq(Any.name(Any.NONE), "NONE");
- TestEq(Any.name(Any.Monster), "Monster");
- }
-
- static void TestBuffer(ByteBuffer bb) {
- TestEq(Monster.MonsterBufferHasIdentifier(bb), true);
-
- Monster monster = Monster.getRootAsMonster(bb);
-
- TestEq(monster.hp(), (short)80);
- TestEq(monster.mana(), (short)150); // default
-
- TestEq(monster.name(), "MyMonster");
- // monster.friendly() // can't access, deprecated
-
- Vec3 pos = monster.pos();
- TestEq(pos.x(), 1.0f);
- TestEq(pos.y(), 2.0f);
- TestEq(pos.z(), 3.0f);
- TestEq(pos.test1(), 3.0);
- TestEq(pos.test2(), Color.Green);
- Test t = pos.test3();
- TestEq(t.a(), (short)5);
- TestEq(t.b(), (byte)6);
-
- TestEq(monster.testType(), (byte)Any.Monster);
- Monster monster2 = new Monster();
- TestEq(monster.test(monster2) != null, true);
- TestEq(monster2.name(), "Fred");
-
- TestEq(monster.inventoryLength(), 5);
- int invsum = 0;
- for (int i = 0; i < monster.inventoryLength(); i++)
- invsum += monster.inventory(i);
- TestEq(invsum, 10);
-
- // Alternative way of accessing a vector:
- ByteBuffer ibb = monster.inventoryAsByteBuffer();
- invsum = 0;
- while (ibb.position() < ibb.limit())
- invsum += ibb.get();
- TestEq(invsum, 10);
-
- Test test_0 = monster.test4(0);
- Test test_1 = monster.test4(1);
- TestEq(monster.test4Length(), 2);
- TestEq(test_0.a() + test_0.b() + test_1.a() + test_1.b(), 100);
-
- TestEq(monster.testarrayofstringLength(), 2);
- TestEq(monster.testarrayofstring(0),"test1");
- TestEq(monster.testarrayofstring(1),"test2");
-
- TestEq(monster.testbool(), false);
- }
-
- // this method checks additional fields not present in the binary buffer read from file
- // these new tests are performed on top of the regular tests
- static void TestExtendedBuffer(ByteBuffer bb) {
- TestBuffer(bb);
-
- Monster monster = Monster.getRootAsMonster(bb);
-
- TestEq(monster.testhashu32Fnv1(), Integer.MAX_VALUE + 1L);
- }
-
- static void TestNamespaceNesting() {
- // reference / manipulate these to verify compilation
- FlatBufferBuilder fbb = new FlatBufferBuilder(1);
-
- TableInNestedNS.startTableInNestedNS(fbb);
- TableInNestedNS.addFoo(fbb, 1234);
- int nestedTableOff = TableInNestedNS.endTableInNestedNS(fbb);
-
- TableInFirstNS.startTableInFirstNS(fbb);
- TableInFirstNS.addFooTable(fbb, nestedTableOff);
- int off = TableInFirstNS.endTableInFirstNS(fbb);
- }
-
- static void TestNestedFlatBuffer() {
- final String nestedMonsterName = "NestedMonsterName";
- final short nestedMonsterHp = 600;
- final short nestedMonsterMana = 1024;
-
- FlatBufferBuilder fbb1 = new FlatBufferBuilder(16);
- int str1 = fbb1.createString(nestedMonsterName);
- Monster.startMonster(fbb1);
- Monster.addName(fbb1, str1);
- Monster.addHp(fbb1, nestedMonsterHp);
- Monster.addMana(fbb1, nestedMonsterMana);
- int monster1 = Monster.endMonster(fbb1);
- Monster.finishMonsterBuffer(fbb1, monster1);
- byte[] fbb1Bytes = fbb1.sizedByteArray();
- fbb1 = null;
-
- FlatBufferBuilder fbb2 = new FlatBufferBuilder(16);
- int str2 = fbb2.createString("My Monster");
- int nestedBuffer = Monster.createTestnestedflatbufferVector(fbb2, fbb1Bytes);
- Monster.startMonster(fbb2);
- Monster.addName(fbb2, str2);
- Monster.addHp(fbb2, (short)50);
- Monster.addMana(fbb2, (short)32);
- Monster.addTestnestedflatbuffer(fbb2, nestedBuffer);
- int monster = Monster.endMonster(fbb2);
- Monster.finishMonsterBuffer(fbb2, monster);
-
- // Now test the data extracted from the nested buffer
- Monster mons = Monster.getRootAsMonster(fbb2.dataBuffer());
- Monster nestedMonster = mons.testnestedflatbufferAsMonster();
-
- TestEq(nestedMonsterMana, nestedMonster.mana());
- TestEq(nestedMonsterHp, nestedMonster.hp());
- TestEq(nestedMonsterName, nestedMonster.name());
- }
-
- static void TestCreateByteVector() {
- FlatBufferBuilder fbb = new FlatBufferBuilder(16);
- int str = fbb.createString("MyMonster");
- byte[] inventory = new byte[] { 0, 1, 2, 3, 4 };
- int vec = fbb.createByteVector(inventory);
- Monster.startMonster(fbb);
- Monster.addInventory(fbb, vec);
- Monster.addName(fbb, str);
- int monster1 = Monster.endMonster(fbb);
- Monster.finishMonsterBuffer(fbb, monster1);
- Monster monsterObject = Monster.getRootAsMonster(fbb.dataBuffer());
-
- TestEq(monsterObject.inventory(1), (int)inventory[1]);
- TestEq(monsterObject.inventoryLength(), inventory.length);
- TestEq(ByteBuffer.wrap(inventory), monsterObject.inventoryAsByteBuffer());
- }
-
- static void TestCreateUninitializedVector() {
- FlatBufferBuilder fbb = new FlatBufferBuilder(16);
- int str = fbb.createString("MyMonster");
- byte[] inventory = new byte[] { 0, 1, 2, 3, 4 };
- ByteBuffer bb = fbb.createUnintializedVector(1, inventory.length, 1);
- for (byte i:inventory) {
- bb.put(i);
- }
- int vec = fbb.endVector();
- Monster.startMonster(fbb);
- Monster.addInventory(fbb, vec);
- Monster.addName(fbb, str);
- int monster1 = Monster.endMonster(fbb);
- Monster.finishMonsterBuffer(fbb, monster1);
- Monster monsterObject = Monster.getRootAsMonster(fbb.dataBuffer());
-
- TestEq(monsterObject.inventory(1), (int)inventory[1]);
- TestEq(monsterObject.inventoryLength(), inventory.length);
- TestEq(ByteBuffer.wrap(inventory), monsterObject.inventoryAsByteBuffer());
- }
-
- static <T> void TestEq(T a, T b) {
- if (!a.equals(b)) {
- System.out.println("" + a.getClass().getName() + " " + b.getClass().getName());
- System.out.println("FlatBuffers test FAILED: \'" + a + "\' != \'" + b + "\'");
- assert false;
- System.exit(1);
- }
- }
-}
diff --git a/third_party/flatbuffers/tests/JavaTest.sh b/third_party/flatbuffers/tests/JavaTest.sh
deleted file mode 100755
index 40e854b..0000000
--- a/third_party/flatbuffers/tests/JavaTest.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2014 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-echo Compile then run the Java test.
-
-java -version
-
-testdir=$(readlink -fn `dirname $0`)
-thisdir=$(readlink -fn `pwd`)
-
-targetdir=${testdir}/target
-
-if [[ "$testdir" != "$thisdir" ]]; then
- echo error: must be run from inside the ${testdir} directory
- echo you ran it from ${thisdir}
- exit 1
-fi
-
-find .. -type f -name "*.class" -exec rm {} \;
-
-if [[ -e "${targetdir}" ]]; then
- echo "clean target"
- rm -rf ${targetdir}
-fi
-
-mkdir ${targetdir}
-
-javac -d ${targetdir} -classpath ${testdir}/../java:${testdir}:${testdir}/namespace_test JavaTest.java
-java -classpath ${targetdir} JavaTest
-
-rm -rf ${targetdir}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Ability.cs b/third_party/flatbuffers/tests/MyGame/Example/Ability.cs
deleted file mode 100644
index ec08ed8..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Ability.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace MyGame.Example
-{
-
-using global::System;
-using global::FlatBuffers;
-
-public struct Ability : IFlatbufferObject
-{
- private Struct __p;
- public ByteBuffer ByteBuffer { get { return __p.bb; } }
- public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; }
- public Ability __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public uint Id { get { return __p.bb.GetUint(__p.bb_pos + 0); } }
- public void MutateId(uint id) { __p.bb.PutUint(__p.bb_pos + 0, id); }
- public uint Distance { get { return __p.bb.GetUint(__p.bb_pos + 4); } }
- public void MutateDistance(uint distance) { __p.bb.PutUint(__p.bb_pos + 4, distance); }
-
- public static Offset<Ability> CreateAbility(FlatBufferBuilder builder, uint Id, uint Distance) {
- builder.Prep(4, 8);
- builder.PutUint(Distance);
- builder.PutUint(Id);
- return new Offset<Ability>(builder.Offset);
- }
-};
-
-
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Ability.go b/third_party/flatbuffers/tests/MyGame/Example/Ability.go
deleted file mode 100644
index 2ea8665..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Ability.go
+++ /dev/null
@@ -1,41 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package Example
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type Ability struct {
- _tab flatbuffers.Struct
-}
-
-func (rcv *Ability) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Ability) Table() flatbuffers.Table {
- return rcv._tab.Table
-}
-
-func (rcv *Ability) Id() uint32 {
- return rcv._tab.GetUint32(rcv._tab.Pos + flatbuffers.UOffsetT(0))
-}
-func (rcv *Ability) MutateId(n uint32) bool {
- return rcv._tab.MutateUint32(rcv._tab.Pos+flatbuffers.UOffsetT(0), n)
-}
-
-func (rcv *Ability) Distance() uint32 {
- return rcv._tab.GetUint32(rcv._tab.Pos + flatbuffers.UOffsetT(4))
-}
-func (rcv *Ability) MutateDistance(n uint32) bool {
- return rcv._tab.MutateUint32(rcv._tab.Pos+flatbuffers.UOffsetT(4), n)
-}
-
-func CreateAbility(builder *flatbuffers.Builder, id uint32, distance uint32) flatbuffers.UOffsetT {
- builder.Prep(4, 8)
- builder.PrependUint32(distance)
- builder.PrependUint32(id)
- return builder.Offset()
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Ability.java b/third_party/flatbuffers/tests/MyGame/Example/Ability.java
deleted file mode 100644
index 5e1c90e..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Ability.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package MyGame.Example;
-
-import java.nio.*;
-import java.lang.*;
-import java.util.*;
-import com.google.flatbuffers.*;
-
-@SuppressWarnings("unused")
-public final class Ability extends Struct {
- public void __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; }
- public Ability __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public long id() { return (long)bb.getInt(bb_pos + 0) & 0xFFFFFFFFL; }
- public void mutateId(long id) { bb.putInt(bb_pos + 0, (int)id); }
- public long distance() { return (long)bb.getInt(bb_pos + 4) & 0xFFFFFFFFL; }
- public void mutateDistance(long distance) { bb.putInt(bb_pos + 4, (int)distance); }
-
- public static int createAbility(FlatBufferBuilder builder, long id, long distance) {
- builder.prep(4, 8);
- builder.putInt((int)distance);
- builder.putInt((int)id);
- return builder.offset();
- }
-}
-
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Ability.php b/third_party/flatbuffers/tests/MyGame/Example/Ability.php
deleted file mode 100644
index c09eca3..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Ability.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace MyGame\Example;
-
-use \Google\FlatBuffers\Struct;
-use \Google\FlatBuffers\Table;
-use \Google\FlatBuffers\ByteBuffer;
-use \Google\FlatBuffers\FlatBufferBuilder;
-
-class Ability extends Struct
-{
- /**
- * @param int $_i offset
- * @param ByteBuffer $_bb
- * @return Ability
- **/
- public function init($_i, ByteBuffer $_bb)
- {
- $this->bb_pos = $_i;
- $this->bb = $_bb;
- return $this;
- }
-
- /**
- * @return uint
- */
- public function GetId()
- {
- return $this->bb->getUint($this->bb_pos + 0);
- }
-
- /**
- * @return uint
- */
- public function GetDistance()
- {
- return $this->bb->getUint($this->bb_pos + 4);
- }
-
-
- /**
- * @return int offset
- */
- public static function createAbility(FlatBufferBuilder $builder, $id, $distance)
- {
- $builder->prep(4, 8);
- $builder->putUint($distance);
- $builder->putUint($id);
- return $builder->offset();
- }
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Ability.py b/third_party/flatbuffers/tests/MyGame/Example/Ability.py
deleted file mode 100644
index 3c4776e..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Ability.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# automatically generated by the FlatBuffers compiler, do not modify
-
-# namespace: Example
-
-import flatbuffers
-
-class Ability(object):
- __slots__ = ['_tab']
-
- # Ability
- def Init(self, buf, pos):
- self._tab = flatbuffers.table.Table(buf, pos)
-
- # Ability
- def Id(self): return self._tab.Get(flatbuffers.number_types.Uint32Flags, self._tab.Pos + flatbuffers.number_types.UOffsetTFlags.py_type(0))
- # Ability
- def Distance(self): return self._tab.Get(flatbuffers.number_types.Uint32Flags, self._tab.Pos + flatbuffers.number_types.UOffsetTFlags.py_type(4))
-
-def CreateAbility(builder, id, distance):
- builder.Prep(4, 8)
- builder.PrependUint32(distance)
- builder.PrependUint32(id)
- return builder.Offset()
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Any.cs b/third_party/flatbuffers/tests/MyGame/Example/Any.cs
deleted file mode 100644
index 8fdc2fc..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Any.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace MyGame.Example
-{
-
-public enum Any : byte
-{
- NONE = 0,
- Monster = 1,
- TestSimpleTableWithEnum = 2,
- MyGame_Example2_Monster = 3,
-};
-
-
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Any.go b/third_party/flatbuffers/tests/MyGame/Example/Any.go
deleted file mode 100644
index d69b141..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Any.go
+++ /dev/null
@@ -1,18 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package Example
-
-const (
- AnyNONE = 0
- AnyMonster = 1
- AnyTestSimpleTableWithEnum = 2
- AnyMyGame_Example2_Monster = 3
-)
-
-var EnumNamesAny = map[int]string{
- AnyNONE:"NONE",
- AnyMonster:"Monster",
- AnyTestSimpleTableWithEnum:"TestSimpleTableWithEnum",
- AnyMyGame_Example2_Monster:"MyGame_Example2_Monster",
-}
-
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Any.java b/third_party/flatbuffers/tests/MyGame/Example/Any.java
deleted file mode 100644
index 6e4fb76..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Any.java
+++ /dev/null
@@ -1,16 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package MyGame.Example;
-
-public final class Any {
- private Any() { }
- public static final byte NONE = 0;
- public static final byte Monster = 1;
- public static final byte TestSimpleTableWithEnum = 2;
- public static final byte MyGame_Example2_Monster = 3;
-
- public static final String[] names = { "NONE", "Monster", "TestSimpleTableWithEnum", "MyGame_Example2_Monster", };
-
- public static String name(int e) { return names[e]; }
-}
-
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Any.php b/third_party/flatbuffers/tests/MyGame/Example/Any.php
deleted file mode 100644
index da69176..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Any.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace MyGame\Example;
-
-class Any
-{
- const NONE = 0;
- const Monster = 1;
- const TestSimpleTableWithEnum = 2;
- const MyGame_Example2_Monster = 3;
-
- private static $names = array(
- "NONE",
- "Monster",
- "TestSimpleTableWithEnum",
- "MyGame_Example2_Monster",
- );
-
- public static function Name($e)
- {
- if (!isset(self::$names[$e])) {
- throw new \Exception();
- }
- return self::$names[$e];
- }
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Any.py b/third_party/flatbuffers/tests/MyGame/Example/Any.py
deleted file mode 100644
index f1b8d51..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Any.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# automatically generated by the FlatBuffers compiler, do not modify
-
-# namespace: Example
-
-class Any(object):
- NONE = 0
- Monster = 1
- TestSimpleTableWithEnum = 2
- MyGame_Example2_Monster = 3
-
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Color.cs b/third_party/flatbuffers/tests/MyGame/Example/Color.cs
deleted file mode 100644
index 625d040..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Color.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace MyGame.Example
-{
-
-public enum Color : sbyte
-{
- Red = 1,
- Green = 2,
- Blue = 8,
-};
-
-
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Color.go b/third_party/flatbuffers/tests/MyGame/Example/Color.go
deleted file mode 100644
index d1eac54..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Color.go
+++ /dev/null
@@ -1,16 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package Example
-
-const (
- ColorRed = 1
- ColorGreen = 2
- ColorBlue = 8
-)
-
-var EnumNamesColor = map[int]string{
- ColorRed:"Red",
- ColorGreen:"Green",
- ColorBlue:"Blue",
-}
-
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Color.java b/third_party/flatbuffers/tests/MyGame/Example/Color.java
deleted file mode 100644
index 7c113b7..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Color.java
+++ /dev/null
@@ -1,15 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package MyGame.Example;
-
-public final class Color {
- private Color() { }
- public static final byte Red = 1;
- public static final byte Green = 2;
- public static final byte Blue = 8;
-
- public static final String[] names = { "Red", "Green", "", "", "", "", "", "Blue", };
-
- public static String name(int e) { return names[e - Red]; }
-}
-
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Color.php b/third_party/flatbuffers/tests/MyGame/Example/Color.php
deleted file mode 100644
index 70c7bfd..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Color.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace MyGame\Example;
-
-class Color
-{
- const Red = 1;
- const Green = 2;
- const Blue = 8;
-
- private static $names = array(
- "Red",
- "Green",
- "Blue",
- );
-
- public static function Name($e)
- {
- if (!isset(self::$names[$e])) {
- throw new \Exception();
- }
- return self::$names[$e];
- }
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Color.py b/third_party/flatbuffers/tests/MyGame/Example/Color.py
deleted file mode 100644
index 36e80a3..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Color.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# automatically generated by the FlatBuffers compiler, do not modify
-
-# namespace: Example
-
-class Color(object):
- Red = 1
- Green = 2
- Blue = 8
-
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Monster.cs b/third_party/flatbuffers/tests/MyGame/Example/Monster.cs
deleted file mode 100644
index 8f76cfd..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Monster.cs
+++ /dev/null
@@ -1,165 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace MyGame.Example
-{
-
-using global::System;
-using global::FlatBuffers;
-
-/// an example documentation comment: monster object
-public struct Monster : IFlatbufferObject
-{
- private Table __p;
- public ByteBuffer ByteBuffer { get { return __p.bb; } }
- public static Monster GetRootAsMonster(ByteBuffer _bb) { return GetRootAsMonster(_bb, new Monster()); }
- public static Monster GetRootAsMonster(ByteBuffer _bb, Monster obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
- public static bool MonsterBufferHasIdentifier(ByteBuffer _bb) { return Table.__has_identifier(_bb, "MONS"); }
- public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; }
- public Monster __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public Vec3? Pos { get { int o = __p.__offset(4); return o != 0 ? (Vec3?)(new Vec3()).__assign(o + __p.bb_pos, __p.bb) : null; } }
- public short Mana { get { int o = __p.__offset(6); return o != 0 ? __p.bb.GetShort(o + __p.bb_pos) : (short)150; } }
- public bool MutateMana(short mana) { int o = __p.__offset(6); if (o != 0) { __p.bb.PutShort(o + __p.bb_pos, mana); return true; } else { return false; } }
- public short Hp { get { int o = __p.__offset(8); return o != 0 ? __p.bb.GetShort(o + __p.bb_pos) : (short)100; } }
- public bool MutateHp(short hp) { int o = __p.__offset(8); if (o != 0) { __p.bb.PutShort(o + __p.bb_pos, hp); return true; } else { return false; } }
- public string Name { get { int o = __p.__offset(10); return o != 0 ? __p.__string(o + __p.bb_pos) : null; } }
- public ArraySegment<byte>? GetNameBytes() { return __p.__vector_as_arraysegment(10); }
- public byte Inventory(int j) { int o = __p.__offset(14); return o != 0 ? __p.bb.Get(__p.__vector(o) + j * 1) : (byte)0; }
- public int InventoryLength { get { int o = __p.__offset(14); return o != 0 ? __p.__vector_len(o) : 0; } }
- public ArraySegment<byte>? GetInventoryBytes() { return __p.__vector_as_arraysegment(14); }
- public bool MutateInventory(int j, byte inventory) { int o = __p.__offset(14); if (o != 0) { __p.bb.Put(__p.__vector(o) + j * 1, inventory); return true; } else { return false; } }
- public Color Color { get { int o = __p.__offset(16); return o != 0 ? (Color)__p.bb.GetSbyte(o + __p.bb_pos) : Color.Blue; } }
- public bool MutateColor(Color color) { int o = __p.__offset(16); if (o != 0) { __p.bb.PutSbyte(o + __p.bb_pos, (sbyte)color); return true; } else { return false; } }
- public Any TestType { get { int o = __p.__offset(18); return o != 0 ? (Any)__p.bb.Get(o + __p.bb_pos) : Any.NONE; } }
- public bool MutateTestType(Any test_type) { int o = __p.__offset(18); if (o != 0) { __p.bb.Put(o + __p.bb_pos, (byte)test_type); return true; } else { return false; } }
- public TTable? Test<TTable>() where TTable : struct, IFlatbufferObject { int o = __p.__offset(20); return o != 0 ? (TTable?)__p.__union<TTable>(o) : null; }
- public Test? Test4(int j) { int o = __p.__offset(22); return o != 0 ? (Test?)(new Test()).__assign(__p.__vector(o) + j * 4, __p.bb) : null; }
- public int Test4Length { get { int o = __p.__offset(22); return o != 0 ? __p.__vector_len(o) : 0; } }
- public string Testarrayofstring(int j) { int o = __p.__offset(24); return o != 0 ? __p.__string(__p.__vector(o) + j * 4) : null; }
- public int TestarrayofstringLength { get { int o = __p.__offset(24); return o != 0 ? __p.__vector_len(o) : 0; } }
- /// an example documentation comment: this will end up in the generated code
- /// multiline too
- public Monster? Testarrayoftables(int j) { int o = __p.__offset(26); return o != 0 ? (Monster?)(new Monster()).__assign(__p.__indirect(__p.__vector(o) + j * 4), __p.bb) : null; }
- public int TestarrayoftablesLength { get { int o = __p.__offset(26); return o != 0 ? __p.__vector_len(o) : 0; } }
- public Monster? Enemy { get { int o = __p.__offset(28); return o != 0 ? (Monster?)(new Monster()).__assign(__p.__indirect(o + __p.bb_pos), __p.bb) : null; } }
- public byte Testnestedflatbuffer(int j) { int o = __p.__offset(30); return o != 0 ? __p.bb.Get(__p.__vector(o) + j * 1) : (byte)0; }
- public int TestnestedflatbufferLength { get { int o = __p.__offset(30); return o != 0 ? __p.__vector_len(o) : 0; } }
- public ArraySegment<byte>? GetTestnestedflatbufferBytes() { return __p.__vector_as_arraysegment(30); }
- public Monster? GetTestnestedflatbufferAsMonster() { int o = __p.__offset(30); return o != 0 ? (Monster?)(new Monster()).__assign(__p.__indirect(__p.__vector(o)), __p.bb) : null; }
- public bool MutateTestnestedflatbuffer(int j, byte testnestedflatbuffer) { int o = __p.__offset(30); if (o != 0) { __p.bb.Put(__p.__vector(o) + j * 1, testnestedflatbuffer); return true; } else { return false; } }
- public Stat? Testempty { get { int o = __p.__offset(32); return o != 0 ? (Stat?)(new Stat()).__assign(__p.__indirect(o + __p.bb_pos), __p.bb) : null; } }
- public bool Testbool { get { int o = __p.__offset(34); return o != 0 ? 0!=__p.bb.Get(o + __p.bb_pos) : (bool)false; } }
- public bool MutateTestbool(bool testbool) { int o = __p.__offset(34); if (o != 0) { __p.bb.Put(o + __p.bb_pos, (byte)(testbool ? 1 : 0)); return true; } else { return false; } }
- public int Testhashs32Fnv1 { get { int o = __p.__offset(36); return o != 0 ? __p.bb.GetInt(o + __p.bb_pos) : (int)0; } }
- public bool MutateTesthashs32Fnv1(int testhashs32_fnv1) { int o = __p.__offset(36); if (o != 0) { __p.bb.PutInt(o + __p.bb_pos, testhashs32_fnv1); return true; } else { return false; } }
- public uint Testhashu32Fnv1 { get { int o = __p.__offset(38); return o != 0 ? __p.bb.GetUint(o + __p.bb_pos) : (uint)0; } }
- public bool MutateTesthashu32Fnv1(uint testhashu32_fnv1) { int o = __p.__offset(38); if (o != 0) { __p.bb.PutUint(o + __p.bb_pos, testhashu32_fnv1); return true; } else { return false; } }
- public long Testhashs64Fnv1 { get { int o = __p.__offset(40); return o != 0 ? __p.bb.GetLong(o + __p.bb_pos) : (long)0; } }
- public bool MutateTesthashs64Fnv1(long testhashs64_fnv1) { int o = __p.__offset(40); if (o != 0) { __p.bb.PutLong(o + __p.bb_pos, testhashs64_fnv1); return true; } else { return false; } }
- public ulong Testhashu64Fnv1 { get { int o = __p.__offset(42); return o != 0 ? __p.bb.GetUlong(o + __p.bb_pos) : (ulong)0; } }
- public bool MutateTesthashu64Fnv1(ulong testhashu64_fnv1) { int o = __p.__offset(42); if (o != 0) { __p.bb.PutUlong(o + __p.bb_pos, testhashu64_fnv1); return true; } else { return false; } }
- public int Testhashs32Fnv1a { get { int o = __p.__offset(44); return o != 0 ? __p.bb.GetInt(o + __p.bb_pos) : (int)0; } }
- public bool MutateTesthashs32Fnv1a(int testhashs32_fnv1a) { int o = __p.__offset(44); if (o != 0) { __p.bb.PutInt(o + __p.bb_pos, testhashs32_fnv1a); return true; } else { return false; } }
- public uint Testhashu32Fnv1a { get { int o = __p.__offset(46); return o != 0 ? __p.bb.GetUint(o + __p.bb_pos) : (uint)0; } }
- public bool MutateTesthashu32Fnv1a(uint testhashu32_fnv1a) { int o = __p.__offset(46); if (o != 0) { __p.bb.PutUint(o + __p.bb_pos, testhashu32_fnv1a); return true; } else { return false; } }
- public long Testhashs64Fnv1a { get { int o = __p.__offset(48); return o != 0 ? __p.bb.GetLong(o + __p.bb_pos) : (long)0; } }
- public bool MutateTesthashs64Fnv1a(long testhashs64_fnv1a) { int o = __p.__offset(48); if (o != 0) { __p.bb.PutLong(o + __p.bb_pos, testhashs64_fnv1a); return true; } else { return false; } }
- public ulong Testhashu64Fnv1a { get { int o = __p.__offset(50); return o != 0 ? __p.bb.GetUlong(o + __p.bb_pos) : (ulong)0; } }
- public bool MutateTesthashu64Fnv1a(ulong testhashu64_fnv1a) { int o = __p.__offset(50); if (o != 0) { __p.bb.PutUlong(o + __p.bb_pos, testhashu64_fnv1a); return true; } else { return false; } }
- public bool Testarrayofbools(int j) { int o = __p.__offset(52); return o != 0 ? 0!=__p.bb.Get(__p.__vector(o) + j * 1) : false; }
- public int TestarrayofboolsLength { get { int o = __p.__offset(52); return o != 0 ? __p.__vector_len(o) : 0; } }
- public ArraySegment<byte>? GetTestarrayofboolsBytes() { return __p.__vector_as_arraysegment(52); }
- public bool MutateTestarrayofbools(int j, bool testarrayofbools) { int o = __p.__offset(52); if (o != 0) { __p.bb.Put(__p.__vector(o) + j * 1, (byte)(testarrayofbools ? 1 : 0)); return true; } else { return false; } }
- public float Testf { get { int o = __p.__offset(54); return o != 0 ? __p.bb.GetFloat(o + __p.bb_pos) : (float)3.14159f; } }
- public bool MutateTestf(float testf) { int o = __p.__offset(54); if (o != 0) { __p.bb.PutFloat(o + __p.bb_pos, testf); return true; } else { return false; } }
- public float Testf2 { get { int o = __p.__offset(56); return o != 0 ? __p.bb.GetFloat(o + __p.bb_pos) : (float)3.0f; } }
- public bool MutateTestf2(float testf2) { int o = __p.__offset(56); if (o != 0) { __p.bb.PutFloat(o + __p.bb_pos, testf2); return true; } else { return false; } }
- public float Testf3 { get { int o = __p.__offset(58); return o != 0 ? __p.bb.GetFloat(o + __p.bb_pos) : (float)0.0f; } }
- public bool MutateTestf3(float testf3) { int o = __p.__offset(58); if (o != 0) { __p.bb.PutFloat(o + __p.bb_pos, testf3); return true; } else { return false; } }
- public string Testarrayofstring2(int j) { int o = __p.__offset(60); return o != 0 ? __p.__string(__p.__vector(o) + j * 4) : null; }
- public int Testarrayofstring2Length { get { int o = __p.__offset(60); return o != 0 ? __p.__vector_len(o) : 0; } }
- public Ability? Testarrayofsortedstruct(int j) { int o = __p.__offset(62); return o != 0 ? (Ability?)(new Ability()).__assign(__p.__vector(o) + j * 8, __p.bb) : null; }
- public int TestarrayofsortedstructLength { get { int o = __p.__offset(62); return o != 0 ? __p.__vector_len(o) : 0; } }
-
- public static void StartMonster(FlatBufferBuilder builder) { builder.StartObject(30); }
- public static void AddPos(FlatBufferBuilder builder, Offset<Vec3> posOffset) { builder.AddStruct(0, posOffset.Value, 0); }
- public static void AddMana(FlatBufferBuilder builder, short mana) { builder.AddShort(1, mana, 150); }
- public static void AddHp(FlatBufferBuilder builder, short hp) { builder.AddShort(2, hp, 100); }
- public static void AddName(FlatBufferBuilder builder, StringOffset nameOffset) { builder.AddOffset(3, nameOffset.Value, 0); }
- public static void AddInventory(FlatBufferBuilder builder, VectorOffset inventoryOffset) { builder.AddOffset(5, inventoryOffset.Value, 0); }
- public static VectorOffset CreateInventoryVector(FlatBufferBuilder builder, byte[] data) { builder.StartVector(1, data.Length, 1); for (int i = data.Length - 1; i >= 0; i--) builder.AddByte(data[i]); return builder.EndVector(); }
- public static void StartInventoryVector(FlatBufferBuilder builder, int numElems) { builder.StartVector(1, numElems, 1); }
- public static void AddColor(FlatBufferBuilder builder, Color color) { builder.AddSbyte(6, (sbyte)color, 8); }
- public static void AddTestType(FlatBufferBuilder builder, Any testType) { builder.AddByte(7, (byte)testType, 0); }
- public static void AddTest(FlatBufferBuilder builder, int testOffset) { builder.AddOffset(8, testOffset, 0); }
- public static void AddTest4(FlatBufferBuilder builder, VectorOffset test4Offset) { builder.AddOffset(9, test4Offset.Value, 0); }
- public static void StartTest4Vector(FlatBufferBuilder builder, int numElems) { builder.StartVector(4, numElems, 2); }
- public static void AddTestarrayofstring(FlatBufferBuilder builder, VectorOffset testarrayofstringOffset) { builder.AddOffset(10, testarrayofstringOffset.Value, 0); }
- public static VectorOffset CreateTestarrayofstringVector(FlatBufferBuilder builder, StringOffset[] data) { builder.StartVector(4, data.Length, 4); for (int i = data.Length - 1; i >= 0; i--) builder.AddOffset(data[i].Value); return builder.EndVector(); }
- public static void StartTestarrayofstringVector(FlatBufferBuilder builder, int numElems) { builder.StartVector(4, numElems, 4); }
- public static void AddTestarrayoftables(FlatBufferBuilder builder, VectorOffset testarrayoftablesOffset) { builder.AddOffset(11, testarrayoftablesOffset.Value, 0); }
- public static VectorOffset CreateTestarrayoftablesVector(FlatBufferBuilder builder, Offset<Monster>[] data) { builder.StartVector(4, data.Length, 4); for (int i = data.Length - 1; i >= 0; i--) builder.AddOffset(data[i].Value); return builder.EndVector(); }
- public static void StartTestarrayoftablesVector(FlatBufferBuilder builder, int numElems) { builder.StartVector(4, numElems, 4); }
- public static void AddEnemy(FlatBufferBuilder builder, Offset<Monster> enemyOffset) { builder.AddOffset(12, enemyOffset.Value, 0); }
- public static void AddTestnestedflatbuffer(FlatBufferBuilder builder, VectorOffset testnestedflatbufferOffset) { builder.AddOffset(13, testnestedflatbufferOffset.Value, 0); }
- public static VectorOffset CreateTestnestedflatbufferVector(FlatBufferBuilder builder, byte[] data) { builder.StartVector(1, data.Length, 1); for (int i = data.Length - 1; i >= 0; i--) builder.AddByte(data[i]); return builder.EndVector(); }
- public static void StartTestnestedflatbufferVector(FlatBufferBuilder builder, int numElems) { builder.StartVector(1, numElems, 1); }
- public static void AddTestempty(FlatBufferBuilder builder, Offset<Stat> testemptyOffset) { builder.AddOffset(14, testemptyOffset.Value, 0); }
- public static void AddTestbool(FlatBufferBuilder builder, bool testbool) { builder.AddBool(15, testbool, false); }
- public static void AddTesthashs32Fnv1(FlatBufferBuilder builder, int testhashs32Fnv1) { builder.AddInt(16, testhashs32Fnv1, 0); }
- public static void AddTesthashu32Fnv1(FlatBufferBuilder builder, uint testhashu32Fnv1) { builder.AddUint(17, testhashu32Fnv1, 0); }
- public static void AddTesthashs64Fnv1(FlatBufferBuilder builder, long testhashs64Fnv1) { builder.AddLong(18, testhashs64Fnv1, 0); }
- public static void AddTesthashu64Fnv1(FlatBufferBuilder builder, ulong testhashu64Fnv1) { builder.AddUlong(19, testhashu64Fnv1, 0); }
- public static void AddTesthashs32Fnv1a(FlatBufferBuilder builder, int testhashs32Fnv1a) { builder.AddInt(20, testhashs32Fnv1a, 0); }
- public static void AddTesthashu32Fnv1a(FlatBufferBuilder builder, uint testhashu32Fnv1a) { builder.AddUint(21, testhashu32Fnv1a, 0); }
- public static void AddTesthashs64Fnv1a(FlatBufferBuilder builder, long testhashs64Fnv1a) { builder.AddLong(22, testhashs64Fnv1a, 0); }
- public static void AddTesthashu64Fnv1a(FlatBufferBuilder builder, ulong testhashu64Fnv1a) { builder.AddUlong(23, testhashu64Fnv1a, 0); }
- public static void AddTestarrayofbools(FlatBufferBuilder builder, VectorOffset testarrayofboolsOffset) { builder.AddOffset(24, testarrayofboolsOffset.Value, 0); }
- public static VectorOffset CreateTestarrayofboolsVector(FlatBufferBuilder builder, bool[] data) { builder.StartVector(1, data.Length, 1); for (int i = data.Length - 1; i >= 0; i--) builder.AddBool(data[i]); return builder.EndVector(); }
- public static void StartTestarrayofboolsVector(FlatBufferBuilder builder, int numElems) { builder.StartVector(1, numElems, 1); }
- public static void AddTestf(FlatBufferBuilder builder, float testf) { builder.AddFloat(25, testf, 3.14159f); }
- public static void AddTestf2(FlatBufferBuilder builder, float testf2) { builder.AddFloat(26, testf2, 3.0f); }
- public static void AddTestf3(FlatBufferBuilder builder, float testf3) { builder.AddFloat(27, testf3, 0.0f); }
- public static void AddTestarrayofstring2(FlatBufferBuilder builder, VectorOffset testarrayofstring2Offset) { builder.AddOffset(28, testarrayofstring2Offset.Value, 0); }
- public static VectorOffset CreateTestarrayofstring2Vector(FlatBufferBuilder builder, StringOffset[] data) { builder.StartVector(4, data.Length, 4); for (int i = data.Length - 1; i >= 0; i--) builder.AddOffset(data[i].Value); return builder.EndVector(); }
- public static void StartTestarrayofstring2Vector(FlatBufferBuilder builder, int numElems) { builder.StartVector(4, numElems, 4); }
- public static void AddTestarrayofsortedstruct(FlatBufferBuilder builder, VectorOffset testarrayofsortedstructOffset) { builder.AddOffset(29, testarrayofsortedstructOffset.Value, 0); }
- public static void StartTestarrayofsortedstructVector(FlatBufferBuilder builder, int numElems) { builder.StartVector(8, numElems, 4); }
- public static Offset<Monster> EndMonster(FlatBufferBuilder builder) {
- int o = builder.EndObject();
- builder.Required(o, 10); // name
- return new Offset<Monster>(o);
- }
- public static void FinishMonsterBuffer(FlatBufferBuilder builder, Offset<Monster> offset) { builder.Finish(offset.Value, "MONS"); }
-
- public static VectorOffset CreateMySortedVectorOfTables(FlatBufferBuilder builder, Offset<Monster>[] offsets) {
- Array.Sort(offsets, (Offset<Monster> o1, Offset<Monster> o2) => Table.CompareStrings(Table.__offset(10, o1.Value, builder.DataBuffer), Table.__offset(10, o2.Value, builder.DataBuffer), builder.DataBuffer));
- return builder.CreateVectorOfTables(offsets);
- }
-
- public static Monster? LookupByKey(VectorOffset vectorOffset, string key, ByteBuffer bb) {
- byte[] byteKey = System.Text.Encoding.UTF8.GetBytes(key);
- int vectorLocation = bb.Length - vectorOffset.Value;
- int span = bb.GetInt(vectorLocation);
- int start = 0;
- vectorLocation += 4;
- while (span != 0) {
- int middle = span / 2;
- int tableOffset = Table.__indirect(vectorLocation + 4 * (start + middle), bb);
- int comp = Table.CompareStrings(Table.__offset(10, bb.Length - tableOffset, bb), byteKey, bb);
- if (comp > 0) {
- span = middle;
- } else if (comp < 0) {
- middle++;
- start += middle;
- span -= middle;
- } else {
- return new Monster().__assign(tableOffset, bb);
- }
- }
- return null;
- }
-};
-
-
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Monster.go b/third_party/flatbuffers/tests/MyGame/Example/Monster.go
deleted file mode 100644
index ba2e60d..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Monster.go
+++ /dev/null
@@ -1,557 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package Example
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// an example documentation comment: monster object
-type Monster struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsMonster(buf []byte, offset flatbuffers.UOffsetT) *Monster {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Monster{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Monster) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Monster) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *Monster) Pos(obj *Vec3) *Vec3 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- x := o + rcv._tab.Pos
- if obj == nil {
- obj = new(Vec3)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-func (rcv *Monster) Mana() int16 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- return rcv._tab.GetInt16(o + rcv._tab.Pos)
- }
- return 150
-}
-
-func (rcv *Monster) MutateMana(n int16) bool {
- return rcv._tab.MutateInt16Slot(6, n)
-}
-
-func (rcv *Monster) Hp() int16 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- return rcv._tab.GetInt16(o + rcv._tab.Pos)
- }
- return 100
-}
-
-func (rcv *Monster) MutateHp(n int16) bool {
- return rcv._tab.MutateInt16Slot(8, n)
-}
-
-func (rcv *Monster) Name() []byte {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(10))
- if o != 0 {
- return rcv._tab.ByteVector(o + rcv._tab.Pos)
- }
- return nil
-}
-
-func (rcv *Monster) Inventory(j int) byte {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(14))
- if o != 0 {
- a := rcv._tab.Vector(o)
- return rcv._tab.GetByte(a + flatbuffers.UOffsetT(j*1))
- }
- return 0
-}
-
-func (rcv *Monster) InventoryLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(14))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-func (rcv *Monster) InventoryBytes() []byte {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(14))
- if o != 0 {
- return rcv._tab.ByteVector(o + rcv._tab.Pos)
- }
- return nil
-}
-
-func (rcv *Monster) Color() int8 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(16))
- if o != 0 {
- return rcv._tab.GetInt8(o + rcv._tab.Pos)
- }
- return 8
-}
-
-func (rcv *Monster) MutateColor(n int8) bool {
- return rcv._tab.MutateInt8Slot(16, n)
-}
-
-func (rcv *Monster) TestType() byte {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(18))
- if o != 0 {
- return rcv._tab.GetByte(o + rcv._tab.Pos)
- }
- return 0
-}
-
-func (rcv *Monster) MutateTestType(n byte) bool {
- return rcv._tab.MutateByteSlot(18, n)
-}
-
-func (rcv *Monster) Test(obj *flatbuffers.Table) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(20))
- if o != 0 {
- rcv._tab.Union(obj, o)
- return true
- }
- return false
-}
-
-func (rcv *Monster) Test4(obj *Test, j int) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(22))
- if o != 0 {
- x := rcv._tab.Vector(o)
- x += flatbuffers.UOffsetT(j) * 4
- obj.Init(rcv._tab.Bytes, x)
- return true
- }
- return false
-}
-
-func (rcv *Monster) Test4Length() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(22))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-func (rcv *Monster) Testarrayofstring(j int) []byte {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(24))
- if o != 0 {
- a := rcv._tab.Vector(o)
- return rcv._tab.ByteVector(a + flatbuffers.UOffsetT(j*4))
- }
- return nil
-}
-
-func (rcv *Monster) TestarrayofstringLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(24))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-/// an example documentation comment: this will end up in the generated code
-/// multiline too
-func (rcv *Monster) Testarrayoftables(obj *Monster, j int) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(26))
- if o != 0 {
- x := rcv._tab.Vector(o)
- x += flatbuffers.UOffsetT(j) * 4
- x = rcv._tab.Indirect(x)
- obj.Init(rcv._tab.Bytes, x)
- return true
- }
- return false
-}
-
-func (rcv *Monster) TestarrayoftablesLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(26))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-/// an example documentation comment: this will end up in the generated code
-/// multiline too
-func (rcv *Monster) Enemy(obj *Monster) *Monster {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(28))
- if o != 0 {
- x := rcv._tab.Indirect(o + rcv._tab.Pos)
- if obj == nil {
- obj = new(Monster)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-func (rcv *Monster) Testnestedflatbuffer(j int) byte {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(30))
- if o != 0 {
- a := rcv._tab.Vector(o)
- return rcv._tab.GetByte(a + flatbuffers.UOffsetT(j*1))
- }
- return 0
-}
-
-func (rcv *Monster) TestnestedflatbufferLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(30))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-func (rcv *Monster) TestnestedflatbufferBytes() []byte {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(30))
- if o != 0 {
- return rcv._tab.ByteVector(o + rcv._tab.Pos)
- }
- return nil
-}
-
-func (rcv *Monster) Testempty(obj *Stat) *Stat {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(32))
- if o != 0 {
- x := rcv._tab.Indirect(o + rcv._tab.Pos)
- if obj == nil {
- obj = new(Stat)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-func (rcv *Monster) Testbool() byte {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(34))
- if o != 0 {
- return rcv._tab.GetByte(o + rcv._tab.Pos)
- }
- return 0
-}
-
-func (rcv *Monster) MutateTestbool(n byte) bool {
- return rcv._tab.MutateByteSlot(34, n)
-}
-
-func (rcv *Monster) Testhashs32Fnv1() int32 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(36))
- if o != 0 {
- return rcv._tab.GetInt32(o + rcv._tab.Pos)
- }
- return 0
-}
-
-func (rcv *Monster) MutateTesthashs32Fnv1(n int32) bool {
- return rcv._tab.MutateInt32Slot(36, n)
-}
-
-func (rcv *Monster) Testhashu32Fnv1() uint32 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(38))
- if o != 0 {
- return rcv._tab.GetUint32(o + rcv._tab.Pos)
- }
- return 0
-}
-
-func (rcv *Monster) MutateTesthashu32Fnv1(n uint32) bool {
- return rcv._tab.MutateUint32Slot(38, n)
-}
-
-func (rcv *Monster) Testhashs64Fnv1() int64 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(40))
- if o != 0 {
- return rcv._tab.GetInt64(o + rcv._tab.Pos)
- }
- return 0
-}
-
-func (rcv *Monster) MutateTesthashs64Fnv1(n int64) bool {
- return rcv._tab.MutateInt64Slot(40, n)
-}
-
-func (rcv *Monster) Testhashu64Fnv1() uint64 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(42))
- if o != 0 {
- return rcv._tab.GetUint64(o + rcv._tab.Pos)
- }
- return 0
-}
-
-func (rcv *Monster) MutateTesthashu64Fnv1(n uint64) bool {
- return rcv._tab.MutateUint64Slot(42, n)
-}
-
-func (rcv *Monster) Testhashs32Fnv1a() int32 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(44))
- if o != 0 {
- return rcv._tab.GetInt32(o + rcv._tab.Pos)
- }
- return 0
-}
-
-func (rcv *Monster) MutateTesthashs32Fnv1a(n int32) bool {
- return rcv._tab.MutateInt32Slot(44, n)
-}
-
-func (rcv *Monster) Testhashu32Fnv1a() uint32 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(46))
- if o != 0 {
- return rcv._tab.GetUint32(o + rcv._tab.Pos)
- }
- return 0
-}
-
-func (rcv *Monster) MutateTesthashu32Fnv1a(n uint32) bool {
- return rcv._tab.MutateUint32Slot(46, n)
-}
-
-func (rcv *Monster) Testhashs64Fnv1a() int64 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(48))
- if o != 0 {
- return rcv._tab.GetInt64(o + rcv._tab.Pos)
- }
- return 0
-}
-
-func (rcv *Monster) MutateTesthashs64Fnv1a(n int64) bool {
- return rcv._tab.MutateInt64Slot(48, n)
-}
-
-func (rcv *Monster) Testhashu64Fnv1a() uint64 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(50))
- if o != 0 {
- return rcv._tab.GetUint64(o + rcv._tab.Pos)
- }
- return 0
-}
-
-func (rcv *Monster) MutateTesthashu64Fnv1a(n uint64) bool {
- return rcv._tab.MutateUint64Slot(50, n)
-}
-
-func (rcv *Monster) Testarrayofbools(j int) byte {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(52))
- if o != 0 {
- a := rcv._tab.Vector(o)
- return rcv._tab.GetByte(a + flatbuffers.UOffsetT(j*1))
- }
- return 0
-}
-
-func (rcv *Monster) TestarrayofboolsLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(52))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-func (rcv *Monster) Testf() float32 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(54))
- if o != 0 {
- return rcv._tab.GetFloat32(o + rcv._tab.Pos)
- }
- return 3.14159
-}
-
-func (rcv *Monster) MutateTestf(n float32) bool {
- return rcv._tab.MutateFloat32Slot(54, n)
-}
-
-func (rcv *Monster) Testf2() float32 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(56))
- if o != 0 {
- return rcv._tab.GetFloat32(o + rcv._tab.Pos)
- }
- return 3.0
-}
-
-func (rcv *Monster) MutateTestf2(n float32) bool {
- return rcv._tab.MutateFloat32Slot(56, n)
-}
-
-func (rcv *Monster) Testf3() float32 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(58))
- if o != 0 {
- return rcv._tab.GetFloat32(o + rcv._tab.Pos)
- }
- return 0.0
-}
-
-func (rcv *Monster) MutateTestf3(n float32) bool {
- return rcv._tab.MutateFloat32Slot(58, n)
-}
-
-func (rcv *Monster) Testarrayofstring2(j int) []byte {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(60))
- if o != 0 {
- a := rcv._tab.Vector(o)
- return rcv._tab.ByteVector(a + flatbuffers.UOffsetT(j*4))
- }
- return nil
-}
-
-func (rcv *Monster) Testarrayofstring2Length() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(60))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-func (rcv *Monster) Testarrayofsortedstruct(obj *Ability, j int) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(62))
- if o != 0 {
- x := rcv._tab.Vector(o)
- x += flatbuffers.UOffsetT(j) * 8
- obj.Init(rcv._tab.Bytes, x)
- return true
- }
- return false
-}
-
-func (rcv *Monster) TestarrayofsortedstructLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(62))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-func MonsterStart(builder *flatbuffers.Builder) {
- builder.StartObject(30)
-}
-func MonsterAddPos(builder *flatbuffers.Builder, pos flatbuffers.UOffsetT) {
- builder.PrependStructSlot(0, flatbuffers.UOffsetT(pos), 0)
-}
-func MonsterAddMana(builder *flatbuffers.Builder, mana int16) {
- builder.PrependInt16Slot(1, mana, 150)
-}
-func MonsterAddHp(builder *flatbuffers.Builder, hp int16) {
- builder.PrependInt16Slot(2, hp, 100)
-}
-func MonsterAddName(builder *flatbuffers.Builder, name flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(3, flatbuffers.UOffsetT(name), 0)
-}
-func MonsterAddInventory(builder *flatbuffers.Builder, inventory flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(5, flatbuffers.UOffsetT(inventory), 0)
-}
-func MonsterStartInventoryVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(1, numElems, 1)
-}
-func MonsterAddColor(builder *flatbuffers.Builder, color int8) {
- builder.PrependInt8Slot(6, color, 8)
-}
-func MonsterAddTestType(builder *flatbuffers.Builder, testType byte) {
- builder.PrependByteSlot(7, testType, 0)
-}
-func MonsterAddTest(builder *flatbuffers.Builder, test flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(8, flatbuffers.UOffsetT(test), 0)
-}
-func MonsterAddTest4(builder *flatbuffers.Builder, test4 flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(9, flatbuffers.UOffsetT(test4), 0)
-}
-func MonsterStartTest4Vector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(4, numElems, 2)
-}
-func MonsterAddTestarrayofstring(builder *flatbuffers.Builder, testarrayofstring flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(10, flatbuffers.UOffsetT(testarrayofstring), 0)
-}
-func MonsterStartTestarrayofstringVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(4, numElems, 4)
-}
-func MonsterAddTestarrayoftables(builder *flatbuffers.Builder, testarrayoftables flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(11, flatbuffers.UOffsetT(testarrayoftables), 0)
-}
-func MonsterStartTestarrayoftablesVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(4, numElems, 4)
-}
-func MonsterAddEnemy(builder *flatbuffers.Builder, enemy flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(12, flatbuffers.UOffsetT(enemy), 0)
-}
-func MonsterAddTestnestedflatbuffer(builder *flatbuffers.Builder, testnestedflatbuffer flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(13, flatbuffers.UOffsetT(testnestedflatbuffer), 0)
-}
-func MonsterStartTestnestedflatbufferVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(1, numElems, 1)
-}
-func MonsterAddTestempty(builder *flatbuffers.Builder, testempty flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(14, flatbuffers.UOffsetT(testempty), 0)
-}
-func MonsterAddTestbool(builder *flatbuffers.Builder, testbool byte) {
- builder.PrependByteSlot(15, testbool, 0)
-}
-func MonsterAddTesthashs32Fnv1(builder *flatbuffers.Builder, testhashs32Fnv1 int32) {
- builder.PrependInt32Slot(16, testhashs32Fnv1, 0)
-}
-func MonsterAddTesthashu32Fnv1(builder *flatbuffers.Builder, testhashu32Fnv1 uint32) {
- builder.PrependUint32Slot(17, testhashu32Fnv1, 0)
-}
-func MonsterAddTesthashs64Fnv1(builder *flatbuffers.Builder, testhashs64Fnv1 int64) {
- builder.PrependInt64Slot(18, testhashs64Fnv1, 0)
-}
-func MonsterAddTesthashu64Fnv1(builder *flatbuffers.Builder, testhashu64Fnv1 uint64) {
- builder.PrependUint64Slot(19, testhashu64Fnv1, 0)
-}
-func MonsterAddTesthashs32Fnv1a(builder *flatbuffers.Builder, testhashs32Fnv1a int32) {
- builder.PrependInt32Slot(20, testhashs32Fnv1a, 0)
-}
-func MonsterAddTesthashu32Fnv1a(builder *flatbuffers.Builder, testhashu32Fnv1a uint32) {
- builder.PrependUint32Slot(21, testhashu32Fnv1a, 0)
-}
-func MonsterAddTesthashs64Fnv1a(builder *flatbuffers.Builder, testhashs64Fnv1a int64) {
- builder.PrependInt64Slot(22, testhashs64Fnv1a, 0)
-}
-func MonsterAddTesthashu64Fnv1a(builder *flatbuffers.Builder, testhashu64Fnv1a uint64) {
- builder.PrependUint64Slot(23, testhashu64Fnv1a, 0)
-}
-func MonsterAddTestarrayofbools(builder *flatbuffers.Builder, testarrayofbools flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(24, flatbuffers.UOffsetT(testarrayofbools), 0)
-}
-func MonsterStartTestarrayofboolsVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(1, numElems, 1)
-}
-func MonsterAddTestf(builder *flatbuffers.Builder, testf float32) {
- builder.PrependFloat32Slot(25, testf, 3.14159)
-}
-func MonsterAddTestf2(builder *flatbuffers.Builder, testf2 float32) {
- builder.PrependFloat32Slot(26, testf2, 3.0)
-}
-func MonsterAddTestf3(builder *flatbuffers.Builder, testf3 float32) {
- builder.PrependFloat32Slot(27, testf3, 0.0)
-}
-func MonsterAddTestarrayofstring2(builder *flatbuffers.Builder, testarrayofstring2 flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(28, flatbuffers.UOffsetT(testarrayofstring2), 0)
-}
-func MonsterStartTestarrayofstring2Vector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(4, numElems, 4)
-}
-func MonsterAddTestarrayofsortedstruct(builder *flatbuffers.Builder, testarrayofsortedstruct flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(29, flatbuffers.UOffsetT(testarrayofsortedstruct), 0)
-}
-func MonsterStartTestarrayofsortedstructVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(8, numElems, 4)
-}
-func MonsterEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Monster.java b/third_party/flatbuffers/tests/MyGame/Example/Monster.java
deleted file mode 100644
index 5bde80a..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Monster.java
+++ /dev/null
@@ -1,171 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package MyGame.Example;
-
-import java.nio.*;
-import java.lang.*;
-import java.util.*;
-import com.google.flatbuffers.*;
-
-@SuppressWarnings("unused")
-/**
- * an example documentation comment: monster object
- */
-public final class Monster extends Table {
- public static Monster getRootAsMonster(ByteBuffer _bb) { return getRootAsMonster(_bb, new Monster()); }
- public static Monster getRootAsMonster(ByteBuffer _bb, Monster obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
- public static boolean MonsterBufferHasIdentifier(ByteBuffer _bb) { return __has_identifier(_bb, "MONS"); }
- public void __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; }
- public Monster __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public Vec3 pos() { return pos(new Vec3()); }
- public Vec3 pos(Vec3 obj) { int o = __offset(4); return o != 0 ? obj.__assign(o + bb_pos, bb) : null; }
- public short mana() { int o = __offset(6); return o != 0 ? bb.getShort(o + bb_pos) : 150; }
- public boolean mutateMana(short mana) { int o = __offset(6); if (o != 0) { bb.putShort(o + bb_pos, mana); return true; } else { return false; } }
- public short hp() { int o = __offset(8); return o != 0 ? bb.getShort(o + bb_pos) : 100; }
- public boolean mutateHp(short hp) { int o = __offset(8); if (o != 0) { bb.putShort(o + bb_pos, hp); return true; } else { return false; } }
- public String name() { int o = __offset(10); return o != 0 ? __string(o + bb_pos) : null; }
- public ByteBuffer nameAsByteBuffer() { return __vector_as_bytebuffer(10, 1); }
- public int inventory(int j) { int o = __offset(14); return o != 0 ? bb.get(__vector(o) + j * 1) & 0xFF : 0; }
- public int inventoryLength() { int o = __offset(14); return o != 0 ? __vector_len(o) : 0; }
- public ByteBuffer inventoryAsByteBuffer() { return __vector_as_bytebuffer(14, 1); }
- public boolean mutateInventory(int j, int inventory) { int o = __offset(14); if (o != 0) { bb.put(__vector(o) + j * 1, (byte)inventory); return true; } else { return false; } }
- public byte color() { int o = __offset(16); return o != 0 ? bb.get(o + bb_pos) : 8; }
- public boolean mutateColor(byte color) { int o = __offset(16); if (o != 0) { bb.put(o + bb_pos, color); return true; } else { return false; } }
- public byte testType() { int o = __offset(18); return o != 0 ? bb.get(o + bb_pos) : 0; }
- public boolean mutateTestType(byte test_type) { int o = __offset(18); if (o != 0) { bb.put(o + bb_pos, test_type); return true; } else { return false; } }
- public Table test(Table obj) { int o = __offset(20); return o != 0 ? __union(obj, o) : null; }
- public Test test4(int j) { return test4(new Test(), j); }
- public Test test4(Test obj, int j) { int o = __offset(22); return o != 0 ? obj.__assign(__vector(o) + j * 4, bb) : null; }
- public int test4Length() { int o = __offset(22); return o != 0 ? __vector_len(o) : 0; }
- public String testarrayofstring(int j) { int o = __offset(24); return o != 0 ? __string(__vector(o) + j * 4) : null; }
- public int testarrayofstringLength() { int o = __offset(24); return o != 0 ? __vector_len(o) : 0; }
- /**
- * an example documentation comment: this will end up in the generated code
- * multiline too
- */
- public Monster testarrayoftables(int j) { return testarrayoftables(new Monster(), j); }
- public Monster testarrayoftables(Monster obj, int j) { int o = __offset(26); return o != 0 ? obj.__assign(__indirect(__vector(o) + j * 4), bb) : null; }
- public int testarrayoftablesLength() { int o = __offset(26); return o != 0 ? __vector_len(o) : 0; }
- public Monster enemy() { return enemy(new Monster()); }
- public Monster enemy(Monster obj) { int o = __offset(28); return o != 0 ? obj.__assign(__indirect(o + bb_pos), bb) : null; }
- public int testnestedflatbuffer(int j) { int o = __offset(30); return o != 0 ? bb.get(__vector(o) + j * 1) & 0xFF : 0; }
- public int testnestedflatbufferLength() { int o = __offset(30); return o != 0 ? __vector_len(o) : 0; }
- public ByteBuffer testnestedflatbufferAsByteBuffer() { return __vector_as_bytebuffer(30, 1); }
- public Monster testnestedflatbufferAsMonster() { return testnestedflatbufferAsMonster(new Monster()); }
- public Monster testnestedflatbufferAsMonster(Monster obj) { int o = __offset(30); return o != 0 ? obj.__assign(__indirect(__vector(o)), bb) : null; }
- public boolean mutateTestnestedflatbuffer(int j, int testnestedflatbuffer) { int o = __offset(30); if (o != 0) { bb.put(__vector(o) + j * 1, (byte)testnestedflatbuffer); return true; } else { return false; } }
- public Stat testempty() { return testempty(new Stat()); }
- public Stat testempty(Stat obj) { int o = __offset(32); return o != 0 ? obj.__assign(__indirect(o + bb_pos), bb) : null; }
- public boolean testbool() { int o = __offset(34); return o != 0 ? 0!=bb.get(o + bb_pos) : false; }
- public boolean mutateTestbool(boolean testbool) { int o = __offset(34); if (o != 0) { bb.put(o + bb_pos, (byte)(testbool ? 1 : 0)); return true; } else { return false; } }
- public int testhashs32Fnv1() { int o = __offset(36); return o != 0 ? bb.getInt(o + bb_pos) : 0; }
- public boolean mutateTesthashs32Fnv1(int testhashs32_fnv1) { int o = __offset(36); if (o != 0) { bb.putInt(o + bb_pos, testhashs32_fnv1); return true; } else { return false; } }
- public long testhashu32Fnv1() { int o = __offset(38); return o != 0 ? (long)bb.getInt(o + bb_pos) & 0xFFFFFFFFL : 0L; }
- public boolean mutateTesthashu32Fnv1(long testhashu32_fnv1) { int o = __offset(38); if (o != 0) { bb.putInt(o + bb_pos, (int)testhashu32_fnv1); return true; } else { return false; } }
- public long testhashs64Fnv1() { int o = __offset(40); return o != 0 ? bb.getLong(o + bb_pos) : 0L; }
- public boolean mutateTesthashs64Fnv1(long testhashs64_fnv1) { int o = __offset(40); if (o != 0) { bb.putLong(o + bb_pos, testhashs64_fnv1); return true; } else { return false; } }
- public long testhashu64Fnv1() { int o = __offset(42); return o != 0 ? bb.getLong(o + bb_pos) : 0L; }
- public boolean mutateTesthashu64Fnv1(long testhashu64_fnv1) { int o = __offset(42); if (o != 0) { bb.putLong(o + bb_pos, testhashu64_fnv1); return true; } else { return false; } }
- public int testhashs32Fnv1a() { int o = __offset(44); return o != 0 ? bb.getInt(o + bb_pos) : 0; }
- public boolean mutateTesthashs32Fnv1a(int testhashs32_fnv1a) { int o = __offset(44); if (o != 0) { bb.putInt(o + bb_pos, testhashs32_fnv1a); return true; } else { return false; } }
- public long testhashu32Fnv1a() { int o = __offset(46); return o != 0 ? (long)bb.getInt(o + bb_pos) & 0xFFFFFFFFL : 0L; }
- public boolean mutateTesthashu32Fnv1a(long testhashu32_fnv1a) { int o = __offset(46); if (o != 0) { bb.putInt(o + bb_pos, (int)testhashu32_fnv1a); return true; } else { return false; } }
- public long testhashs64Fnv1a() { int o = __offset(48); return o != 0 ? bb.getLong(o + bb_pos) : 0L; }
- public boolean mutateTesthashs64Fnv1a(long testhashs64_fnv1a) { int o = __offset(48); if (o != 0) { bb.putLong(o + bb_pos, testhashs64_fnv1a); return true; } else { return false; } }
- public long testhashu64Fnv1a() { int o = __offset(50); return o != 0 ? bb.getLong(o + bb_pos) : 0L; }
- public boolean mutateTesthashu64Fnv1a(long testhashu64_fnv1a) { int o = __offset(50); if (o != 0) { bb.putLong(o + bb_pos, testhashu64_fnv1a); return true; } else { return false; } }
- public boolean testarrayofbools(int j) { int o = __offset(52); return o != 0 ? 0!=bb.get(__vector(o) + j * 1) : false; }
- public int testarrayofboolsLength() { int o = __offset(52); return o != 0 ? __vector_len(o) : 0; }
- public ByteBuffer testarrayofboolsAsByteBuffer() { return __vector_as_bytebuffer(52, 1); }
- public boolean mutateTestarrayofbools(int j, boolean testarrayofbools) { int o = __offset(52); if (o != 0) { bb.put(__vector(o) + j * 1, (byte)(testarrayofbools ? 1 : 0)); return true; } else { return false; } }
- public float testf() { int o = __offset(54); return o != 0 ? bb.getFloat(o + bb_pos) : 3.14159f; }
- public boolean mutateTestf(float testf) { int o = __offset(54); if (o != 0) { bb.putFloat(o + bb_pos, testf); return true; } else { return false; } }
- public float testf2() { int o = __offset(56); return o != 0 ? bb.getFloat(o + bb_pos) : 3.0f; }
- public boolean mutateTestf2(float testf2) { int o = __offset(56); if (o != 0) { bb.putFloat(o + bb_pos, testf2); return true; } else { return false; } }
- public float testf3() { int o = __offset(58); return o != 0 ? bb.getFloat(o + bb_pos) : 0.0f; }
- public boolean mutateTestf3(float testf3) { int o = __offset(58); if (o != 0) { bb.putFloat(o + bb_pos, testf3); return true; } else { return false; } }
- public String testarrayofstring2(int j) { int o = __offset(60); return o != 0 ? __string(__vector(o) + j * 4) : null; }
- public int testarrayofstring2Length() { int o = __offset(60); return o != 0 ? __vector_len(o) : 0; }
- public Ability testarrayofsortedstruct(int j) { return testarrayofsortedstruct(new Ability(), j); }
- public Ability testarrayofsortedstruct(Ability obj, int j) { int o = __offset(62); return o != 0 ? obj.__assign(__vector(o) + j * 8, bb) : null; }
- public int testarrayofsortedstructLength() { int o = __offset(62); return o != 0 ? __vector_len(o) : 0; }
-
- public static void startMonster(FlatBufferBuilder builder) { builder.startObject(30); }
- public static void addPos(FlatBufferBuilder builder, int posOffset) { builder.addStruct(0, posOffset, 0); }
- public static void addMana(FlatBufferBuilder builder, short mana) { builder.addShort(1, mana, 150); }
- public static void addHp(FlatBufferBuilder builder, short hp) { builder.addShort(2, hp, 100); }
- public static void addName(FlatBufferBuilder builder, int nameOffset) { builder.addOffset(3, nameOffset, 0); }
- public static void addInventory(FlatBufferBuilder builder, int inventoryOffset) { builder.addOffset(5, inventoryOffset, 0); }
- public static int createInventoryVector(FlatBufferBuilder builder, byte[] data) { builder.startVector(1, data.length, 1); for (int i = data.length - 1; i >= 0; i--) builder.addByte(data[i]); return builder.endVector(); }
- public static void startInventoryVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); }
- public static void addColor(FlatBufferBuilder builder, byte color) { builder.addByte(6, color, 8); }
- public static void addTestType(FlatBufferBuilder builder, byte testType) { builder.addByte(7, testType, 0); }
- public static void addTest(FlatBufferBuilder builder, int testOffset) { builder.addOffset(8, testOffset, 0); }
- public static void addTest4(FlatBufferBuilder builder, int test4Offset) { builder.addOffset(9, test4Offset, 0); }
- public static void startTest4Vector(FlatBufferBuilder builder, int numElems) { builder.startVector(4, numElems, 2); }
- public static void addTestarrayofstring(FlatBufferBuilder builder, int testarrayofstringOffset) { builder.addOffset(10, testarrayofstringOffset, 0); }
- public static int createTestarrayofstringVector(FlatBufferBuilder builder, int[] data) { builder.startVector(4, data.length, 4); for (int i = data.length - 1; i >= 0; i--) builder.addOffset(data[i]); return builder.endVector(); }
- public static void startTestarrayofstringVector(FlatBufferBuilder builder, int numElems) { builder.startVector(4, numElems, 4); }
- public static void addTestarrayoftables(FlatBufferBuilder builder, int testarrayoftablesOffset) { builder.addOffset(11, testarrayoftablesOffset, 0); }
- public static int createTestarrayoftablesVector(FlatBufferBuilder builder, int[] data) { builder.startVector(4, data.length, 4); for (int i = data.length - 1; i >= 0; i--) builder.addOffset(data[i]); return builder.endVector(); }
- public static void startTestarrayoftablesVector(FlatBufferBuilder builder, int numElems) { builder.startVector(4, numElems, 4); }
- public static void addEnemy(FlatBufferBuilder builder, int enemyOffset) { builder.addOffset(12, enemyOffset, 0); }
- public static void addTestnestedflatbuffer(FlatBufferBuilder builder, int testnestedflatbufferOffset) { builder.addOffset(13, testnestedflatbufferOffset, 0); }
- public static int createTestnestedflatbufferVector(FlatBufferBuilder builder, byte[] data) { builder.startVector(1, data.length, 1); for (int i = data.length - 1; i >= 0; i--) builder.addByte(data[i]); return builder.endVector(); }
- public static void startTestnestedflatbufferVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); }
- public static void addTestempty(FlatBufferBuilder builder, int testemptyOffset) { builder.addOffset(14, testemptyOffset, 0); }
- public static void addTestbool(FlatBufferBuilder builder, boolean testbool) { builder.addBoolean(15, testbool, false); }
- public static void addTesthashs32Fnv1(FlatBufferBuilder builder, int testhashs32Fnv1) { builder.addInt(16, testhashs32Fnv1, 0); }
- public static void addTesthashu32Fnv1(FlatBufferBuilder builder, long testhashu32Fnv1) { builder.addInt(17, (int)testhashu32Fnv1, (int)0L); }
- public static void addTesthashs64Fnv1(FlatBufferBuilder builder, long testhashs64Fnv1) { builder.addLong(18, testhashs64Fnv1, 0L); }
- public static void addTesthashu64Fnv1(FlatBufferBuilder builder, long testhashu64Fnv1) { builder.addLong(19, testhashu64Fnv1, 0L); }
- public static void addTesthashs32Fnv1a(FlatBufferBuilder builder, int testhashs32Fnv1a) { builder.addInt(20, testhashs32Fnv1a, 0); }
- public static void addTesthashu32Fnv1a(FlatBufferBuilder builder, long testhashu32Fnv1a) { builder.addInt(21, (int)testhashu32Fnv1a, (int)0L); }
- public static void addTesthashs64Fnv1a(FlatBufferBuilder builder, long testhashs64Fnv1a) { builder.addLong(22, testhashs64Fnv1a, 0L); }
- public static void addTesthashu64Fnv1a(FlatBufferBuilder builder, long testhashu64Fnv1a) { builder.addLong(23, testhashu64Fnv1a, 0L); }
- public static void addTestarrayofbools(FlatBufferBuilder builder, int testarrayofboolsOffset) { builder.addOffset(24, testarrayofboolsOffset, 0); }
- public static int createTestarrayofboolsVector(FlatBufferBuilder builder, boolean[] data) { builder.startVector(1, data.length, 1); for (int i = data.length - 1; i >= 0; i--) builder.addBoolean(data[i]); return builder.endVector(); }
- public static void startTestarrayofboolsVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); }
- public static void addTestf(FlatBufferBuilder builder, float testf) { builder.addFloat(25, testf, 3.14159f); }
- public static void addTestf2(FlatBufferBuilder builder, float testf2) { builder.addFloat(26, testf2, 3.0f); }
- public static void addTestf3(FlatBufferBuilder builder, float testf3) { builder.addFloat(27, testf3, 0.0f); }
- public static void addTestarrayofstring2(FlatBufferBuilder builder, int testarrayofstring2Offset) { builder.addOffset(28, testarrayofstring2Offset, 0); }
- public static int createTestarrayofstring2Vector(FlatBufferBuilder builder, int[] data) { builder.startVector(4, data.length, 4); for (int i = data.length - 1; i >= 0; i--) builder.addOffset(data[i]); return builder.endVector(); }
- public static void startTestarrayofstring2Vector(FlatBufferBuilder builder, int numElems) { builder.startVector(4, numElems, 4); }
- public static void addTestarrayofsortedstruct(FlatBufferBuilder builder, int testarrayofsortedstructOffset) { builder.addOffset(29, testarrayofsortedstructOffset, 0); }
- public static void startTestarrayofsortedstructVector(FlatBufferBuilder builder, int numElems) { builder.startVector(8, numElems, 4); }
- public static int endMonster(FlatBufferBuilder builder) {
- int o = builder.endObject();
- builder.required(o, 10); // name
- return o;
- }
- public static void finishMonsterBuffer(FlatBufferBuilder builder, int offset) { builder.finish(offset, "MONS"); }
-
- @Override
- protected int keysCompare(Integer o1, Integer o2, ByteBuffer _bb) { return compareStrings(__offset(10, o1, _bb), __offset(10, o2, _bb), _bb); }
-
- public static Monster lookupByKey(int vectorOffset, String key, ByteBuffer bb) {
- byte[] byteKey = key.getBytes(Table.UTF8_CHARSET.get());
- int vectorLocation = bb.array().length - vectorOffset;
- int span = bb.getInt(vectorLocation);
- int start = 0;
- vectorLocation += 4;
- while (span != 0) {
- int middle = span / 2;
- int tableOffset = __indirect(vectorLocation + 4 * (start + middle), bb);
- int comp = compareStrings(__offset(10, bb.array().length - tableOffset, bb), byteKey, bb);
- if (comp > 0) {
- span = middle;
- } else if (comp < 0) {
- middle++;
- start += middle;
- span -= middle;
- } else {
- return new Monster().__assign(tableOffset, bb);
- }
- }
- return null;
- }
-}
-
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Monster.php b/third_party/flatbuffers/tests/MyGame/Example/Monster.php
deleted file mode 100644
index a866870..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Monster.php
+++ /dev/null
@@ -1,943 +0,0 @@
-<?php
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace MyGame\Example;
-
-use \Google\FlatBuffers\Struct;
-use \Google\FlatBuffers\Table;
-use \Google\FlatBuffers\ByteBuffer;
-use \Google\FlatBuffers\FlatBufferBuilder;
-
-/// an example documentation comment: monster object
-class Monster extends Table
-{
- /**
- * @param ByteBuffer $bb
- * @return Monster
- */
- public static function getRootAsMonster(ByteBuffer $bb)
- {
- $obj = new Monster();
- return ($obj->init($bb->getInt($bb->getPosition()) + $bb->getPosition(), $bb));
- }
-
- public static function MonsterIdentifier()
- {
- return "MONS";
- }
-
- public static function MonsterBufferHasIdentifier(ByteBuffer $buf)
- {
- return self::__has_identifier($buf, self::MonsterIdentifier());
- }
-
- public static function MonsterExtension()
- {
- return "mon";
- }
-
- /**
- * @param int $_i offset
- * @param ByteBuffer $_bb
- * @return Monster
- **/
- public function init($_i, ByteBuffer $_bb)
- {
- $this->bb_pos = $_i;
- $this->bb = $_bb;
- return $this;
- }
-
- public function getPos()
- {
- $obj = new Vec3();
- $o = $this->__offset(4);
- return $o != 0 ? $obj->init($o + $this->bb_pos, $this->bb) : 0;
- }
-
- /**
- * @return short
- */
- public function getMana()
- {
- $o = $this->__offset(6);
- return $o != 0 ? $this->bb->getShort($o + $this->bb_pos) : 150;
- }
-
- /**
- * @return short
- */
- public function getHp()
- {
- $o = $this->__offset(8);
- return $o != 0 ? $this->bb->getShort($o + $this->bb_pos) : 100;
- }
-
- public function getName()
- {
- $o = $this->__offset(10);
- return $o != 0 ? $this->__string($o + $this->bb_pos) : null;
- }
-
- /**
- * @param int offset
- * @return byte
- */
- public function getInventory($j)
- {
- $o = $this->__offset(14);
- return $o != 0 ? $this->bb->getByte($this->__vector($o) + $j * 1) : 0;
- }
-
- /**
- * @return int
- */
- public function getInventoryLength()
- {
- $o = $this->__offset(14);
- return $o != 0 ? $this->__vector_len($o) : 0;
- }
-
- /**
- * @return string
- */
- public function getInventoryBytes()
- {
- return $this->__vector_as_bytes(14);
- }
-
- /**
- * @return sbyte
- */
- public function getColor()
- {
- $o = $this->__offset(16);
- return $o != 0 ? $this->bb->getSbyte($o + $this->bb_pos) : \MyGame\Example\Color::Blue;
- }
-
- /**
- * @return byte
- */
- public function getTestType()
- {
- $o = $this->__offset(18);
- return $o != 0 ? $this->bb->getByte($o + $this->bb_pos) : \MyGame\Example\Any::NONE;
- }
-
- /**
- * @returnint
- */
- public function getTest($obj)
- {
- $o = $this->__offset(20);
- return $o != 0 ? $this->__union($obj, $o) : null;
- }
-
- /**
- * @returnVectorOffset
- */
- public function getTest4($j)
- {
- $o = $this->__offset(22);
- $obj = new Test();
- return $o != 0 ? $obj->init($this->__vector($o) + $j *4, $this->bb) : null;
- }
-
- /**
- * @return int
- */
- public function getTest4Length()
- {
- $o = $this->__offset(22);
- return $o != 0 ? $this->__vector_len($o) : 0;
- }
-
- /**
- * @param int offset
- * @return string
- */
- public function getTestarrayofstring($j)
- {
- $o = $this->__offset(24);
- return $o != 0 ? $this->__string($this->__vector($o) + $j * 4) : 0;
- }
-
- /**
- * @return int
- */
- public function getTestarrayofstringLength()
- {
- $o = $this->__offset(24);
- return $o != 0 ? $this->__vector_len($o) : 0;
- }
-
-/// an example documentation comment: this will end up in the generated code
-/// multiline too
- /**
- * @returnVectorOffset
- */
- public function getTestarrayoftables($j)
- {
- $o = $this->__offset(26);
- $obj = new Monster();
- return $o != 0 ? $obj->init($this->__indirect($this->__vector($o) + $j * 4), $this->bb) : null;
- }
-
- /**
- * @return int
- */
- public function getTestarrayoftablesLength()
- {
- $o = $this->__offset(26);
- return $o != 0 ? $this->__vector_len($o) : 0;
- }
-
- public function getEnemy()
- {
- $obj = new Monster();
- $o = $this->__offset(28);
- return $o != 0 ? $obj->init($this->__indirect($o + $this->bb_pos), $this->bb) : 0;
- }
-
- /**
- * @param int offset
- * @return byte
- */
- public function getTestnestedflatbuffer($j)
- {
- $o = $this->__offset(30);
- return $o != 0 ? $this->bb->getByte($this->__vector($o) + $j * 1) : 0;
- }
-
- /**
- * @return int
- */
- public function getTestnestedflatbufferLength()
- {
- $o = $this->__offset(30);
- return $o != 0 ? $this->__vector_len($o) : 0;
- }
-
- /**
- * @return string
- */
- public function getTestnestedflatbufferBytes()
- {
- return $this->__vector_as_bytes(30);
- }
-
- public function getTestempty()
- {
- $obj = new Stat();
- $o = $this->__offset(32);
- return $o != 0 ? $obj->init($this->__indirect($o + $this->bb_pos), $this->bb) : 0;
- }
-
- /**
- * @return bool
- */
- public function getTestbool()
- {
- $o = $this->__offset(34);
- return $o != 0 ? $this->bb->getBool($o + $this->bb_pos) : false;
- }
-
- /**
- * @return int
- */
- public function getTesthashs32Fnv1()
- {
- $o = $this->__offset(36);
- return $o != 0 ? $this->bb->getInt($o + $this->bb_pos) : 0;
- }
-
- /**
- * @return uint
- */
- public function getTesthashu32Fnv1()
- {
- $o = $this->__offset(38);
- return $o != 0 ? $this->bb->getUint($o + $this->bb_pos) : 0;
- }
-
- /**
- * @return long
- */
- public function getTesthashs64Fnv1()
- {
- $o = $this->__offset(40);
- return $o != 0 ? $this->bb->getLong($o + $this->bb_pos) : 0;
- }
-
- /**
- * @return ulong
- */
- public function getTesthashu64Fnv1()
- {
- $o = $this->__offset(42);
- return $o != 0 ? $this->bb->getUlong($o + $this->bb_pos) : 0;
- }
-
- /**
- * @return int
- */
- public function getTesthashs32Fnv1a()
- {
- $o = $this->__offset(44);
- return $o != 0 ? $this->bb->getInt($o + $this->bb_pos) : 0;
- }
-
- /**
- * @return uint
- */
- public function getTesthashu32Fnv1a()
- {
- $o = $this->__offset(46);
- return $o != 0 ? $this->bb->getUint($o + $this->bb_pos) : 0;
- }
-
- /**
- * @return long
- */
- public function getTesthashs64Fnv1a()
- {
- $o = $this->__offset(48);
- return $o != 0 ? $this->bb->getLong($o + $this->bb_pos) : 0;
- }
-
- /**
- * @return ulong
- */
- public function getTesthashu64Fnv1a()
- {
- $o = $this->__offset(50);
- return $o != 0 ? $this->bb->getUlong($o + $this->bb_pos) : 0;
- }
-
- /**
- * @param int offset
- * @return bool
- */
- public function getTestarrayofbools($j)
- {
- $o = $this->__offset(52);
- return $o != 0 ? $this->bb->getBool($this->__vector($o) + $j * 1) : 0;
- }
-
- /**
- * @return int
- */
- public function getTestarrayofboolsLength()
- {
- $o = $this->__offset(52);
- return $o != 0 ? $this->__vector_len($o) : 0;
- }
-
- /**
- * @return float
- */
- public function getTestf()
- {
- $o = $this->__offset(54);
- return $o != 0 ? $this->bb->getFloat($o + $this->bb_pos) : 3.14159;
- }
-
- /**
- * @return float
- */
- public function getTestf2()
- {
- $o = $this->__offset(56);
- return $o != 0 ? $this->bb->getFloat($o + $this->bb_pos) : 3.0;
- }
-
- /**
- * @return float
- */
- public function getTestf3()
- {
- $o = $this->__offset(58);
- return $o != 0 ? $this->bb->getFloat($o + $this->bb_pos) : 0.0;
- }
-
- /**
- * @param int offset
- * @return string
- */
- public function getTestarrayofstring2($j)
- {
- $o = $this->__offset(60);
- return $o != 0 ? $this->__string($this->__vector($o) + $j * 4) : 0;
- }
-
- /**
- * @return int
- */
- public function getTestarrayofstring2Length()
- {
- $o = $this->__offset(60);
- return $o != 0 ? $this->__vector_len($o) : 0;
- }
-
- /**
- * @returnVectorOffset
- */
- public function getTestarrayofsortedstruct($j)
- {
- $o = $this->__offset(62);
- $obj = new Ability();
- return $o != 0 ? $obj->init($this->__vector($o) + $j *8, $this->bb) : null;
- }
-
- /**
- * @return int
- */
- public function getTestarrayofsortedstructLength()
- {
- $o = $this->__offset(62);
- return $o != 0 ? $this->__vector_len($o) : 0;
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return void
- */
- public static function startMonster(FlatBufferBuilder $builder)
- {
- $builder->StartObject(30);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return Monster
- */
- public static function createMonster(FlatBufferBuilder $builder, $pos, $mana, $hp, $name, $inventory, $color, $test_type, $test, $test4, $testarrayofstring, $testarrayoftables, $enemy, $testnestedflatbuffer, $testempty, $testbool, $testhashs32_fnv1, $testhashu32_fnv1, $testhashs64_fnv1, $testhashu64_fnv1, $testhashs32_fnv1a, $testhashu32_fnv1a, $testhashs64_fnv1a, $testhashu64_fnv1a, $testarrayofbools, $testf, $testf2, $testf3, $testarrayofstring2, $testarrayofsortedstruct)
- {
- $builder->startObject(30);
- self::addPos($builder, $pos);
- self::addMana($builder, $mana);
- self::addHp($builder, $hp);
- self::addName($builder, $name);
- self::addInventory($builder, $inventory);
- self::addColor($builder, $color);
- self::addTestType($builder, $test_type);
- self::addTest($builder, $test);
- self::addTest4($builder, $test4);
- self::addTestarrayofstring($builder, $testarrayofstring);
- self::addTestarrayoftables($builder, $testarrayoftables);
- self::addEnemy($builder, $enemy);
- self::addTestnestedflatbuffer($builder, $testnestedflatbuffer);
- self::addTestempty($builder, $testempty);
- self::addTestbool($builder, $testbool);
- self::addTesthashs32Fnv1($builder, $testhashs32_fnv1);
- self::addTesthashu32Fnv1($builder, $testhashu32_fnv1);
- self::addTesthashs64Fnv1($builder, $testhashs64_fnv1);
- self::addTesthashu64Fnv1($builder, $testhashu64_fnv1);
- self::addTesthashs32Fnv1a($builder, $testhashs32_fnv1a);
- self::addTesthashu32Fnv1a($builder, $testhashu32_fnv1a);
- self::addTesthashs64Fnv1a($builder, $testhashs64_fnv1a);
- self::addTesthashu64Fnv1a($builder, $testhashu64_fnv1a);
- self::addTestarrayofbools($builder, $testarrayofbools);
- self::addTestf($builder, $testf);
- self::addTestf2($builder, $testf2);
- self::addTestf3($builder, $testf3);
- self::addTestarrayofstring2($builder, $testarrayofstring2);
- self::addTestarrayofsortedstruct($builder, $testarrayofsortedstruct);
- $o = $builder->endObject();
- $builder->required($o, 10); // name
- return $o;
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param int
- * @return void
- */
- public static function addPos(FlatBufferBuilder $builder, $pos)
- {
- $builder->addStructX(0, $pos, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param short
- * @return void
- */
- public static function addMana(FlatBufferBuilder $builder, $mana)
- {
- $builder->addShortX(1, $mana, 150);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param short
- * @return void
- */
- public static function addHp(FlatBufferBuilder $builder, $hp)
- {
- $builder->addShortX(2, $hp, 100);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param StringOffset
- * @return void
- */
- public static function addName(FlatBufferBuilder $builder, $name)
- {
- $builder->addOffsetX(3, $name, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param VectorOffset
- * @return void
- */
- public static function addInventory(FlatBufferBuilder $builder, $inventory)
- {
- $builder->addOffsetX(5, $inventory, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param array offset array
- * @return int vector offset
- */
- public static function createInventoryVector(FlatBufferBuilder $builder, array $data)
- {
- $builder->startVector(1, count($data), 1);
- for ($i = count($data) - 1; $i >= 0; $i--) {
- $builder->addByte($data[$i]);
- }
- return $builder->endVector();
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param int $numElems
- * @return void
- */
- public static function startInventoryVector(FlatBufferBuilder $builder, $numElems)
- {
- $builder->startVector(1, $numElems, 1);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param sbyte
- * @return void
- */
- public static function addColor(FlatBufferBuilder $builder, $color)
- {
- $builder->addSbyteX(6, $color, 8);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param byte
- * @return void
- */
- public static function addTestType(FlatBufferBuilder $builder, $testType)
- {
- $builder->addByteX(7, $testType, 0);
- }
-
- public static function addTest(FlatBufferBuilder $builder, $offset)
- {
- $builder->addOffsetX(8, $offset, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param VectorOffset
- * @return void
- */
- public static function addTest4(FlatBufferBuilder $builder, $test4)
- {
- $builder->addOffsetX(9, $test4, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param array offset array
- * @return int vector offset
- */
- public static function createTest4Vector(FlatBufferBuilder $builder, array $data)
- {
- $builder->startVector(4, count($data), 2);
- for ($i = count($data) - 1; $i >= 0; $i--) {
- $builder->addOffset($data[$i]);
- }
- return $builder->endVector();
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param int $numElems
- * @return void
- */
- public static function startTest4Vector(FlatBufferBuilder $builder, $numElems)
- {
- $builder->startVector(4, $numElems, 2);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param VectorOffset
- * @return void
- */
- public static function addTestarrayofstring(FlatBufferBuilder $builder, $testarrayofstring)
- {
- $builder->addOffsetX(10, $testarrayofstring, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param array offset array
- * @return int vector offset
- */
- public static function createTestarrayofstringVector(FlatBufferBuilder $builder, array $data)
- {
- $builder->startVector(4, count($data), 4);
- for ($i = count($data) - 1; $i >= 0; $i--) {
- $builder->addOffset($data[$i]);
- }
- return $builder->endVector();
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param int $numElems
- * @return void
- */
- public static function startTestarrayofstringVector(FlatBufferBuilder $builder, $numElems)
- {
- $builder->startVector(4, $numElems, 4);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param VectorOffset
- * @return void
- */
- public static function addTestarrayoftables(FlatBufferBuilder $builder, $testarrayoftables)
- {
- $builder->addOffsetX(11, $testarrayoftables, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param array offset array
- * @return int vector offset
- */
- public static function createTestarrayoftablesVector(FlatBufferBuilder $builder, array $data)
- {
- $builder->startVector(4, count($data), 4);
- for ($i = count($data) - 1; $i >= 0; $i--) {
- $builder->addOffset($data[$i]);
- }
- return $builder->endVector();
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param int $numElems
- * @return void
- */
- public static function startTestarrayoftablesVector(FlatBufferBuilder $builder, $numElems)
- {
- $builder->startVector(4, $numElems, 4);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param int
- * @return void
- */
- public static function addEnemy(FlatBufferBuilder $builder, $enemy)
- {
- $builder->addOffsetX(12, $enemy, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param VectorOffset
- * @return void
- */
- public static function addTestnestedflatbuffer(FlatBufferBuilder $builder, $testnestedflatbuffer)
- {
- $builder->addOffsetX(13, $testnestedflatbuffer, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param array offset array
- * @return int vector offset
- */
- public static function createTestnestedflatbufferVector(FlatBufferBuilder $builder, array $data)
- {
- $builder->startVector(1, count($data), 1);
- for ($i = count($data) - 1; $i >= 0; $i--) {
- $builder->addByte($data[$i]);
- }
- return $builder->endVector();
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param int $numElems
- * @return void
- */
- public static function startTestnestedflatbufferVector(FlatBufferBuilder $builder, $numElems)
- {
- $builder->startVector(1, $numElems, 1);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param int
- * @return void
- */
- public static function addTestempty(FlatBufferBuilder $builder, $testempty)
- {
- $builder->addOffsetX(14, $testempty, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param bool
- * @return void
- */
- public static function addTestbool(FlatBufferBuilder $builder, $testbool)
- {
- $builder->addBoolX(15, $testbool, false);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param int
- * @return void
- */
- public static function addTesthashs32Fnv1(FlatBufferBuilder $builder, $testhashs32Fnv1)
- {
- $builder->addIntX(16, $testhashs32Fnv1, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param uint
- * @return void
- */
- public static function addTesthashu32Fnv1(FlatBufferBuilder $builder, $testhashu32Fnv1)
- {
- $builder->addUintX(17, $testhashu32Fnv1, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param long
- * @return void
- */
- public static function addTesthashs64Fnv1(FlatBufferBuilder $builder, $testhashs64Fnv1)
- {
- $builder->addLongX(18, $testhashs64Fnv1, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param ulong
- * @return void
- */
- public static function addTesthashu64Fnv1(FlatBufferBuilder $builder, $testhashu64Fnv1)
- {
- $builder->addUlongX(19, $testhashu64Fnv1, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param int
- * @return void
- */
- public static function addTesthashs32Fnv1a(FlatBufferBuilder $builder, $testhashs32Fnv1a)
- {
- $builder->addIntX(20, $testhashs32Fnv1a, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param uint
- * @return void
- */
- public static function addTesthashu32Fnv1a(FlatBufferBuilder $builder, $testhashu32Fnv1a)
- {
- $builder->addUintX(21, $testhashu32Fnv1a, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param long
- * @return void
- */
- public static function addTesthashs64Fnv1a(FlatBufferBuilder $builder, $testhashs64Fnv1a)
- {
- $builder->addLongX(22, $testhashs64Fnv1a, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param ulong
- * @return void
- */
- public static function addTesthashu64Fnv1a(FlatBufferBuilder $builder, $testhashu64Fnv1a)
- {
- $builder->addUlongX(23, $testhashu64Fnv1a, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param VectorOffset
- * @return void
- */
- public static function addTestarrayofbools(FlatBufferBuilder $builder, $testarrayofbools)
- {
- $builder->addOffsetX(24, $testarrayofbools, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param array offset array
- * @return int vector offset
- */
- public static function createTestarrayofboolsVector(FlatBufferBuilder $builder, array $data)
- {
- $builder->startVector(1, count($data), 1);
- for ($i = count($data) - 1; $i >= 0; $i--) {
- $builder->addBool($data[$i]);
- }
- return $builder->endVector();
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param int $numElems
- * @return void
- */
- public static function startTestarrayofboolsVector(FlatBufferBuilder $builder, $numElems)
- {
- $builder->startVector(1, $numElems, 1);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param float
- * @return void
- */
- public static function addTestf(FlatBufferBuilder $builder, $testf)
- {
- $builder->addFloatX(25, $testf, 3.14159);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param float
- * @return void
- */
- public static function addTestf2(FlatBufferBuilder $builder, $testf2)
- {
- $builder->addFloatX(26, $testf2, 3.0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param float
- * @return void
- */
- public static function addTestf3(FlatBufferBuilder $builder, $testf3)
- {
- $builder->addFloatX(27, $testf3, 0.0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param VectorOffset
- * @return void
- */
- public static function addTestarrayofstring2(FlatBufferBuilder $builder, $testarrayofstring2)
- {
- $builder->addOffsetX(28, $testarrayofstring2, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param array offset array
- * @return int vector offset
- */
- public static function createTestarrayofstring2Vector(FlatBufferBuilder $builder, array $data)
- {
- $builder->startVector(4, count($data), 4);
- for ($i = count($data) - 1; $i >= 0; $i--) {
- $builder->addOffset($data[$i]);
- }
- return $builder->endVector();
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param int $numElems
- * @return void
- */
- public static function startTestarrayofstring2Vector(FlatBufferBuilder $builder, $numElems)
- {
- $builder->startVector(4, $numElems, 4);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param VectorOffset
- * @return void
- */
- public static function addTestarrayofsortedstruct(FlatBufferBuilder $builder, $testarrayofsortedstruct)
- {
- $builder->addOffsetX(29, $testarrayofsortedstruct, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param array offset array
- * @return int vector offset
- */
- public static function createTestarrayofsortedstructVector(FlatBufferBuilder $builder, array $data)
- {
- $builder->startVector(8, count($data), 4);
- for ($i = count($data) - 1; $i >= 0; $i--) {
- $builder->addOffset($data[$i]);
- }
- return $builder->endVector();
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param int $numElems
- * @return void
- */
- public static function startTestarrayofsortedstructVector(FlatBufferBuilder $builder, $numElems)
- {
- $builder->startVector(8, $numElems, 4);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return int table offset
- */
- public static function endMonster(FlatBufferBuilder $builder)
- {
- $o = $builder->endObject();
- $builder->required($o, 10); // name
- return $o;
- }
-
- public static function finishMonsterBuffer(FlatBufferBuilder $builder, $offset)
- {
- $builder->finish($offset, "MONS");
- }
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Monster.py b/third_party/flatbuffers/tests/MyGame/Example/Monster.py
deleted file mode 100644
index 75e54a1..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Monster.py
+++ /dev/null
@@ -1,357 +0,0 @@
-# automatically generated by the FlatBuffers compiler, do not modify
-
-# namespace: Example
-
-import flatbuffers
-
-# /// an example documentation comment: monster object
-class Monster(object):
- __slots__ = ['_tab']
-
- @classmethod
- def GetRootAsMonster(cls, buf, offset):
- n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset)
- x = Monster()
- x.Init(buf, n + offset)
- return x
-
- # Monster
- def Init(self, buf, pos):
- self._tab = flatbuffers.table.Table(buf, pos)
-
- # Monster
- def Pos(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
- if o != 0:
- x = o + self._tab.Pos
- from .Vec3 import Vec3
- obj = Vec3()
- obj.Init(self._tab.Bytes, x)
- return obj
- return None
-
- # Monster
- def Mana(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
- if o != 0:
- return self._tab.Get(flatbuffers.number_types.Int16Flags, o + self._tab.Pos)
- return 150
-
- # Monster
- def Hp(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8))
- if o != 0:
- return self._tab.Get(flatbuffers.number_types.Int16Flags, o + self._tab.Pos)
- return 100
-
- # Monster
- def Name(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10))
- if o != 0:
- return self._tab.String(o + self._tab.Pos)
- return ""
-
- # Monster
- def Inventory(self, j):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(14))
- if o != 0:
- a = self._tab.Vector(o)
- return self._tab.Get(flatbuffers.number_types.Uint8Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 1))
- return 0
-
- # Monster
- def InventoryLength(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(14))
- if o != 0:
- return self._tab.VectorLen(o)
- return 0
-
- # Monster
- def Color(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(16))
- if o != 0:
- return self._tab.Get(flatbuffers.number_types.Int8Flags, o + self._tab.Pos)
- return 8
-
- # Monster
- def TestType(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(18))
- if o != 0:
- return self._tab.Get(flatbuffers.number_types.Uint8Flags, o + self._tab.Pos)
- return 0
-
- # Monster
- def Test(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(20))
- if o != 0:
- from flatbuffers.table import Table
- obj = Table(bytearray(), 0)
- self._tab.Union(obj, o)
- return obj
- return None
-
- # Monster
- def Test4(self, j):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(22))
- if o != 0:
- x = self._tab.Vector(o)
- x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4
- from .Test import Test
- obj = Test()
- obj.Init(self._tab.Bytes, x)
- return obj
- return None
-
- # Monster
- def Test4Length(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(22))
- if o != 0:
- return self._tab.VectorLen(o)
- return 0
-
- # Monster
- def Testarrayofstring(self, j):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(24))
- if o != 0:
- a = self._tab.Vector(o)
- return self._tab.String(a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 4))
- return ""
-
- # Monster
- def TestarrayofstringLength(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(24))
- if o != 0:
- return self._tab.VectorLen(o)
- return 0
-
-# /// an example documentation comment: this will end up in the generated code
-# /// multiline too
- # Monster
- def Testarrayoftables(self, j):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(26))
- if o != 0:
- x = self._tab.Vector(o)
- x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4
- x = self._tab.Indirect(x)
- from .Monster import Monster
- obj = Monster()
- obj.Init(self._tab.Bytes, x)
- return obj
- return None
-
- # Monster
- def TestarrayoftablesLength(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(26))
- if o != 0:
- return self._tab.VectorLen(o)
- return 0
-
- # Monster
- def Enemy(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(28))
- if o != 0:
- x = self._tab.Indirect(o + self._tab.Pos)
- from .Monster import Monster
- obj = Monster()
- obj.Init(self._tab.Bytes, x)
- return obj
- return None
-
- # Monster
- def Testnestedflatbuffer(self, j):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(30))
- if o != 0:
- a = self._tab.Vector(o)
- return self._tab.Get(flatbuffers.number_types.Uint8Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 1))
- return 0
-
- # Monster
- def TestnestedflatbufferLength(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(30))
- if o != 0:
- return self._tab.VectorLen(o)
- return 0
-
- # Monster
- def Testempty(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(32))
- if o != 0:
- x = self._tab.Indirect(o + self._tab.Pos)
- from .Stat import Stat
- obj = Stat()
- obj.Init(self._tab.Bytes, x)
- return obj
- return None
-
- # Monster
- def Testbool(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(34))
- if o != 0:
- return self._tab.Get(flatbuffers.number_types.BoolFlags, o + self._tab.Pos)
- return 0
-
- # Monster
- def Testhashs32Fnv1(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(36))
- if o != 0:
- return self._tab.Get(flatbuffers.number_types.Int32Flags, o + self._tab.Pos)
- return 0
-
- # Monster
- def Testhashu32Fnv1(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(38))
- if o != 0:
- return self._tab.Get(flatbuffers.number_types.Uint32Flags, o + self._tab.Pos)
- return 0
-
- # Monster
- def Testhashs64Fnv1(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(40))
- if o != 0:
- return self._tab.Get(flatbuffers.number_types.Int64Flags, o + self._tab.Pos)
- return 0
-
- # Monster
- def Testhashu64Fnv1(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(42))
- if o != 0:
- return self._tab.Get(flatbuffers.number_types.Uint64Flags, o + self._tab.Pos)
- return 0
-
- # Monster
- def Testhashs32Fnv1a(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(44))
- if o != 0:
- return self._tab.Get(flatbuffers.number_types.Int32Flags, o + self._tab.Pos)
- return 0
-
- # Monster
- def Testhashu32Fnv1a(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(46))
- if o != 0:
- return self._tab.Get(flatbuffers.number_types.Uint32Flags, o + self._tab.Pos)
- return 0
-
- # Monster
- def Testhashs64Fnv1a(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(48))
- if o != 0:
- return self._tab.Get(flatbuffers.number_types.Int64Flags, o + self._tab.Pos)
- return 0
-
- # Monster
- def Testhashu64Fnv1a(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(50))
- if o != 0:
- return self._tab.Get(flatbuffers.number_types.Uint64Flags, o + self._tab.Pos)
- return 0
-
- # Monster
- def Testarrayofbools(self, j):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(52))
- if o != 0:
- a = self._tab.Vector(o)
- return self._tab.Get(flatbuffers.number_types.BoolFlags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 1))
- return 0
-
- # Monster
- def TestarrayofboolsLength(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(52))
- if o != 0:
- return self._tab.VectorLen(o)
- return 0
-
- # Monster
- def Testf(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(54))
- if o != 0:
- return self._tab.Get(flatbuffers.number_types.Float32Flags, o + self._tab.Pos)
- return 3.14159
-
- # Monster
- def Testf2(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(56))
- if o != 0:
- return self._tab.Get(flatbuffers.number_types.Float32Flags, o + self._tab.Pos)
- return 3.0
-
- # Monster
- def Testf3(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(58))
- if o != 0:
- return self._tab.Get(flatbuffers.number_types.Float32Flags, o + self._tab.Pos)
- return 0.0
-
- # Monster
- def Testarrayofstring2(self, j):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(60))
- if o != 0:
- a = self._tab.Vector(o)
- return self._tab.String(a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 4))
- return ""
-
- # Monster
- def Testarrayofstring2Length(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(60))
- if o != 0:
- return self._tab.VectorLen(o)
- return 0
-
- # Monster
- def Testarrayofsortedstruct(self, j):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(62))
- if o != 0:
- x = self._tab.Vector(o)
- x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 8
- from .Ability import Ability
- obj = Ability()
- obj.Init(self._tab.Bytes, x)
- return obj
- return None
-
- # Monster
- def TestarrayofsortedstructLength(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(62))
- if o != 0:
- return self._tab.VectorLen(o)
- return 0
-
-def MonsterStart(builder): builder.StartObject(30)
-def MonsterAddPos(builder, pos): builder.PrependStructSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(pos), 0)
-def MonsterAddMana(builder, mana): builder.PrependInt16Slot(1, mana, 150)
-def MonsterAddHp(builder, hp): builder.PrependInt16Slot(2, hp, 100)
-def MonsterAddName(builder, name): builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0)
-def MonsterAddInventory(builder, inventory): builder.PrependUOffsetTRelativeSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(inventory), 0)
-def MonsterStartInventoryVector(builder, numElems): return builder.StartVector(1, numElems, 1)
-def MonsterAddColor(builder, color): builder.PrependInt8Slot(6, color, 8)
-def MonsterAddTestType(builder, testType): builder.PrependUint8Slot(7, testType, 0)
-def MonsterAddTest(builder, test): builder.PrependUOffsetTRelativeSlot(8, flatbuffers.number_types.UOffsetTFlags.py_type(test), 0)
-def MonsterAddTest4(builder, test4): builder.PrependUOffsetTRelativeSlot(9, flatbuffers.number_types.UOffsetTFlags.py_type(test4), 0)
-def MonsterStartTest4Vector(builder, numElems): return builder.StartVector(4, numElems, 2)
-def MonsterAddTestarrayofstring(builder, testarrayofstring): builder.PrependUOffsetTRelativeSlot(10, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofstring), 0)
-def MonsterStartTestarrayofstringVector(builder, numElems): return builder.StartVector(4, numElems, 4)
-def MonsterAddTestarrayoftables(builder, testarrayoftables): builder.PrependUOffsetTRelativeSlot(11, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayoftables), 0)
-def MonsterStartTestarrayoftablesVector(builder, numElems): return builder.StartVector(4, numElems, 4)
-def MonsterAddEnemy(builder, enemy): builder.PrependUOffsetTRelativeSlot(12, flatbuffers.number_types.UOffsetTFlags.py_type(enemy), 0)
-def MonsterAddTestnestedflatbuffer(builder, testnestedflatbuffer): builder.PrependUOffsetTRelativeSlot(13, flatbuffers.number_types.UOffsetTFlags.py_type(testnestedflatbuffer), 0)
-def MonsterStartTestnestedflatbufferVector(builder, numElems): return builder.StartVector(1, numElems, 1)
-def MonsterAddTestempty(builder, testempty): builder.PrependUOffsetTRelativeSlot(14, flatbuffers.number_types.UOffsetTFlags.py_type(testempty), 0)
-def MonsterAddTestbool(builder, testbool): builder.PrependBoolSlot(15, testbool, 0)
-def MonsterAddTesthashs32Fnv1(builder, testhashs32Fnv1): builder.PrependInt32Slot(16, testhashs32Fnv1, 0)
-def MonsterAddTesthashu32Fnv1(builder, testhashu32Fnv1): builder.PrependUint32Slot(17, testhashu32Fnv1, 0)
-def MonsterAddTesthashs64Fnv1(builder, testhashs64Fnv1): builder.PrependInt64Slot(18, testhashs64Fnv1, 0)
-def MonsterAddTesthashu64Fnv1(builder, testhashu64Fnv1): builder.PrependUint64Slot(19, testhashu64Fnv1, 0)
-def MonsterAddTesthashs32Fnv1a(builder, testhashs32Fnv1a): builder.PrependInt32Slot(20, testhashs32Fnv1a, 0)
-def MonsterAddTesthashu32Fnv1a(builder, testhashu32Fnv1a): builder.PrependUint32Slot(21, testhashu32Fnv1a, 0)
-def MonsterAddTesthashs64Fnv1a(builder, testhashs64Fnv1a): builder.PrependInt64Slot(22, testhashs64Fnv1a, 0)
-def MonsterAddTesthashu64Fnv1a(builder, testhashu64Fnv1a): builder.PrependUint64Slot(23, testhashu64Fnv1a, 0)
-def MonsterAddTestarrayofbools(builder, testarrayofbools): builder.PrependUOffsetTRelativeSlot(24, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofbools), 0)
-def MonsterStartTestarrayofboolsVector(builder, numElems): return builder.StartVector(1, numElems, 1)
-def MonsterAddTestf(builder, testf): builder.PrependFloat32Slot(25, testf, 3.14159)
-def MonsterAddTestf2(builder, testf2): builder.PrependFloat32Slot(26, testf2, 3.0)
-def MonsterAddTestf3(builder, testf3): builder.PrependFloat32Slot(27, testf3, 0.0)
-def MonsterAddTestarrayofstring2(builder, testarrayofstring2): builder.PrependUOffsetTRelativeSlot(28, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofstring2), 0)
-def MonsterStartTestarrayofstring2Vector(builder, numElems): return builder.StartVector(4, numElems, 4)
-def MonsterAddTestarrayofsortedstruct(builder, testarrayofsortedstruct): builder.PrependUOffsetTRelativeSlot(29, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofsortedstruct), 0)
-def MonsterStartTestarrayofsortedstructVector(builder, numElems): return builder.StartVector(8, numElems, 4)
-def MonsterEnd(builder): return builder.EndObject()
diff --git a/third_party/flatbuffers/tests/MyGame/Example/MonsterStorage_grpc.go b/third_party/flatbuffers/tests/MyGame/Example/MonsterStorage_grpc.go
deleted file mode 100644
index cc9a1ec..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/MonsterStorage_grpc.go
+++ /dev/null
@@ -1,127 +0,0 @@
-//Generated by gRPC Go plugin
-//If you make any local changes, they will be lost
-//source: monster_test
-
-package Example
-
-import "github.com/google/flatbuffers/go"
-
-import (
- context "golang.org/x/net/context"
- grpc "google.golang.org/grpc"
-)
-
-// Client API for MonsterStorage service
-type MonsterStorageClient interface{
- Store(ctx context.Context, in *flatbuffers.Builder,
- opts... grpc.CallOption) (* Stat, error)
- Retrieve(ctx context.Context, in *flatbuffers.Builder,
- opts... grpc.CallOption) (MonsterStorage_RetrieveClient, error)
-}
-
-type monsterStorageClient struct {
- cc *grpc.ClientConn
-}
-
-func NewMonsterStorageClient(cc *grpc.ClientConn) MonsterStorageClient {
- return &monsterStorageClient{cc}
-}
-
-func (c *monsterStorageClient) Store(ctx context.Context, in *flatbuffers.Builder,
- opts... grpc.CallOption) (* Stat, error) {
- out := new(Stat)
- err := grpc.Invoke(ctx, "/Example.MonsterStorage/Store", in, out, c.cc, opts...)
- if err != nil { return nil, err }
- return out, nil
-}
-
-func (c *monsterStorageClient) Retrieve(ctx context.Context, in *flatbuffers.Builder,
- opts... grpc.CallOption) (MonsterStorage_RetrieveClient, error) {
- stream, err := grpc.NewClientStream(ctx, &_MonsterStorage_serviceDesc.Streams[0], c.cc, "/Example.MonsterStorage/Retrieve", opts...)
- if err != nil { return nil, err }
- x := &monsterStorageRetrieveClient{stream}
- if err := x.ClientStream.SendMsg(in); err != nil { return nil, err }
- if err := x.ClientStream.CloseSend(); err != nil { return nil, err }
- return x,nil
-}
-
-type MonsterStorage_RetrieveClient interface {
- Recv() (*Monster, error)
- grpc.ClientStream
-}
-
-type monsterStorageRetrieveClient struct{
- grpc.ClientStream
-}
-
-func (x *monsterStorageRetrieveClient) Recv() (*Monster, error) {
- m := new(Monster)
- if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err }
- return m, nil
-}
-
-// Server API for MonsterStorage service
-type MonsterStorageServer interface {
- Store(context.Context, *Monster) (*flatbuffers.Builder, error)
- Retrieve(*Stat, MonsterStorage_RetrieveServer) error
-}
-
-func RegisterMonsterStorageServer(s *grpc.Server, srv MonsterStorageServer) {
- s.RegisterService(&_MonsterStorage_serviceDesc, srv)
-}
-
-func _MonsterStorage_Store_Handler(srv interface{}, ctx context.Context,
- dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(Monster)
- if err := dec(in); err != nil { return nil, err }
- if interceptor == nil { return srv.(MonsterStorageServer).Store(ctx, in) }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/Example.MonsterStorage/Store",
- }
-
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(MonsterStorageServer).Store(ctx, req.(* Monster))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-
-func _MonsterStorage_Retrieve_Handler(srv interface{}, stream grpc.ServerStream) error {
- m := new(Stat)
- if err := stream.RecvMsg(m); err != nil { return err }
- return srv.(MonsterStorageServer).Retrieve(m, &monsterStorageRetrieveServer{stream})
-}
-
-type MonsterStorage_RetrieveServer interface {
- Send(* flatbuffers.Builder) error
- grpc.ServerStream
-}
-
-type monsterStorageRetrieveServer struct {
- grpc.ServerStream
-}
-
-func (x *monsterStorageRetrieveServer) Send(m *flatbuffers.Builder) error {
- return x.ServerStream.SendMsg(m)
-}
-
-
-var _MonsterStorage_serviceDesc = grpc.ServiceDesc{
- ServiceName: "Example.MonsterStorage",
- HandlerType: (*MonsterStorageServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "Store",
- Handler: _MonsterStorage_Store_Handler,
- },
- },
- Streams: []grpc.StreamDesc{
- {
- StreamName: "Retrieve",
- Handler: _MonsterStorage_Retrieve_Handler,
- ServerStreams: true,
- },
- },
-}
-
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Stat.cs b/third_party/flatbuffers/tests/MyGame/Example/Stat.cs
deleted file mode 100644
index 1ea8050..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Stat.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace MyGame.Example
-{
-
-using global::System;
-using global::FlatBuffers;
-
-public struct Stat : IFlatbufferObject
-{
- private Table __p;
- public ByteBuffer ByteBuffer { get { return __p.bb; } }
- public static Stat GetRootAsStat(ByteBuffer _bb) { return GetRootAsStat(_bb, new Stat()); }
- public static Stat GetRootAsStat(ByteBuffer _bb, Stat obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
- public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; }
- public Stat __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public string Id { get { int o = __p.__offset(4); return o != 0 ? __p.__string(o + __p.bb_pos) : null; } }
- public ArraySegment<byte>? GetIdBytes() { return __p.__vector_as_arraysegment(4); }
- public long Val { get { int o = __p.__offset(6); return o != 0 ? __p.bb.GetLong(o + __p.bb_pos) : (long)0; } }
- public bool MutateVal(long val) { int o = __p.__offset(6); if (o != 0) { __p.bb.PutLong(o + __p.bb_pos, val); return true; } else { return false; } }
- public ushort Count { get { int o = __p.__offset(8); return o != 0 ? __p.bb.GetUshort(o + __p.bb_pos) : (ushort)0; } }
- public bool MutateCount(ushort count) { int o = __p.__offset(8); if (o != 0) { __p.bb.PutUshort(o + __p.bb_pos, count); return true; } else { return false; } }
-
- public static Offset<Stat> CreateStat(FlatBufferBuilder builder,
- StringOffset idOffset = default(StringOffset),
- long val = 0,
- ushort count = 0) {
- builder.StartObject(3);
- Stat.AddVal(builder, val);
- Stat.AddId(builder, idOffset);
- Stat.AddCount(builder, count);
- return Stat.EndStat(builder);
- }
-
- public static void StartStat(FlatBufferBuilder builder) { builder.StartObject(3); }
- public static void AddId(FlatBufferBuilder builder, StringOffset idOffset) { builder.AddOffset(0, idOffset.Value, 0); }
- public static void AddVal(FlatBufferBuilder builder, long val) { builder.AddLong(1, val, 0); }
- public static void AddCount(FlatBufferBuilder builder, ushort count) { builder.AddUshort(2, count, 0); }
- public static Offset<Stat> EndStat(FlatBufferBuilder builder) {
- int o = builder.EndObject();
- return new Offset<Stat>(o);
- }
-};
-
-
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Stat.go b/third_party/flatbuffers/tests/MyGame/Example/Stat.go
deleted file mode 100644
index 9abc558..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Stat.go
+++ /dev/null
@@ -1,75 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package Example
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type Stat struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsStat(buf []byte, offset flatbuffers.UOffsetT) *Stat {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Stat{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Stat) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Stat) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *Stat) Id() []byte {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return rcv._tab.ByteVector(o + rcv._tab.Pos)
- }
- return nil
-}
-
-func (rcv *Stat) Val() int64 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- return rcv._tab.GetInt64(o + rcv._tab.Pos)
- }
- return 0
-}
-
-func (rcv *Stat) MutateVal(n int64) bool {
- return rcv._tab.MutateInt64Slot(6, n)
-}
-
-func (rcv *Stat) Count() uint16 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- return rcv._tab.GetUint16(o + rcv._tab.Pos)
- }
- return 0
-}
-
-func (rcv *Stat) MutateCount(n uint16) bool {
- return rcv._tab.MutateUint16Slot(8, n)
-}
-
-func StatStart(builder *flatbuffers.Builder) {
- builder.StartObject(3)
-}
-func StatAddId(builder *flatbuffers.Builder, id flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(0, flatbuffers.UOffsetT(id), 0)
-}
-func StatAddVal(builder *flatbuffers.Builder, val int64) {
- builder.PrependInt64Slot(1, val, 0)
-}
-func StatAddCount(builder *flatbuffers.Builder, count uint16) {
- builder.PrependUint16Slot(2, count, 0)
-}
-func StatEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Stat.java b/third_party/flatbuffers/tests/MyGame/Example/Stat.java
deleted file mode 100644
index 351e5b3..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Stat.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package MyGame.Example;
-
-import java.nio.*;
-import java.lang.*;
-import java.util.*;
-import com.google.flatbuffers.*;
-
-@SuppressWarnings("unused")
-public final class Stat extends Table {
- public static Stat getRootAsStat(ByteBuffer _bb) { return getRootAsStat(_bb, new Stat()); }
- public static Stat getRootAsStat(ByteBuffer _bb, Stat obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
- public void __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; }
- public Stat __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public String id() { int o = __offset(4); return o != 0 ? __string(o + bb_pos) : null; }
- public ByteBuffer idAsByteBuffer() { return __vector_as_bytebuffer(4, 1); }
- public long val() { int o = __offset(6); return o != 0 ? bb.getLong(o + bb_pos) : 0L; }
- public boolean mutateVal(long val) { int o = __offset(6); if (o != 0) { bb.putLong(o + bb_pos, val); return true; } else { return false; } }
- public int count() { int o = __offset(8); return o != 0 ? bb.getShort(o + bb_pos) & 0xFFFF : 0; }
- public boolean mutateCount(int count) { int o = __offset(8); if (o != 0) { bb.putShort(o + bb_pos, (short)count); return true; } else { return false; } }
-
- public static int createStat(FlatBufferBuilder builder,
- int idOffset,
- long val,
- int count) {
- builder.startObject(3);
- Stat.addVal(builder, val);
- Stat.addId(builder, idOffset);
- Stat.addCount(builder, count);
- return Stat.endStat(builder);
- }
-
- public static void startStat(FlatBufferBuilder builder) { builder.startObject(3); }
- public static void addId(FlatBufferBuilder builder, int idOffset) { builder.addOffset(0, idOffset, 0); }
- public static void addVal(FlatBufferBuilder builder, long val) { builder.addLong(1, val, 0L); }
- public static void addCount(FlatBufferBuilder builder, int count) { builder.addShort(2, (short)count, (short)0); }
- public static int endStat(FlatBufferBuilder builder) {
- int o = builder.endObject();
- return o;
- }
-}
-
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Stat.php b/third_party/flatbuffers/tests/MyGame/Example/Stat.php
deleted file mode 100644
index 6ef7034..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Stat.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?php
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace MyGame\Example;
-
-use \Google\FlatBuffers\Struct;
-use \Google\FlatBuffers\Table;
-use \Google\FlatBuffers\ByteBuffer;
-use \Google\FlatBuffers\FlatBufferBuilder;
-
-class Stat extends Table
-{
- /**
- * @param ByteBuffer $bb
- * @return Stat
- */
- public static function getRootAsStat(ByteBuffer $bb)
- {
- $obj = new Stat();
- return ($obj->init($bb->getInt($bb->getPosition()) + $bb->getPosition(), $bb));
- }
-
- public static function StatIdentifier()
- {
- return "MONS";
- }
-
- public static function StatBufferHasIdentifier(ByteBuffer $buf)
- {
- return self::__has_identifier($buf, self::StatIdentifier());
- }
-
- public static function StatExtension()
- {
- return "mon";
- }
-
- /**
- * @param int $_i offset
- * @param ByteBuffer $_bb
- * @return Stat
- **/
- public function init($_i, ByteBuffer $_bb)
- {
- $this->bb_pos = $_i;
- $this->bb = $_bb;
- return $this;
- }
-
- public function getId()
- {
- $o = $this->__offset(4);
- return $o != 0 ? $this->__string($o + $this->bb_pos) : null;
- }
-
- /**
- * @return long
- */
- public function getVal()
- {
- $o = $this->__offset(6);
- return $o != 0 ? $this->bb->getLong($o + $this->bb_pos) : 0;
- }
-
- /**
- * @return ushort
- */
- public function getCount()
- {
- $o = $this->__offset(8);
- return $o != 0 ? $this->bb->getUshort($o + $this->bb_pos) : 0;
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return void
- */
- public static function startStat(FlatBufferBuilder $builder)
- {
- $builder->StartObject(3);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return Stat
- */
- public static function createStat(FlatBufferBuilder $builder, $id, $val, $count)
- {
- $builder->startObject(3);
- self::addId($builder, $id);
- self::addVal($builder, $val);
- self::addCount($builder, $count);
- $o = $builder->endObject();
- return $o;
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param StringOffset
- * @return void
- */
- public static function addId(FlatBufferBuilder $builder, $id)
- {
- $builder->addOffsetX(0, $id, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param long
- * @return void
- */
- public static function addVal(FlatBufferBuilder $builder, $val)
- {
- $builder->addLongX(1, $val, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param ushort
- * @return void
- */
- public static function addCount(FlatBufferBuilder $builder, $count)
- {
- $builder->addUshortX(2, $count, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return int table offset
- */
- public static function endStat(FlatBufferBuilder $builder)
- {
- $o = $builder->endObject();
- return $o;
- }
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Stat.py b/third_party/flatbuffers/tests/MyGame/Example/Stat.py
deleted file mode 100644
index b0e251d..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Stat.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# automatically generated by the FlatBuffers compiler, do not modify
-
-# namespace: Example
-
-import flatbuffers
-
-class Stat(object):
- __slots__ = ['_tab']
-
- @classmethod
- def GetRootAsStat(cls, buf, offset):
- n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset)
- x = Stat()
- x.Init(buf, n + offset)
- return x
-
- # Stat
- def Init(self, buf, pos):
- self._tab = flatbuffers.table.Table(buf, pos)
-
- # Stat
- def Id(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
- if o != 0:
- return self._tab.String(o + self._tab.Pos)
- return ""
-
- # Stat
- def Val(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
- if o != 0:
- return self._tab.Get(flatbuffers.number_types.Int64Flags, o + self._tab.Pos)
- return 0
-
- # Stat
- def Count(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8))
- if o != 0:
- return self._tab.Get(flatbuffers.number_types.Uint16Flags, o + self._tab.Pos)
- return 0
-
-def StatStart(builder): builder.StartObject(3)
-def StatAddId(builder, id): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(id), 0)
-def StatAddVal(builder, val): builder.PrependInt64Slot(1, val, 0)
-def StatAddCount(builder, count): builder.PrependUint16Slot(2, count, 0)
-def StatEnd(builder): return builder.EndObject()
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Test.cs b/third_party/flatbuffers/tests/MyGame/Example/Test.cs
deleted file mode 100644
index 406f5f1..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Test.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace MyGame.Example
-{
-
-using global::System;
-using global::FlatBuffers;
-
-public struct Test : IFlatbufferObject
-{
- private Struct __p;
- public ByteBuffer ByteBuffer { get { return __p.bb; } }
- public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; }
- public Test __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public short A { get { return __p.bb.GetShort(__p.bb_pos + 0); } }
- public void MutateA(short a) { __p.bb.PutShort(__p.bb_pos + 0, a); }
- public sbyte B { get { return __p.bb.GetSbyte(__p.bb_pos + 2); } }
- public void MutateB(sbyte b) { __p.bb.PutSbyte(__p.bb_pos + 2, b); }
-
- public static Offset<Test> CreateTest(FlatBufferBuilder builder, short A, sbyte B) {
- builder.Prep(2, 4);
- builder.Pad(1);
- builder.PutSbyte(B);
- builder.PutShort(A);
- return new Offset<Test>(builder.Offset);
- }
-};
-
-
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Test.go b/third_party/flatbuffers/tests/MyGame/Example/Test.go
deleted file mode 100644
index cb283fb..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Test.go
+++ /dev/null
@@ -1,42 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package Example
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type Test struct {
- _tab flatbuffers.Struct
-}
-
-func (rcv *Test) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Test) Table() flatbuffers.Table {
- return rcv._tab.Table
-}
-
-func (rcv *Test) A() int16 {
- return rcv._tab.GetInt16(rcv._tab.Pos + flatbuffers.UOffsetT(0))
-}
-func (rcv *Test) MutateA(n int16) bool {
- return rcv._tab.MutateInt16(rcv._tab.Pos+flatbuffers.UOffsetT(0), n)
-}
-
-func (rcv *Test) B() int8 {
- return rcv._tab.GetInt8(rcv._tab.Pos + flatbuffers.UOffsetT(2))
-}
-func (rcv *Test) MutateB(n int8) bool {
- return rcv._tab.MutateInt8(rcv._tab.Pos+flatbuffers.UOffsetT(2), n)
-}
-
-func CreateTest(builder *flatbuffers.Builder, a int16, b int8) flatbuffers.UOffsetT {
- builder.Prep(2, 4)
- builder.Pad(1)
- builder.PrependInt8(b)
- builder.PrependInt16(a)
- return builder.Offset()
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Test.java b/third_party/flatbuffers/tests/MyGame/Example/Test.java
deleted file mode 100644
index f584c46..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Test.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package MyGame.Example;
-
-import java.nio.*;
-import java.lang.*;
-import java.util.*;
-import com.google.flatbuffers.*;
-
-@SuppressWarnings("unused")
-public final class Test extends Struct {
- public void __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; }
- public Test __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public short a() { return bb.getShort(bb_pos + 0); }
- public void mutateA(short a) { bb.putShort(bb_pos + 0, a); }
- public byte b() { return bb.get(bb_pos + 2); }
- public void mutateB(byte b) { bb.put(bb_pos + 2, b); }
-
- public static int createTest(FlatBufferBuilder builder, short a, byte b) {
- builder.prep(2, 4);
- builder.pad(1);
- builder.putByte(b);
- builder.putShort(a);
- return builder.offset();
- }
-}
-
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Test.php b/third_party/flatbuffers/tests/MyGame/Example/Test.php
deleted file mode 100644
index 13cced0..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Test.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace MyGame\Example;
-
-use \Google\FlatBuffers\Struct;
-use \Google\FlatBuffers\Table;
-use \Google\FlatBuffers\ByteBuffer;
-use \Google\FlatBuffers\FlatBufferBuilder;
-
-class Test extends Struct
-{
- /**
- * @param int $_i offset
- * @param ByteBuffer $_bb
- * @return Test
- **/
- public function init($_i, ByteBuffer $_bb)
- {
- $this->bb_pos = $_i;
- $this->bb = $_bb;
- return $this;
- }
-
- /**
- * @return short
- */
- public function GetA()
- {
- return $this->bb->getShort($this->bb_pos + 0);
- }
-
- /**
- * @return sbyte
- */
- public function GetB()
- {
- return $this->bb->getSbyte($this->bb_pos + 2);
- }
-
-
- /**
- * @return int offset
- */
- public static function createTest(FlatBufferBuilder $builder, $a, $b)
- {
- $builder->prep(2, 4);
- $builder->pad(1);
- $builder->putSbyte($b);
- $builder->putShort($a);
- return $builder->offset();
- }
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Test.py b/third_party/flatbuffers/tests/MyGame/Example/Test.py
deleted file mode 100644
index 3b2fd45..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Test.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# automatically generated by the FlatBuffers compiler, do not modify
-
-# namespace: Example
-
-import flatbuffers
-
-class Test(object):
- __slots__ = ['_tab']
-
- # Test
- def Init(self, buf, pos):
- self._tab = flatbuffers.table.Table(buf, pos)
-
- # Test
- def A(self): return self._tab.Get(flatbuffers.number_types.Int16Flags, self._tab.Pos + flatbuffers.number_types.UOffsetTFlags.py_type(0))
- # Test
- def B(self): return self._tab.Get(flatbuffers.number_types.Int8Flags, self._tab.Pos + flatbuffers.number_types.UOffsetTFlags.py_type(2))
-
-def CreateTest(builder, a, b):
- builder.Prep(2, 4)
- builder.Pad(1)
- builder.PrependInt8(b)
- builder.PrependInt16(a)
- return builder.Offset()
diff --git a/third_party/flatbuffers/tests/MyGame/Example/TestSimpleTableWithEnum.cs b/third_party/flatbuffers/tests/MyGame/Example/TestSimpleTableWithEnum.cs
deleted file mode 100644
index 3d2a3f4..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/TestSimpleTableWithEnum.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace MyGame.Example
-{
-
-using global::System;
-using global::FlatBuffers;
-
-public partial struct TestSimpleTableWithEnum : IFlatbufferObject
-{
- private Table __p;
- public ByteBuffer ByteBuffer { get { return __p.bb; } }
- public static TestSimpleTableWithEnum GetRootAsTestSimpleTableWithEnum(ByteBuffer _bb) { return GetRootAsTestSimpleTableWithEnum(_bb, new TestSimpleTableWithEnum()); }
- public static TestSimpleTableWithEnum GetRootAsTestSimpleTableWithEnum(ByteBuffer _bb, TestSimpleTableWithEnum obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
- public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; }
- public TestSimpleTableWithEnum __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public Color Color { get { int o = __p.__offset(4); return o != 0 ? (Color)__p.bb.GetSbyte(o + __p.bb_pos) : Color.Green; } }
- public bool MutateColor(Color color) { int o = __p.__offset(4); if (o != 0) { __p.bb.PutSbyte(o + __p.bb_pos, (sbyte)color); return true; } else { return false; } }
-
- public static Offset<TestSimpleTableWithEnum> CreateTestSimpleTableWithEnum(FlatBufferBuilder builder,
- Color color = Color.Green) {
- builder.StartObject(1);
- TestSimpleTableWithEnum.AddColor(builder, color);
- return TestSimpleTableWithEnum.EndTestSimpleTableWithEnum(builder);
- }
-
- public static void StartTestSimpleTableWithEnum(FlatBufferBuilder builder) { builder.StartObject(1); }
- public static void AddColor(FlatBufferBuilder builder, Color color) { builder.AddSbyte(0, (sbyte)color, 2); }
- public static Offset<TestSimpleTableWithEnum> EndTestSimpleTableWithEnum(FlatBufferBuilder builder) {
- int o = builder.EndObject();
- return new Offset<TestSimpleTableWithEnum>(o);
- }
-};
-
-
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/TestSimpleTableWithEnum.go b/third_party/flatbuffers/tests/MyGame/Example/TestSimpleTableWithEnum.go
deleted file mode 100644
index 0704b70..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/TestSimpleTableWithEnum.go
+++ /dev/null
@@ -1,49 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package Example
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type TestSimpleTableWithEnum struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsTestSimpleTableWithEnum(buf []byte, offset flatbuffers.UOffsetT) *TestSimpleTableWithEnum {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &TestSimpleTableWithEnum{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *TestSimpleTableWithEnum) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *TestSimpleTableWithEnum) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *TestSimpleTableWithEnum) Color() int8 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return rcv._tab.GetInt8(o + rcv._tab.Pos)
- }
- return 2
-}
-
-func (rcv *TestSimpleTableWithEnum) MutateColor(n int8) bool {
- return rcv._tab.MutateInt8Slot(4, n)
-}
-
-func TestSimpleTableWithEnumStart(builder *flatbuffers.Builder) {
- builder.StartObject(1)
-}
-func TestSimpleTableWithEnumAddColor(builder *flatbuffers.Builder, color int8) {
- builder.PrependInt8Slot(0, color, 2)
-}
-func TestSimpleTableWithEnumEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/TestSimpleTableWithEnum.java b/third_party/flatbuffers/tests/MyGame/Example/TestSimpleTableWithEnum.java
deleted file mode 100644
index 9f77b39..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/TestSimpleTableWithEnum.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package MyGame.Example;
-
-import java.nio.*;
-import java.lang.*;
-import java.util.*;
-import com.google.flatbuffers.*;
-
-@SuppressWarnings("unused")
-public final class TestSimpleTableWithEnum extends Table {
- public static TestSimpleTableWithEnum getRootAsTestSimpleTableWithEnum(ByteBuffer _bb) { return getRootAsTestSimpleTableWithEnum(_bb, new TestSimpleTableWithEnum()); }
- public static TestSimpleTableWithEnum getRootAsTestSimpleTableWithEnum(ByteBuffer _bb, TestSimpleTableWithEnum obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
- public void __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; }
- public TestSimpleTableWithEnum __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public byte color() { int o = __offset(4); return o != 0 ? bb.get(o + bb_pos) : 2; }
- public boolean mutateColor(byte color) { int o = __offset(4); if (o != 0) { bb.put(o + bb_pos, color); return true; } else { return false; } }
-
- public static int createTestSimpleTableWithEnum(FlatBufferBuilder builder,
- byte color) {
- builder.startObject(1);
- TestSimpleTableWithEnum.addColor(builder, color);
- return TestSimpleTableWithEnum.endTestSimpleTableWithEnum(builder);
- }
-
- public static void startTestSimpleTableWithEnum(FlatBufferBuilder builder) { builder.startObject(1); }
- public static void addColor(FlatBufferBuilder builder, byte color) { builder.addByte(0, color, 2); }
- public static int endTestSimpleTableWithEnum(FlatBufferBuilder builder) {
- int o = builder.endObject();
- return o;
- }
-}
-
diff --git a/third_party/flatbuffers/tests/MyGame/Example/TestSimpleTableWithEnum.php b/third_party/flatbuffers/tests/MyGame/Example/TestSimpleTableWithEnum.php
deleted file mode 100644
index d37481f..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/TestSimpleTableWithEnum.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace MyGame\Example;
-
-use \Google\FlatBuffers\Struct;
-use \Google\FlatBuffers\Table;
-use \Google\FlatBuffers\ByteBuffer;
-use \Google\FlatBuffers\FlatBufferBuilder;
-
-class TestSimpleTableWithEnum extends Table
-{
- /**
- * @param ByteBuffer $bb
- * @return TestSimpleTableWithEnum
- */
- public static function getRootAsTestSimpleTableWithEnum(ByteBuffer $bb)
- {
- $obj = new TestSimpleTableWithEnum();
- return ($obj->init($bb->getInt($bb->getPosition()) + $bb->getPosition(), $bb));
- }
-
- public static function TestSimpleTableWithEnumIdentifier()
- {
- return "MONS";
- }
-
- public static function TestSimpleTableWithEnumBufferHasIdentifier(ByteBuffer $buf)
- {
- return self::__has_identifier($buf, self::TestSimpleTableWithEnumIdentifier());
- }
-
- public static function TestSimpleTableWithEnumExtension()
- {
- return "mon";
- }
-
- /**
- * @param int $_i offset
- * @param ByteBuffer $_bb
- * @return TestSimpleTableWithEnum
- **/
- public function init($_i, ByteBuffer $_bb)
- {
- $this->bb_pos = $_i;
- $this->bb = $_bb;
- return $this;
- }
-
- /**
- * @return sbyte
- */
- public function getColor()
- {
- $o = $this->__offset(4);
- return $o != 0 ? $this->bb->getSbyte($o + $this->bb_pos) : \MyGame\Example\Color::Green;
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return void
- */
- public static function startTestSimpleTableWithEnum(FlatBufferBuilder $builder)
- {
- $builder->StartObject(1);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return TestSimpleTableWithEnum
- */
- public static function createTestSimpleTableWithEnum(FlatBufferBuilder $builder, $color)
- {
- $builder->startObject(1);
- self::addColor($builder, $color);
- $o = $builder->endObject();
- return $o;
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param sbyte
- * @return void
- */
- public static function addColor(FlatBufferBuilder $builder, $color)
- {
- $builder->addSbyteX(0, $color, 2);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return int table offset
- */
- public static function endTestSimpleTableWithEnum(FlatBufferBuilder $builder)
- {
- $o = $builder->endObject();
- return $o;
- }
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/TestSimpleTableWithEnum.py b/third_party/flatbuffers/tests/MyGame/Example/TestSimpleTableWithEnum.py
deleted file mode 100644
index 8d64e97..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/TestSimpleTableWithEnum.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# automatically generated by the FlatBuffers compiler, do not modify
-
-# namespace: Example
-
-import flatbuffers
-
-class TestSimpleTableWithEnum(object):
- __slots__ = ['_tab']
-
- @classmethod
- def GetRootAsTestSimpleTableWithEnum(cls, buf, offset):
- n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset)
- x = TestSimpleTableWithEnum()
- x.Init(buf, n + offset)
- return x
-
- # TestSimpleTableWithEnum
- def Init(self, buf, pos):
- self._tab = flatbuffers.table.Table(buf, pos)
-
- # TestSimpleTableWithEnum
- def Color(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
- if o != 0:
- return self._tab.Get(flatbuffers.number_types.Int8Flags, o + self._tab.Pos)
- return 2
-
-def TestSimpleTableWithEnumStart(builder): builder.StartObject(1)
-def TestSimpleTableWithEnumAddColor(builder, color): builder.PrependInt8Slot(0, color, 2)
-def TestSimpleTableWithEnumEnd(builder): return builder.EndObject()
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Vec3.cs b/third_party/flatbuffers/tests/MyGame/Example/Vec3.cs
deleted file mode 100644
index 6ea4b0e..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Vec3.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace MyGame.Example
-{
-
-using global::System;
-using global::FlatBuffers;
-
-public struct Vec3 : IFlatbufferObject
-{
- private Struct __p;
- public ByteBuffer ByteBuffer { get { return __p.bb; } }
- public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; }
- public Vec3 __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public float X { get { return __p.bb.GetFloat(__p.bb_pos + 0); } }
- public void MutateX(float x) { __p.bb.PutFloat(__p.bb_pos + 0, x); }
- public float Y { get { return __p.bb.GetFloat(__p.bb_pos + 4); } }
- public void MutateY(float y) { __p.bb.PutFloat(__p.bb_pos + 4, y); }
- public float Z { get { return __p.bb.GetFloat(__p.bb_pos + 8); } }
- public void MutateZ(float z) { __p.bb.PutFloat(__p.bb_pos + 8, z); }
- public double Test1 { get { return __p.bb.GetDouble(__p.bb_pos + 16); } }
- public void MutateTest1(double test1) { __p.bb.PutDouble(__p.bb_pos + 16, test1); }
- public Color Test2 { get { return (Color)__p.bb.GetSbyte(__p.bb_pos + 24); } }
- public void MutateTest2(Color test2) { __p.bb.PutSbyte(__p.bb_pos + 24, (sbyte)test2); }
- public Test Test3 { get { return (new Test()).__assign(__p.bb_pos + 26, __p.bb); } }
-
- public static Offset<Vec3> CreateVec3(FlatBufferBuilder builder, float X, float Y, float Z, double Test1, Color Test2, short test3_A, sbyte test3_B) {
- builder.Prep(16, 32);
- builder.Pad(2);
- builder.Prep(2, 4);
- builder.Pad(1);
- builder.PutSbyte(test3_B);
- builder.PutShort(test3_A);
- builder.Pad(1);
- builder.PutSbyte((sbyte)Test2);
- builder.PutDouble(Test1);
- builder.Pad(4);
- builder.PutFloat(Z);
- builder.PutFloat(Y);
- builder.PutFloat(X);
- return new Offset<Vec3>(builder.Offset);
- }
-};
-
-
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Vec3.go b/third_party/flatbuffers/tests/MyGame/Example/Vec3.go
deleted file mode 100644
index a880a40..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Vec3.go
+++ /dev/null
@@ -1,80 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package Example
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type Vec3 struct {
- _tab flatbuffers.Struct
-}
-
-func (rcv *Vec3) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Vec3) Table() flatbuffers.Table {
- return rcv._tab.Table
-}
-
-func (rcv *Vec3) X() float32 {
- return rcv._tab.GetFloat32(rcv._tab.Pos + flatbuffers.UOffsetT(0))
-}
-func (rcv *Vec3) MutateX(n float32) bool {
- return rcv._tab.MutateFloat32(rcv._tab.Pos+flatbuffers.UOffsetT(0), n)
-}
-
-func (rcv *Vec3) Y() float32 {
- return rcv._tab.GetFloat32(rcv._tab.Pos + flatbuffers.UOffsetT(4))
-}
-func (rcv *Vec3) MutateY(n float32) bool {
- return rcv._tab.MutateFloat32(rcv._tab.Pos+flatbuffers.UOffsetT(4), n)
-}
-
-func (rcv *Vec3) Z() float32 {
- return rcv._tab.GetFloat32(rcv._tab.Pos + flatbuffers.UOffsetT(8))
-}
-func (rcv *Vec3) MutateZ(n float32) bool {
- return rcv._tab.MutateFloat32(rcv._tab.Pos+flatbuffers.UOffsetT(8), n)
-}
-
-func (rcv *Vec3) Test1() float64 {
- return rcv._tab.GetFloat64(rcv._tab.Pos + flatbuffers.UOffsetT(16))
-}
-func (rcv *Vec3) MutateTest1(n float64) bool {
- return rcv._tab.MutateFloat64(rcv._tab.Pos+flatbuffers.UOffsetT(16), n)
-}
-
-func (rcv *Vec3) Test2() int8 {
- return rcv._tab.GetInt8(rcv._tab.Pos + flatbuffers.UOffsetT(24))
-}
-func (rcv *Vec3) MutateTest2(n int8) bool {
- return rcv._tab.MutateInt8(rcv._tab.Pos+flatbuffers.UOffsetT(24), n)
-}
-
-func (rcv *Vec3) Test3(obj *Test) *Test {
- if obj == nil {
- obj = new(Test)
- }
- obj.Init(rcv._tab.Bytes, rcv._tab.Pos+26)
- return obj
-}
-
-func CreateVec3(builder *flatbuffers.Builder, x float32, y float32, z float32, test1 float64, test2 int8, test3_a int16, test3_b int8) flatbuffers.UOffsetT {
- builder.Prep(16, 32)
- builder.Pad(2)
- builder.Prep(2, 4)
- builder.Pad(1)
- builder.PrependInt8(test3_b)
- builder.PrependInt16(test3_a)
- builder.Pad(1)
- builder.PrependInt8(test2)
- builder.PrependFloat64(test1)
- builder.Pad(4)
- builder.PrependFloat32(z)
- builder.PrependFloat32(y)
- builder.PrependFloat32(x)
- return builder.Offset()
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Vec3.java b/third_party/flatbuffers/tests/MyGame/Example/Vec3.java
deleted file mode 100644
index 6cb820b..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Vec3.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package MyGame.Example;
-
-import java.nio.*;
-import java.lang.*;
-import java.util.*;
-import com.google.flatbuffers.*;
-
-@SuppressWarnings("unused")
-public final class Vec3 extends Struct {
- public void __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; }
- public Vec3 __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public float x() { return bb.getFloat(bb_pos + 0); }
- public void mutateX(float x) { bb.putFloat(bb_pos + 0, x); }
- public float y() { return bb.getFloat(bb_pos + 4); }
- public void mutateY(float y) { bb.putFloat(bb_pos + 4, y); }
- public float z() { return bb.getFloat(bb_pos + 8); }
- public void mutateZ(float z) { bb.putFloat(bb_pos + 8, z); }
- public double test1() { return bb.getDouble(bb_pos + 16); }
- public void mutateTest1(double test1) { bb.putDouble(bb_pos + 16, test1); }
- public byte test2() { return bb.get(bb_pos + 24); }
- public void mutateTest2(byte test2) { bb.put(bb_pos + 24, test2); }
- public Test test3() { return test3(new Test()); }
- public Test test3(Test obj) { return obj.__assign(bb_pos + 26, bb); }
-
- public static int createVec3(FlatBufferBuilder builder, float x, float y, float z, double test1, byte test2, short test3_a, byte test3_b) {
- builder.prep(16, 32);
- builder.pad(2);
- builder.prep(2, 4);
- builder.pad(1);
- builder.putByte(test3_b);
- builder.putShort(test3_a);
- builder.pad(1);
- builder.putByte(test2);
- builder.putDouble(test1);
- builder.pad(4);
- builder.putFloat(z);
- builder.putFloat(y);
- builder.putFloat(x);
- return builder.offset();
- }
-}
-
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Vec3.php b/third_party/flatbuffers/tests/MyGame/Example/Vec3.php
deleted file mode 100644
index ab1a827..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Vec3.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace MyGame\Example;
-
-use \Google\FlatBuffers\Struct;
-use \Google\FlatBuffers\Table;
-use \Google\FlatBuffers\ByteBuffer;
-use \Google\FlatBuffers\FlatBufferBuilder;
-
-class Vec3 extends Struct
-{
- /**
- * @param int $_i offset
- * @param ByteBuffer $_bb
- * @return Vec3
- **/
- public function init($_i, ByteBuffer $_bb)
- {
- $this->bb_pos = $_i;
- $this->bb = $_bb;
- return $this;
- }
-
- /**
- * @return float
- */
- public function GetX()
- {
- return $this->bb->getFloat($this->bb_pos + 0);
- }
-
- /**
- * @return float
- */
- public function GetY()
- {
- return $this->bb->getFloat($this->bb_pos + 4);
- }
-
- /**
- * @return float
- */
- public function GetZ()
- {
- return $this->bb->getFloat($this->bb_pos + 8);
- }
-
- /**
- * @return double
- */
- public function GetTest1()
- {
- return $this->bb->getDouble($this->bb_pos + 16);
- }
-
- /**
- * @return sbyte
- */
- public function GetTest2()
- {
- return $this->bb->getSbyte($this->bb_pos + 24);
- }
-
- /**
- * @return Test
- */
- public function getTest3()
- {
- $obj = new Test();
- $obj->init($this->bb_pos + 26, $this->bb);
- return $obj;
- }
-
-
- /**
- * @return int offset
- */
- public static function createVec3(FlatBufferBuilder $builder, $x, $y, $z, $test1, $test2, $test3_a, $test3_b)
- {
- $builder->prep(16, 32);
- $builder->pad(2);
- $builder->prep(2, 4);
- $builder->pad(1);
- $builder->putSbyte($test3_b);
- $builder->putShort($test3_a);
- $builder->pad(1);
- $builder->putSbyte($test2);
- $builder->putDouble($test1);
- $builder->pad(4);
- $builder->putFloat($z);
- $builder->putFloat($y);
- $builder->putFloat($x);
- return $builder->offset();
- }
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example/Vec3.py b/third_party/flatbuffers/tests/MyGame/Example/Vec3.py
deleted file mode 100644
index a354773..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/Vec3.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# automatically generated by the FlatBuffers compiler, do not modify
-
-# namespace: Example
-
-import flatbuffers
-
-class Vec3(object):
- __slots__ = ['_tab']
-
- # Vec3
- def Init(self, buf, pos):
- self._tab = flatbuffers.table.Table(buf, pos)
-
- # Vec3
- def X(self): return self._tab.Get(flatbuffers.number_types.Float32Flags, self._tab.Pos + flatbuffers.number_types.UOffsetTFlags.py_type(0))
- # Vec3
- def Y(self): return self._tab.Get(flatbuffers.number_types.Float32Flags, self._tab.Pos + flatbuffers.number_types.UOffsetTFlags.py_type(4))
- # Vec3
- def Z(self): return self._tab.Get(flatbuffers.number_types.Float32Flags, self._tab.Pos + flatbuffers.number_types.UOffsetTFlags.py_type(8))
- # Vec3
- def Test1(self): return self._tab.Get(flatbuffers.number_types.Float64Flags, self._tab.Pos + flatbuffers.number_types.UOffsetTFlags.py_type(16))
- # Vec3
- def Test2(self): return self._tab.Get(flatbuffers.number_types.Int8Flags, self._tab.Pos + flatbuffers.number_types.UOffsetTFlags.py_type(24))
- # Vec3
- def Test3(self, obj):
- obj.Init(self._tab.Bytes, self._tab.Pos + 26)
- return obj
-
-
-def CreateVec3(builder, x, y, z, test1, test2, test3_a, test3_b):
- builder.Prep(16, 32)
- builder.Pad(2)
- builder.Prep(2, 4)
- builder.Pad(1)
- builder.PrependInt8(test3_b)
- builder.PrependInt16(test3_a)
- builder.Pad(1)
- builder.PrependInt8(test2)
- builder.PrependFloat64(test1)
- builder.Pad(4)
- builder.PrependFloat32(z)
- builder.PrependFloat32(y)
- builder.PrependFloat32(x)
- return builder.Offset()
diff --git a/third_party/flatbuffers/tests/MyGame/Example/__init__.py b/third_party/flatbuffers/tests/MyGame/Example/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example/__init__.py
+++ /dev/null
diff --git a/third_party/flatbuffers/tests/MyGame/Example2/Monster.cs b/third_party/flatbuffers/tests/MyGame/Example2/Monster.cs
deleted file mode 100644
index 406c4bd..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example2/Monster.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace MyGame.Example2
-{
-
-using global::System;
-using global::FlatBuffers;
-
-public struct Monster : IFlatbufferObject
-{
- private Table __p;
- public ByteBuffer ByteBuffer { get { return __p.bb; } }
- public static Monster GetRootAsMonster(ByteBuffer _bb) { return GetRootAsMonster(_bb, new Monster()); }
- public static Monster GetRootAsMonster(ByteBuffer _bb, Monster obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
- public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; }
- public Monster __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
-
- public static void StartMonster(FlatBufferBuilder builder) { builder.StartObject(0); }
- public static Offset<Monster> EndMonster(FlatBufferBuilder builder) {
- int o = builder.EndObject();
- return new Offset<Monster>(o);
- }
-};
-
-
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example2/Monster.go b/third_party/flatbuffers/tests/MyGame/Example2/Monster.go
deleted file mode 100644
index 79949b9..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example2/Monster.go
+++ /dev/null
@@ -1,34 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package Example2
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type Monster struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsMonster(buf []byte, offset flatbuffers.UOffsetT) *Monster {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Monster{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Monster) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Monster) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func MonsterStart(builder *flatbuffers.Builder) {
- builder.StartObject(0)
-}
-func MonsterEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example2/Monster.java b/third_party/flatbuffers/tests/MyGame/Example2/Monster.java
deleted file mode 100644
index 69a1562..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example2/Monster.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package MyGame.Example2;
-
-import java.nio.*;
-import java.lang.*;
-import java.util.*;
-import com.google.flatbuffers.*;
-
-@SuppressWarnings("unused")
-public final class Monster extends Table {
- public static Monster getRootAsMonster(ByteBuffer _bb) { return getRootAsMonster(_bb, new Monster()); }
- public static Monster getRootAsMonster(ByteBuffer _bb, Monster obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
- public void __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; }
- public Monster __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
-
- public static void startMonster(FlatBufferBuilder builder) { builder.startObject(0); }
- public static int endMonster(FlatBufferBuilder builder) {
- int o = builder.endObject();
- return o;
- }
-}
-
diff --git a/third_party/flatbuffers/tests/MyGame/Example2/Monster.php b/third_party/flatbuffers/tests/MyGame/Example2/Monster.php
deleted file mode 100644
index b00f150..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example2/Monster.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace MyGame\Example2;
-
-use \Google\FlatBuffers\Struct;
-use \Google\FlatBuffers\Table;
-use \Google\FlatBuffers\ByteBuffer;
-use \Google\FlatBuffers\FlatBufferBuilder;
-
-class Monster extends Table
-{
- /**
- * @param ByteBuffer $bb
- * @return Monster
- */
- public static function getRootAsMonster(ByteBuffer $bb)
- {
- $obj = new Monster();
- return ($obj->init($bb->getInt($bb->getPosition()) + $bb->getPosition(), $bb));
- }
-
- public static function MonsterIdentifier()
- {
- return "MONS";
- }
-
- public static function MonsterBufferHasIdentifier(ByteBuffer $buf)
- {
- return self::__has_identifier($buf, self::MonsterIdentifier());
- }
-
- public static function MonsterExtension()
- {
- return "mon";
- }
-
- /**
- * @param int $_i offset
- * @param ByteBuffer $_bb
- * @return Monster
- **/
- public function init($_i, ByteBuffer $_bb)
- {
- $this->bb_pos = $_i;
- $this->bb = $_bb;
- return $this;
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return void
- */
- public static function startMonster(FlatBufferBuilder $builder)
- {
- $builder->StartObject(0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return Monster
- */
- public static function createMonster(FlatBufferBuilder $builder, )
- {
- $builder->startObject(0);
- $o = $builder->endObject();
- return $o;
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return int table offset
- */
- public static function endMonster(FlatBufferBuilder $builder)
- {
- $o = $builder->endObject();
- return $o;
- }
-}
diff --git a/third_party/flatbuffers/tests/MyGame/Example2/Monster.py b/third_party/flatbuffers/tests/MyGame/Example2/Monster.py
deleted file mode 100644
index d334f8e..0000000
--- a/third_party/flatbuffers/tests/MyGame/Example2/Monster.py
+++ /dev/null
@@ -1,22 +0,0 @@
-# automatically generated by the FlatBuffers compiler, do not modify
-
-# namespace: Example2
-
-import flatbuffers
-
-class Monster(object):
- __slots__ = ['_tab']
-
- @classmethod
- def GetRootAsMonster(cls, buf, offset):
- n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset)
- x = Monster()
- x.Init(buf, n + offset)
- return x
-
- # Monster
- def Init(self, buf, pos):
- self._tab = flatbuffers.table.Table(buf, pos)
-
-def MonsterStart(builder): builder.StartObject(0)
-def MonsterEnd(builder): return builder.EndObject()
diff --git a/third_party/flatbuffers/tests/MyGame/__init__.py b/third_party/flatbuffers/tests/MyGame/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/third_party/flatbuffers/tests/MyGame/__init__.py
+++ /dev/null
diff --git a/third_party/flatbuffers/tests/PythonTest.sh b/third_party/flatbuffers/tests/PythonTest.sh
deleted file mode 100755
index 00fee7c..0000000
--- a/third_party/flatbuffers/tests/PythonTest.sh
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/bin/bash -eu
-#
-# Copyright 2014 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-pushd "$(dirname $0)" >/dev/null
-test_dir="$(pwd)"
-gen_code_path=${test_dir}
-runtime_library_dir=${test_dir}/../python
-
-# Emit Python code for the example schema in the test dir:
-${test_dir}/../flatc -p -o ${gen_code_path} monster_test.fbs
-
-# Syntax: run_tests <interpreter> <benchmark vtable dedupes>
-# <benchmark read count> <benchmark build count>
-interpreters_tested=()
-function run_tests() {
- if $(which ${1} >/dev/null); then
- echo "Testing with interpreter: ${1}"
- PYTHONDONTWRITEBYTECODE=1 \
- JYTHONDONTWRITEBYTECODE=1 \
- PYTHONPATH=${runtime_library_dir}:${gen_code_path} \
- JYTHONPATH=${runtime_library_dir}:${gen_code_path} \
- COMPARE_GENERATED_TO_GO=0 \
- COMPARE_GENERATED_TO_JAVA=0 \
- $1 py_test.py $2 $3 $4
- interpreters_tested+=(${1})
- echo
- fi
-}
-
-# Run test suite with these interpreters. The arguments are benchmark counts.
-run_tests python2.6 100 100 100
-run_tests python2.7 100 100 100
-run_tests python3 100 100 100
-run_tests pypy 100 100 100
-
-# NOTE: We'd like to support python2.5 in the future.
-
-# NOTE: Jython 2.7.0 fails due to a bug in the stdlib `struct` library:
-# http://bugs.jython.org/issue2188
-
-if [ ${#interpreters_tested[@]} -eq 0 ]; then
- echo "No Python interpeters found on this system, could not run tests."
- exit 1
-fi
-
-# Run test suite with default python intereter.
-# (If the Python program `coverage` is available, it will be run, too.
-# Install `coverage` with `pip install coverage`.)
-if $(which coverage >/dev/null); then
- echo 'Found coverage utility, running coverage with default Python:'
-
- PYTHONDONTWRITEBYTECODE=1 \
- PYTHONPATH=${runtime_library_dir}:${gen_code_path} \
- coverage run --source=flatbuffers,MyGame py_test.py 0 0 0 > /dev/null
-
- echo
- cov_result=`coverage report --omit="*flatbuffers/vendor*,*py_test*" \
- | tail -n 1 | awk ' { print $4 } '`
- echo "Code coverage: ${cov_result}"
-else
- echo -n "Did not find coverage utility for default Python, skipping. "
- echo "Install with 'pip install coverage'."
-fi
-
-echo
-echo "OK: all tests passed for ${#interpreters_tested[@]} interpreters: ${interpreters_tested[@]}."
diff --git a/third_party/flatbuffers/tests/TypeScriptTest.sh b/third_party/flatbuffers/tests/TypeScriptTest.sh
deleted file mode 100755
index a5d44d5..0000000
--- a/third_party/flatbuffers/tests/TypeScriptTest.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-#
-# Copyright 2016 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-pushd "$(dirname $0)" >/dev/null
-../flatc --ts --no-fb-import --gen-mutable -o ts monster_test.fbs
-../flatc -b monster_test.fbs unicode_test.json
-npm install @types/flatbuffers
-tsc ts/monster_test_generated.ts
-npm uninstall @types/flatbuffers
-node JavaScriptTest ./ts/monster_test_generated
diff --git a/third_party/flatbuffers/tests/fuzzer/build_fuzzer.sh b/third_party/flatbuffers/tests/fuzzer/build_fuzzer.sh
deleted file mode 100644
index 48eb3b7..0000000
--- a/third_party/flatbuffers/tests/fuzzer/build_fuzzer.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2015 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-git clone https://chromium.googlesource.com/chromium/llvm-project/llvm/lib/Fuzzer
-clang++ -c -g -O2 -std=c++11 Fuzzer/*.cpp -IFuzzer
-ar ruv libFuzzer.a Fuzzer*.o
-rm -rf Fuzzer *.o
diff --git a/third_party/flatbuffers/tests/fuzzer/build_run_parser_test.sh b/third_party/flatbuffers/tests/fuzzer/build_run_parser_test.sh
deleted file mode 100644
index 3a053e7..0000000
--- a/third_party/flatbuffers/tests/fuzzer/build_run_parser_test.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2015 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-clang++ -fsanitize-coverage=edge -fsanitize=address -std=c++11 -stdlib=libstdc++ -I.. -I../../include flatbuffers_parser_fuzzer.cc ../../src/idl_parser.cpp ../../src/util.cpp libFuzzer.a -o fuzz_parser
-mkdir -p parser_corpus
-cp ../*.json ../*.fbs parser_corpus
-./fuzz_parser parser_corpus
diff --git a/third_party/flatbuffers/tests/fuzzer/build_run_verifier_test.sh b/third_party/flatbuffers/tests/fuzzer/build_run_verifier_test.sh
deleted file mode 100644
index 6761649..0000000
--- a/third_party/flatbuffers/tests/fuzzer/build_run_verifier_test.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2015 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-clang++ -fsanitize-coverage=edge -fsanitize=address -std=c++11 -stdlib=libstdc++ -I.. -I../../include flatbuffers_verifier_fuzzer.cc libFuzzer.a -o fuzz_verifier
-mkdir -p verifier_corpus
-cp ../*.mon verifier_corpus
-./fuzz_verifier verifier_corpus
diff --git a/third_party/flatbuffers/tests/fuzzer/flatbuffers_parser_fuzzer.cc b/third_party/flatbuffers/tests/fuzzer/flatbuffers_parser_fuzzer.cc
deleted file mode 100644
index 632b3b1..0000000
--- a/third_party/flatbuffers/tests/fuzzer/flatbuffers_parser_fuzzer.cc
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-#include <stddef.h>
-#include <stdint.h>
-#include <string>
-
-#include "flatbuffers/idl.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
- flatbuffers::Parser parser;
- // Guarantee 0-termination.
- std::string s(reinterpret_cast<const char *>(data), size);
- parser.Parse(s.c_str());
- return 0;
-}
diff --git a/third_party/flatbuffers/tests/fuzzer/flatbuffers_verifier_fuzzer.cc b/third_party/flatbuffers/tests/fuzzer/flatbuffers_verifier_fuzzer.cc
deleted file mode 100644
index d7d453c..0000000
--- a/third_party/flatbuffers/tests/fuzzer/flatbuffers_verifier_fuzzer.cc
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-#include <stddef.h>
-#include <stdint.h>
-#include <string>
-
-#include "monster_test_generated.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
- flatbuffers::Verifier verifier(data, size);
- MyGame::Example::VerifyMonsterBuffer(verifier);
- return 0;
-}
diff --git a/third_party/flatbuffers/tests/generate_code.bat b/third_party/flatbuffers/tests/generate_code.bat
deleted file mode 100644
index e7660a2..0000000
--- a/third_party/flatbuffers/tests/generate_code.bat
+++ /dev/null
@@ -1,20 +0,0 @@
-:: Copyright 2015 Google Inc. All rights reserved.
-::
-:: Licensed under the Apache License, Version 2.0 (the "License");
-:: you may not use this file except in compliance with the License.
-:: You may obtain a copy of the License at
-::
-:: http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-
-set buildtype=Release
-if "%1"=="-b" set buildtype=%2
-
-..\%buildtype%\flatc.exe --cpp --java --csharp --go --binary --python --js --php --grpc --gen-mutable --gen-object-api --no-includes monster_test.fbs monsterdata_test.json
-..\%buildtype%\flatc.exe --cpp --java --csharp --go --binary --python --js --php --gen-mutable -o namespace_test namespace_test\namespace_test1.fbs namespace_test\namespace_test2.fbs
-..\%buildtype%\flatc.exe --binary --schema monster_test.fbs
diff --git a/third_party/flatbuffers/tests/generate_code.sh b/third_party/flatbuffers/tests/generate_code.sh
deleted file mode 100755
index bdce840..0000000
--- a/third_party/flatbuffers/tests/generate_code.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2015 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-../flatc --cpp --java --csharp --go --binary --python --js --ts --php --grpc --gen-mutable --gen-object-api --no-includes --no-fb-import monster_test.fbs monsterdata_test.json
-../flatc --cpp --java --csharp --go --binary --python --js --ts --php --gen-mutable --no-fb-import -o namespace_test namespace_test/namespace_test1.fbs namespace_test/namespace_test2.fbs
-../flatc --cpp --gen-mutable --gen-object-api -o union_vector ./union_vector/union_vector.fbs
-../flatc -b --schema --bfbs-comments monster_test.fbs
-cd ../samples
-../flatc --cpp --gen-mutable --gen-object-api monster.fbs
-cd ../reflection
-sh generate_code.sh
diff --git a/third_party/flatbuffers/tests/go_test.go b/third_party/flatbuffers/tests/go_test.go
deleted file mode 100644
index 2aa375a..0000000
--- a/third_party/flatbuffers/tests/go_test.go
+++ /dev/null
@@ -1,1766 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package main
-
-import (
- example "MyGame/Example" // refers to generated code
- "bytes"
- "flag"
- "fmt"
- "io/ioutil"
- "os"
- "reflect"
- "sort"
- "testing"
-
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-var (
- cppData, javaData, outData string
- fuzz bool
- fuzzFields, fuzzObjects int
-)
-
-func init() {
- flag.StringVar(&cppData, "cpp_data", "",
- "location of monsterdata_test.mon to verify against (required)")
- flag.StringVar(&javaData, "java_data", "",
- "location of monsterdata_java_wire.mon to verify against (optional)")
- flag.StringVar(&outData, "out_data", "",
- "location to write generated Go data")
- flag.BoolVar(&fuzz, "fuzz", false, "perform fuzzing")
- flag.IntVar(&fuzzFields, "fuzz_fields", 4, "fields per fuzzer object")
- flag.IntVar(&fuzzObjects, "fuzz_objects", 10000,
- "number of fuzzer objects (higher is slower and more thorough")
- flag.Parse()
-
- if cppData == "" {
- fmt.Fprintf(os.Stderr, "cpp_data argument is required\n")
- os.Exit(1)
- }
-}
-
-// Store specific byte patterns in these variables for the fuzzer. These
-// values are taken verbatim from the C++ function FuzzTest1.
-var (
- overflowingInt32Val = flatbuffers.GetInt32([]byte{0x83, 0x33, 0x33, 0x33})
- overflowingInt64Val = flatbuffers.GetInt64([]byte{0x84, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44})
-)
-
-// TestAll runs all checks, failing if any errors occur.
-func TestAll(t *testing.T) {
- // Verify that the Go FlatBuffers runtime library generates the
- // expected bytes (does not use any schema):
- CheckByteLayout(t.Fatalf)
- CheckMutateMethods(t.Fatalf)
-
- // Verify that panics are raised during exceptional conditions:
- CheckNotInObjectError(t.Fatalf)
- CheckStringIsNestedError(t.Fatalf)
- CheckByteStringIsNestedError(t.Fatalf)
- CheckStructIsNotInlineError(t.Fatalf)
- CheckFinishedBytesError(t.Fatalf)
-
- // Verify that GetRootAs works for non-root tables
- CheckGetRootAsForNonRootTable(t.Fatalf)
- CheckTableAccessors(t.Fatalf)
-
- // Verify that using the generated Go code builds a buffer without
- // returning errors:
- generated, off := CheckGeneratedBuild(t.Fatalf)
-
- // Verify that the buffer generated by Go code is readable by the
- // generated Go code:
- CheckReadBuffer(generated, off, t.Fatalf)
- CheckMutateBuffer(generated, off, t.Fatalf)
-
- // Verify that the buffer generated by C++ code is readable by the
- // generated Go code:
- monsterDataCpp, err := ioutil.ReadFile(cppData)
- if err != nil {
- t.Fatal(err)
- }
- CheckReadBuffer(monsterDataCpp, 0, t.Fatalf)
- CheckMutateBuffer(monsterDataCpp, 0, t.Fatalf)
-
- // Verify that vtables are deduplicated when written:
- CheckVtableDeduplication(t.Fatalf)
-
- // Verify the enum names
- CheckEnumNames(t.Fatalf)
-
- // Verify that the Go code used in FlatBuffers documentation passes
- // some sanity checks:
- CheckDocExample(generated, off, t.Fatalf)
-
- // Check Builder.CreateByteVector
- CheckCreateByteVector(t.Fatalf)
-
- // If the filename of the FlatBuffers file generated by the Java test
- // is given, check that Go code can read it, and that Go code
- // generates an identical buffer when used to create the example data:
- if javaData != "" {
- monsterDataJava, err := ioutil.ReadFile(javaData)
- if err != nil {
- t.Fatal(err)
- }
- CheckReadBuffer(monsterDataJava, 0, t.Fatalf)
- CheckByteEquality(generated[off:], monsterDataJava, t.Fatalf)
- }
-
- // Verify that various fuzzing scenarios produce a valid FlatBuffer.
- if fuzz {
- checkFuzz(fuzzFields, fuzzObjects, t.Fatalf)
- }
-
- // Write the generated buffer out to a file:
- err = ioutil.WriteFile(outData, generated[off:], os.FileMode(0644))
- if err != nil {
- t.Fatal(err)
- }
-}
-
-// CheckReadBuffer checks that the given buffer is evaluated correctly
-// as the example Monster.
-func CheckReadBuffer(buf []byte, offset flatbuffers.UOffsetT, fail func(string, ...interface{})) {
- // try the two ways of generating a monster
- monster1 := example.GetRootAsMonster(buf, offset)
- monster2 := &example.Monster{}
- flatbuffers.GetRootAs(buf, offset, monster2)
- for _, monster := range []*example.Monster{monster1, monster2} {
- if got := monster.Hp(); 80 != got {
- fail(FailString("hp", 80, got))
- }
-
- // default
- if got := monster.Mana(); 150 != got {
- fail(FailString("mana", 150, got))
- }
-
- if got := monster.Name(); !bytes.Equal([]byte("MyMonster"), got) {
- fail(FailString("name", "MyMonster", got))
- }
-
- // initialize a Vec3 from Pos()
- vec := new(example.Vec3)
- vec = monster.Pos(vec)
- if vec == nil {
- fail("vec3 initialization failed")
- }
-
- // check that new allocs equal given ones:
- vec2 := monster.Pos(nil)
- if !reflect.DeepEqual(vec, vec2) {
- fail("fresh allocation failed")
- }
-
- // verify the properties of the Vec3
- if got := vec.X(); float32(1.0) != got {
- fail(FailString("Pos.X", float32(1.0), got))
- }
-
- if got := vec.Y(); float32(2.0) != got {
- fail(FailString("Pos.Y", float32(2.0), got))
- }
-
- if got := vec.Z(); float32(3.0) != got {
- fail(FailString("Pos.Z", float32(3.0), got))
- }
-
- if got := vec.Test1(); float64(3.0) != got {
- fail(FailString("Pos.Test1", float64(3.0), got))
- }
-
- if got := vec.Test2(); int8(2) != got {
- fail(FailString("Pos.Test2", int8(2), got))
- }
-
- // initialize a Test from Test3(...)
- t := new(example.Test)
- t = vec.Test3(t)
- if t == nil {
- fail("vec.Test3(&t) failed")
- }
-
- // check that new allocs equal given ones:
- t2 := vec.Test3(nil)
- if !reflect.DeepEqual(t, t2) {
- fail("fresh allocation failed")
- }
-
- // verify the properties of the Test
- if got := t.A(); int16(5) != got {
- fail(FailString("t.A()", int16(5), got))
- }
-
- if got := t.B(); int8(6) != got {
- fail(FailString("t.B()", int8(6), got))
- }
-
- if got := monster.TestType(); example.AnyMonster != got {
- fail(FailString("monster.TestType()", example.AnyMonster, got))
- }
-
- // initialize a Table from a union field Test(...)
- var table2 flatbuffers.Table
- if ok := monster.Test(&table2); !ok {
- fail("monster.Test(&monster2) failed")
- }
-
- // initialize a Monster from the Table from the union
- var monster2 example.Monster
- monster2.Init(table2.Bytes, table2.Pos)
-
- if got := monster2.Name(); !bytes.Equal([]byte("Fred"), got) {
- fail(FailString("monster2.Name()", "Fred", got))
- }
-
- inventorySlice := monster.InventoryBytes()
- if len(inventorySlice) != monster.InventoryLength() {
- fail(FailString("len(monster.InventoryBytes) != monster.InventoryLength", len(inventorySlice), monster.InventoryLength()))
- }
-
- if got := monster.InventoryLength(); 5 != got {
- fail(FailString("monster.InventoryLength", 5, got))
- }
-
- invsum := 0
- l := monster.InventoryLength()
- for i := 0; i < l; i++ {
- v := monster.Inventory(i)
- if v != inventorySlice[i] {
- fail(FailString("monster inventory slice[i] != Inventory(i)", v, inventorySlice[i]))
- }
- invsum += int(v)
- }
- if invsum != 10 {
- fail(FailString("monster inventory sum", 10, invsum))
- }
-
- if got := monster.Test4Length(); 2 != got {
- fail(FailString("monster.Test4Length()", 2, got))
- }
-
- var test0 example.Test
- ok := monster.Test4(&test0, 0)
- if !ok {
- fail(FailString("monster.Test4(&test0, 0)", true, ok))
- }
-
- var test1 example.Test
- ok = monster.Test4(&test1, 1)
- if !ok {
- fail(FailString("monster.Test4(&test1, 1)", true, ok))
- }
-
- // the position of test0 and test1 are swapped in monsterdata_java_wire
- // and monsterdata_test_wire, so ignore ordering
- v0 := test0.A()
- v1 := test0.B()
- v2 := test1.A()
- v3 := test1.B()
- sum := int(v0) + int(v1) + int(v2) + int(v3)
-
- if 100 != sum {
- fail(FailString("test0 and test1 sum", 100, sum))
- }
-
- if got := monster.TestarrayofstringLength(); 2 != got {
- fail(FailString("Testarrayofstring length", 2, got))
- }
-
- if got := monster.Testarrayofstring(0); !bytes.Equal([]byte("test1"), got) {
- fail(FailString("Testarrayofstring(0)", "test1", got))
- }
-
- if got := monster.Testarrayofstring(1); !bytes.Equal([]byte("test2"), got) {
- fail(FailString("Testarrayofstring(1)", "test2", got))
- }
- }
-}
-
-// CheckMutateBuffer checks that the given buffer can be mutated correctly
-// as the example Monster. Only available scalar values are mutated.
-func CheckMutateBuffer(org []byte, offset flatbuffers.UOffsetT, fail func(string, ...interface{})) {
- // make a copy to mutate
- buf := make([]byte, len(org))
- copy(buf, org)
-
- // load monster data from the buffer
- monster := example.GetRootAsMonster(buf, offset)
-
- // test case struct
- type testcase struct {
- field string
- testfn func() bool
- }
-
- testForOriginalValues := []testcase{
- testcase{"Hp", func() bool { return monster.Hp() == 80 }},
- testcase{"Mana", func() bool { return monster.Mana() == 150 }},
- testcase{"Pos.X'", func() bool { return monster.Pos(nil).X() == float32(1.0) }},
- testcase{"Pos.Y'", func() bool { return monster.Pos(nil).Y() == float32(2.0) }},
- testcase{"Pos.Z'", func() bool { return monster.Pos(nil).Z() == float32(3.0) }},
- testcase{"Pos.Test1'", func() bool { return monster.Pos(nil).Test1() == float64(3.0) }},
- testcase{"Pos.Test2'", func() bool { return monster.Pos(nil).Test2() == int8(2) }},
- testcase{"Pos.Test3.A", func() bool { return monster.Pos(nil).Test3(nil).A() == int16(5) }},
- testcase{"Pos.Test3.B", func() bool { return monster.Pos(nil).Test3(nil).B() == int8(6) }},
- }
-
- testMutability := []testcase{
- testcase{"Hp", func() bool { return monster.MutateHp(70) }},
- testcase{"Mana", func() bool { return !monster.MutateMana(140) }},
- testcase{"Pos.X", func() bool { return monster.Pos(nil).MutateX(10.0) }},
- testcase{"Pos.Y", func() bool { return monster.Pos(nil).MutateY(20.0) }},
- testcase{"Pos.Z", func() bool { return monster.Pos(nil).MutateZ(30.0) }},
- testcase{"Pos.Test1", func() bool { return monster.Pos(nil).MutateTest1(30.0) }},
- testcase{"Pos.Test2", func() bool { return monster.Pos(nil).MutateTest2(20) }},
- testcase{"Pos.Test3.A", func() bool { return monster.Pos(nil).Test3(nil).MutateA(50) }},
- testcase{"Pos.Test3.B", func() bool { return monster.Pos(nil).Test3(nil).MutateB(60) }},
- }
-
- testForMutatedValues := []testcase{
- testcase{"Hp", func() bool { return monster.Hp() == 70 }},
- testcase{"Mana", func() bool { return monster.Mana() == 150 }},
- testcase{"Pos.X'", func() bool { return monster.Pos(nil).X() == float32(10.0) }},
- testcase{"Pos.Y'", func() bool { return monster.Pos(nil).Y() == float32(20.0) }},
- testcase{"Pos.Z'", func() bool { return monster.Pos(nil).Z() == float32(30.0) }},
- testcase{"Pos.Test1'", func() bool { return monster.Pos(nil).Test1() == float64(30.0) }},
- testcase{"Pos.Test2'", func() bool { return monster.Pos(nil).Test2() == int8(20) }},
- testcase{"Pos.Test3.A", func() bool { return monster.Pos(nil).Test3(nil).A() == int16(50) }},
- testcase{"Pos.Test3.B", func() bool { return monster.Pos(nil).Test3(nil).B() == int8(60) }},
- }
-
- // make sure original values are okay
- for _, t := range testForOriginalValues {
- if !t.testfn() {
- fail("field '" + t.field + "' doesn't have the expected original value")
- }
- }
-
- // try to mutate fields and check mutability
- for _, t := range testMutability {
- if !t.testfn() {
- fail(FailString("field '"+t.field+"' failed mutability test", true, false))
- }
- }
-
- // test whether values have changed
- for _, t := range testForMutatedValues {
- if !t.testfn() {
- fail("field '" + t.field + "' doesn't have the expected mutated value")
- }
- }
-
- // make sure the buffer has changed
- if reflect.DeepEqual(buf, org) {
- fail("mutate buffer failed")
- }
-
- // To make sure the buffer has changed accordingly
- // Read data from the buffer and verify all fields
- monster = example.GetRootAsMonster(buf, offset)
- for _, t := range testForMutatedValues {
- if !t.testfn() {
- fail("field '" + t.field + "' doesn't have the expected mutated value")
- }
- }
-
- // reverting all fields to original values should
- // re-create the original buffer. Mutate all fields
- // back to their original values and compare buffers.
- // This test is done to make sure mutations do not do
- // any unnecessary changes to the buffer.
- monster = example.GetRootAsMonster(buf, offset)
- monster.MutateHp(80)
- monster.Pos(nil).MutateX(1.0)
- monster.Pos(nil).MutateY(2.0)
- monster.Pos(nil).MutateZ(3.0)
- monster.Pos(nil).MutateTest1(3.0)
- monster.Pos(nil).MutateTest2(2)
- monster.Pos(nil).Test3(nil).MutateA(5)
- monster.Pos(nil).Test3(nil).MutateB(6)
-
- for _, t := range testForOriginalValues {
- if !t.testfn() {
- fail("field '" + t.field + "' doesn't have the expected original value")
- }
- }
-
- // buffer should have original values
- if !reflect.DeepEqual(buf, org) {
- fail("revert changes failed")
- }
-}
-
-// Low level stress/fuzz test: serialize/deserialize a variety of
-// different kinds of data in different combinations
-func checkFuzz(fuzzFields, fuzzObjects int, fail func(string, ...interface{})) {
-
- // Values we're testing against: chosen to ensure no bits get chopped
- // off anywhere, and also be different from eachother.
- boolVal := true
- int8Val := int8(-127) // 0x81
- uint8Val := uint8(0xFF)
- int16Val := int16(-32222) // 0x8222
- uint16Val := uint16(0xFEEE)
- int32Val := int32(overflowingInt32Val)
- uint32Val := uint32(0xFDDDDDDD)
- int64Val := int64(overflowingInt64Val)
- uint64Val := uint64(0xFCCCCCCCCCCCCCCC)
- float32Val := float32(3.14159)
- float64Val := float64(3.14159265359)
-
- testValuesMax := 11 // hardcoded to the number of scalar types
-
- builder := flatbuffers.NewBuilder(0)
- l := NewLCG()
-
- objects := make([]flatbuffers.UOffsetT, fuzzObjects)
-
- // Generate fuzzObjects random objects each consisting of
- // fuzzFields fields, each of a random type.
- for i := 0; i < fuzzObjects; i++ {
- builder.StartObject(fuzzFields)
-
- for f := 0; f < fuzzFields; f++ {
- choice := l.Next() % uint32(testValuesMax)
- switch choice {
- case 0:
- builder.PrependBoolSlot(int(f), boolVal, false)
- case 1:
- builder.PrependInt8Slot(int(f), int8Val, 0)
- case 2:
- builder.PrependUint8Slot(int(f), uint8Val, 0)
- case 3:
- builder.PrependInt16Slot(int(f), int16Val, 0)
- case 4:
- builder.PrependUint16Slot(int(f), uint16Val, 0)
- case 5:
- builder.PrependInt32Slot(int(f), int32Val, 0)
- case 6:
- builder.PrependUint32Slot(int(f), uint32Val, 0)
- case 7:
- builder.PrependInt64Slot(int(f), int64Val, 0)
- case 8:
- builder.PrependUint64Slot(int(f), uint64Val, 0)
- case 9:
- builder.PrependFloat32Slot(int(f), float32Val, 0)
- case 10:
- builder.PrependFloat64Slot(int(f), float64Val, 0)
- }
- }
-
- off := builder.EndObject()
-
- // store the offset from the end of the builder buffer,
- // since it will keep growing:
- objects[i] = off
- }
-
- // Do some bookkeeping to generate stats on fuzzes:
- stats := map[string]int{}
- check := func(desc string, want, got interface{}) {
- stats[desc]++
- if want != got {
- fail("%s want %v got %v", desc, want, got)
- }
- }
-
- l = NewLCG() // Reset.
-
- // Test that all objects we generated are readable and return the
- // expected values. We generate random objects in the same order
- // so this is deterministic.
- for i := 0; i < fuzzObjects; i++ {
-
- table := &flatbuffers.Table{
- Bytes: builder.Bytes,
- Pos: flatbuffers.UOffsetT(len(builder.Bytes)) - objects[i],
- }
-
- for j := 0; j < fuzzFields; j++ {
- f := flatbuffers.VOffsetT((flatbuffers.VtableMetadataFields + j) * flatbuffers.SizeVOffsetT)
- choice := l.Next() % uint32(testValuesMax)
-
- switch choice {
- case 0:
- check("bool", boolVal, table.GetBoolSlot(f, false))
- case 1:
- check("int8", int8Val, table.GetInt8Slot(f, 0))
- case 2:
- check("uint8", uint8Val, table.GetUint8Slot(f, 0))
- case 3:
- check("int16", int16Val, table.GetInt16Slot(f, 0))
- case 4:
- check("uint16", uint16Val, table.GetUint16Slot(f, 0))
- case 5:
- check("int32", int32Val, table.GetInt32Slot(f, 0))
- case 6:
- check("uint32", uint32Val, table.GetUint32Slot(f, 0))
- case 7:
- check("int64", int64Val, table.GetInt64Slot(f, 0))
- case 8:
- check("uint64", uint64Val, table.GetUint64Slot(f, 0))
- case 9:
- check("float32", float32Val, table.GetFloat32Slot(f, 0))
- case 10:
- check("float64", float64Val, table.GetFloat64Slot(f, 0))
- }
- }
- }
-
- // If enough checks were made, verify that all scalar types were used:
- if fuzzFields*fuzzObjects >= testValuesMax {
- if len(stats) != testValuesMax {
- fail("fuzzing failed to test all scalar types")
- }
- }
-
- // Print some counts, if needed:
- if testing.Verbose() {
- if fuzzFields == 0 || fuzzObjects == 0 {
- fmt.Printf("fuzz\tfields: %d\tobjects: %d\t[none]\t%d\n",
- fuzzFields, fuzzObjects, 0)
- } else {
- keys := make([]string, 0, len(stats))
- for k := range stats {
- keys = append(keys, k)
- }
- sort.Strings(keys)
- for _, k := range keys {
- fmt.Printf("fuzz\tfields: %d\tobjects: %d\t%s\t%d\n",
- fuzzFields, fuzzObjects, k, stats[k])
- }
- }
- }
-
- return
-}
-
-// FailString makes a message for when expectations differ from reality.
-func FailString(name string, want, got interface{}) string {
- return fmt.Sprintf("bad %s: want %#v got %#v", name, want, got)
-}
-
-// CheckByteLayout verifies the bytes of a Builder in various scenarios.
-func CheckByteLayout(fail func(string, ...interface{})) {
- var b *flatbuffers.Builder
-
- var i int
- check := func(want []byte) {
- i++
- got := b.Bytes[b.Head():]
- if !bytes.Equal(want, got) {
- fail("case %d: want\n%v\nbut got\n%v\n", i, want, got)
- }
- }
-
- // test 1: numbers
-
- b = flatbuffers.NewBuilder(0)
- check([]byte{})
- b.PrependBool(true)
- check([]byte{1})
- b.PrependInt8(-127)
- check([]byte{129, 1})
- b.PrependUint8(255)
- check([]byte{255, 129, 1})
- b.PrependInt16(-32222)
- check([]byte{0x22, 0x82, 0, 255, 129, 1}) // first pad
- b.PrependUint16(0xFEEE)
- check([]byte{0xEE, 0xFE, 0x22, 0x82, 0, 255, 129, 1}) // no pad this time
- b.PrependInt32(-53687092)
- check([]byte{204, 204, 204, 252, 0xEE, 0xFE, 0x22, 0x82, 0, 255, 129, 1})
- b.PrependUint32(0x98765432)
- check([]byte{0x32, 0x54, 0x76, 0x98, 204, 204, 204, 252, 0xEE, 0xFE, 0x22, 0x82, 0, 255, 129, 1})
-
- // test 1b: numbers 2
-
- b = flatbuffers.NewBuilder(0)
- b.PrependUint64(0x1122334455667788)
- check([]byte{0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11})
-
- // test 2: 1xbyte vector
-
- b = flatbuffers.NewBuilder(0)
- check([]byte{})
- b.StartVector(flatbuffers.SizeByte, 1, 1)
- check([]byte{0, 0, 0}) // align to 4bytes
- b.PrependByte(1)
- check([]byte{1, 0, 0, 0})
- b.EndVector(1)
- check([]byte{1, 0, 0, 0, 1, 0, 0, 0}) // padding
-
- // test 3: 2xbyte vector
-
- b = flatbuffers.NewBuilder(0)
- b.StartVector(flatbuffers.SizeByte, 2, 1)
- check([]byte{0, 0}) // align to 4bytes
- b.PrependByte(1)
- check([]byte{1, 0, 0})
- b.PrependByte(2)
- check([]byte{2, 1, 0, 0})
- b.EndVector(2)
- check([]byte{2, 0, 0, 0, 2, 1, 0, 0}) // padding
-
- // test 3b: 11xbyte vector matches builder size
-
- b = flatbuffers.NewBuilder(12)
- b.StartVector(flatbuffers.SizeByte, 8, 1)
- start := []byte{}
- check(start)
- for i := 1; i < 12; i++ {
- b.PrependByte(byte(i))
- start = append([]byte{byte(i)}, start...)
- check(start)
- }
- b.EndVector(8)
- check(append([]byte{8, 0, 0, 0}, start...))
-
- // test 4: 1xuint16 vector
-
- b = flatbuffers.NewBuilder(0)
- b.StartVector(flatbuffers.SizeUint16, 1, 1)
- check([]byte{0, 0}) // align to 4bytes
- b.PrependUint16(1)
- check([]byte{1, 0, 0, 0})
- b.EndVector(1)
- check([]byte{1, 0, 0, 0, 1, 0, 0, 0}) // padding
-
- // test 5: 2xuint16 vector
-
- b = flatbuffers.NewBuilder(0)
- b.StartVector(flatbuffers.SizeUint16, 2, 1)
- check([]byte{}) // align to 4bytes
- b.PrependUint16(0xABCD)
- check([]byte{0xCD, 0xAB})
- b.PrependUint16(0xDCBA)
- check([]byte{0xBA, 0xDC, 0xCD, 0xAB})
- b.EndVector(2)
- check([]byte{2, 0, 0, 0, 0xBA, 0xDC, 0xCD, 0xAB})
-
- // test 6: CreateString
-
- b = flatbuffers.NewBuilder(0)
- b.CreateString("foo")
- check([]byte{3, 0, 0, 0, 'f', 'o', 'o', 0}) // 0-terminated, no pad
- b.CreateString("moop")
- check([]byte{4, 0, 0, 0, 'm', 'o', 'o', 'p', 0, 0, 0, 0, // 0-terminated, 3-byte pad
- 3, 0, 0, 0, 'f', 'o', 'o', 0})
-
- // test 6b: CreateString unicode
-
- b = flatbuffers.NewBuilder(0)
- // These characters are chinese from blog.golang.org/strings
- // We use escape codes here so that editors without unicode support
- // aren't bothered:
- uni_str := "\u65e5\u672c\u8a9e"
- b.CreateString(uni_str)
- check([]byte{9, 0, 0, 0, 230, 151, 165, 230, 156, 172, 232, 170, 158, 0, // null-terminated, 2-byte pad
- 0, 0})
-
- // test 6c: CreateByteString
-
- b = flatbuffers.NewBuilder(0)
- b.CreateByteString([]byte("foo"))
- check([]byte{3, 0, 0, 0, 'f', 'o', 'o', 0}) // 0-terminated, no pad
- b.CreateByteString([]byte("moop"))
- check([]byte{4, 0, 0, 0, 'm', 'o', 'o', 'p', 0, 0, 0, 0, // 0-terminated, 3-byte pad
- 3, 0, 0, 0, 'f', 'o', 'o', 0})
-
- // test 7: empty vtable
- b = flatbuffers.NewBuilder(0)
- b.StartObject(0)
- check([]byte{})
- b.EndObject()
- check([]byte{4, 0, 4, 0, 4, 0, 0, 0})
-
- // test 8: vtable with one true bool
- b = flatbuffers.NewBuilder(0)
- check([]byte{})
- b.StartObject(1)
- check([]byte{})
- b.PrependBoolSlot(0, true, false)
- b.EndObject()
- check([]byte{
- 6, 0, // vtable bytes
- 8, 0, // length of object including vtable offset
- 7, 0, // start of bool value
- 6, 0, 0, 0, // offset for start of vtable (int32)
- 0, 0, 0, // padded to 4 bytes
- 1, // bool value
- })
-
- // test 9: vtable with one default bool
- b = flatbuffers.NewBuilder(0)
- check([]byte{})
- b.StartObject(1)
- check([]byte{})
- b.PrependBoolSlot(0, false, false)
- b.EndObject()
- check([]byte{
- 6, 0, // vtable bytes
- 4, 0, // end of object from here
- 0, 0, // entry 1 is zero
- 6, 0, 0, 0, // offset for start of vtable (int32)
- })
-
- // test 10: vtable with one int16
- b = flatbuffers.NewBuilder(0)
- b.StartObject(1)
- b.PrependInt16Slot(0, 0x789A, 0)
- b.EndObject()
- check([]byte{
- 6, 0, // vtable bytes
- 8, 0, // end of object from here
- 6, 0, // offset to value
- 6, 0, 0, 0, // offset for start of vtable (int32)
- 0, 0, // padding to 4 bytes
- 0x9A, 0x78,
- })
-
- // test 11: vtable with two int16
- b = flatbuffers.NewBuilder(0)
- b.StartObject(2)
- b.PrependInt16Slot(0, 0x3456, 0)
- b.PrependInt16Slot(1, 0x789A, 0)
- b.EndObject()
- check([]byte{
- 8, 0, // vtable bytes
- 8, 0, // end of object from here
- 6, 0, // offset to value 0
- 4, 0, // offset to value 1
- 8, 0, 0, 0, // offset for start of vtable (int32)
- 0x9A, 0x78, // value 1
- 0x56, 0x34, // value 0
- })
-
- // test 12: vtable with int16 and bool
- b = flatbuffers.NewBuilder(0)
- b.StartObject(2)
- b.PrependInt16Slot(0, 0x3456, 0)
- b.PrependBoolSlot(1, true, false)
- b.EndObject()
- check([]byte{
- 8, 0, // vtable bytes
- 8, 0, // end of object from here
- 6, 0, // offset to value 0
- 5, 0, // offset to value 1
- 8, 0, 0, 0, // offset for start of vtable (int32)
- 0, // padding
- 1, // value 1
- 0x56, 0x34, // value 0
- })
-
- // test 12: vtable with empty vector
- b = flatbuffers.NewBuilder(0)
- b.StartVector(flatbuffers.SizeByte, 0, 1)
- vecend := b.EndVector(0)
- b.StartObject(1)
- b.PrependUOffsetTSlot(0, vecend, 0)
- b.EndObject()
- check([]byte{
- 6, 0, // vtable bytes
- 8, 0,
- 4, 0, // offset to vector offset
- 6, 0, 0, 0, // offset for start of vtable (int32)
- 4, 0, 0, 0,
- 0, 0, 0, 0, // length of vector (not in struct)
- })
-
- // test 12b: vtable with empty vector of byte and some scalars
- b = flatbuffers.NewBuilder(0)
- b.StartVector(flatbuffers.SizeByte, 0, 1)
- vecend = b.EndVector(0)
- b.StartObject(2)
- b.PrependInt16Slot(0, 55, 0)
- b.PrependUOffsetTSlot(1, vecend, 0)
- b.EndObject()
- check([]byte{
- 8, 0, // vtable bytes
- 12, 0,
- 10, 0, // offset to value 0
- 4, 0, // offset to vector offset
- 8, 0, 0, 0, // vtable loc
- 8, 0, 0, 0, // value 1
- 0, 0, 55, 0, // value 0
-
- 0, 0, 0, 0, // length of vector (not in struct)
- })
-
- // test 13: vtable with 1 int16 and 2-vector of int16
- b = flatbuffers.NewBuilder(0)
- b.StartVector(flatbuffers.SizeInt16, 2, 1)
- b.PrependInt16(0x1234)
- b.PrependInt16(0x5678)
- vecend = b.EndVector(2)
- b.StartObject(2)
- b.PrependUOffsetTSlot(1, vecend, 0)
- b.PrependInt16Slot(0, 55, 0)
- b.EndObject()
- check([]byte{
- 8, 0, // vtable bytes
- 12, 0, // length of object
- 6, 0, // start of value 0 from end of vtable
- 8, 0, // start of value 1 from end of buffer
- 8, 0, 0, 0, // offset for start of vtable (int32)
- 0, 0, // padding
- 55, 0, // value 0
- 4, 0, 0, 0, // vector position from here
- 2, 0, 0, 0, // length of vector (uint32)
- 0x78, 0x56, // vector value 1
- 0x34, 0x12, // vector value 0
- })
-
- // test 14: vtable with 1 struct of 1 int8, 1 int16, 1 int32
- b = flatbuffers.NewBuilder(0)
- b.StartObject(1)
- b.Prep(4+4+4, 0)
- b.PrependInt8(55)
- b.Pad(3)
- b.PrependInt16(0x1234)
- b.Pad(2)
- b.PrependInt32(0x12345678)
- structStart := b.Offset()
- b.PrependStructSlot(0, structStart, 0)
- b.EndObject()
- check([]byte{
- 6, 0, // vtable bytes
- 16, 0, // end of object from here
- 4, 0, // start of struct from here
- 6, 0, 0, 0, // offset for start of vtable (int32)
- 0x78, 0x56, 0x34, 0x12, // value 2
- 0, 0, // padding
- 0x34, 0x12, // value 1
- 0, 0, 0, // padding
- 55, // value 0
- })
-
- // test 15: vtable with 1 vector of 2 struct of 2 int8
- b = flatbuffers.NewBuilder(0)
- b.StartVector(flatbuffers.SizeInt8*2, 2, 1)
- b.PrependInt8(33)
- b.PrependInt8(44)
- b.PrependInt8(55)
- b.PrependInt8(66)
- vecend = b.EndVector(2)
- b.StartObject(1)
- b.PrependUOffsetTSlot(0, vecend, 0)
- b.EndObject()
- check([]byte{
- 6, 0, // vtable bytes
- 8, 0,
- 4, 0, // offset of vector offset
- 6, 0, 0, 0, // offset for start of vtable (int32)
- 4, 0, 0, 0, // vector start offset
-
- 2, 0, 0, 0, // vector length
- 66, // vector value 1,1
- 55, // vector value 1,0
- 44, // vector value 0,1
- 33, // vector value 0,0
- })
-
- // test 16: table with some elements
- b = flatbuffers.NewBuilder(0)
- b.StartObject(2)
- b.PrependInt8Slot(0, 33, 0)
- b.PrependInt16Slot(1, 66, 0)
- off := b.EndObject()
- b.Finish(off)
-
- check([]byte{
- 12, 0, 0, 0, // root of table: points to vtable offset
-
- 8, 0, // vtable bytes
- 8, 0, // end of object from here
- 7, 0, // start of value 0
- 4, 0, // start of value 1
-
- 8, 0, 0, 0, // offset for start of vtable (int32)
-
- 66, 0, // value 1
- 0, // padding
- 33, // value 0
- })
-
- // test 17: one unfinished table and one finished table
- b = flatbuffers.NewBuilder(0)
- b.StartObject(2)
- b.PrependInt8Slot(0, 33, 0)
- b.PrependInt8Slot(1, 44, 0)
- off = b.EndObject()
- b.Finish(off)
-
- b.StartObject(3)
- b.PrependInt8Slot(0, 55, 0)
- b.PrependInt8Slot(1, 66, 0)
- b.PrependInt8Slot(2, 77, 0)
- off = b.EndObject()
- b.Finish(off)
-
- check([]byte{
- 16, 0, 0, 0, // root of table: points to object
- 0, 0, // padding
-
- 10, 0, // vtable bytes
- 8, 0, // size of object
- 7, 0, // start of value 0
- 6, 0, // start of value 1
- 5, 0, // start of value 2
- 10, 0, 0, 0, // offset for start of vtable (int32)
- 0, // padding
- 77, // value 2
- 66, // value 1
- 55, // value 0
-
- 12, 0, 0, 0, // root of table: points to object
-
- 8, 0, // vtable bytes
- 8, 0, // size of object
- 7, 0, // start of value 0
- 6, 0, // start of value 1
- 8, 0, 0, 0, // offset for start of vtable (int32)
- 0, 0, // padding
- 44, // value 1
- 33, // value 0
- })
-
- // test 18: a bunch of bools
- b = flatbuffers.NewBuilder(0)
- b.StartObject(8)
- b.PrependBoolSlot(0, true, false)
- b.PrependBoolSlot(1, true, false)
- b.PrependBoolSlot(2, true, false)
- b.PrependBoolSlot(3, true, false)
- b.PrependBoolSlot(4, true, false)
- b.PrependBoolSlot(5, true, false)
- b.PrependBoolSlot(6, true, false)
- b.PrependBoolSlot(7, true, false)
- off = b.EndObject()
- b.Finish(off)
-
- check([]byte{
- 24, 0, 0, 0, // root of table: points to vtable offset
-
- 20, 0, // vtable bytes
- 12, 0, // size of object
- 11, 0, // start of value 0
- 10, 0, // start of value 1
- 9, 0, // start of value 2
- 8, 0, // start of value 3
- 7, 0, // start of value 4
- 6, 0, // start of value 5
- 5, 0, // start of value 6
- 4, 0, // start of value 7
- 20, 0, 0, 0, // vtable offset
-
- 1, // value 7
- 1, // value 6
- 1, // value 5
- 1, // value 4
- 1, // value 3
- 1, // value 2
- 1, // value 1
- 1, // value 0
- })
-
- // test 19: three bools
- b = flatbuffers.NewBuilder(0)
- b.StartObject(3)
- b.PrependBoolSlot(0, true, false)
- b.PrependBoolSlot(1, true, false)
- b.PrependBoolSlot(2, true, false)
- off = b.EndObject()
- b.Finish(off)
-
- check([]byte{
- 16, 0, 0, 0, // root of table: points to vtable offset
-
- 0, 0, // padding
-
- 10, 0, // vtable bytes
- 8, 0, // size of object
- 7, 0, // start of value 0
- 6, 0, // start of value 1
- 5, 0, // start of value 2
- 10, 0, 0, 0, // vtable offset from here
-
- 0, // padding
- 1, // value 2
- 1, // value 1
- 1, // value 0
- })
-
- // test 20: some floats
- b = flatbuffers.NewBuilder(0)
- b.StartObject(1)
- b.PrependFloat32Slot(0, 1.0, 0.0)
- off = b.EndObject()
-
- check([]byte{
- 6, 0, // vtable bytes
- 8, 0, // size of object
- 4, 0, // start of value 0
- 6, 0, 0, 0, // vtable offset
-
- 0, 0, 128, 63, // value 0
- })
-}
-
-// CheckManualBuild builds a Monster manually.
-func CheckManualBuild(fail func(string, ...interface{})) ([]byte, flatbuffers.UOffsetT) {
- b := flatbuffers.NewBuilder(0)
- str := b.CreateString("MyMonster")
-
- b.StartVector(1, 5, 1)
- b.PrependByte(4)
- b.PrependByte(3)
- b.PrependByte(2)
- b.PrependByte(1)
- b.PrependByte(0)
- inv := b.EndVector(5)
-
- b.StartObject(13)
- b.PrependInt16Slot(2, 20, 100)
- mon2 := b.EndObject()
-
- // Test4Vector
- b.StartVector(4, 2, 1)
-
- // Test 0
- b.Prep(2, 4)
- b.Pad(1)
- b.PlaceInt8(20)
- b.PlaceInt16(10)
-
- // Test 1
- b.Prep(2, 4)
- b.Pad(1)
- b.PlaceInt8(40)
- b.PlaceInt16(30)
-
- // end testvector
- test4 := b.EndVector(2)
-
- b.StartObject(13)
-
- // a vec3
- b.Prep(16, 32)
- b.Pad(2)
- b.Prep(2, 4)
- b.Pad(1)
- b.PlaceByte(6)
- b.PlaceInt16(5)
- b.Pad(1)
- b.PlaceByte(4)
- b.PlaceFloat64(3.0)
- b.Pad(4)
- b.PlaceFloat32(3.0)
- b.PlaceFloat32(2.0)
- b.PlaceFloat32(1.0)
- vec3Loc := b.Offset()
- // end vec3
-
- b.PrependStructSlot(0, vec3Loc, 0) // vec3. noop
- b.PrependInt16Slot(2, 80, 100) // hp
- b.PrependUOffsetTSlot(3, str, 0)
- b.PrependUOffsetTSlot(5, inv, 0) // inventory
- b.PrependByteSlot(7, 1, 0)
- b.PrependUOffsetTSlot(8, mon2, 0)
- b.PrependUOffsetTSlot(9, test4, 0)
- mon := b.EndObject()
-
- b.Finish(mon)
-
- return b.Bytes, b.Head()
-}
-
-func CheckGetRootAsForNonRootTable(fail func(string, ...interface{})) {
- b := flatbuffers.NewBuilder(0)
- str := b.CreateString("MyStat")
- example.StatStart(b)
- example.StatAddId(b, str)
- example.StatAddVal(b, 12345678)
- example.StatAddCount(b, 12345)
- stat_end := example.StatEnd(b)
- b.Finish(stat_end)
-
- stat := example.GetRootAsStat(b.Bytes, b.Head())
-
- if got := stat.Id(); !bytes.Equal([]byte("MyStat"), got) {
- fail(FailString("stat.Id()", "MyStat", got))
- }
-
- if got := stat.Val(); 12345678 != got {
- fail(FailString("stat.Val()", 12345678, got))
- }
-
- if got := stat.Count(); 12345 != got {
- fail(FailString("stat.Count()", 12345, got))
- }
-}
-
-// CheckGeneratedBuild uses generated code to build the example Monster.
-func CheckGeneratedBuild(fail func(string, ...interface{})) ([]byte, flatbuffers.UOffsetT) {
- b := flatbuffers.NewBuilder(0)
- str := b.CreateString("MyMonster")
- test1 := b.CreateString("test1")
- test2 := b.CreateString("test2")
- fred := b.CreateString("Fred")
-
- example.MonsterStartInventoryVector(b, 5)
- b.PrependByte(4)
- b.PrependByte(3)
- b.PrependByte(2)
- b.PrependByte(1)
- b.PrependByte(0)
- inv := b.EndVector(5)
-
- example.MonsterStart(b)
- example.MonsterAddName(b, fred)
- mon2 := example.MonsterEnd(b)
-
- example.MonsterStartTest4Vector(b, 2)
- example.CreateTest(b, 10, 20)
- example.CreateTest(b, 30, 40)
- test4 := b.EndVector(2)
-
- example.MonsterStartTestarrayofstringVector(b, 2)
- b.PrependUOffsetT(test2)
- b.PrependUOffsetT(test1)
- testArrayOfString := b.EndVector(2)
-
- example.MonsterStart(b)
-
- pos := example.CreateVec3(b, 1.0, 2.0, 3.0, 3.0, 2, 5, 6)
- example.MonsterAddPos(b, pos)
-
- example.MonsterAddHp(b, 80)
- example.MonsterAddName(b, str)
- example.MonsterAddInventory(b, inv)
- example.MonsterAddTestType(b, 1)
- example.MonsterAddTest(b, mon2)
- example.MonsterAddTest4(b, test4)
- example.MonsterAddTestarrayofstring(b, testArrayOfString)
- mon := example.MonsterEnd(b)
-
- b.Finish(mon)
-
- return b.Bytes, b.Head()
-}
-
-// CheckTableAccessors checks that the table accessors work as expected.
-func CheckTableAccessors(fail func(string, ...interface{})) {
- // test struct accessor
- b := flatbuffers.NewBuilder(0)
- pos := example.CreateVec3(b, 1.0, 2.0, 3.0, 3.0, 4, 5, 6)
- b.Finish(pos)
- vec3Bytes := b.FinishedBytes()
- vec3 := &example.Vec3{}
- flatbuffers.GetRootAs(vec3Bytes, 0, vec3)
-
- if bytes.Compare(vec3Bytes, vec3.Table().Bytes) != 0 {
- fail("invalid vec3 table")
- }
-
- // test table accessor
- b = flatbuffers.NewBuilder(0)
- str := b.CreateString("MyStat")
- example.StatStart(b)
- example.StatAddId(b, str)
- example.StatAddVal(b, 12345678)
- example.StatAddCount(b, 12345)
- pos = example.StatEnd(b)
- b.Finish(pos)
- statBytes := b.FinishedBytes()
- stat := &example.Stat{}
- flatbuffers.GetRootAs(statBytes, 0, stat)
-
- if bytes.Compare(statBytes, stat.Table().Bytes) != 0 {
- fail("invalid stat table")
- }
-}
-
-// CheckVtableDeduplication verifies that vtables are deduplicated.
-func CheckVtableDeduplication(fail func(string, ...interface{})) {
- b := flatbuffers.NewBuilder(0)
-
- b.StartObject(4)
- b.PrependByteSlot(0, 0, 0)
- b.PrependByteSlot(1, 11, 0)
- b.PrependByteSlot(2, 22, 0)
- b.PrependInt16Slot(3, 33, 0)
- obj0 := b.EndObject()
-
- b.StartObject(4)
- b.PrependByteSlot(0, 0, 0)
- b.PrependByteSlot(1, 44, 0)
- b.PrependByteSlot(2, 55, 0)
- b.PrependInt16Slot(3, 66, 0)
- obj1 := b.EndObject()
-
- b.StartObject(4)
- b.PrependByteSlot(0, 0, 0)
- b.PrependByteSlot(1, 77, 0)
- b.PrependByteSlot(2, 88, 0)
- b.PrependInt16Slot(3, 99, 0)
- obj2 := b.EndObject()
-
- got := b.Bytes[b.Head():]
-
- want := []byte{
- 240, 255, 255, 255, // == -12. offset to dedupped vtable.
- 99, 0,
- 88,
- 77,
- 248, 255, 255, 255, // == -8. offset to dedupped vtable.
- 66, 0,
- 55,
- 44,
- 12, 0,
- 8, 0,
- 0, 0,
- 7, 0,
- 6, 0,
- 4, 0,
- 12, 0, 0, 0,
- 33, 0,
- 22,
- 11,
- }
-
- if !bytes.Equal(want, got) {
- fail("testVtableDeduplication want:\n%d %v\nbut got:\n%d %v\n",
- len(want), want, len(got), got)
- }
-
- table0 := &flatbuffers.Table{Bytes: b.Bytes, Pos: flatbuffers.UOffsetT(len(b.Bytes)) - obj0}
- table1 := &flatbuffers.Table{Bytes: b.Bytes, Pos: flatbuffers.UOffsetT(len(b.Bytes)) - obj1}
- table2 := &flatbuffers.Table{Bytes: b.Bytes, Pos: flatbuffers.UOffsetT(len(b.Bytes)) - obj2}
-
- testTable := func(tab *flatbuffers.Table, a flatbuffers.VOffsetT, b, c, d byte) {
- // vtable size
- if got := tab.GetVOffsetTSlot(0, 0); 12 != got {
- fail("failed 0, 0: %d", got)
- }
- // object size
- if got := tab.GetVOffsetTSlot(2, 0); 8 != got {
- fail("failed 2, 0: %d", got)
- }
- // default value
- if got := tab.GetVOffsetTSlot(4, 0); a != got {
- fail("failed 4, 0: %d", got)
- }
- if got := tab.GetByteSlot(6, 0); b != got {
- fail("failed 6, 0: %d", got)
- }
- if val := tab.GetByteSlot(8, 0); c != val {
- fail("failed 8, 0: %d", got)
- }
- if got := tab.GetByteSlot(10, 0); d != got {
- fail("failed 10, 0: %d", got)
- }
- }
-
- testTable(table0, 0, 11, 22, 33)
- testTable(table1, 0, 44, 55, 66)
- testTable(table2, 0, 77, 88, 99)
-}
-
-// CheckNotInObjectError verifies that `EndObject` fails if not inside an
-// object.
-func CheckNotInObjectError(fail func(string, ...interface{})) {
- b := flatbuffers.NewBuilder(0)
-
- defer func() {
- r := recover()
- if r == nil {
- fail("expected panic in CheckNotInObjectError")
- }
- }()
- b.EndObject()
-}
-
-// CheckStringIsNestedError verifies that a string can not be created inside
-// another object.
-func CheckStringIsNestedError(fail func(string, ...interface{})) {
- b := flatbuffers.NewBuilder(0)
- b.StartObject(0)
- defer func() {
- r := recover()
- if r == nil {
- fail("expected panic in CheckStringIsNestedError")
- }
- }()
- b.CreateString("foo")
-}
-
-// CheckByteStringIsNestedError verifies that a bytestring can not be created
-// inside another object.
-func CheckByteStringIsNestedError(fail func(string, ...interface{})) {
- b := flatbuffers.NewBuilder(0)
- b.StartObject(0)
- defer func() {
- r := recover()
- if r == nil {
- fail("expected panic in CheckByteStringIsNestedError")
- }
- }()
- b.CreateByteString([]byte("foo"))
-}
-
-// CheckStructIsNotInlineError verifies that writing a struct in a location
-// away from where it is used will cause a panic.
-func CheckStructIsNotInlineError(fail func(string, ...interface{})) {
- b := flatbuffers.NewBuilder(0)
- b.StartObject(0)
- defer func() {
- r := recover()
- if r == nil {
- fail("expected panic in CheckStructIsNotInlineError")
- }
- }()
- b.PrependStructSlot(0, 1, 0)
-}
-
-// CheckFinishedBytesError verifies that `FinishedBytes` panics if the table
-// is not finished.
-func CheckFinishedBytesError(fail func(string, ...interface{})) {
- b := flatbuffers.NewBuilder(0)
-
- defer func() {
- r := recover()
- if r == nil {
- fail("expected panic in CheckFinishedBytesError")
- }
- }()
- b.FinishedBytes()
-}
-
-// CheckEnumNames checks that the generated enum names are correct.
-func CheckEnumNames(fail func(string, ...interface{})) {
- type testEnumNames struct {
- EnumNames map[int]string
- Expected map[int]string
- }
- data := [...]testEnumNames{
- {example.EnumNamesAny,
- map[int]string{
- example.AnyNONE: "NONE",
- example.AnyMonster: "Monster",
- example.AnyTestSimpleTableWithEnum: "TestSimpleTableWithEnum",
- },
- },
- {example.EnumNamesColor,
- map[int]string{
- example.ColorRed: "Red",
- example.ColorGreen: "Green",
- example.ColorBlue: "Blue",
- },
- },
- }
- for _, t := range data {
- for val, name := range t.Expected {
- if name != t.EnumNames[val] {
- fail("enum name is not equal")
- }
- }
- }
-}
-
-// CheckDocExample checks that the code given in FlatBuffers documentation
-// is syntactically correct.
-func CheckDocExample(buf []byte, off flatbuffers.UOffsetT, fail func(string, ...interface{})) {
- monster := example.GetRootAsMonster(buf, off)
- _ = monster.Hp()
- _ = monster.Pos(nil)
- for i := 0; i < monster.InventoryLength(); i++ {
- _ = monster.Inventory(i) // do something here
- }
-
- builder := flatbuffers.NewBuilder(0)
-
- example.MonsterStartInventoryVector(builder, 5)
- for i := 4; i >= 0; i-- {
- builder.PrependByte(byte(i))
- }
- inv := builder.EndVector(5)
-
- str := builder.CreateString("MyMonster")
- example.MonsterStart(builder)
- example.MonsterAddPos(builder, example.CreateVec3(builder, 1.0, 2.0, 3.0, 3.0, 4, 5, 6))
- example.MonsterAddHp(builder, 80)
- example.MonsterAddName(builder, str)
- example.MonsterAddInventory(builder, inv)
- example.MonsterAddTestType(builder, 1)
- // example.MonsterAddTest(builder, mon2)
- // example.MonsterAddTest4(builder, test4s)
- _ = example.MonsterEnd(builder)
-}
-
-func CheckCreateByteVector(fail func(string, ...interface{})) {
- raw := [30]byte{}
- for i := 0; i < len(raw); i++ {
- raw[i] = byte(i)
- }
-
- for size := 0; size < len(raw); size++ {
- b1 := flatbuffers.NewBuilder(0)
- b2 := flatbuffers.NewBuilder(0)
- b1.StartVector(1, size, 1)
- for i := size - 1; i >= 0; i-- {
- b1.PrependByte(raw[i])
- }
- b1.EndVector(size)
- b2.CreateByteVector(raw[:size])
- CheckByteEquality(b1.Bytes, b2.Bytes, fail)
- }
-}
-
-// Include simple random number generator to ensure results will be the
-// same cross platform.
-// http://en.wikipedia.org/wiki/Park%E2%80%93Miller_random_number_generator
-type LCG uint32
-
-const InitialLCGSeed = 48271
-
-func NewLCG() *LCG {
- n := uint32(InitialLCGSeed)
- l := LCG(n)
- return &l
-}
-
-func (lcg *LCG) Reset() {
- *lcg = InitialLCGSeed
-}
-
-func (lcg *LCG) Next() uint32 {
- n := uint32((uint64(*lcg) * uint64(279470273)) % uint64(4294967291))
- *lcg = LCG(n)
- return n
-}
-
-// CheckByteEquality verifies that two byte buffers are the same.
-func CheckByteEquality(a, b []byte, fail func(string, ...interface{})) {
- if !bytes.Equal(a, b) {
- fail("objects are not byte-wise equal")
- }
-}
-
-// CheckMutateMethods checks all mutate methods one by one
-func CheckMutateMethods(fail func(string, ...interface{})) {
- b := flatbuffers.NewBuilder(0)
- b.StartObject(15)
- b.PrependBoolSlot(0, true, false)
- b.PrependByteSlot(1, 1, 0)
- b.PrependUint8Slot(2, 2, 0)
- b.PrependUint16Slot(3, 3, 0)
- b.PrependUint32Slot(4, 4, 0)
- b.PrependUint64Slot(5, 5, 0)
- b.PrependInt8Slot(6, 6, 0)
- b.PrependInt16Slot(7, 7, 0)
- b.PrependInt32Slot(8, 8, 0)
- b.PrependInt64Slot(9, 9, 0)
- b.PrependFloat32Slot(10, 10, 0)
- b.PrependFloat64Slot(11, 11, 0)
-
- b.PrependUOffsetTSlot(12, 12, 0)
- uoVal := b.Offset() - 12
-
- b.PrependVOffsetT(13)
- b.Slot(13)
-
- b.PrependSOffsetT(14)
- b.Slot(14)
- soVal := flatbuffers.SOffsetT(b.Offset() - 14)
-
- offset := b.EndObject()
-
- t := &flatbuffers.Table{
- Bytes: b.Bytes,
- Pos: flatbuffers.UOffsetT(len(b.Bytes)) - offset,
- }
-
- calcVOffsetT := func(slot int) (vtableOffset flatbuffers.VOffsetT) {
- return flatbuffers.VOffsetT((flatbuffers.VtableMetadataFields + slot) * flatbuffers.SizeVOffsetT)
- }
- calcUOffsetT := func(vtableOffset flatbuffers.VOffsetT) (valueOffset flatbuffers.UOffsetT) {
- return t.Pos + flatbuffers.UOffsetT(t.Offset(vtableOffset))
- }
-
- type testcase struct {
- field string
- testfn func() bool
- }
-
- testForOriginalValues := []testcase{
- testcase{"BoolSlot", func() bool { return t.GetBoolSlot(calcVOffsetT(0), true) == true }},
- testcase{"ByteSlot", func() bool { return t.GetByteSlot(calcVOffsetT(1), 1) == 1 }},
- testcase{"Uint8Slot", func() bool { return t.GetUint8Slot(calcVOffsetT(2), 2) == 2 }},
- testcase{"Uint16Slot", func() bool { return t.GetUint16Slot(calcVOffsetT(3), 3) == 3 }},
- testcase{"Uint32Slot", func() bool { return t.GetUint32Slot(calcVOffsetT(4), 4) == 4 }},
- testcase{"Uint64Slot", func() bool { return t.GetUint64Slot(calcVOffsetT(5), 5) == 5 }},
- testcase{"Int8Slot", func() bool { return t.GetInt8Slot(calcVOffsetT(6), 6) == 6 }},
- testcase{"Int16Slot", func() bool { return t.GetInt16Slot(calcVOffsetT(7), 7) == 7 }},
- testcase{"Int32Slot", func() bool { return t.GetInt32Slot(calcVOffsetT(8), 8) == 8 }},
- testcase{"Int64Slot", func() bool { return t.GetInt64Slot(calcVOffsetT(9), 9) == 9 }},
- testcase{"Float32Slot", func() bool { return t.GetFloat32Slot(calcVOffsetT(10), 10) == 10 }},
- testcase{"Float64Slot", func() bool { return t.GetFloat64Slot(calcVOffsetT(11), 11) == 11 }},
- testcase{"UOffsetTSlot", func() bool { return t.GetUOffsetT(calcUOffsetT(calcVOffsetT(12))) == uoVal }},
- testcase{"VOffsetTSlot", func() bool { return t.GetVOffsetT(calcUOffsetT(calcVOffsetT(13))) == 13 }},
- testcase{"SOffsetTSlot", func() bool { return t.GetSOffsetT(calcUOffsetT(calcVOffsetT(14))) == soVal }},
- }
-
- testMutability := []testcase{
- testcase{"BoolSlot", func() bool { return t.MutateBoolSlot(calcVOffsetT(0), false) }},
- testcase{"ByteSlot", func() bool { return t.MutateByteSlot(calcVOffsetT(1), 2) }},
- testcase{"Uint8Slot", func() bool { return t.MutateUint8Slot(calcVOffsetT(2), 4) }},
- testcase{"Uint16Slot", func() bool { return t.MutateUint16Slot(calcVOffsetT(3), 6) }},
- testcase{"Uint32Slot", func() bool { return t.MutateUint32Slot(calcVOffsetT(4), 8) }},
- testcase{"Uint64Slot", func() bool { return t.MutateUint64Slot(calcVOffsetT(5), 10) }},
- testcase{"Int8Slot", func() bool { return t.MutateInt8Slot(calcVOffsetT(6), 12) }},
- testcase{"Int16Slot", func() bool { return t.MutateInt16Slot(calcVOffsetT(7), 14) }},
- testcase{"Int32Slot", func() bool { return t.MutateInt32Slot(calcVOffsetT(8), 16) }},
- testcase{"Int64Slot", func() bool { return t.MutateInt64Slot(calcVOffsetT(9), 18) }},
- testcase{"Float32Slot", func() bool { return t.MutateFloat32Slot(calcVOffsetT(10), 20) }},
- testcase{"Float64Slot", func() bool { return t.MutateFloat64Slot(calcVOffsetT(11), 22) }},
- testcase{"UOffsetTSlot", func() bool { return t.MutateUOffsetT(calcUOffsetT(calcVOffsetT(12)), 24) }},
- testcase{"VOffsetTSlot", func() bool { return t.MutateVOffsetT(calcUOffsetT(calcVOffsetT(13)), 26) }},
- testcase{"SOffsetTSlot", func() bool { return t.MutateSOffsetT(calcUOffsetT(calcVOffsetT(14)), 28) }},
- }
-
- testMutabilityWithoutSlot := []testcase{
- testcase{"BoolSlot", func() bool { return t.MutateBoolSlot(calcVOffsetT(16), false) }},
- testcase{"ByteSlot", func() bool { return t.MutateByteSlot(calcVOffsetT(16), 2) }},
- testcase{"Uint8Slot", func() bool { return t.MutateUint8Slot(calcVOffsetT(16), 2) }},
- testcase{"Uint16Slot", func() bool { return t.MutateUint16Slot(calcVOffsetT(16), 2) }},
- testcase{"Uint32Slot", func() bool { return t.MutateUint32Slot(calcVOffsetT(16), 2) }},
- testcase{"Uint64Slot", func() bool { return t.MutateUint64Slot(calcVOffsetT(16), 2) }},
- testcase{"Int8Slot", func() bool { return t.MutateInt8Slot(calcVOffsetT(16), 2) }},
- testcase{"Int16Slot", func() bool { return t.MutateInt16Slot(calcVOffsetT(16), 2) }},
- testcase{"Int32Slot", func() bool { return t.MutateInt32Slot(calcVOffsetT(16), 2) }},
- testcase{"Int64Slot", func() bool { return t.MutateInt64Slot(calcVOffsetT(16), 2) }},
- testcase{"Float32Slot", func() bool { return t.MutateFloat32Slot(calcVOffsetT(16), 2) }},
- testcase{"Float64Slot", func() bool { return t.MutateFloat64Slot(calcVOffsetT(16), 2) }},
- }
-
- testForMutatedValues := []testcase{
- testcase{"BoolSlot", func() bool { return t.GetBoolSlot(calcVOffsetT(0), true) == false }},
- testcase{"ByteSlot", func() bool { return t.GetByteSlot(calcVOffsetT(1), 1) == 2 }},
- testcase{"Uint8Slot", func() bool { return t.GetUint8Slot(calcVOffsetT(2), 1) == 4 }},
- testcase{"Uint16Slot", func() bool { return t.GetUint16Slot(calcVOffsetT(3), 1) == 6 }},
- testcase{"Uint32Slot", func() bool { return t.GetUint32Slot(calcVOffsetT(4), 1) == 8 }},
- testcase{"Uint64Slot", func() bool { return t.GetUint64Slot(calcVOffsetT(5), 1) == 10 }},
- testcase{"Int8Slot", func() bool { return t.GetInt8Slot(calcVOffsetT(6), 1) == 12 }},
- testcase{"Int16Slot", func() bool { return t.GetInt16Slot(calcVOffsetT(7), 1) == 14 }},
- testcase{"Int32Slot", func() bool { return t.GetInt32Slot(calcVOffsetT(8), 1) == 16 }},
- testcase{"Int64Slot", func() bool { return t.GetInt64Slot(calcVOffsetT(9), 1) == 18 }},
- testcase{"Float32Slot", func() bool { return t.GetFloat32Slot(calcVOffsetT(10), 1) == 20 }},
- testcase{"Float64Slot", func() bool { return t.GetFloat64Slot(calcVOffsetT(11), 1) == 22 }},
- testcase{"UOffsetTSlot", func() bool { return t.GetUOffsetT(calcUOffsetT(calcVOffsetT(12))) == 24 }},
- testcase{"VOffsetTSlot", func() bool { return t.GetVOffsetT(calcUOffsetT(calcVOffsetT(13))) == 26 }},
- testcase{"SOffsetTSlot", func() bool { return t.GetSOffsetT(calcUOffsetT(calcVOffsetT(14))) == 28 }},
- }
-
- // make sure original values are okay
- for _, t := range testForOriginalValues {
- if !t.testfn() {
- fail(t.field + "' field doesn't have the expected original value")
- }
- }
-
- // try to mutate fields and check mutability
- for _, t := range testMutability {
- if !t.testfn() {
- fail(FailString(t.field+"' field failed mutability test", "passed", "failed"))
- }
- }
-
- // try to mutate fields and check mutability
- // these have wrong slots so should fail
- for _, t := range testMutabilityWithoutSlot {
- if t.testfn() {
- fail(FailString(t.field+"' field failed no slot mutability test", "failed", "passed"))
- }
- }
-
- // test whether values have changed
- for _, t := range testForMutatedValues {
- if !t.testfn() {
- fail(t.field + "' field doesn't have the expected mutated value")
- }
- }
-}
-
-// BenchmarkVtableDeduplication measures the speed of vtable deduplication
-// by creating prePop vtables, then populating b.N objects with a
-// different single vtable.
-//
-// When b.N is large (as in long benchmarks), memory usage may be high.
-func BenchmarkVtableDeduplication(b *testing.B) {
- prePop := 10
- builder := flatbuffers.NewBuilder(0)
-
- // pre-populate some vtables:
- for i := 0; i < prePop; i++ {
- builder.StartObject(i)
- for j := 0; j < i; j++ {
- builder.PrependInt16Slot(j, int16(j), 0)
- }
- builder.EndObject()
- }
-
- // benchmark deduplication of a new vtable:
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- lim := prePop
-
- builder.StartObject(lim)
- for j := 0; j < lim; j++ {
- builder.PrependInt16Slot(j, int16(j), 0)
- }
- builder.EndObject()
- }
-}
-
-// BenchmarkParseGold measures the speed of parsing the 'gold' data
-// used throughout this test suite.
-func BenchmarkParseGold(b *testing.B) {
- buf, offset := CheckGeneratedBuild(b.Fatalf)
- monster := example.GetRootAsMonster(buf, offset)
-
- // use these to prevent allocations:
- reuse_pos := example.Vec3{}
- reuse_test3 := example.Test{}
- reuse_table2 := flatbuffers.Table{}
- reuse_monster2 := example.Monster{}
- reuse_test4_0 := example.Test{}
- reuse_test4_1 := example.Test{}
-
- b.SetBytes(int64(len(buf[offset:])))
- b.ReportAllocs()
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- monster.Hp()
- monster.Mana()
- name := monster.Name()
- _ = name[0]
- _ = name[len(name)-1]
-
- monster.Pos(&reuse_pos)
- reuse_pos.X()
- reuse_pos.Y()
- reuse_pos.Z()
- reuse_pos.Test1()
- reuse_pos.Test2()
- reuse_pos.Test3(&reuse_test3)
- reuse_test3.A()
- reuse_test3.B()
- monster.TestType()
- monster.Test(&reuse_table2)
- reuse_monster2.Init(reuse_table2.Bytes, reuse_table2.Pos)
- name2 := reuse_monster2.Name()
- _ = name2[0]
- _ = name2[len(name2)-1]
- monster.InventoryLength()
- l := monster.InventoryLength()
- for i := 0; i < l; i++ {
- monster.Inventory(i)
- }
- monster.Test4Length()
- monster.Test4(&reuse_test4_0, 0)
- monster.Test4(&reuse_test4_1, 1)
-
- reuse_test4_0.A()
- reuse_test4_0.B()
- reuse_test4_1.A()
- reuse_test4_1.B()
-
- monster.TestarrayofstringLength()
- str0 := monster.Testarrayofstring(0)
- _ = str0[0]
- _ = str0[len(str0)-1]
- str1 := monster.Testarrayofstring(1)
- _ = str1[0]
- _ = str1[len(str1)-1]
- }
-}
-
-// BenchmarkBuildGold uses generated code to build the example Monster.
-func BenchmarkBuildGold(b *testing.B) {
- buf, offset := CheckGeneratedBuild(b.Fatalf)
- bytes_length := int64(len(buf[offset:]))
-
- reuse_str := "MyMonster"
- reuse_test1 := "test1"
- reuse_test2 := "test2"
- reuse_fred := "Fred"
-
- b.SetBytes(bytes_length)
- bldr := flatbuffers.NewBuilder(0)
- b.ResetTimer()
- b.ReportAllocs()
- for i := 0; i < b.N; i++ {
- bldr.Reset()
-
- str := bldr.CreateString(reuse_str)
- test1 := bldr.CreateString(reuse_test1)
- test2 := bldr.CreateString(reuse_test2)
- fred := bldr.CreateString(reuse_fred)
-
- example.MonsterStartInventoryVector(bldr, 5)
- bldr.PrependByte(4)
- bldr.PrependByte(3)
- bldr.PrependByte(2)
- bldr.PrependByte(1)
- bldr.PrependByte(0)
- inv := bldr.EndVector(5)
-
- example.MonsterStart(bldr)
- example.MonsterAddName(bldr, fred)
- mon2 := example.MonsterEnd(bldr)
-
- example.MonsterStartTest4Vector(bldr, 2)
- example.CreateTest(bldr, 10, 20)
- example.CreateTest(bldr, 30, 40)
- test4 := bldr.EndVector(2)
-
- example.MonsterStartTestarrayofstringVector(bldr, 2)
- bldr.PrependUOffsetT(test2)
- bldr.PrependUOffsetT(test1)
- testArrayOfString := bldr.EndVector(2)
-
- example.MonsterStart(bldr)
-
- pos := example.CreateVec3(bldr, 1.0, 2.0, 3.0, 3.0, 2, 5, 6)
- example.MonsterAddPos(bldr, pos)
-
- example.MonsterAddHp(bldr, 80)
- example.MonsterAddName(bldr, str)
- example.MonsterAddInventory(bldr, inv)
- example.MonsterAddTestType(bldr, 1)
- example.MonsterAddTest(bldr, mon2)
- example.MonsterAddTest4(bldr, test4)
- example.MonsterAddTestarrayofstring(bldr, testArrayOfString)
- mon := example.MonsterEnd(bldr)
-
- bldr.Finish(mon)
- }
-}
diff --git a/third_party/flatbuffers/tests/include_test1.fbs b/third_party/flatbuffers/tests/include_test1.fbs
deleted file mode 100644
index 11aebe8..0000000
--- a/third_party/flatbuffers/tests/include_test1.fbs
+++ /dev/null
@@ -1,5 +0,0 @@
-include "include_test2.fbs";
-include "include_test2.fbs"; // should be skipped
-include "include_test1.fbs"; // should be skipped
-
-
diff --git a/third_party/flatbuffers/tests/include_test2.fbs b/third_party/flatbuffers/tests/include_test2.fbs
deleted file mode 100644
index d22c0d9..0000000
--- a/third_party/flatbuffers/tests/include_test2.fbs
+++ /dev/null
@@ -1,9 +0,0 @@
-include "include_test2.fbs"; // should be skipped
-
-namespace MyGame.OtherNameSpace;
-
-enum FromInclude:long { IncludeVal }
-
-struct Unused {}
-
-
diff --git a/third_party/flatbuffers/tests/monster_test.bfbs b/third_party/flatbuffers/tests/monster_test.bfbs
deleted file mode 100644
index 78871d5..0000000
--- a/third_party/flatbuffers/tests/monster_test.bfbs
+++ /dev/null
Binary files differ
diff --git a/third_party/flatbuffers/tests/monster_test.fbs b/third_party/flatbuffers/tests/monster_test.fbs
deleted file mode 100755
index 81ec993..0000000
--- a/third_party/flatbuffers/tests/monster_test.fbs
+++ /dev/null
@@ -1,86 +0,0 @@
-// test schema file
-
-include "include_test1.fbs";
-
-namespace MyGame.Example2;
-
-table Monster {} // Test having same name as below, but in different namespace.
-
-namespace MyGame.Example;
-
-attribute "priority";
-
-enum Color:byte (bit_flags) { Red = 0, Green, Blue = 3, }
-
-union Any { Monster, TestSimpleTableWithEnum, MyGame.Example2.Monster }
-
-struct Test { a:short; b:byte; }
-
-table TestSimpleTableWithEnum (csharp_partial) {
- color: Color = Green;
-}
-
-struct Vec3 (force_align: 16) {
- x:float;
- y:float;
- z:float;
- test1:double;
- test2:Color;
- test3:Test;
-}
-
-struct Ability {
- id:uint(key);
- distance:uint;
-}
-
-table Stat {
- id:string;
- val:long;
- count:ushort;
-}
-
-/// an example documentation comment: monster object
-table Monster {
- pos:Vec3 (id: 0);
- hp:short = 100 (id: 2);
- mana:short = 150 (id: 1);
- name:string (id: 3, required, key);
- color:Color = Blue (id: 6);
- inventory:[ubyte] (id: 5);
- friendly:bool = false (deprecated, priority: 1, id: 4);
- /// an example documentation comment: this will end up in the generated code
- /// multiline too
- testarrayoftables:[Monster] (id: 11);
- testarrayofstring:[string] (id: 10);
- testarrayofstring2:[string] (id: 28);
- testarrayofbools:[bool] (id: 24);
- testarrayofsortedstruct:[Ability] (id: 29);
- enemy:MyGame.Example.Monster (id:12); // Test referring by full namespace.
- test:Any (id: 8);
- test4:[Test] (id: 9);
- testnestedflatbuffer:[ubyte] (id:13, nested_flatbuffer: "Monster");
- testempty:Stat (id:14);
- testbool:bool (id:15);
- testhashs32_fnv1:int (id:16, hash:"fnv1_32");
- testhashu32_fnv1:uint (id:17, hash:"fnv1_32");
- testhashs64_fnv1:long (id:18, hash:"fnv1_64");
- testhashu64_fnv1:ulong (id:19, hash:"fnv1_64");
- testhashs32_fnv1a:int (id:20, hash:"fnv1a_32");
- testhashu32_fnv1a:uint (id:21, hash:"fnv1a_32", cpp_type:"Stat");
- testhashs64_fnv1a:long (id:22, hash:"fnv1a_64");
- testhashu64_fnv1a:ulong (id:23, hash:"fnv1a_64");
- testf:float = 3.14159 (id:25);
- testf2:float = 3 (id:26);
- testf3:float (id:27);
-}
-
-rpc_service MonsterStorage {
- Store(Monster):Stat (streaming: "none");
- Retrieve(Stat):Monster (streaming: "server", idempotent);
-}
-
-root_type Monster;
-
-file_identifier "MONS";
-file_extension "mon";
diff --git a/third_party/flatbuffers/tests/monster_test.grpc.fb.cc b/third_party/flatbuffers/tests/monster_test.grpc.fb.cc
deleted file mode 100644
index c8ed1f5..0000000
--- a/third_party/flatbuffers/tests/monster_test.grpc.fb.cc
+++ /dev/null
@@ -1,85 +0,0 @@
-// Generated by the gRPC protobuf plugin.
-// If you make any local change, they will be lost.
-// source: monster_test
-
-#include "monster_test_generated.h"
-#include "monster_test.grpc.fb.h"
-
-#include <grpc++/impl/codegen/async_stream.h>
-#include <grpc++/impl/codegen/async_unary_call.h>
-#include <grpc++/impl/codegen/channel_interface.h>
-#include <grpc++/impl/codegen/client_unary_call.h>
-#include <grpc++/impl/codegen/method_handler_impl.h>
-#include <grpc++/impl/codegen/rpc_service_method.h>
-#include <grpc++/impl/codegen/service_type.h>
-#include <grpc++/impl/codegen/sync_stream.h>
-
-namespace MyGame {
-namespace Example {
-
-static const char* MonsterStorage_method_names[] = {
- "/MyGame.Example.MonsterStorage/Store",
- "/MyGame.Example.MonsterStorage/Retrieve",
-};
-
-std::unique_ptr< MonsterStorage::Stub> MonsterStorage::NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options) {
- std::unique_ptr< MonsterStorage::Stub> stub(new MonsterStorage::Stub(channel));
- return stub;
-}
-
-MonsterStorage::Stub::Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel)
- : channel_(channel) , rpcmethod_Store_(MonsterStorage_method_names[0], ::grpc::RpcMethod::NORMAL_RPC, channel)
- , rpcmethod_Retrieve_(MonsterStorage_method_names[1], ::grpc::RpcMethod::SERVER_STREAMING, channel)
- {}
-
-::grpc::Status MonsterStorage::Stub::Store(::grpc::ClientContext* context, const flatbuffers::BufferRef<Monster>& request, flatbuffers::BufferRef<Stat>* response) {
- return ::grpc::BlockingUnaryCall(channel_.get(), rpcmethod_Store_, context, request, response);
-}
-
-::grpc::ClientAsyncResponseReader< flatbuffers::BufferRef<Stat>>* MonsterStorage::Stub::AsyncStoreRaw(::grpc::ClientContext* context, const flatbuffers::BufferRef<Monster>& request, ::grpc::CompletionQueue* cq) {
- return new ::grpc::ClientAsyncResponseReader< flatbuffers::BufferRef<Stat>>(channel_.get(), cq, rpcmethod_Store_, context, request);
-}
-
-::grpc::ClientReader< flatbuffers::BufferRef<Monster>>* MonsterStorage::Stub::RetrieveRaw(::grpc::ClientContext* context, const flatbuffers::BufferRef<Stat>& request) {
- return new ::grpc::ClientReader< flatbuffers::BufferRef<Monster>>(channel_.get(), rpcmethod_Retrieve_, context, request);
-}
-
-::grpc::ClientAsyncReader< flatbuffers::BufferRef<Monster>>* MonsterStorage::Stub::AsyncRetrieveRaw(::grpc::ClientContext* context, const flatbuffers::BufferRef<Stat>& request, ::grpc::CompletionQueue* cq, void* tag) {
- return new ::grpc::ClientAsyncReader< flatbuffers::BufferRef<Monster>>(channel_.get(), cq, rpcmethod_Retrieve_, context, request, tag);
-}
-
-MonsterStorage::Service::Service() {
- (void)MonsterStorage_method_names;
- AddMethod(new ::grpc::RpcServiceMethod(
- MonsterStorage_method_names[0],
- ::grpc::RpcMethod::NORMAL_RPC,
- new ::grpc::RpcMethodHandler< MonsterStorage::Service, flatbuffers::BufferRef<Monster>, flatbuffers::BufferRef<Stat>>(
- std::mem_fn(&MonsterStorage::Service::Store), this)));
- AddMethod(new ::grpc::RpcServiceMethod(
- MonsterStorage_method_names[1],
- ::grpc::RpcMethod::SERVER_STREAMING,
- new ::grpc::ServerStreamingHandler< MonsterStorage::Service, flatbuffers::BufferRef<Stat>, flatbuffers::BufferRef<Monster>>(
- std::mem_fn(&MonsterStorage::Service::Retrieve), this)));
-}
-
-MonsterStorage::Service::~Service() {
-}
-
-::grpc::Status MonsterStorage::Service::Store(::grpc::ServerContext* context, const flatbuffers::BufferRef<Monster>* request, flatbuffers::BufferRef<Stat>* response) {
- (void) context;
- (void) request;
- (void) response;
- return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
-}
-
-::grpc::Status MonsterStorage::Service::Retrieve(::grpc::ServerContext* context, const flatbuffers::BufferRef<Stat>* request, ::grpc::ServerWriter< flatbuffers::BufferRef<Monster>>* writer) {
- (void) context;
- (void) request;
- (void) writer;
- return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
-}
-
-
-} // namespace MyGame
-} // namespace Example
-
diff --git a/third_party/flatbuffers/tests/monster_test.grpc.fb.h b/third_party/flatbuffers/tests/monster_test.grpc.fb.h
deleted file mode 100644
index 8228d7a..0000000
--- a/third_party/flatbuffers/tests/monster_test.grpc.fb.h
+++ /dev/null
@@ -1,161 +0,0 @@
-// Generated by the gRPC protobuf plugin.
-// If you make any local change, they will be lost.
-// source: monster_test
-#ifndef GRPC_monster_5ftest__INCLUDED
-#define GRPC_monster_5ftest__INCLUDED
-
-#include "monster_test_generated.h"
-#include "flatbuffers/grpc.h"
-
-#include <grpc++/impl/codegen/async_stream.h>
-#include <grpc++/impl/codegen/async_unary_call.h>
-#include <grpc++/impl/codegen/rpc_method.h>
-#include <grpc++/impl/codegen/service_type.h>
-#include <grpc++/impl/codegen/status.h>
-#include <grpc++/impl/codegen/stub_options.h>
-#include <grpc++/impl/codegen/sync_stream.h>
-
-namespace grpc {
-class CompletionQueue;
-class Channel;
-class RpcService;
-class ServerCompletionQueue;
-class ServerContext;
-} // namespace grpc
-
-namespace MyGame {
-namespace Example {
-
-class MonsterStorage GRPC_FINAL {
- public:
- class StubInterface {
- public:
- virtual ~StubInterface() {}
- virtual ::grpc::Status Store(::grpc::ClientContext* context, const flatbuffers::BufferRef<Monster>& request, flatbuffers::BufferRef<Stat>* response) = 0;
- std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< flatbuffers::BufferRef<Stat>>> AsyncStore(::grpc::ClientContext* context, const flatbuffers::BufferRef<Monster>& request, ::grpc::CompletionQueue* cq) {
- return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< flatbuffers::BufferRef<Stat>>>(AsyncStoreRaw(context, request, cq));
- }
- std::unique_ptr< ::grpc::ClientReaderInterface< flatbuffers::BufferRef<Monster>>> Retrieve(::grpc::ClientContext* context, const flatbuffers::BufferRef<Stat>& request) {
- return std::unique_ptr< ::grpc::ClientReaderInterface< flatbuffers::BufferRef<Monster>>>(RetrieveRaw(context, request));
- }
- std::unique_ptr< ::grpc::ClientAsyncReaderInterface< flatbuffers::BufferRef<Monster>>> AsyncRetrieve(::grpc::ClientContext* context, const flatbuffers::BufferRef<Stat>& request, ::grpc::CompletionQueue* cq, void* tag) {
- return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< flatbuffers::BufferRef<Monster>>>(AsyncRetrieveRaw(context, request, cq, tag));
- }
- private:
- virtual ::grpc::ClientAsyncResponseReaderInterface< flatbuffers::BufferRef<Stat>>* AsyncStoreRaw(::grpc::ClientContext* context, const flatbuffers::BufferRef<Monster>& request, ::grpc::CompletionQueue* cq) = 0;
- virtual ::grpc::ClientReaderInterface< flatbuffers::BufferRef<Monster>>* RetrieveRaw(::grpc::ClientContext* context, const flatbuffers::BufferRef<Stat>& request) = 0;
- virtual ::grpc::ClientAsyncReaderInterface< flatbuffers::BufferRef<Monster>>* AsyncRetrieveRaw(::grpc::ClientContext* context, const flatbuffers::BufferRef<Stat>& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
- };
- class Stub GRPC_FINAL : public StubInterface {
- public:
- Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel);
- ::grpc::Status Store(::grpc::ClientContext* context, const flatbuffers::BufferRef<Monster>& request, flatbuffers::BufferRef<Stat>* response) GRPC_OVERRIDE;
- std::unique_ptr< ::grpc::ClientAsyncResponseReader< flatbuffers::BufferRef<Stat>>> AsyncStore(::grpc::ClientContext* context, const flatbuffers::BufferRef<Monster>& request, ::grpc::CompletionQueue* cq) {
- return std::unique_ptr< ::grpc::ClientAsyncResponseReader< flatbuffers::BufferRef<Stat>>>(AsyncStoreRaw(context, request, cq));
- }
- std::unique_ptr< ::grpc::ClientReader< flatbuffers::BufferRef<Monster>>> Retrieve(::grpc::ClientContext* context, const flatbuffers::BufferRef<Stat>& request) {
- return std::unique_ptr< ::grpc::ClientReader< flatbuffers::BufferRef<Monster>>>(RetrieveRaw(context, request));
- }
- std::unique_ptr< ::grpc::ClientAsyncReader< flatbuffers::BufferRef<Monster>>> AsyncRetrieve(::grpc::ClientContext* context, const flatbuffers::BufferRef<Stat>& request, ::grpc::CompletionQueue* cq, void* tag) {
- return std::unique_ptr< ::grpc::ClientAsyncReader< flatbuffers::BufferRef<Monster>>>(AsyncRetrieveRaw(context, request, cq, tag));
- }
-
- private:
- std::shared_ptr< ::grpc::ChannelInterface> channel_;
- ::grpc::ClientAsyncResponseReader< flatbuffers::BufferRef<Stat>>* AsyncStoreRaw(::grpc::ClientContext* context, const flatbuffers::BufferRef<Monster>& request, ::grpc::CompletionQueue* cq) GRPC_OVERRIDE;
- ::grpc::ClientReader< flatbuffers::BufferRef<Monster>>* RetrieveRaw(::grpc::ClientContext* context, const flatbuffers::BufferRef<Stat>& request) GRPC_OVERRIDE;
- ::grpc::ClientAsyncReader< flatbuffers::BufferRef<Monster>>* AsyncRetrieveRaw(::grpc::ClientContext* context, const flatbuffers::BufferRef<Stat>& request, ::grpc::CompletionQueue* cq, void* tag) GRPC_OVERRIDE;
- const ::grpc::RpcMethod rpcmethod_Store_;
- const ::grpc::RpcMethod rpcmethod_Retrieve_;
- };
- static std::unique_ptr<Stub> NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());
-
- class Service : public ::grpc::Service {
- public:
- Service();
- virtual ~Service();
- virtual ::grpc::Status Store(::grpc::ServerContext* context, const flatbuffers::BufferRef<Monster>* request, flatbuffers::BufferRef<Stat>* response);
- virtual ::grpc::Status Retrieve(::grpc::ServerContext* context, const flatbuffers::BufferRef<Stat>* request, ::grpc::ServerWriter< flatbuffers::BufferRef<Monster>>* writer);
- };
- template <class BaseClass>
- class WithAsyncMethod_Store : public BaseClass {
- private:
- void BaseClassMustBeDerivedFromService(const Service *service) {}
- public:
- WithAsyncMethod_Store() {
- ::grpc::Service::MarkMethodAsync(0);
- }
- ~WithAsyncMethod_Store() GRPC_OVERRIDE {
- BaseClassMustBeDerivedFromService(this);
- }
- // disable synchronous version of this method
- ::grpc::Status Store(::grpc::ServerContext* context, const flatbuffers::BufferRef<Monster>* request, flatbuffers::BufferRef<Stat>* response) GRPC_FINAL GRPC_OVERRIDE {
- abort();
- return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
- }
- void RequestStore(::grpc::ServerContext* context, flatbuffers::BufferRef<Monster>* request, ::grpc::ServerAsyncResponseWriter< flatbuffers::BufferRef<Stat>>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
- ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag);
- }
- };
- template <class BaseClass>
- class WithAsyncMethod_Retrieve : public BaseClass {
- private:
- void BaseClassMustBeDerivedFromService(const Service *service) {}
- public:
- WithAsyncMethod_Retrieve() {
- ::grpc::Service::MarkMethodAsync(1);
- }
- ~WithAsyncMethod_Retrieve() GRPC_OVERRIDE {
- BaseClassMustBeDerivedFromService(this);
- }
- // disable synchronous version of this method
- ::grpc::Status Retrieve(::grpc::ServerContext* context, const flatbuffers::BufferRef<Stat>* request, ::grpc::ServerWriter< flatbuffers::BufferRef<Monster>>* writer) GRPC_FINAL GRPC_OVERRIDE {
- abort();
- return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
- }
- void RequestRetrieve(::grpc::ServerContext* context, flatbuffers::BufferRef<Stat>* request, ::grpc::ServerAsyncWriter< flatbuffers::BufferRef<Monster>>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
- ::grpc::Service::RequestAsyncServerStreaming(1, context, request, writer, new_call_cq, notification_cq, tag);
- }
- };
- typedef WithAsyncMethod_Store< WithAsyncMethod_Retrieve< Service > > AsyncService;
- template <class BaseClass>
- class WithGenericMethod_Store : public BaseClass {
- private:
- void BaseClassMustBeDerivedFromService(const Service *service) {}
- public:
- WithGenericMethod_Store() {
- ::grpc::Service::MarkMethodGeneric(0);
- }
- ~WithGenericMethod_Store() GRPC_OVERRIDE {
- BaseClassMustBeDerivedFromService(this);
- }
- // disable synchronous version of this method
- ::grpc::Status Store(::grpc::ServerContext* context, const flatbuffers::BufferRef<Monster>* request, flatbuffers::BufferRef<Stat>* response) GRPC_FINAL GRPC_OVERRIDE {
- abort();
- return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
- }
- };
- template <class BaseClass>
- class WithGenericMethod_Retrieve : public BaseClass {
- private:
- void BaseClassMustBeDerivedFromService(const Service *service) {}
- public:
- WithGenericMethod_Retrieve() {
- ::grpc::Service::MarkMethodGeneric(1);
- }
- ~WithGenericMethod_Retrieve() GRPC_OVERRIDE {
- BaseClassMustBeDerivedFromService(this);
- }
- // disable synchronous version of this method
- ::grpc::Status Retrieve(::grpc::ServerContext* context, const flatbuffers::BufferRef<Stat>* request, ::grpc::ServerWriter< flatbuffers::BufferRef<Monster>>* writer) GRPC_FINAL GRPC_OVERRIDE {
- abort();
- return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
- }
- };
-};
-
-} // namespace Example
-} // namespace MyGame
-
-
-#endif // GRPC_monster_5ftest__INCLUDED
diff --git a/third_party/flatbuffers/tests/monster_test_generated.js b/third_party/flatbuffers/tests/monster_test_generated.js
deleted file mode 100644
index 7b0165c..0000000
--- a/third_party/flatbuffers/tests/monster_test_generated.js
+++ /dev/null
@@ -1,1674 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-/**
- * @const
- * @namespace
- */
-var MyGame = MyGame || {};
-
-/**
- * @const
- * @namespace
- */
-MyGame.Example = MyGame.Example || {};
-
-/**
- * @const
- * @namespace
- */
-MyGame.Example2 = MyGame.Example2 || {};
-
-/**
- * @const
- * @namespace
- */
-MyGame.OtherNameSpace = MyGame.OtherNameSpace || {};
-
-/**
- * @enum
- */
-MyGame.Example.Color = {
- Red: 1,
- Green: 2,
- Blue: 8
-};
-
-/**
- * @enum
- */
-MyGame.Example.Any = {
- NONE: 0,
- Monster: 1,
- TestSimpleTableWithEnum: 2,
- MyGame_Example2_Monster: 3
-};
-
-/**
- * @constructor
- */
-MyGame.Example2.Monster = function() {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- this.bb = null;
-
- /**
- * @type {number}
- */
- this.bb_pos = 0;
-};
-
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {MyGame.Example2.Monster}
- */
-MyGame.Example2.Monster.prototype.__init = function(i, bb) {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @param {MyGame.Example2.Monster=} obj
- * @returns {MyGame.Example2.Monster}
- */
-MyGame.Example2.Monster.getRootAsMonster = function(bb, obj) {
- return (obj || new MyGame.Example2.Monster).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- */
-MyGame.Example2.Monster.startMonster = function(builder) {
- builder.startObject(0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @returns {flatbuffers.Offset}
- */
-MyGame.Example2.Monster.endMonster = function(builder) {
- var offset = builder.endObject();
- return offset;
-};
-
-/**
- * @constructor
- */
-MyGame.Example.Test = function() {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- this.bb = null;
-
- /**
- * @type {number}
- */
- this.bb_pos = 0;
-};
-
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {MyGame.Example.Test}
- */
-MyGame.Example.Test.prototype.__init = function(i, bb) {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Test.prototype.a = function() {
- return this.bb.readInt16(this.bb_pos);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-MyGame.Example.Test.prototype.mutate_a = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 0);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt16(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Test.prototype.b = function() {
- return this.bb.readInt8(this.bb_pos + 2);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-MyGame.Example.Test.prototype.mutate_b = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 2);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt8(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} a
- * @param {number} b
- * @returns {flatbuffers.Offset}
- */
-MyGame.Example.Test.createTest = function(builder, a, b) {
- builder.prep(2, 4);
- builder.pad(1);
- builder.writeInt8(b);
- builder.writeInt16(a);
- return builder.offset();
-};
-
-/**
- * @constructor
- */
-MyGame.Example.TestSimpleTableWithEnum = function() {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- this.bb = null;
-
- /**
- * @type {number}
- */
- this.bb_pos = 0;
-};
-
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {MyGame.Example.TestSimpleTableWithEnum}
- */
-MyGame.Example.TestSimpleTableWithEnum.prototype.__init = function(i, bb) {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @param {MyGame.Example.TestSimpleTableWithEnum=} obj
- * @returns {MyGame.Example.TestSimpleTableWithEnum}
- */
-MyGame.Example.TestSimpleTableWithEnum.getRootAsTestSimpleTableWithEnum = function(bb, obj) {
- return (obj || new MyGame.Example.TestSimpleTableWithEnum).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @returns {MyGame.Example.Color}
- */
-MyGame.Example.TestSimpleTableWithEnum.prototype.color = function() {
- var offset = this.bb.__offset(this.bb_pos, 4);
- return offset ? /** @type {MyGame.Example.Color} */ (this.bb.readInt8(this.bb_pos + offset)) : MyGame.Example.Color.Green;
-};
-
-/**
- * @param {MyGame.Example.Color} value
- * @returns {boolean}
- */
-MyGame.Example.TestSimpleTableWithEnum.prototype.mutate_color = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 4);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt8(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- */
-MyGame.Example.TestSimpleTableWithEnum.startTestSimpleTableWithEnum = function(builder) {
- builder.startObject(1);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {MyGame.Example.Color} color
- */
-MyGame.Example.TestSimpleTableWithEnum.addColor = function(builder, color) {
- builder.addFieldInt8(0, color, MyGame.Example.Color.Green);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @returns {flatbuffers.Offset}
- */
-MyGame.Example.TestSimpleTableWithEnum.endTestSimpleTableWithEnum = function(builder) {
- var offset = builder.endObject();
- return offset;
-};
-
-/**
- * @constructor
- */
-MyGame.Example.Vec3 = function() {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- this.bb = null;
-
- /**
- * @type {number}
- */
- this.bb_pos = 0;
-};
-
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {MyGame.Example.Vec3}
- */
-MyGame.Example.Vec3.prototype.__init = function(i, bb) {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Vec3.prototype.x = function() {
- return this.bb.readFloat32(this.bb_pos);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-MyGame.Example.Vec3.prototype.mutate_x = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 0);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeFloat32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Vec3.prototype.y = function() {
- return this.bb.readFloat32(this.bb_pos + 4);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-MyGame.Example.Vec3.prototype.mutate_y = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 4);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeFloat32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Vec3.prototype.z = function() {
- return this.bb.readFloat32(this.bb_pos + 8);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-MyGame.Example.Vec3.prototype.mutate_z = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 8);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeFloat32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Vec3.prototype.test1 = function() {
- return this.bb.readFloat64(this.bb_pos + 16);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-MyGame.Example.Vec3.prototype.mutate_test1 = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 16);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeFloat64(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {MyGame.Example.Color}
- */
-MyGame.Example.Vec3.prototype.test2 = function() {
- return /** @type {MyGame.Example.Color} */ (this.bb.readInt8(this.bb_pos + 24));
-};
-
-/**
- * @param {MyGame.Example.Color} value
- * @returns {boolean}
- */
-MyGame.Example.Vec3.prototype.mutate_test2 = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 24);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt8(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {MyGame.Example.Test=} obj
- * @returns {MyGame.Example.Test}
- */
-MyGame.Example.Vec3.prototype.test3 = function(obj) {
- return (obj || new MyGame.Example.Test).__init(this.bb_pos + 26, this.bb);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} x
- * @param {number} y
- * @param {number} z
- * @param {number} test1
- * @param {MyGame.Example.Color} test2
- * @param {number} test3_a
- * @param {number} test3_b
- * @returns {flatbuffers.Offset}
- */
-MyGame.Example.Vec3.createVec3 = function(builder, x, y, z, test1, test2, test3_a, test3_b) {
- builder.prep(16, 32);
- builder.pad(2);
- builder.prep(2, 4);
- builder.pad(1);
- builder.writeInt8(test3_b);
- builder.writeInt16(test3_a);
- builder.pad(1);
- builder.writeInt8(test2);
- builder.writeFloat64(test1);
- builder.pad(4);
- builder.writeFloat32(z);
- builder.writeFloat32(y);
- builder.writeFloat32(x);
- return builder.offset();
-};
-
-/**
- * @constructor
- */
-MyGame.Example.Ability = function() {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- this.bb = null;
-
- /**
- * @type {number}
- */
- this.bb_pos = 0;
-};
-
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {MyGame.Example.Ability}
- */
-MyGame.Example.Ability.prototype.__init = function(i, bb) {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Ability.prototype.id = function() {
- return this.bb.readUint32(this.bb_pos);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-MyGame.Example.Ability.prototype.mutate_id = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 0);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeUint32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Ability.prototype.distance = function() {
- return this.bb.readUint32(this.bb_pos + 4);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-MyGame.Example.Ability.prototype.mutate_distance = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 4);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeUint32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} id
- * @param {number} distance
- * @returns {flatbuffers.Offset}
- */
-MyGame.Example.Ability.createAbility = function(builder, id, distance) {
- builder.prep(4, 8);
- builder.writeInt32(distance);
- builder.writeInt32(id);
- return builder.offset();
-};
-
-/**
- * @constructor
- */
-MyGame.Example.Stat = function() {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- this.bb = null;
-
- /**
- * @type {number}
- */
- this.bb_pos = 0;
-};
-
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {MyGame.Example.Stat}
- */
-MyGame.Example.Stat.prototype.__init = function(i, bb) {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @param {MyGame.Example.Stat=} obj
- * @returns {MyGame.Example.Stat}
- */
-MyGame.Example.Stat.getRootAsStat = function(bb, obj) {
- return (obj || new MyGame.Example.Stat).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @param {flatbuffers.Encoding=} optionalEncoding
- * @returns {string|Uint8Array}
- */
-MyGame.Example.Stat.prototype.id = function(optionalEncoding) {
- var offset = this.bb.__offset(this.bb_pos, 4);
- return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null;
-};
-
-/**
- * @returns {flatbuffers.Long}
- */
-MyGame.Example.Stat.prototype.val = function() {
- var offset = this.bb.__offset(this.bb_pos, 6);
- return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0);
-};
-
-/**
- * @param {flatbuffers.Long} value
- * @returns {boolean}
- */
-MyGame.Example.Stat.prototype.mutate_val = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 6);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt64(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Stat.prototype.count = function() {
- var offset = this.bb.__offset(this.bb_pos, 8);
- return offset ? this.bb.readUint16(this.bb_pos + offset) : 0;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-MyGame.Example.Stat.prototype.mutate_count = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 8);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeUint16(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- */
-MyGame.Example.Stat.startStat = function(builder) {
- builder.startObject(3);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} idOffset
- */
-MyGame.Example.Stat.addId = function(builder, idOffset) {
- builder.addFieldOffset(0, idOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Long} val
- */
-MyGame.Example.Stat.addVal = function(builder, val) {
- builder.addFieldInt64(1, val, builder.createLong(0, 0));
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} count
- */
-MyGame.Example.Stat.addCount = function(builder, count) {
- builder.addFieldInt16(2, count, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @returns {flatbuffers.Offset}
- */
-MyGame.Example.Stat.endStat = function(builder) {
- var offset = builder.endObject();
- return offset;
-};
-
-/**
- * an example documentation comment: monster object
- *
- * @constructor
- */
-MyGame.Example.Monster = function() {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- this.bb = null;
-
- /**
- * @type {number}
- */
- this.bb_pos = 0;
-};
-
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {MyGame.Example.Monster}
- */
-MyGame.Example.Monster.prototype.__init = function(i, bb) {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @param {MyGame.Example.Monster=} obj
- * @returns {MyGame.Example.Monster}
- */
-MyGame.Example.Monster.getRootAsMonster = function(bb, obj) {
- return (obj || new MyGame.Example.Monster).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {boolean}
- */
-MyGame.Example.Monster.bufferHasIdentifier = function(bb) {
- return bb.__has_identifier('MONS');
-};
-
-/**
- * @param {MyGame.Example.Vec3=} obj
- * @returns {MyGame.Example.Vec3}
- */
-MyGame.Example.Monster.prototype.pos = function(obj) {
- var offset = this.bb.__offset(this.bb_pos, 4);
- return offset ? (obj || new MyGame.Example.Vec3).__init(this.bb_pos + offset, this.bb) : null;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Monster.prototype.mana = function() {
- var offset = this.bb.__offset(this.bb_pos, 6);
- return offset ? this.bb.readInt16(this.bb_pos + offset) : 150;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-MyGame.Example.Monster.prototype.mutate_mana = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 6);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt16(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Monster.prototype.hp = function() {
- var offset = this.bb.__offset(this.bb_pos, 8);
- return offset ? this.bb.readInt16(this.bb_pos + offset) : 100;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-MyGame.Example.Monster.prototype.mutate_hp = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 8);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt16(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {flatbuffers.Encoding=} optionalEncoding
- * @returns {string|Uint8Array}
- */
-MyGame.Example.Monster.prototype.name = function(optionalEncoding) {
- var offset = this.bb.__offset(this.bb_pos, 10);
- return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null;
-};
-
-/**
- * @param {number} index
- * @returns {number}
- */
-MyGame.Example.Monster.prototype.inventory = function(index) {
- var offset = this.bb.__offset(this.bb_pos, 14);
- return offset ? this.bb.readUint8(this.bb.__vector(this.bb_pos + offset) + index) : 0;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Monster.prototype.inventoryLength = function() {
- var offset = this.bb.__offset(this.bb_pos, 14);
- return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
-};
-
-/**
- * @returns {Uint8Array}
- */
-MyGame.Example.Monster.prototype.inventoryArray = function() {
- var offset = this.bb.__offset(this.bb_pos, 14);
- return offset ? new Uint8Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null;
-};
-
-/**
- * @returns {MyGame.Example.Color}
- */
-MyGame.Example.Monster.prototype.color = function() {
- var offset = this.bb.__offset(this.bb_pos, 16);
- return offset ? /** @type {MyGame.Example.Color} */ (this.bb.readInt8(this.bb_pos + offset)) : MyGame.Example.Color.Blue;
-};
-
-/**
- * @param {MyGame.Example.Color} value
- * @returns {boolean}
- */
-MyGame.Example.Monster.prototype.mutate_color = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 16);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt8(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {MyGame.Example.Any}
- */
-MyGame.Example.Monster.prototype.testType = function() {
- var offset = this.bb.__offset(this.bb_pos, 18);
- return offset ? /** @type {MyGame.Example.Any} */ (this.bb.readUint8(this.bb_pos + offset)) : MyGame.Example.Any.NONE;
-};
-
-/**
- * @param {MyGame.Example.Any} value
- * @returns {boolean}
- */
-MyGame.Example.Monster.prototype.mutate_test_type = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 18);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeUint8(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {flatbuffers.Table} obj
- * @returns {?flatbuffers.Table}
- */
-MyGame.Example.Monster.prototype.test = function(obj) {
- var offset = this.bb.__offset(this.bb_pos, 20);
- return offset ? this.bb.__union(obj, this.bb_pos + offset) : null;
-};
-
-/**
- * @param {number} index
- * @param {MyGame.Example.Test=} obj
- * @returns {MyGame.Example.Test}
- */
-MyGame.Example.Monster.prototype.test4 = function(index, obj) {
- var offset = this.bb.__offset(this.bb_pos, 22);
- return offset ? (obj || new MyGame.Example.Test).__init(this.bb.__vector(this.bb_pos + offset) + index * 4, this.bb) : null;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Monster.prototype.test4Length = function() {
- var offset = this.bb.__offset(this.bb_pos, 22);
- return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
-};
-
-/**
- * @param {number} index
- * @param {flatbuffers.Encoding=} optionalEncoding
- * @returns {string|Uint8Array}
- */
-MyGame.Example.Monster.prototype.testarrayofstring = function(index, optionalEncoding) {
- var offset = this.bb.__offset(this.bb_pos, 24);
- return offset ? this.bb.__string(this.bb.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Monster.prototype.testarrayofstringLength = function() {
- var offset = this.bb.__offset(this.bb_pos, 24);
- return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
-};
-
-/**
- * an example documentation comment: this will end up in the generated code
- * multiline too
- *
- * @param {number} index
- * @param {MyGame.Example.Monster=} obj
- * @returns {MyGame.Example.Monster}
- */
-MyGame.Example.Monster.prototype.testarrayoftables = function(index, obj) {
- var offset = this.bb.__offset(this.bb_pos, 26);
- return offset ? (obj || new MyGame.Example.Monster).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Monster.prototype.testarrayoftablesLength = function() {
- var offset = this.bb.__offset(this.bb_pos, 26);
- return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
-};
-
-/**
- * @param {MyGame.Example.Monster=} obj
- * @returns {MyGame.Example.Monster}
- */
-MyGame.Example.Monster.prototype.enemy = function(obj) {
- var offset = this.bb.__offset(this.bb_pos, 28);
- return offset ? (obj || new MyGame.Example.Monster).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;
-};
-
-/**
- * @param {number} index
- * @returns {number}
- */
-MyGame.Example.Monster.prototype.testnestedflatbuffer = function(index) {
- var offset = this.bb.__offset(this.bb_pos, 30);
- return offset ? this.bb.readUint8(this.bb.__vector(this.bb_pos + offset) + index) : 0;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Monster.prototype.testnestedflatbufferLength = function() {
- var offset = this.bb.__offset(this.bb_pos, 30);
- return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
-};
-
-/**
- * @returns {Uint8Array}
- */
-MyGame.Example.Monster.prototype.testnestedflatbufferArray = function() {
- var offset = this.bb.__offset(this.bb_pos, 30);
- return offset ? new Uint8Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null;
-};
-
-/**
- * @param {MyGame.Example.Stat=} obj
- * @returns {MyGame.Example.Stat}
- */
-MyGame.Example.Monster.prototype.testempty = function(obj) {
- var offset = this.bb.__offset(this.bb_pos, 32);
- return offset ? (obj || new MyGame.Example.Stat).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;
-};
-
-/**
- * @returns {boolean}
- */
-MyGame.Example.Monster.prototype.testbool = function() {
- var offset = this.bb.__offset(this.bb_pos, 34);
- return offset ? !!this.bb.readInt8(this.bb_pos + offset) : false;
-};
-
-/**
- * @param {boolean} value
- * @returns {boolean}
- */
-MyGame.Example.Monster.prototype.mutate_testbool = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 34);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt8(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Monster.prototype.testhashs32Fnv1 = function() {
- var offset = this.bb.__offset(this.bb_pos, 36);
- return offset ? this.bb.readInt32(this.bb_pos + offset) : 0;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-MyGame.Example.Monster.prototype.mutate_testhashs32_fnv1 = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 36);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Monster.prototype.testhashu32Fnv1 = function() {
- var offset = this.bb.__offset(this.bb_pos, 38);
- return offset ? this.bb.readUint32(this.bb_pos + offset) : 0;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-MyGame.Example.Monster.prototype.mutate_testhashu32_fnv1 = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 38);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeUint32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {flatbuffers.Long}
- */
-MyGame.Example.Monster.prototype.testhashs64Fnv1 = function() {
- var offset = this.bb.__offset(this.bb_pos, 40);
- return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0);
-};
-
-/**
- * @param {flatbuffers.Long} value
- * @returns {boolean}
- */
-MyGame.Example.Monster.prototype.mutate_testhashs64_fnv1 = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 40);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt64(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {flatbuffers.Long}
- */
-MyGame.Example.Monster.prototype.testhashu64Fnv1 = function() {
- var offset = this.bb.__offset(this.bb_pos, 42);
- return offset ? this.bb.readUint64(this.bb_pos + offset) : this.bb.createLong(0, 0);
-};
-
-/**
- * @param {flatbuffers.Long} value
- * @returns {boolean}
- */
-MyGame.Example.Monster.prototype.mutate_testhashu64_fnv1 = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 42);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeUint64(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Monster.prototype.testhashs32Fnv1a = function() {
- var offset = this.bb.__offset(this.bb_pos, 44);
- return offset ? this.bb.readInt32(this.bb_pos + offset) : 0;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-MyGame.Example.Monster.prototype.mutate_testhashs32_fnv1a = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 44);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Monster.prototype.testhashu32Fnv1a = function() {
- var offset = this.bb.__offset(this.bb_pos, 46);
- return offset ? this.bb.readUint32(this.bb_pos + offset) : 0;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-MyGame.Example.Monster.prototype.mutate_testhashu32_fnv1a = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 46);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeUint32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {flatbuffers.Long}
- */
-MyGame.Example.Monster.prototype.testhashs64Fnv1a = function() {
- var offset = this.bb.__offset(this.bb_pos, 48);
- return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0);
-};
-
-/**
- * @param {flatbuffers.Long} value
- * @returns {boolean}
- */
-MyGame.Example.Monster.prototype.mutate_testhashs64_fnv1a = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 48);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt64(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {flatbuffers.Long}
- */
-MyGame.Example.Monster.prototype.testhashu64Fnv1a = function() {
- var offset = this.bb.__offset(this.bb_pos, 50);
- return offset ? this.bb.readUint64(this.bb_pos + offset) : this.bb.createLong(0, 0);
-};
-
-/**
- * @param {flatbuffers.Long} value
- * @returns {boolean}
- */
-MyGame.Example.Monster.prototype.mutate_testhashu64_fnv1a = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 50);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeUint64(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {number} index
- * @returns {boolean}
- */
-MyGame.Example.Monster.prototype.testarrayofbools = function(index) {
- var offset = this.bb.__offset(this.bb_pos, 52);
- return offset ? !!this.bb.readInt8(this.bb.__vector(this.bb_pos + offset) + index) : false;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Monster.prototype.testarrayofboolsLength = function() {
- var offset = this.bb.__offset(this.bb_pos, 52);
- return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
-};
-
-/**
- * @returns {Int8Array}
- */
-MyGame.Example.Monster.prototype.testarrayofboolsArray = function() {
- var offset = this.bb.__offset(this.bb_pos, 52);
- return offset ? new Int8Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Monster.prototype.testf = function() {
- var offset = this.bb.__offset(this.bb_pos, 54);
- return offset ? this.bb.readFloat32(this.bb_pos + offset) : 3.14159;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-MyGame.Example.Monster.prototype.mutate_testf = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 54);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeFloat32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Monster.prototype.testf2 = function() {
- var offset = this.bb.__offset(this.bb_pos, 56);
- return offset ? this.bb.readFloat32(this.bb_pos + offset) : 3.0;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-MyGame.Example.Monster.prototype.mutate_testf2 = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 56);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeFloat32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Monster.prototype.testf3 = function() {
- var offset = this.bb.__offset(this.bb_pos, 58);
- return offset ? this.bb.readFloat32(this.bb_pos + offset) : 0.0;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-MyGame.Example.Monster.prototype.mutate_testf3 = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 58);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeFloat32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {number} index
- * @param {flatbuffers.Encoding=} optionalEncoding
- * @returns {string|Uint8Array}
- */
-MyGame.Example.Monster.prototype.testarrayofstring2 = function(index, optionalEncoding) {
- var offset = this.bb.__offset(this.bb_pos, 60);
- return offset ? this.bb.__string(this.bb.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Monster.prototype.testarrayofstring2Length = function() {
- var offset = this.bb.__offset(this.bb_pos, 60);
- return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
-};
-
-/**
- * @param {number} index
- * @param {MyGame.Example.Ability=} obj
- * @returns {MyGame.Example.Ability}
- */
-MyGame.Example.Monster.prototype.testarrayofsortedstruct = function(index, obj) {
- var offset = this.bb.__offset(this.bb_pos, 62);
- return offset ? (obj || new MyGame.Example.Ability).__init(this.bb.__vector(this.bb_pos + offset) + index * 8, this.bb) : null;
-};
-
-/**
- * @returns {number}
- */
-MyGame.Example.Monster.prototype.testarrayofsortedstructLength = function() {
- var offset = this.bb.__offset(this.bb_pos, 62);
- return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- */
-MyGame.Example.Monster.startMonster = function(builder) {
- builder.startObject(30);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} posOffset
- */
-MyGame.Example.Monster.addPos = function(builder, posOffset) {
- builder.addFieldStruct(0, posOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} mana
- */
-MyGame.Example.Monster.addMana = function(builder, mana) {
- builder.addFieldInt16(1, mana, 150);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} hp
- */
-MyGame.Example.Monster.addHp = function(builder, hp) {
- builder.addFieldInt16(2, hp, 100);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} nameOffset
- */
-MyGame.Example.Monster.addName = function(builder, nameOffset) {
- builder.addFieldOffset(3, nameOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} inventoryOffset
- */
-MyGame.Example.Monster.addInventory = function(builder, inventoryOffset) {
- builder.addFieldOffset(5, inventoryOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {Array.<number>} data
- * @returns {flatbuffers.Offset}
- */
-MyGame.Example.Monster.createInventoryVector = function(builder, data) {
- builder.startVector(1, data.length, 1);
- for (var i = data.length - 1; i >= 0; i--) {
- builder.addInt8(data[i]);
- }
- return builder.endVector();
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} numElems
- */
-MyGame.Example.Monster.startInventoryVector = function(builder, numElems) {
- builder.startVector(1, numElems, 1);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {MyGame.Example.Color} color
- */
-MyGame.Example.Monster.addColor = function(builder, color) {
- builder.addFieldInt8(6, color, MyGame.Example.Color.Blue);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {MyGame.Example.Any} testType
- */
-MyGame.Example.Monster.addTestType = function(builder, testType) {
- builder.addFieldInt8(7, testType, MyGame.Example.Any.NONE);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} testOffset
- */
-MyGame.Example.Monster.addTest = function(builder, testOffset) {
- builder.addFieldOffset(8, testOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} test4Offset
- */
-MyGame.Example.Monster.addTest4 = function(builder, test4Offset) {
- builder.addFieldOffset(9, test4Offset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} numElems
- */
-MyGame.Example.Monster.startTest4Vector = function(builder, numElems) {
- builder.startVector(4, numElems, 2);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} testarrayofstringOffset
- */
-MyGame.Example.Monster.addTestarrayofstring = function(builder, testarrayofstringOffset) {
- builder.addFieldOffset(10, testarrayofstringOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {Array.<flatbuffers.Offset>} data
- * @returns {flatbuffers.Offset}
- */
-MyGame.Example.Monster.createTestarrayofstringVector = function(builder, data) {
- builder.startVector(4, data.length, 4);
- for (var i = data.length - 1; i >= 0; i--) {
- builder.addOffset(data[i]);
- }
- return builder.endVector();
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} numElems
- */
-MyGame.Example.Monster.startTestarrayofstringVector = function(builder, numElems) {
- builder.startVector(4, numElems, 4);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} testarrayoftablesOffset
- */
-MyGame.Example.Monster.addTestarrayoftables = function(builder, testarrayoftablesOffset) {
- builder.addFieldOffset(11, testarrayoftablesOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {Array.<flatbuffers.Offset>} data
- * @returns {flatbuffers.Offset}
- */
-MyGame.Example.Monster.createTestarrayoftablesVector = function(builder, data) {
- builder.startVector(4, data.length, 4);
- for (var i = data.length - 1; i >= 0; i--) {
- builder.addOffset(data[i]);
- }
- return builder.endVector();
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} numElems
- */
-MyGame.Example.Monster.startTestarrayoftablesVector = function(builder, numElems) {
- builder.startVector(4, numElems, 4);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} enemyOffset
- */
-MyGame.Example.Monster.addEnemy = function(builder, enemyOffset) {
- builder.addFieldOffset(12, enemyOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} testnestedflatbufferOffset
- */
-MyGame.Example.Monster.addTestnestedflatbuffer = function(builder, testnestedflatbufferOffset) {
- builder.addFieldOffset(13, testnestedflatbufferOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {Array.<number>} data
- * @returns {flatbuffers.Offset}
- */
-MyGame.Example.Monster.createTestnestedflatbufferVector = function(builder, data) {
- builder.startVector(1, data.length, 1);
- for (var i = data.length - 1; i >= 0; i--) {
- builder.addInt8(data[i]);
- }
- return builder.endVector();
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} numElems
- */
-MyGame.Example.Monster.startTestnestedflatbufferVector = function(builder, numElems) {
- builder.startVector(1, numElems, 1);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} testemptyOffset
- */
-MyGame.Example.Monster.addTestempty = function(builder, testemptyOffset) {
- builder.addFieldOffset(14, testemptyOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {boolean} testbool
- */
-MyGame.Example.Monster.addTestbool = function(builder, testbool) {
- builder.addFieldInt8(15, +testbool, +false);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} testhashs32Fnv1
- */
-MyGame.Example.Monster.addTesthashs32Fnv1 = function(builder, testhashs32Fnv1) {
- builder.addFieldInt32(16, testhashs32Fnv1, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} testhashu32Fnv1
- */
-MyGame.Example.Monster.addTesthashu32Fnv1 = function(builder, testhashu32Fnv1) {
- builder.addFieldInt32(17, testhashu32Fnv1, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Long} testhashs64Fnv1
- */
-MyGame.Example.Monster.addTesthashs64Fnv1 = function(builder, testhashs64Fnv1) {
- builder.addFieldInt64(18, testhashs64Fnv1, builder.createLong(0, 0));
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Long} testhashu64Fnv1
- */
-MyGame.Example.Monster.addTesthashu64Fnv1 = function(builder, testhashu64Fnv1) {
- builder.addFieldInt64(19, testhashu64Fnv1, builder.createLong(0, 0));
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} testhashs32Fnv1a
- */
-MyGame.Example.Monster.addTesthashs32Fnv1a = function(builder, testhashs32Fnv1a) {
- builder.addFieldInt32(20, testhashs32Fnv1a, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} testhashu32Fnv1a
- */
-MyGame.Example.Monster.addTesthashu32Fnv1a = function(builder, testhashu32Fnv1a) {
- builder.addFieldInt32(21, testhashu32Fnv1a, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Long} testhashs64Fnv1a
- */
-MyGame.Example.Monster.addTesthashs64Fnv1a = function(builder, testhashs64Fnv1a) {
- builder.addFieldInt64(22, testhashs64Fnv1a, builder.createLong(0, 0));
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Long} testhashu64Fnv1a
- */
-MyGame.Example.Monster.addTesthashu64Fnv1a = function(builder, testhashu64Fnv1a) {
- builder.addFieldInt64(23, testhashu64Fnv1a, builder.createLong(0, 0));
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} testarrayofboolsOffset
- */
-MyGame.Example.Monster.addTestarrayofbools = function(builder, testarrayofboolsOffset) {
- builder.addFieldOffset(24, testarrayofboolsOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {Array.<boolean>} data
- * @returns {flatbuffers.Offset}
- */
-MyGame.Example.Monster.createTestarrayofboolsVector = function(builder, data) {
- builder.startVector(1, data.length, 1);
- for (var i = data.length - 1; i >= 0; i--) {
- builder.addInt8(+data[i]);
- }
- return builder.endVector();
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} numElems
- */
-MyGame.Example.Monster.startTestarrayofboolsVector = function(builder, numElems) {
- builder.startVector(1, numElems, 1);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} testf
- */
-MyGame.Example.Monster.addTestf = function(builder, testf) {
- builder.addFieldFloat32(25, testf, 3.14159);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} testf2
- */
-MyGame.Example.Monster.addTestf2 = function(builder, testf2) {
- builder.addFieldFloat32(26, testf2, 3.0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} testf3
- */
-MyGame.Example.Monster.addTestf3 = function(builder, testf3) {
- builder.addFieldFloat32(27, testf3, 0.0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} testarrayofstring2Offset
- */
-MyGame.Example.Monster.addTestarrayofstring2 = function(builder, testarrayofstring2Offset) {
- builder.addFieldOffset(28, testarrayofstring2Offset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {Array.<flatbuffers.Offset>} data
- * @returns {flatbuffers.Offset}
- */
-MyGame.Example.Monster.createTestarrayofstring2Vector = function(builder, data) {
- builder.startVector(4, data.length, 4);
- for (var i = data.length - 1; i >= 0; i--) {
- builder.addOffset(data[i]);
- }
- return builder.endVector();
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} numElems
- */
-MyGame.Example.Monster.startTestarrayofstring2Vector = function(builder, numElems) {
- builder.startVector(4, numElems, 4);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} testarrayofsortedstructOffset
- */
-MyGame.Example.Monster.addTestarrayofsortedstruct = function(builder, testarrayofsortedstructOffset) {
- builder.addFieldOffset(29, testarrayofsortedstructOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} numElems
- */
-MyGame.Example.Monster.startTestarrayofsortedstructVector = function(builder, numElems) {
- builder.startVector(8, numElems, 4);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @returns {flatbuffers.Offset}
- */
-MyGame.Example.Monster.endMonster = function(builder) {
- var offset = builder.endObject();
- builder.requiredField(offset, 10); // name
- return offset;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} offset
- */
-MyGame.Example.Monster.finishMonsterBuffer = function(builder, offset) {
- builder.finish(offset, 'MONS');
-};
-
-// Exports for Node.js and RequireJS
-this.MyGame = MyGame;
diff --git a/third_party/flatbuffers/tests/monster_test_generated.ts b/third_party/flatbuffers/tests/monster_test_generated.ts
deleted file mode 100644
index 3ff1bf9..0000000
--- a/third_party/flatbuffers/tests/monster_test_generated.ts
+++ /dev/null
@@ -1,1683 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-/**
- * @enum
- */
-export namespace MyGame.Example{
-export enum Color{
- Red= 1,
- Green= 2,
- Blue= 8
-}};
-
-/**
- * @enum
- */
-export namespace MyGame.Example{
-export enum Any{
- NONE= 0,
- Monster= 1,
- TestSimpleTableWithEnum= 2,
- MyGame_Example2_Monster= 3
-}};
-
-/**
- * @constructor
- */
-export namespace MyGame.Example2{
-export class Monster {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- bb: flatbuffers.ByteBuffer= null;
-
- /**
- * @type {number}
- */
- bb_pos:number = 0;
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {Monster}
- */
-__init(i:number, bb:flatbuffers.ByteBuffer):Monster {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @param {Monster=} obj
- * @returns {Monster}
- */
-static getRootAsMonster(bb:flatbuffers.ByteBuffer, obj?:Monster):Monster {
- return (obj || new Monster).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- */
-static startMonster(builder:flatbuffers.Builder) {
- builder.startObject(0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @returns {flatbuffers.Offset}
- */
-static endMonster(builder:flatbuffers.Builder):flatbuffers.Offset {
- var offset = builder.endObject();
- return offset;
-};
-
-}
-}
-/**
- * @constructor
- */
-export namespace MyGame.Example{
-export class Test {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- bb: flatbuffers.ByteBuffer= null;
-
- /**
- * @type {number}
- */
- bb_pos:number = 0;
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {Test}
- */
-__init(i:number, bb:flatbuffers.ByteBuffer):Test {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @returns {number}
- */
-a():number {
- return this.bb.readInt16(this.bb_pos);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-mutate_a(value:number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 0);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt16(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-b():number {
- return this.bb.readInt8(this.bb_pos + 2);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-mutate_b(value:number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 2);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt8(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} a
- * @param {number} b
- * @returns {flatbuffers.Offset}
- */
-static createTest(builder:flatbuffers.Builder, a: number, b: number):flatbuffers.Offset {
- builder.prep(2, 4);
- builder.pad(1);
- builder.writeInt8(b);
- builder.writeInt16(a);
- return builder.offset();
-};
-
-}
-}
-/**
- * @constructor
- */
-export namespace MyGame.Example{
-export class TestSimpleTableWithEnum {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- bb: flatbuffers.ByteBuffer= null;
-
- /**
- * @type {number}
- */
- bb_pos:number = 0;
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {TestSimpleTableWithEnum}
- */
-__init(i:number, bb:flatbuffers.ByteBuffer):TestSimpleTableWithEnum {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @param {TestSimpleTableWithEnum=} obj
- * @returns {TestSimpleTableWithEnum}
- */
-static getRootAsTestSimpleTableWithEnum(bb:flatbuffers.ByteBuffer, obj?:TestSimpleTableWithEnum):TestSimpleTableWithEnum {
- return (obj || new TestSimpleTableWithEnum).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @returns {MyGame.Example.Color}
- */
-color():MyGame.Example.Color {
- var offset = this.bb.__offset(this.bb_pos, 4);
- return offset ? /** @type {MyGame.Example.Color} */ (this.bb.readInt8(this.bb_pos + offset)) : MyGame.Example.Color.Green;
-};
-
-/**
- * @param {MyGame.Example.Color} value
- * @returns {boolean}
- */
-mutate_color(value:MyGame.Example.Color):boolean {
- var offset = this.bb.__offset(this.bb_pos, 4);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt8(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- */
-static startTestSimpleTableWithEnum(builder:flatbuffers.Builder) {
- builder.startObject(1);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {MyGame.Example.Color} color
- */
-static addColor(builder:flatbuffers.Builder, color:MyGame.Example.Color) {
- builder.addFieldInt8(0, color, MyGame.Example.Color.Green);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @returns {flatbuffers.Offset}
- */
-static endTestSimpleTableWithEnum(builder:flatbuffers.Builder):flatbuffers.Offset {
- var offset = builder.endObject();
- return offset;
-};
-
-}
-}
-/**
- * @constructor
- */
-export namespace MyGame.Example{
-export class Vec3 {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- bb: flatbuffers.ByteBuffer= null;
-
- /**
- * @type {number}
- */
- bb_pos:number = 0;
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {Vec3}
- */
-__init(i:number, bb:flatbuffers.ByteBuffer):Vec3 {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @returns {number}
- */
-x():number {
- return this.bb.readFloat32(this.bb_pos);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-mutate_x(value:number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 0);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeFloat32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-y():number {
- return this.bb.readFloat32(this.bb_pos + 4);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-mutate_y(value:number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 4);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeFloat32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-z():number {
- return this.bb.readFloat32(this.bb_pos + 8);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-mutate_z(value:number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 8);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeFloat32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-test1():number {
- return this.bb.readFloat64(this.bb_pos + 16);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-mutate_test1(value:number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 16);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeFloat64(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {MyGame.Example.Color}
- */
-test2():MyGame.Example.Color {
- return /** @type {MyGame.Example.Color} */ (this.bb.readInt8(this.bb_pos + 24));
-};
-
-/**
- * @param {MyGame.Example.Color} value
- * @returns {boolean}
- */
-mutate_test2(value:MyGame.Example.Color):boolean {
- var offset = this.bb.__offset(this.bb_pos, 24);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt8(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {MyGame.Example.Test=} obj
- * @returns {MyGame.Example.Test}
- */
-test3(obj?:MyGame.Example.Test):MyGame.Example.Test {
- return (obj || new MyGame.Example.Test).__init(this.bb_pos + 26, this.bb);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} x
- * @param {number} y
- * @param {number} z
- * @param {number} test1
- * @param {MyGame.Example.Color} test2
- * @param {number} test3_a
- * @param {number} test3_b
- * @returns {flatbuffers.Offset}
- */
-static createVec3(builder:flatbuffers.Builder, x: number, y: number, z: number, test1: number, test2: MyGame.Example.Color, test3_a: number, test3_b: number):flatbuffers.Offset {
- builder.prep(16, 32);
- builder.pad(2);
- builder.prep(2, 4);
- builder.pad(1);
- builder.writeInt8(test3_b);
- builder.writeInt16(test3_a);
- builder.pad(1);
- builder.writeInt8(test2);
- builder.writeFloat64(test1);
- builder.pad(4);
- builder.writeFloat32(z);
- builder.writeFloat32(y);
- builder.writeFloat32(x);
- return builder.offset();
-};
-
-}
-}
-/**
- * @constructor
- */
-export namespace MyGame.Example{
-export class Ability {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- bb: flatbuffers.ByteBuffer= null;
-
- /**
- * @type {number}
- */
- bb_pos:number = 0;
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {Ability}
- */
-__init(i:number, bb:flatbuffers.ByteBuffer):Ability {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @returns {number}
- */
-id():number {
- return this.bb.readUint32(this.bb_pos);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-mutate_id(value:number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 0);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeUint32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-distance():number {
- return this.bb.readUint32(this.bb_pos + 4);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-mutate_distance(value:number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 4);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeUint32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} id
- * @param {number} distance
- * @returns {flatbuffers.Offset}
- */
-static createAbility(builder:flatbuffers.Builder, id: number, distance: number):flatbuffers.Offset {
- builder.prep(4, 8);
- builder.writeInt32(distance);
- builder.writeInt32(id);
- return builder.offset();
-};
-
-}
-}
-/**
- * @constructor
- */
-export namespace MyGame.Example{
-export class Stat {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- bb: flatbuffers.ByteBuffer= null;
-
- /**
- * @type {number}
- */
- bb_pos:number = 0;
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {Stat}
- */
-__init(i:number, bb:flatbuffers.ByteBuffer):Stat {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @param {Stat=} obj
- * @returns {Stat}
- */
-static getRootAsStat(bb:flatbuffers.ByteBuffer, obj?:Stat):Stat {
- return (obj || new Stat).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @param {flatbuffers.Encoding=} optionalEncoding
- * @returns {string|Uint8Array}
- */
-id():string
-id(optionalEncoding:flatbuffers.Encoding):string|Uint8Array
-id(optionalEncoding?:any):string|Uint8Array {
- var offset = this.bb.__offset(this.bb_pos, 4);
- return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null;
-};
-
-/**
- * @returns {flatbuffers.Long}
- */
-val():flatbuffers.Long {
- var offset = this.bb.__offset(this.bb_pos, 6);
- return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0);
-};
-
-/**
- * @param {flatbuffers.Long} value
- * @returns {boolean}
- */
-mutate_val(value:flatbuffers.Long):boolean {
- var offset = this.bb.__offset(this.bb_pos, 6);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt64(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-count():number {
- var offset = this.bb.__offset(this.bb_pos, 8);
- return offset ? this.bb.readUint16(this.bb_pos + offset) : 0;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-mutate_count(value:number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 8);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeUint16(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- */
-static startStat(builder:flatbuffers.Builder) {
- builder.startObject(3);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} idOffset
- */
-static addId(builder:flatbuffers.Builder, idOffset:flatbuffers.Offset) {
- builder.addFieldOffset(0, idOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Long} val
- */
-static addVal(builder:flatbuffers.Builder, val:flatbuffers.Long) {
- builder.addFieldInt64(1, val, builder.createLong(0, 0));
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} count
- */
-static addCount(builder:flatbuffers.Builder, count:number) {
- builder.addFieldInt16(2, count, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @returns {flatbuffers.Offset}
- */
-static endStat(builder:flatbuffers.Builder):flatbuffers.Offset {
- var offset = builder.endObject();
- return offset;
-};
-
-}
-}
-/**
- * an example documentation comment: monster object
- *
- * @constructor
- */
-export namespace MyGame.Example{
-export class Monster {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- bb: flatbuffers.ByteBuffer= null;
-
- /**
- * @type {number}
- */
- bb_pos:number = 0;
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {Monster}
- */
-__init(i:number, bb:flatbuffers.ByteBuffer):Monster {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @param {Monster=} obj
- * @returns {Monster}
- */
-static getRootAsMonster(bb:flatbuffers.ByteBuffer, obj?:Monster):Monster {
- return (obj || new Monster).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {boolean}
- */
-static bufferHasIdentifier(bb:flatbuffers.ByteBuffer):boolean {
- return bb.__has_identifier('MONS');
-};
-
-/**
- * @param {MyGame.Example.Vec3=} obj
- * @returns {MyGame.Example.Vec3}
- */
-pos(obj?:MyGame.Example.Vec3):MyGame.Example.Vec3 {
- var offset = this.bb.__offset(this.bb_pos, 4);
- return offset ? (obj || new MyGame.Example.Vec3).__init(this.bb_pos + offset, this.bb) : null;
-};
-
-/**
- * @returns {number}
- */
-mana():number {
- var offset = this.bb.__offset(this.bb_pos, 6);
- return offset ? this.bb.readInt16(this.bb_pos + offset) : 150;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-mutate_mana(value:number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 6);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt16(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-hp():number {
- var offset = this.bb.__offset(this.bb_pos, 8);
- return offset ? this.bb.readInt16(this.bb_pos + offset) : 100;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-mutate_hp(value:number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 8);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt16(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {flatbuffers.Encoding=} optionalEncoding
- * @returns {string|Uint8Array}
- */
-name():string
-name(optionalEncoding:flatbuffers.Encoding):string|Uint8Array
-name(optionalEncoding?:any):string|Uint8Array {
- var offset = this.bb.__offset(this.bb_pos, 10);
- return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null;
-};
-
-/**
- * @param {number} index
- * @returns {number}
- */
-inventory(index: number):number {
- var offset = this.bb.__offset(this.bb_pos, 14);
- return offset ? this.bb.readUint8(this.bb.__vector(this.bb_pos + offset) + index) : 0;
-};
-
-/**
- * @returns {number}
- */
-inventoryLength():number {
- var offset = this.bb.__offset(this.bb_pos, 14);
- return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
-};
-
-/**
- * @returns {Uint8Array}
- */
-inventoryArray():Uint8Array {
- var offset = this.bb.__offset(this.bb_pos, 14);
- return offset ? new Uint8Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null;
-};
-
-/**
- * @returns {MyGame.Example.Color}
- */
-color():MyGame.Example.Color {
- var offset = this.bb.__offset(this.bb_pos, 16);
- return offset ? /** @type {MyGame.Example.Color} */ (this.bb.readInt8(this.bb_pos + offset)) : MyGame.Example.Color.Blue;
-};
-
-/**
- * @param {MyGame.Example.Color} value
- * @returns {boolean}
- */
-mutate_color(value:MyGame.Example.Color):boolean {
- var offset = this.bb.__offset(this.bb_pos, 16);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt8(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {MyGame.Example.Any}
- */
-testType():MyGame.Example.Any {
- var offset = this.bb.__offset(this.bb_pos, 18);
- return offset ? /** @type {MyGame.Example.Any} */ (this.bb.readUint8(this.bb_pos + offset)) : MyGame.Example.Any.NONE;
-};
-
-/**
- * @param {MyGame.Example.Any} value
- * @returns {boolean}
- */
-mutate_test_type(value:MyGame.Example.Any):boolean {
- var offset = this.bb.__offset(this.bb_pos, 18);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeUint8(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {flatbuffers.Table} obj
- * @returns {?flatbuffers.Table}
- */
-test<T extends flatbuffers.Table>(obj:T):T {
- var offset = this.bb.__offset(this.bb_pos, 20);
- return offset ? this.bb.__union(obj, this.bb_pos + offset) : null;
-};
-
-/**
- * @param {number} index
- * @param {MyGame.Example.Test=} obj
- * @returns {MyGame.Example.Test}
- */
-test4(index: number, obj?:MyGame.Example.Test):MyGame.Example.Test {
- var offset = this.bb.__offset(this.bb_pos, 22);
- return offset ? (obj || new MyGame.Example.Test).__init(this.bb.__vector(this.bb_pos + offset) + index * 4, this.bb) : null;
-};
-
-/**
- * @returns {number}
- */
-test4Length():number {
- var offset = this.bb.__offset(this.bb_pos, 22);
- return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
-};
-
-/**
- * @param {number} index
- * @param {flatbuffers.Encoding=} optionalEncoding
- * @returns {string|Uint8Array}
- */
-testarrayofstring(index: number):string
-testarrayofstring(index: number,optionalEncoding:flatbuffers.Encoding):string|Uint8Array
-testarrayofstring(index: number,optionalEncoding?:any):string|Uint8Array {
- var offset = this.bb.__offset(this.bb_pos, 24);
- return offset ? this.bb.__string(this.bb.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null;
-};
-
-/**
- * @returns {number}
- */
-testarrayofstringLength():number {
- var offset = this.bb.__offset(this.bb_pos, 24);
- return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
-};
-
-/**
- * an example documentation comment: this will end up in the generated code
- * multiline too
- *
- * @param {number} index
- * @param {MyGame.Example.Monster=} obj
- * @returns {MyGame.Example.Monster}
- */
-testarrayoftables(index: number, obj?:MyGame.Example.Monster):MyGame.Example.Monster {
- var offset = this.bb.__offset(this.bb_pos, 26);
- return offset ? (obj || new MyGame.Example.Monster).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null;
-};
-
-/**
- * @returns {number}
- */
-testarrayoftablesLength():number {
- var offset = this.bb.__offset(this.bb_pos, 26);
- return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
-};
-
-/**
- * @param {MyGame.Example.Monster=} obj
- * @returns {MyGame.Example.Monster}
- */
-enemy(obj?:MyGame.Example.Monster):MyGame.Example.Monster {
- var offset = this.bb.__offset(this.bb_pos, 28);
- return offset ? (obj || new MyGame.Example.Monster).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;
-};
-
-/**
- * @param {number} index
- * @returns {number}
- */
-testnestedflatbuffer(index: number):number {
- var offset = this.bb.__offset(this.bb_pos, 30);
- return offset ? this.bb.readUint8(this.bb.__vector(this.bb_pos + offset) + index) : 0;
-};
-
-/**
- * @returns {number}
- */
-testnestedflatbufferLength():number {
- var offset = this.bb.__offset(this.bb_pos, 30);
- return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
-};
-
-/**
- * @returns {Uint8Array}
- */
-testnestedflatbufferArray():Uint8Array {
- var offset = this.bb.__offset(this.bb_pos, 30);
- return offset ? new Uint8Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null;
-};
-
-/**
- * @param {MyGame.Example.Stat=} obj
- * @returns {MyGame.Example.Stat}
- */
-testempty(obj?:MyGame.Example.Stat):MyGame.Example.Stat {
- var offset = this.bb.__offset(this.bb_pos, 32);
- return offset ? (obj || new MyGame.Example.Stat).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;
-};
-
-/**
- * @returns {boolean}
- */
-testbool():boolean {
- var offset = this.bb.__offset(this.bb_pos, 34);
- return offset ? !!this.bb.readInt8(this.bb_pos + offset) : false;
-};
-
-/**
- * @param {boolean} value
- * @returns {boolean}
- */
-mutate_testbool(value:boolean):boolean {
- var offset = this.bb.__offset(this.bb_pos, 34);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt8(this.bb_pos + offset, +value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-testhashs32Fnv1():number {
- var offset = this.bb.__offset(this.bb_pos, 36);
- return offset ? this.bb.readInt32(this.bb_pos + offset) : 0;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-mutate_testhashs32_fnv1(value:number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 36);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-testhashu32Fnv1():number {
- var offset = this.bb.__offset(this.bb_pos, 38);
- return offset ? this.bb.readUint32(this.bb_pos + offset) : 0;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-mutate_testhashu32_fnv1(value:number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 38);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeUint32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {flatbuffers.Long}
- */
-testhashs64Fnv1():flatbuffers.Long {
- var offset = this.bb.__offset(this.bb_pos, 40);
- return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0);
-};
-
-/**
- * @param {flatbuffers.Long} value
- * @returns {boolean}
- */
-mutate_testhashs64_fnv1(value:flatbuffers.Long):boolean {
- var offset = this.bb.__offset(this.bb_pos, 40);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt64(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {flatbuffers.Long}
- */
-testhashu64Fnv1():flatbuffers.Long {
- var offset = this.bb.__offset(this.bb_pos, 42);
- return offset ? this.bb.readUint64(this.bb_pos + offset) : this.bb.createLong(0, 0);
-};
-
-/**
- * @param {flatbuffers.Long} value
- * @returns {boolean}
- */
-mutate_testhashu64_fnv1(value:flatbuffers.Long):boolean {
- var offset = this.bb.__offset(this.bb_pos, 42);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeUint64(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-testhashs32Fnv1a():number {
- var offset = this.bb.__offset(this.bb_pos, 44);
- return offset ? this.bb.readInt32(this.bb_pos + offset) : 0;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-mutate_testhashs32_fnv1a(value:number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 44);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-testhashu32Fnv1a():number {
- var offset = this.bb.__offset(this.bb_pos, 46);
- return offset ? this.bb.readUint32(this.bb_pos + offset) : 0;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-mutate_testhashu32_fnv1a(value:number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 46);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeUint32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {flatbuffers.Long}
- */
-testhashs64Fnv1a():flatbuffers.Long {
- var offset = this.bb.__offset(this.bb_pos, 48);
- return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0);
-};
-
-/**
- * @param {flatbuffers.Long} value
- * @returns {boolean}
- */
-mutate_testhashs64_fnv1a(value:flatbuffers.Long):boolean {
- var offset = this.bb.__offset(this.bb_pos, 48);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt64(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {flatbuffers.Long}
- */
-testhashu64Fnv1a():flatbuffers.Long {
- var offset = this.bb.__offset(this.bb_pos, 50);
- return offset ? this.bb.readUint64(this.bb_pos + offset) : this.bb.createLong(0, 0);
-};
-
-/**
- * @param {flatbuffers.Long} value
- * @returns {boolean}
- */
-mutate_testhashu64_fnv1a(value:flatbuffers.Long):boolean {
- var offset = this.bb.__offset(this.bb_pos, 50);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeUint64(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {number} index
- * @returns {boolean}
- */
-testarrayofbools(index: number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 52);
- return offset ? !!this.bb.readInt8(this.bb.__vector(this.bb_pos + offset) + index) : false;
-};
-
-/**
- * @returns {number}
- */
-testarrayofboolsLength():number {
- var offset = this.bb.__offset(this.bb_pos, 52);
- return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
-};
-
-/**
- * @returns {Int8Array}
- */
-testarrayofboolsArray():Int8Array {
- var offset = this.bb.__offset(this.bb_pos, 52);
- return offset ? new Int8Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null;
-};
-
-/**
- * @returns {number}
- */
-testf():number {
- var offset = this.bb.__offset(this.bb_pos, 54);
- return offset ? this.bb.readFloat32(this.bb_pos + offset) : 3.14159;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-mutate_testf(value:number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 54);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeFloat32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-testf2():number {
- var offset = this.bb.__offset(this.bb_pos, 56);
- return offset ? this.bb.readFloat32(this.bb_pos + offset) : 3.0;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-mutate_testf2(value:number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 56);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeFloat32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-testf3():number {
- var offset = this.bb.__offset(this.bb_pos, 58);
- return offset ? this.bb.readFloat32(this.bb_pos + offset) : 0.0;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-mutate_testf3(value:number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 58);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeFloat32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {number} index
- * @param {flatbuffers.Encoding=} optionalEncoding
- * @returns {string|Uint8Array}
- */
-testarrayofstring2(index: number):string
-testarrayofstring2(index: number,optionalEncoding:flatbuffers.Encoding):string|Uint8Array
-testarrayofstring2(index: number,optionalEncoding?:any):string|Uint8Array {
- var offset = this.bb.__offset(this.bb_pos, 60);
- return offset ? this.bb.__string(this.bb.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null;
-};
-
-/**
- * @returns {number}
- */
-testarrayofstring2Length():number {
- var offset = this.bb.__offset(this.bb_pos, 60);
- return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
-};
-
-/**
- * @param {number} index
- * @param {MyGame.Example.Ability=} obj
- * @returns {MyGame.Example.Ability}
- */
-testarrayofsortedstruct(index: number, obj?:MyGame.Example.Ability):MyGame.Example.Ability {
- var offset = this.bb.__offset(this.bb_pos, 62);
- return offset ? (obj || new MyGame.Example.Ability).__init(this.bb.__vector(this.bb_pos + offset) + index * 8, this.bb) : null;
-};
-
-/**
- * @returns {number}
- */
-testarrayofsortedstructLength():number {
- var offset = this.bb.__offset(this.bb_pos, 62);
- return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- */
-static startMonster(builder:flatbuffers.Builder) {
- builder.startObject(30);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} posOffset
- */
-static addPos(builder:flatbuffers.Builder, posOffset:flatbuffers.Offset) {
- builder.addFieldStruct(0, posOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} mana
- */
-static addMana(builder:flatbuffers.Builder, mana:number) {
- builder.addFieldInt16(1, mana, 150);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} hp
- */
-static addHp(builder:flatbuffers.Builder, hp:number) {
- builder.addFieldInt16(2, hp, 100);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} nameOffset
- */
-static addName(builder:flatbuffers.Builder, nameOffset:flatbuffers.Offset) {
- builder.addFieldOffset(3, nameOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} inventoryOffset
- */
-static addInventory(builder:flatbuffers.Builder, inventoryOffset:flatbuffers.Offset) {
- builder.addFieldOffset(5, inventoryOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {Array.<number>} data
- * @returns {flatbuffers.Offset}
- */
-static createInventoryVector(builder:flatbuffers.Builder, data:number[] | Uint8Array):flatbuffers.Offset {
-if(!data){
- return null
-}
- builder.startVector(1, data.length, 1);
- for (var i = data.length - 1; i >= 0; i--) {
- builder.addInt8(data[i]);
- }
- return builder.endVector();
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} numElems
- */
-static startInventoryVector(builder:flatbuffers.Builder, numElems:number) {
- builder.startVector(1, numElems, 1);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {MyGame.Example.Color} color
- */
-static addColor(builder:flatbuffers.Builder, color:MyGame.Example.Color) {
- builder.addFieldInt8(6, color, MyGame.Example.Color.Blue);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {MyGame.Example.Any} testType
- */
-static addTestType(builder:flatbuffers.Builder, testType:MyGame.Example.Any) {
- builder.addFieldInt8(7, testType, MyGame.Example.Any.NONE);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} testOffset
- */
-static addTest(builder:flatbuffers.Builder, testOffset:flatbuffers.Offset) {
- builder.addFieldOffset(8, testOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} test4Offset
- */
-static addTest4(builder:flatbuffers.Builder, test4Offset:flatbuffers.Offset) {
- builder.addFieldOffset(9, test4Offset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} numElems
- */
-static startTest4Vector(builder:flatbuffers.Builder, numElems:number) {
- builder.startVector(4, numElems, 2);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} testarrayofstringOffset
- */
-static addTestarrayofstring(builder:flatbuffers.Builder, testarrayofstringOffset:flatbuffers.Offset) {
- builder.addFieldOffset(10, testarrayofstringOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {Array.<flatbuffers.Offset>} data
- * @returns {flatbuffers.Offset}
- */
-static createTestarrayofstringVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {
-if(!data){
- return null
-}
- builder.startVector(4, data.length, 4);
- for (var i = data.length - 1; i >= 0; i--) {
- builder.addOffset(data[i]);
- }
- return builder.endVector();
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} numElems
- */
-static startTestarrayofstringVector(builder:flatbuffers.Builder, numElems:number) {
- builder.startVector(4, numElems, 4);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} testarrayoftablesOffset
- */
-static addTestarrayoftables(builder:flatbuffers.Builder, testarrayoftablesOffset:flatbuffers.Offset) {
- builder.addFieldOffset(11, testarrayoftablesOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {Array.<flatbuffers.Offset>} data
- * @returns {flatbuffers.Offset}
- */
-static createTestarrayoftablesVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {
-if(!data){
- return null
-}
- builder.startVector(4, data.length, 4);
- for (var i = data.length - 1; i >= 0; i--) {
- builder.addOffset(data[i]);
- }
- return builder.endVector();
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} numElems
- */
-static startTestarrayoftablesVector(builder:flatbuffers.Builder, numElems:number) {
- builder.startVector(4, numElems, 4);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} enemyOffset
- */
-static addEnemy(builder:flatbuffers.Builder, enemyOffset:flatbuffers.Offset) {
- builder.addFieldOffset(12, enemyOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} testnestedflatbufferOffset
- */
-static addTestnestedflatbuffer(builder:flatbuffers.Builder, testnestedflatbufferOffset:flatbuffers.Offset) {
- builder.addFieldOffset(13, testnestedflatbufferOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {Array.<number>} data
- * @returns {flatbuffers.Offset}
- */
-static createTestnestedflatbufferVector(builder:flatbuffers.Builder, data:number[] | Uint8Array):flatbuffers.Offset {
-if(!data){
- return null
-}
- builder.startVector(1, data.length, 1);
- for (var i = data.length - 1; i >= 0; i--) {
- builder.addInt8(data[i]);
- }
- return builder.endVector();
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} numElems
- */
-static startTestnestedflatbufferVector(builder:flatbuffers.Builder, numElems:number) {
- builder.startVector(1, numElems, 1);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} testemptyOffset
- */
-static addTestempty(builder:flatbuffers.Builder, testemptyOffset:flatbuffers.Offset) {
- builder.addFieldOffset(14, testemptyOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {boolean} testbool
- */
-static addTestbool(builder:flatbuffers.Builder, testbool:boolean) {
- builder.addFieldInt8(15, +testbool, +false);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} testhashs32Fnv1
- */
-static addTesthashs32Fnv1(builder:flatbuffers.Builder, testhashs32Fnv1:number) {
- builder.addFieldInt32(16, testhashs32Fnv1, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} testhashu32Fnv1
- */
-static addTesthashu32Fnv1(builder:flatbuffers.Builder, testhashu32Fnv1:number) {
- builder.addFieldInt32(17, testhashu32Fnv1, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Long} testhashs64Fnv1
- */
-static addTesthashs64Fnv1(builder:flatbuffers.Builder, testhashs64Fnv1:flatbuffers.Long) {
- builder.addFieldInt64(18, testhashs64Fnv1, builder.createLong(0, 0));
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Long} testhashu64Fnv1
- */
-static addTesthashu64Fnv1(builder:flatbuffers.Builder, testhashu64Fnv1:flatbuffers.Long) {
- builder.addFieldInt64(19, testhashu64Fnv1, builder.createLong(0, 0));
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} testhashs32Fnv1a
- */
-static addTesthashs32Fnv1a(builder:flatbuffers.Builder, testhashs32Fnv1a:number) {
- builder.addFieldInt32(20, testhashs32Fnv1a, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} testhashu32Fnv1a
- */
-static addTesthashu32Fnv1a(builder:flatbuffers.Builder, testhashu32Fnv1a:number) {
- builder.addFieldInt32(21, testhashu32Fnv1a, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Long} testhashs64Fnv1a
- */
-static addTesthashs64Fnv1a(builder:flatbuffers.Builder, testhashs64Fnv1a:flatbuffers.Long) {
- builder.addFieldInt64(22, testhashs64Fnv1a, builder.createLong(0, 0));
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Long} testhashu64Fnv1a
- */
-static addTesthashu64Fnv1a(builder:flatbuffers.Builder, testhashu64Fnv1a:flatbuffers.Long) {
- builder.addFieldInt64(23, testhashu64Fnv1a, builder.createLong(0, 0));
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} testarrayofboolsOffset
- */
-static addTestarrayofbools(builder:flatbuffers.Builder, testarrayofboolsOffset:flatbuffers.Offset) {
- builder.addFieldOffset(24, testarrayofboolsOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {Array.<boolean>} data
- * @returns {flatbuffers.Offset}
- */
-static createTestarrayofboolsVector(builder:flatbuffers.Builder, data:boolean[]):flatbuffers.Offset {
-if(!data){
- return null
-}
- builder.startVector(1, data.length, 1);
- for (var i = data.length - 1; i >= 0; i--) {
- builder.addInt8(+data[i]);
- }
- return builder.endVector();
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} numElems
- */
-static startTestarrayofboolsVector(builder:flatbuffers.Builder, numElems:number) {
- builder.startVector(1, numElems, 1);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} testf
- */
-static addTestf(builder:flatbuffers.Builder, testf:number) {
- builder.addFieldFloat32(25, testf, 3.14159);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} testf2
- */
-static addTestf2(builder:flatbuffers.Builder, testf2:number) {
- builder.addFieldFloat32(26, testf2, 3.0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} testf3
- */
-static addTestf3(builder:flatbuffers.Builder, testf3:number) {
- builder.addFieldFloat32(27, testf3, 0.0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} testarrayofstring2Offset
- */
-static addTestarrayofstring2(builder:flatbuffers.Builder, testarrayofstring2Offset:flatbuffers.Offset) {
- builder.addFieldOffset(28, testarrayofstring2Offset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {Array.<flatbuffers.Offset>} data
- * @returns {flatbuffers.Offset}
- */
-static createTestarrayofstring2Vector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {
-if(!data){
- return null
-}
- builder.startVector(4, data.length, 4);
- for (var i = data.length - 1; i >= 0; i--) {
- builder.addOffset(data[i]);
- }
- return builder.endVector();
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} numElems
- */
-static startTestarrayofstring2Vector(builder:flatbuffers.Builder, numElems:number) {
- builder.startVector(4, numElems, 4);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} testarrayofsortedstructOffset
- */
-static addTestarrayofsortedstruct(builder:flatbuffers.Builder, testarrayofsortedstructOffset:flatbuffers.Offset) {
- builder.addFieldOffset(29, testarrayofsortedstructOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} numElems
- */
-static startTestarrayofsortedstructVector(builder:flatbuffers.Builder, numElems:number) {
- builder.startVector(8, numElems, 4);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @returns {flatbuffers.Offset}
- */
-static endMonster(builder:flatbuffers.Builder):flatbuffers.Offset {
- var offset = builder.endObject();
- builder.requiredField(offset, 10); // name
- return offset;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} offset
- */
-static finishMonsterBuffer(builder:flatbuffers.Builder, offset:flatbuffers.Offset) {
- builder.finish(offset, 'MONS');
-};
-
-}
-}
diff --git a/third_party/flatbuffers/tests/monsterdata_python_wire.mon b/third_party/flatbuffers/tests/monsterdata_python_wire.mon
deleted file mode 100644
index 190f43a..0000000
--- a/third_party/flatbuffers/tests/monsterdata_python_wire.mon
+++ /dev/null
Binary files differ
diff --git a/third_party/flatbuffers/tests/monsterdata_test.golden b/third_party/flatbuffers/tests/monsterdata_test.golden
deleted file mode 100644
index 73afc42..0000000
--- a/third_party/flatbuffers/tests/monsterdata_test.golden
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- pos: {
- x: 1,
- y: 2,
- z: 3,
- test1: 3,
- test2: Green,
- test3: {
- a: 5,
- b: 6
- }
- },
- hp: 80,
- name: "MyMonster",
- inventory: [
- 0,
- 1,
- 2,
- 3,
- 4
- ],
- test_type: Monster,
- test: {
- name: "Fred"
- },
- test4: [
- {
- a: 10,
- b: 20
- },
- {
- a: 30,
- b: 40
- }
- ],
- testarrayofstring: [
- "test1",
- "test2"
- ],
- testhashs32_fnv1: -579221183,
- testhashu32_fnv1: 3715746113,
- testhashs64_fnv1: 7930699090847568257,
- testhashu64_fnv1: 7930699090847568257,
- testhashs32_fnv1a: -1904106383,
- testhashu32_fnv1a: 2390860913,
- testhashs64_fnv1a: 4898026182817603057,
- testhashu64_fnv1a: 4898026182817603057
-}
diff --git a/third_party/flatbuffers/tests/monsterdata_test.json b/third_party/flatbuffers/tests/monsterdata_test.json
deleted file mode 100755
index e8e3e1d..0000000
--- a/third_party/flatbuffers/tests/monsterdata_test.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- pos: {
- x: 1,
- y: "2",
- z: 3,
- test1: 3,
- test2: Green,
- test3: {
- a: 5,
- b: 6
- }
- },
- hp: 80,
- name: "MyMonster",
- inventory: [
- 0,
- 1,
- 2,
- 3,
- 4
- ],
- test_type: Monster,
- test: {
- name: "Fred",
- pos: null
- },
- test4: [
- {
- a: 10,
- b: 20
- },
- {
- b: "40",
- a: 30
- }
- ],
- testarrayofstring: [
- "test1",
- "test2"
- ],
- enemy: {
- name: "Fred"
- },
- testarrayofbools:[
- true, false, true
- ],
- testhashs32_fnv1: "This string is being hashed!",
- testhashu32_fnv1: "This string is being hashed!",
- testhashs64_fnv1: "This string is being hashed!",
- testhashu64_fnv1: "This string is being hashed!",
- testhashs32_fnv1a: "This string is being hashed!",
- testhashu32_fnv1a: "This string is being hashed!",
- testhashs64_fnv1a: "This string is being hashed!",
- testhashu64_fnv1a: "This string is being hashed!",
-}
diff --git a/third_party/flatbuffers/tests/monsterdata_test.mon b/third_party/flatbuffers/tests/monsterdata_test.mon
deleted file mode 100644
index 21c4216..0000000
--- a/third_party/flatbuffers/tests/monsterdata_test.mon
+++ /dev/null
Binary files differ
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/EnumInNestedNS.cs b/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/EnumInNestedNS.cs
deleted file mode 100644
index 5f979fe..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/EnumInNestedNS.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace NamespaceA.NamespaceB
-{
-
-public enum EnumInNestedNS : sbyte
-{
- A = 0,
- B = 1,
- C = 2,
-};
-
-
-}
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/EnumInNestedNS.go b/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/EnumInNestedNS.go
deleted file mode 100644
index 2b68991..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/EnumInNestedNS.go
+++ /dev/null
@@ -1,16 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package NamespaceB
-
-const (
- EnumInNestedNSA = 0
- EnumInNestedNSB = 1
- EnumInNestedNSC = 2
-)
-
-var EnumNamesEnumInNestedNS = map[int]string{
- EnumInNestedNSA:"A",
- EnumInNestedNSB:"B",
- EnumInNestedNSC:"C",
-}
-
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/EnumInNestedNS.java b/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/EnumInNestedNS.java
deleted file mode 100644
index e23cecc..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/EnumInNestedNS.java
+++ /dev/null
@@ -1,15 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package NamespaceA.NamespaceB;
-
-public final class EnumInNestedNS {
- private EnumInNestedNS() { }
- public static final byte A = 0;
- public static final byte B = 1;
- public static final byte C = 2;
-
- public static final String[] names = { "A", "B", "C", };
-
- public static String name(int e) { return names[e]; }
-}
-
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/EnumInNestedNS.php b/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/EnumInNestedNS.php
deleted file mode 100644
index d51cb41..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/EnumInNestedNS.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace NamespaceA\NamespaceB;
-
-class EnumInNestedNS
-{
- const A = 0;
- const B = 1;
- const C = 2;
-
- private static $names = array(
- "A",
- "B",
- "C",
- );
-
- public static function Name($e)
- {
- if (!isset(self::$names[$e])) {
- throw new \Exception();
- }
- return self::$names[$e];
- }
-}
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/EnumInNestedNS.py b/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/EnumInNestedNS.py
deleted file mode 100644
index cb8218f..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/EnumInNestedNS.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# automatically generated by the FlatBuffers compiler, do not modify
-
-# namespace: NamespaceB
-
-class EnumInNestedNS(object):
- A = 0
- B = 1
- C = 2
-
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/StructInNestedNS.cs b/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/StructInNestedNS.cs
deleted file mode 100644
index bb627ad..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/StructInNestedNS.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace NamespaceA.NamespaceB
-{
-
-using global::System;
-using global::FlatBuffers;
-
-public struct StructInNestedNS : IFlatbufferObject
-{
- private Struct __p;
- public ByteBuffer ByteBuffer { get { return __p.bb; } }
- public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; }
- public StructInNestedNS __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public int A { get { return __p.bb.GetInt(__p.bb_pos + 0); } }
- public void MutateA(int a) { __p.bb.PutInt(__p.bb_pos + 0, a); }
- public int B { get { return __p.bb.GetInt(__p.bb_pos + 4); } }
- public void MutateB(int b) { __p.bb.PutInt(__p.bb_pos + 4, b); }
-
- public static Offset<StructInNestedNS> CreateStructInNestedNS(FlatBufferBuilder builder, int A, int B) {
- builder.Prep(4, 8);
- builder.PutInt(B);
- builder.PutInt(A);
- return new Offset<StructInNestedNS>(builder.Offset);
- }
-};
-
-
-}
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/StructInNestedNS.go b/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/StructInNestedNS.go
deleted file mode 100644
index 00840aa..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/StructInNestedNS.go
+++ /dev/null
@@ -1,41 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package NamespaceB
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type StructInNestedNS struct {
- _tab flatbuffers.Struct
-}
-
-func (rcv *StructInNestedNS) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *StructInNestedNS) Table() flatbuffers.Table {
- return rcv._tab.Table
-}
-
-func (rcv *StructInNestedNS) A() int32 {
- return rcv._tab.GetInt32(rcv._tab.Pos + flatbuffers.UOffsetT(0))
-}
-func (rcv *StructInNestedNS) MutateA(n int32) bool {
- return rcv._tab.MutateInt32(rcv._tab.Pos+flatbuffers.UOffsetT(0), n)
-}
-
-func (rcv *StructInNestedNS) B() int32 {
- return rcv._tab.GetInt32(rcv._tab.Pos + flatbuffers.UOffsetT(4))
-}
-func (rcv *StructInNestedNS) MutateB(n int32) bool {
- return rcv._tab.MutateInt32(rcv._tab.Pos+flatbuffers.UOffsetT(4), n)
-}
-
-func CreateStructInNestedNS(builder *flatbuffers.Builder, a int32, b int32) flatbuffers.UOffsetT {
- builder.Prep(4, 8)
- builder.PrependInt32(b)
- builder.PrependInt32(a)
- return builder.Offset()
-}
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/StructInNestedNS.java b/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/StructInNestedNS.java
deleted file mode 100644
index 42d47c1..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/StructInNestedNS.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package NamespaceA.NamespaceB;
-
-import java.nio.*;
-import java.lang.*;
-import java.util.*;
-import com.google.flatbuffers.*;
-
-@SuppressWarnings("unused")
-public final class StructInNestedNS extends Struct {
- public void __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; }
- public StructInNestedNS __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public int a() { return bb.getInt(bb_pos + 0); }
- public void mutateA(int a) { bb.putInt(bb_pos + 0, a); }
- public int b() { return bb.getInt(bb_pos + 4); }
- public void mutateB(int b) { bb.putInt(bb_pos + 4, b); }
-
- public static int createStructInNestedNS(FlatBufferBuilder builder, int a, int b) {
- builder.prep(4, 8);
- builder.putInt(b);
- builder.putInt(a);
- return builder.offset();
- }
-}
-
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/StructInNestedNS.php b/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/StructInNestedNS.php
deleted file mode 100644
index d305484..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/StructInNestedNS.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace NamespaceA\NamespaceB;
-
-use \Google\FlatBuffers\Struct;
-use \Google\FlatBuffers\Table;
-use \Google\FlatBuffers\ByteBuffer;
-use \Google\FlatBuffers\FlatBufferBuilder;
-
-class StructInNestedNS extends Struct
-{
- /**
- * @param int $_i offset
- * @param ByteBuffer $_bb
- * @return StructInNestedNS
- **/
- public function init($_i, ByteBuffer $_bb)
- {
- $this->bb_pos = $_i;
- $this->bb = $_bb;
- return $this;
- }
-
- /**
- * @return int
- */
- public function GetA()
- {
- return $this->bb->getInt($this->bb_pos + 0);
- }
-
- /**
- * @return int
- */
- public function GetB()
- {
- return $this->bb->getInt($this->bb_pos + 4);
- }
-
-
- /**
- * @return int offset
- */
- public static function createStructInNestedNS(FlatBufferBuilder $builder, $a, $b)
- {
- $builder->prep(4, 8);
- $builder->putInt($b);
- $builder->putInt($a);
- return $builder->offset();
- }
-}
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/StructInNestedNS.py b/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/StructInNestedNS.py
deleted file mode 100644
index 59cceaa..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/StructInNestedNS.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# automatically generated by the FlatBuffers compiler, do not modify
-
-# namespace: NamespaceB
-
-import flatbuffers
-
-class StructInNestedNS(object):
- __slots__ = ['_tab']
-
- # StructInNestedNS
- def Init(self, buf, pos):
- self._tab = flatbuffers.table.Table(buf, pos)
-
- # StructInNestedNS
- def A(self): return self._tab.Get(flatbuffers.number_types.Int32Flags, self._tab.Pos + flatbuffers.number_types.UOffsetTFlags.py_type(0))
- # StructInNestedNS
- def B(self): return self._tab.Get(flatbuffers.number_types.Int32Flags, self._tab.Pos + flatbuffers.number_types.UOffsetTFlags.py_type(4))
-
-def CreateStructInNestedNS(builder, a, b):
- builder.Prep(4, 8)
- builder.PrependInt32(b)
- builder.PrependInt32(a)
- return builder.Offset()
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.cs b/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.cs
deleted file mode 100644
index c33d1fb..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace NamespaceA.NamespaceB
-{
-
-using global::System;
-using global::FlatBuffers;
-
-public struct TableInNestedNS : IFlatbufferObject
-{
- private Table __p;
- public ByteBuffer ByteBuffer { get { return __p.bb; } }
- public static TableInNestedNS GetRootAsTableInNestedNS(ByteBuffer _bb) { return GetRootAsTableInNestedNS(_bb, new TableInNestedNS()); }
- public static TableInNestedNS GetRootAsTableInNestedNS(ByteBuffer _bb, TableInNestedNS obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
- public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; }
- public TableInNestedNS __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public int Foo { get { int o = __p.__offset(4); return o != 0 ? __p.bb.GetInt(o + __p.bb_pos) : (int)0; } }
- public bool MutateFoo(int foo) { int o = __p.__offset(4); if (o != 0) { __p.bb.PutInt(o + __p.bb_pos, foo); return true; } else { return false; } }
-
- public static Offset<TableInNestedNS> CreateTableInNestedNS(FlatBufferBuilder builder,
- int foo = 0) {
- builder.StartObject(1);
- TableInNestedNS.AddFoo(builder, foo);
- return TableInNestedNS.EndTableInNestedNS(builder);
- }
-
- public static void StartTableInNestedNS(FlatBufferBuilder builder) { builder.StartObject(1); }
- public static void AddFoo(FlatBufferBuilder builder, int foo) { builder.AddInt(0, foo, 0); }
- public static Offset<TableInNestedNS> EndTableInNestedNS(FlatBufferBuilder builder) {
- int o = builder.EndObject();
- return new Offset<TableInNestedNS>(o);
- }
-};
-
-
-}
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.go b/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.go
deleted file mode 100644
index 0e767b8..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.go
+++ /dev/null
@@ -1,49 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package NamespaceB
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type TableInNestedNS struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsTableInNestedNS(buf []byte, offset flatbuffers.UOffsetT) *TableInNestedNS {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &TableInNestedNS{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *TableInNestedNS) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *TableInNestedNS) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *TableInNestedNS) Foo() int32 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return rcv._tab.GetInt32(o + rcv._tab.Pos)
- }
- return 0
-}
-
-func (rcv *TableInNestedNS) MutateFoo(n int32) bool {
- return rcv._tab.MutateInt32Slot(4, n)
-}
-
-func TableInNestedNSStart(builder *flatbuffers.Builder) {
- builder.StartObject(1)
-}
-func TableInNestedNSAddFoo(builder *flatbuffers.Builder, foo int32) {
- builder.PrependInt32Slot(0, foo, 0)
-}
-func TableInNestedNSEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.java b/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.java
deleted file mode 100644
index 415fa69..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package NamespaceA.NamespaceB;
-
-import java.nio.*;
-import java.lang.*;
-import java.util.*;
-import com.google.flatbuffers.*;
-
-@SuppressWarnings("unused")
-public final class TableInNestedNS extends Table {
- public static TableInNestedNS getRootAsTableInNestedNS(ByteBuffer _bb) { return getRootAsTableInNestedNS(_bb, new TableInNestedNS()); }
- public static TableInNestedNS getRootAsTableInNestedNS(ByteBuffer _bb, TableInNestedNS obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
- public void __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; }
- public TableInNestedNS __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public int foo() { int o = __offset(4); return o != 0 ? bb.getInt(o + bb_pos) : 0; }
- public boolean mutateFoo(int foo) { int o = __offset(4); if (o != 0) { bb.putInt(o + bb_pos, foo); return true; } else { return false; } }
-
- public static int createTableInNestedNS(FlatBufferBuilder builder,
- int foo) {
- builder.startObject(1);
- TableInNestedNS.addFoo(builder, foo);
- return TableInNestedNS.endTableInNestedNS(builder);
- }
-
- public static void startTableInNestedNS(FlatBufferBuilder builder) { builder.startObject(1); }
- public static void addFoo(FlatBufferBuilder builder, int foo) { builder.addInt(0, foo, 0); }
- public static int endTableInNestedNS(FlatBufferBuilder builder) {
- int o = builder.endObject();
- return o;
- }
-}
-
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.php b/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.php
deleted file mode 100644
index d16379d..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace NamespaceA\NamespaceB;
-
-use \Google\FlatBuffers\Struct;
-use \Google\FlatBuffers\Table;
-use \Google\FlatBuffers\ByteBuffer;
-use \Google\FlatBuffers\FlatBufferBuilder;
-
-class TableInNestedNS extends Table
-{
- /**
- * @param ByteBuffer $bb
- * @return TableInNestedNS
- */
- public static function getRootAsTableInNestedNS(ByteBuffer $bb)
- {
- $obj = new TableInNestedNS();
- return ($obj->init($bb->getInt($bb->getPosition()) + $bb->getPosition(), $bb));
- }
-
- /**
- * @param int $_i offset
- * @param ByteBuffer $_bb
- * @return TableInNestedNS
- **/
- public function init($_i, ByteBuffer $_bb)
- {
- $this->bb_pos = $_i;
- $this->bb = $_bb;
- return $this;
- }
-
- /**
- * @return int
- */
- public function getFoo()
- {
- $o = $this->__offset(4);
- return $o != 0 ? $this->bb->getInt($o + $this->bb_pos) : 0;
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return void
- */
- public static function startTableInNestedNS(FlatBufferBuilder $builder)
- {
- $builder->StartObject(1);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return TableInNestedNS
- */
- public static function createTableInNestedNS(FlatBufferBuilder $builder, $foo)
- {
- $builder->startObject(1);
- self::addFoo($builder, $foo);
- $o = $builder->endObject();
- return $o;
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param int
- * @return void
- */
- public static function addFoo(FlatBufferBuilder $builder, $foo)
- {
- $builder->addIntX(0, $foo, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return int table offset
- */
- public static function endTableInNestedNS(FlatBufferBuilder $builder)
- {
- $o = $builder->endObject();
- return $o;
- }
-}
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.py b/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.py
deleted file mode 100644
index d6d1674..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# automatically generated by the FlatBuffers compiler, do not modify
-
-# namespace: NamespaceB
-
-import flatbuffers
-
-class TableInNestedNS(object):
- __slots__ = ['_tab']
-
- @classmethod
- def GetRootAsTableInNestedNS(cls, buf, offset):
- n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset)
- x = TableInNestedNS()
- x.Init(buf, n + offset)
- return x
-
- # TableInNestedNS
- def Init(self, buf, pos):
- self._tab = flatbuffers.table.Table(buf, pos)
-
- # TableInNestedNS
- def Foo(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
- if o != 0:
- return self._tab.Get(flatbuffers.number_types.Int32Flags, o + self._tab.Pos)
- return 0
-
-def TableInNestedNSStart(builder): builder.StartObject(1)
-def TableInNestedNSAddFoo(builder, foo): builder.PrependInt32Slot(0, foo, 0)
-def TableInNestedNSEnd(builder): return builder.EndObject()
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/__init__.py b/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/NamespaceB/__init__.py
+++ /dev/null
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/SecondTableInA.cs b/third_party/flatbuffers/tests/namespace_test/NamespaceA/SecondTableInA.cs
deleted file mode 100644
index f28ed86..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/SecondTableInA.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace NamespaceA
-{
-
-using global::System;
-using global::FlatBuffers;
-
-public struct SecondTableInA : IFlatbufferObject
-{
- private Table __p;
- public ByteBuffer ByteBuffer { get { return __p.bb; } }
- public static SecondTableInA GetRootAsSecondTableInA(ByteBuffer _bb) { return GetRootAsSecondTableInA(_bb, new SecondTableInA()); }
- public static SecondTableInA GetRootAsSecondTableInA(ByteBuffer _bb, SecondTableInA obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
- public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; }
- public SecondTableInA __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public NamespaceC.TableInC? ReferToC { get { int o = __p.__offset(4); return o != 0 ? (NamespaceC.TableInC?)(new NamespaceC.TableInC()).__assign(__p.__indirect(o + __p.bb_pos), __p.bb) : null; } }
-
- public static Offset<SecondTableInA> CreateSecondTableInA(FlatBufferBuilder builder,
- Offset<NamespaceC.TableInC> refer_to_cOffset = default(Offset<NamespaceC.TableInC>)) {
- builder.StartObject(1);
- SecondTableInA.AddReferToC(builder, refer_to_cOffset);
- return SecondTableInA.EndSecondTableInA(builder);
- }
-
- public static void StartSecondTableInA(FlatBufferBuilder builder) { builder.StartObject(1); }
- public static void AddReferToC(FlatBufferBuilder builder, Offset<NamespaceC.TableInC> referToCOffset) { builder.AddOffset(0, referToCOffset.Value, 0); }
- public static Offset<SecondTableInA> EndSecondTableInA(FlatBufferBuilder builder) {
- int o = builder.EndObject();
- return new Offset<SecondTableInA>(o);
- }
-};
-
-
-}
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/SecondTableInA.go b/third_party/flatbuffers/tests/namespace_test/NamespaceA/SecondTableInA.go
deleted file mode 100644
index bd691e8..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/SecondTableInA.go
+++ /dev/null
@@ -1,50 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package NamespaceA
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type SecondTableInA struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsSecondTableInA(buf []byte, offset flatbuffers.UOffsetT) *SecondTableInA {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &SecondTableInA{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *SecondTableInA) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *SecondTableInA) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *SecondTableInA) ReferToC(obj *TableInC) *TableInC {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- x := rcv._tab.Indirect(o + rcv._tab.Pos)
- if obj == nil {
- obj = new(TableInC)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-func SecondTableInAStart(builder *flatbuffers.Builder) {
- builder.StartObject(1)
-}
-func SecondTableInAAddReferToC(builder *flatbuffers.Builder, referToC flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(0, flatbuffers.UOffsetT(referToC), 0)
-}
-func SecondTableInAEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/SecondTableInA.java b/third_party/flatbuffers/tests/namespace_test/NamespaceA/SecondTableInA.java
deleted file mode 100644
index 7c56b88..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/SecondTableInA.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package NamespaceA;
-
-import java.nio.*;
-import java.lang.*;
-import java.util.*;
-import com.google.flatbuffers.*;
-
-@SuppressWarnings("unused")
-public final class SecondTableInA extends Table {
- public static SecondTableInA getRootAsSecondTableInA(ByteBuffer _bb) { return getRootAsSecondTableInA(_bb, new SecondTableInA()); }
- public static SecondTableInA getRootAsSecondTableInA(ByteBuffer _bb, SecondTableInA obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
- public void __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; }
- public SecondTableInA __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public NamespaceC.TableInC referToC() { return referToC(new NamespaceC.TableInC()); }
- public NamespaceC.TableInC referToC(NamespaceC.TableInC obj) { int o = __offset(4); return o != 0 ? obj.__assign(__indirect(o + bb_pos), bb) : null; }
-
- public static int createSecondTableInA(FlatBufferBuilder builder,
- int refer_to_cOffset) {
- builder.startObject(1);
- SecondTableInA.addReferToC(builder, refer_to_cOffset);
- return SecondTableInA.endSecondTableInA(builder);
- }
-
- public static void startSecondTableInA(FlatBufferBuilder builder) { builder.startObject(1); }
- public static void addReferToC(FlatBufferBuilder builder, int referToCOffset) { builder.addOffset(0, referToCOffset, 0); }
- public static int endSecondTableInA(FlatBufferBuilder builder) {
- int o = builder.endObject();
- return o;
- }
-}
-
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/SecondTableInA.php b/third_party/flatbuffers/tests/namespace_test/NamespaceA/SecondTableInA.php
deleted file mode 100644
index c9bc65c..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/SecondTableInA.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace NamespaceA;
-
-use \Google\FlatBuffers\Struct;
-use \Google\FlatBuffers\Table;
-use \Google\FlatBuffers\ByteBuffer;
-use \Google\FlatBuffers\FlatBufferBuilder;
-
-class SecondTableInA extends Table
-{
- /**
- * @param ByteBuffer $bb
- * @return SecondTableInA
- */
- public static function getRootAsSecondTableInA(ByteBuffer $bb)
- {
- $obj = new SecondTableInA();
- return ($obj->init($bb->getInt($bb->getPosition()) + $bb->getPosition(), $bb));
- }
-
- /**
- * @param int $_i offset
- * @param ByteBuffer $_bb
- * @return SecondTableInA
- **/
- public function init($_i, ByteBuffer $_bb)
- {
- $this->bb_pos = $_i;
- $this->bb = $_bb;
- return $this;
- }
-
- public function getReferToC()
- {
- $obj = new TableInC();
- $o = $this->__offset(4);
- return $o != 0 ? $obj->init($this->__indirect($o + $this->bb_pos), $this->bb) : 0;
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return void
- */
- public static function startSecondTableInA(FlatBufferBuilder $builder)
- {
- $builder->StartObject(1);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return SecondTableInA
- */
- public static function createSecondTableInA(FlatBufferBuilder $builder, $refer_to_c)
- {
- $builder->startObject(1);
- self::addReferToC($builder, $refer_to_c);
- $o = $builder->endObject();
- return $o;
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param int
- * @return void
- */
- public static function addReferToC(FlatBufferBuilder $builder, $referToC)
- {
- $builder->addOffsetX(0, $referToC, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return int table offset
- */
- public static function endSecondTableInA(FlatBufferBuilder $builder)
- {
- $o = $builder->endObject();
- return $o;
- }
-}
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/SecondTableInA.py b/third_party/flatbuffers/tests/namespace_test/NamespaceA/SecondTableInA.py
deleted file mode 100644
index 20dac3e..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/SecondTableInA.py
+++ /dev/null
@@ -1,34 +0,0 @@
-# automatically generated by the FlatBuffers compiler, do not modify
-
-# namespace: NamespaceA
-
-import flatbuffers
-
-class SecondTableInA(object):
- __slots__ = ['_tab']
-
- @classmethod
- def GetRootAsSecondTableInA(cls, buf, offset):
- n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset)
- x = SecondTableInA()
- x.Init(buf, n + offset)
- return x
-
- # SecondTableInA
- def Init(self, buf, pos):
- self._tab = flatbuffers.table.Table(buf, pos)
-
- # SecondTableInA
- def ReferToC(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
- if o != 0:
- x = self._tab.Indirect(o + self._tab.Pos)
- from .TableInC import TableInC
- obj = TableInC()
- obj.Init(self._tab.Bytes, x)
- return obj
- return None
-
-def SecondTableInAStart(builder): builder.StartObject(1)
-def SecondTableInAAddReferToC(builder, referToC): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(referToC), 0)
-def SecondTableInAEnd(builder): return builder.EndObject()
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInC.cs b/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInC.cs
deleted file mode 100644
index 98f4e13..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInC.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace NamespaceA
-{
-
-using System;
-using FlatBuffers;
-
-public sealed class TableInC : Table {
- public static TableInC GetRootAsTableInC(ByteBuffer _bb) { return GetRootAsTableInC(_bb, new TableInC()); }
- public static TableInC GetRootAsTableInC(ByteBuffer _bb, TableInC obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
- public TableInC __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
-
- public NamespaceA.TableInFirstNS ReferToA1 { get { return GetReferToA1(new NamespaceA.TableInFirstNS()); } }
- public NamespaceA.TableInFirstNS GetReferToA1(NamespaceA.TableInFirstNS obj) { int o = __offset(4); return o != 0 ? obj.__init(__indirect(o + bb_pos), bb) : null; }
- public SecondTableInA ReferToA2 { get { return GetReferToA2(new SecondTableInA()); } }
- public SecondTableInA GetReferToA2(SecondTableInA obj) { int o = __offset(6); return o != 0 ? obj.__init(__indirect(o + bb_pos), bb) : null; }
-
- public static Offset<NamespaceC.TableInC> CreateTableInC(FlatBufferBuilder builder,
- Offset<NamespaceA.TableInFirstNS> refer_to_a1Offset = default(Offset<NamespaceA.TableInFirstNS>),
- Offset<SecondTableInA> refer_to_a2Offset = default(Offset<SecondTableInA>)) {
- builder.StartObject(2);
- TableInC.AddReferToA2(builder, refer_to_a2Offset);
- TableInC.AddReferToA1(builder, refer_to_a1Offset);
- return TableInC.EndTableInC(builder);
- }
-
- public static void StartTableInC(FlatBufferBuilder builder) { builder.StartObject(2); }
- public static void AddReferToA1(FlatBufferBuilder builder, Offset<NamespaceA.TableInFirstNS> referToA1Offset) { builder.AddOffset(0, referToA1Offset.Value, 0); }
- public static void AddReferToA2(FlatBufferBuilder builder, Offset<SecondTableInA> referToA2Offset) { builder.AddOffset(1, referToA2Offset.Value, 0); }
- public static Offset<NamespaceC.TableInC> EndTableInC(FlatBufferBuilder builder) {
- int o = builder.EndObject();
- return new Offset<NamespaceC.TableInC>(o);
- }
-};
-
-
-}
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInC.go b/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInC.go
deleted file mode 100644
index 6f3d3f2..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInC.go
+++ /dev/null
@@ -1,46 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package NamespaceA
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-type TableInC struct {
- _tab flatbuffers.Table
-}
-
-func (rcv *TableInC) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *TableInC) ReferToA1(obj *TableInFirstNS) *TableInFirstNS {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- x := rcv._tab.Indirect(o + rcv._tab.Pos)
- if obj == nil {
- obj = new(TableInFirstNS)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-func (rcv *TableInC) ReferToA2(obj *SecondTableInA) *SecondTableInA {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- x := rcv._tab.Indirect(o + rcv._tab.Pos)
- if obj == nil {
- obj = new(SecondTableInA)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-func TableInCStart(builder *flatbuffers.Builder) { builder.StartObject(2) }
-func TableInCAddReferToA1(builder *flatbuffers.Builder, referToA1 flatbuffers.UOffsetT) { builder.PrependUOffsetTSlot(0, flatbuffers.UOffsetT(referToA1), 0) }
-func TableInCAddReferToA2(builder *flatbuffers.Builder, referToA2 flatbuffers.UOffsetT) { builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(referToA2), 0) }
-func TableInCEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT { return builder.EndObject() }
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInC.java b/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInC.java
deleted file mode 100644
index 38fb3ab..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInC.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package NamespaceA;
-
-import java.nio.*;
-import java.lang.*;
-import java.util.*;
-import com.google.flatbuffers.*;
-
-@SuppressWarnings("unused")
-public final class TableInC extends Table {
- public static TableInC getRootAsTableInC(ByteBuffer _bb) { return getRootAsTableInC(_bb, new TableInC()); }
- public static TableInC getRootAsTableInC(ByteBuffer _bb, TableInC obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__init(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
- public TableInC __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
-
- public NamespaceA.TableInFirstNS referToA1() { return referToA1(new NamespaceA.TableInFirstNS()); }
- public NamespaceA.TableInFirstNS referToA1(NamespaceA.TableInFirstNS obj) { int o = __offset(4); return o != 0 ? obj.__init(__indirect(o + bb_pos), bb) : null; }
- public SecondTableInA referToA2() { return referToA2(new SecondTableInA()); }
- public SecondTableInA referToA2(SecondTableInA obj) { int o = __offset(6); return o != 0 ? obj.__init(__indirect(o + bb_pos), bb) : null; }
-
- public static int createTableInC(FlatBufferBuilder builder,
- int refer_to_a1Offset,
- int refer_to_a2Offset) {
- builder.startObject(2);
- TableInC.addReferToA2(builder, refer_to_a2Offset);
- TableInC.addReferToA1(builder, refer_to_a1Offset);
- return TableInC.endTableInC(builder);
- }
-
- public static void startTableInC(FlatBufferBuilder builder) { builder.startObject(2); }
- public static void addReferToA1(FlatBufferBuilder builder, int referToA1Offset) { builder.addOffset(0, referToA1Offset, 0); }
- public static void addReferToA2(FlatBufferBuilder builder, int referToA2Offset) { builder.addOffset(1, referToA2Offset, 0); }
- public static int endTableInC(FlatBufferBuilder builder) {
- int o = builder.endObject();
- return o;
- }
-};
-
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInC.php b/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInC.php
deleted file mode 100644
index 49705f8..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInC.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace NamespaceA;
-
-use \Google\FlatBuffers\Struct;
-use \Google\FlatBuffers\Table;
-use \Google\FlatBuffers\ByteBuffer;
-use \Google\FlatBuffers\FlatBufferBuilder;
-
-class TableInC extends Table
-{
- /**
- * @param ByteBuffer $bb
- * @return TableInC
- */
- public static function getRootAsTableInC(ByteBuffer $bb)
- {
- $obj = new TableInC();
- return ($obj->init($bb->getInt($bb->getPosition()) + $bb->getPosition(), $bb));
- }
-
- /**
- * @param int $_i offset
- * @param ByteBuffer $_bb
- * @return TableInC
- **/
- public function init($_i, ByteBuffer $_bb)
- {
- $this->bb_pos = $_i;
- $this->bb = $_bb;
- return $this;
- }
-
- public function getReferToA1()
- {
- $obj = new TableInFirstNS();
- $o = $this->__offset(4);
- return $o != 0 ? $obj->init($this->__indirect($o + $this->bb_pos), $this->bb) : 0;
- }
-
- public function getReferToA2()
- {
- $obj = new SecondTableInA();
- $o = $this->__offset(6);
- return $o != 0 ? $obj->init($this->__indirect($o + $this->bb_pos), $this->bb) : 0;
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return void
- */
- public static function startTableInC(FlatBufferBuilder $builder)
- {
- $builder->StartObject(2);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return TableInC
- */
- public static function createTableInC(FlatBufferBuilder $builder, $refer_to_a1, $refer_to_a2)
- {
- $builder->startObject(2);
- self::addReferToA1($builder, $refer_to_a1);
- self::addReferToA2($builder, $refer_to_a2);
- $o = $builder->endObject();
- return $o;
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param int
- * @return void
- */
- public static function addReferToA1(FlatBufferBuilder $builder, $referToA1)
- {
- $builder->addOffsetX(0, $referToA1, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param int
- * @return void
- */
- public static function addReferToA2(FlatBufferBuilder $builder, $referToA2)
- {
- $builder->addOffsetX(1, $referToA2, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return int table offset
- */
- public static function endTableInC(FlatBufferBuilder $builder)
- {
- $o = $builder->endObject();
- return $o;
- }
-}
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInC.py b/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInC.py
deleted file mode 100644
index 4afea1a..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInC.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# automatically generated by the FlatBuffers compiler, do not modify
-
-# namespace: NamespaceA
-
-import flatbuffers
-
-class TableInC(object):
- __slots__ = ['_tab']
-
- # TableInC
- def Init(self, buf, pos):
- self._tab = flatbuffers.table.Table(buf, pos)
-
- # TableInC
- def ReferToA1(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
- if o != 0:
- x = self._tab.Indirect(o + self._tab.Pos)
- from .TableInFirstNS import TableInFirstNS
- obj = TableInFirstNS()
- obj.Init(self._tab.Bytes, x)
- return obj
- return None
-
- # TableInC
- def ReferToA2(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
- if o != 0:
- x = self._tab.Indirect(o + self._tab.Pos)
- from .SecondTableInA import SecondTableInA
- obj = SecondTableInA()
- obj.Init(self._tab.Bytes, x)
- return obj
- return None
-
-def TableInCStart(builder): builder.StartObject(2)
-def TableInCAddReferToA1(builder, referToA1): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(referToA1), 0)
-def TableInCAddReferToA2(builder, referToA2): builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(referToA2), 0)
-def TableInCEnd(builder): return builder.EndObject()
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInFirstNS.cs b/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInFirstNS.cs
deleted file mode 100644
index 20f4b4b..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInFirstNS.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace NamespaceA
-{
-
-using global::System;
-using global::FlatBuffers;
-
-public struct TableInFirstNS : IFlatbufferObject
-{
- private Table __p;
- public ByteBuffer ByteBuffer { get { return __p.bb; } }
- public static TableInFirstNS GetRootAsTableInFirstNS(ByteBuffer _bb) { return GetRootAsTableInFirstNS(_bb, new TableInFirstNS()); }
- public static TableInFirstNS GetRootAsTableInFirstNS(ByteBuffer _bb, TableInFirstNS obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
- public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; }
- public TableInFirstNS __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public NamespaceA.NamespaceB.TableInNestedNS? FooTable { get { int o = __p.__offset(4); return o != 0 ? (NamespaceA.NamespaceB.TableInNestedNS?)(new NamespaceA.NamespaceB.TableInNestedNS()).__assign(__p.__indirect(o + __p.bb_pos), __p.bb) : null; } }
- public NamespaceA.NamespaceB.EnumInNestedNS FooEnum { get { int o = __p.__offset(6); return o != 0 ? (NamespaceA.NamespaceB.EnumInNestedNS)__p.bb.GetSbyte(o + __p.bb_pos) : NamespaceA.NamespaceB.EnumInNestedNS.A; } }
- public bool MutateFooEnum(NamespaceA.NamespaceB.EnumInNestedNS foo_enum) { int o = __p.__offset(6); if (o != 0) { __p.bb.PutSbyte(o + __p.bb_pos, (sbyte)foo_enum); return true; } else { return false; } }
- public NamespaceA.NamespaceB.StructInNestedNS? FooStruct { get { int o = __p.__offset(8); return o != 0 ? (NamespaceA.NamespaceB.StructInNestedNS?)(new NamespaceA.NamespaceB.StructInNestedNS()).__assign(o + __p.bb_pos, __p.bb) : null; } }
-
- public static void StartTableInFirstNS(FlatBufferBuilder builder) { builder.StartObject(3); }
- public static void AddFooTable(FlatBufferBuilder builder, Offset<NamespaceA.NamespaceB.TableInNestedNS> fooTableOffset) { builder.AddOffset(0, fooTableOffset.Value, 0); }
- public static void AddFooEnum(FlatBufferBuilder builder, NamespaceA.NamespaceB.EnumInNestedNS fooEnum) { builder.AddSbyte(1, (sbyte)fooEnum, 0); }
- public static void AddFooStruct(FlatBufferBuilder builder, Offset<NamespaceA.NamespaceB.StructInNestedNS> fooStructOffset) { builder.AddStruct(2, fooStructOffset.Value, 0); }
- public static Offset<TableInFirstNS> EndTableInFirstNS(FlatBufferBuilder builder) {
- int o = builder.EndObject();
- return new Offset<TableInFirstNS>(o);
- }
-};
-
-
-}
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInFirstNS.go b/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInFirstNS.go
deleted file mode 100644
index b3354d3..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInFirstNS.go
+++ /dev/null
@@ -1,81 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package NamespaceA
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type TableInFirstNS struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsTableInFirstNS(buf []byte, offset flatbuffers.UOffsetT) *TableInFirstNS {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &TableInFirstNS{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *TableInFirstNS) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *TableInFirstNS) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *TableInFirstNS) FooTable(obj *TableInNestedNS) *TableInNestedNS {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- x := rcv._tab.Indirect(o + rcv._tab.Pos)
- if obj == nil {
- obj = new(TableInNestedNS)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-func (rcv *TableInFirstNS) FooEnum() int8 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- return rcv._tab.GetInt8(o + rcv._tab.Pos)
- }
- return 0
-}
-
-func (rcv *TableInFirstNS) MutateFooEnum(n int8) bool {
- return rcv._tab.MutateInt8Slot(6, n)
-}
-
-func (rcv *TableInFirstNS) FooStruct(obj *StructInNestedNS) *StructInNestedNS {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- x := o + rcv._tab.Pos
- if obj == nil {
- obj = new(StructInNestedNS)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-func TableInFirstNSStart(builder *flatbuffers.Builder) {
- builder.StartObject(3)
-}
-func TableInFirstNSAddFooTable(builder *flatbuffers.Builder, fooTable flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(0, flatbuffers.UOffsetT(fooTable), 0)
-}
-func TableInFirstNSAddFooEnum(builder *flatbuffers.Builder, fooEnum int8) {
- builder.PrependInt8Slot(1, fooEnum, 0)
-}
-func TableInFirstNSAddFooStruct(builder *flatbuffers.Builder, fooStruct flatbuffers.UOffsetT) {
- builder.PrependStructSlot(2, flatbuffers.UOffsetT(fooStruct), 0)
-}
-func TableInFirstNSEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInFirstNS.java b/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInFirstNS.java
deleted file mode 100644
index b03c462..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInFirstNS.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package NamespaceA;
-
-import java.nio.*;
-import java.lang.*;
-import java.util.*;
-import com.google.flatbuffers.*;
-
-@SuppressWarnings("unused")
-public final class TableInFirstNS extends Table {
- public static TableInFirstNS getRootAsTableInFirstNS(ByteBuffer _bb) { return getRootAsTableInFirstNS(_bb, new TableInFirstNS()); }
- public static TableInFirstNS getRootAsTableInFirstNS(ByteBuffer _bb, TableInFirstNS obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
- public void __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; }
- public TableInFirstNS __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public NamespaceA.NamespaceB.TableInNestedNS fooTable() { return fooTable(new NamespaceA.NamespaceB.TableInNestedNS()); }
- public NamespaceA.NamespaceB.TableInNestedNS fooTable(NamespaceA.NamespaceB.TableInNestedNS obj) { int o = __offset(4); return o != 0 ? obj.__assign(__indirect(o + bb_pos), bb) : null; }
- public byte fooEnum() { int o = __offset(6); return o != 0 ? bb.get(o + bb_pos) : 0; }
- public boolean mutateFooEnum(byte foo_enum) { int o = __offset(6); if (o != 0) { bb.put(o + bb_pos, foo_enum); return true; } else { return false; } }
- public NamespaceA.NamespaceB.StructInNestedNS fooStruct() { return fooStruct(new NamespaceA.NamespaceB.StructInNestedNS()); }
- public NamespaceA.NamespaceB.StructInNestedNS fooStruct(NamespaceA.NamespaceB.StructInNestedNS obj) { int o = __offset(8); return o != 0 ? obj.__assign(o + bb_pos, bb) : null; }
-
- public static void startTableInFirstNS(FlatBufferBuilder builder) { builder.startObject(3); }
- public static void addFooTable(FlatBufferBuilder builder, int fooTableOffset) { builder.addOffset(0, fooTableOffset, 0); }
- public static void addFooEnum(FlatBufferBuilder builder, byte fooEnum) { builder.addByte(1, fooEnum, 0); }
- public static void addFooStruct(FlatBufferBuilder builder, int fooStructOffset) { builder.addStruct(2, fooStructOffset, 0); }
- public static int endTableInFirstNS(FlatBufferBuilder builder) {
- int o = builder.endObject();
- return o;
- }
-}
-
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInFirstNS.php b/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInFirstNS.php
deleted file mode 100644
index 9fb29c3..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInFirstNS.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace NamespaceA;
-
-use \Google\FlatBuffers\Struct;
-use \Google\FlatBuffers\Table;
-use \Google\FlatBuffers\ByteBuffer;
-use \Google\FlatBuffers\FlatBufferBuilder;
-
-class TableInFirstNS extends Table
-{
- /**
- * @param ByteBuffer $bb
- * @return TableInFirstNS
- */
- public static function getRootAsTableInFirstNS(ByteBuffer $bb)
- {
- $obj = new TableInFirstNS();
- return ($obj->init($bb->getInt($bb->getPosition()) + $bb->getPosition(), $bb));
- }
-
- /**
- * @param int $_i offset
- * @param ByteBuffer $_bb
- * @return TableInFirstNS
- **/
- public function init($_i, ByteBuffer $_bb)
- {
- $this->bb_pos = $_i;
- $this->bb = $_bb;
- return $this;
- }
-
- public function getFooTable()
- {
- $obj = new TableInNestedNS();
- $o = $this->__offset(4);
- return $o != 0 ? $obj->init($this->__indirect($o + $this->bb_pos), $this->bb) : 0;
- }
-
- /**
- * @return sbyte
- */
- public function getFooEnum()
- {
- $o = $this->__offset(6);
- return $o != 0 ? $this->bb->getSbyte($o + $this->bb_pos) : \NamespaceA\NamespaceB\EnumInNestedNS::A;
- }
-
- public function getFooStruct()
- {
- $obj = new StructInNestedNS();
- $o = $this->__offset(8);
- return $o != 0 ? $obj->init($o + $this->bb_pos, $this->bb) : 0;
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return void
- */
- public static function startTableInFirstNS(FlatBufferBuilder $builder)
- {
- $builder->StartObject(3);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return TableInFirstNS
- */
- public static function createTableInFirstNS(FlatBufferBuilder $builder, $foo_table, $foo_enum, $foo_struct)
- {
- $builder->startObject(3);
- self::addFooTable($builder, $foo_table);
- self::addFooEnum($builder, $foo_enum);
- self::addFooStruct($builder, $foo_struct);
- $o = $builder->endObject();
- return $o;
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param int
- * @return void
- */
- public static function addFooTable(FlatBufferBuilder $builder, $fooTable)
- {
- $builder->addOffsetX(0, $fooTable, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param sbyte
- * @return void
- */
- public static function addFooEnum(FlatBufferBuilder $builder, $fooEnum)
- {
- $builder->addSbyteX(1, $fooEnum, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param int
- * @return void
- */
- public static function addFooStruct(FlatBufferBuilder $builder, $fooStruct)
- {
- $builder->addStructX(2, $fooStruct, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return int table offset
- */
- public static function endTableInFirstNS(FlatBufferBuilder $builder)
- {
- $o = $builder->endObject();
- return $o;
- }
-}
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInFirstNS.py b/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInFirstNS.py
deleted file mode 100644
index 40cbeba..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/TableInFirstNS.py
+++ /dev/null
@@ -1,54 +0,0 @@
-# automatically generated by the FlatBuffers compiler, do not modify
-
-# namespace: NamespaceA
-
-import flatbuffers
-
-class TableInFirstNS(object):
- __slots__ = ['_tab']
-
- @classmethod
- def GetRootAsTableInFirstNS(cls, buf, offset):
- n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset)
- x = TableInFirstNS()
- x.Init(buf, n + offset)
- return x
-
- # TableInFirstNS
- def Init(self, buf, pos):
- self._tab = flatbuffers.table.Table(buf, pos)
-
- # TableInFirstNS
- def FooTable(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
- if o != 0:
- x = self._tab.Indirect(o + self._tab.Pos)
- from .TableInNestedNS import TableInNestedNS
- obj = TableInNestedNS()
- obj.Init(self._tab.Bytes, x)
- return obj
- return None
-
- # TableInFirstNS
- def FooEnum(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
- if o != 0:
- return self._tab.Get(flatbuffers.number_types.Int8Flags, o + self._tab.Pos)
- return 0
-
- # TableInFirstNS
- def FooStruct(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8))
- if o != 0:
- x = o + self._tab.Pos
- from .StructInNestedNS import StructInNestedNS
- obj = StructInNestedNS()
- obj.Init(self._tab.Bytes, x)
- return obj
- return None
-
-def TableInFirstNSStart(builder): builder.StartObject(3)
-def TableInFirstNSAddFooTable(builder, fooTable): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(fooTable), 0)
-def TableInFirstNSAddFooEnum(builder, fooEnum): builder.PrependInt8Slot(1, fooEnum, 0)
-def TableInFirstNSAddFooStruct(builder, fooStruct): builder.PrependStructSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(fooStruct), 0)
-def TableInFirstNSEnd(builder): return builder.EndObject()
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceA/__init__.py b/third_party/flatbuffers/tests/namespace_test/NamespaceA/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceA/__init__.py
+++ /dev/null
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceC/TableInC.cs b/third_party/flatbuffers/tests/namespace_test/NamespaceC/TableInC.cs
deleted file mode 100644
index c7f2c8a..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceC/TableInC.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace NamespaceC
-{
-
-using global::System;
-using global::FlatBuffers;
-
-public struct TableInC : IFlatbufferObject
-{
- private Table __p;
- public ByteBuffer ByteBuffer { get { return __p.bb; } }
- public static TableInC GetRootAsTableInC(ByteBuffer _bb) { return GetRootAsTableInC(_bb, new TableInC()); }
- public static TableInC GetRootAsTableInC(ByteBuffer _bb, TableInC obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
- public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; }
- public TableInC __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public NamespaceA.TableInFirstNS? ReferToA1 { get { int o = __p.__offset(4); return o != 0 ? (NamespaceA.TableInFirstNS?)(new NamespaceA.TableInFirstNS()).__assign(__p.__indirect(o + __p.bb_pos), __p.bb) : null; } }
- public NamespaceA.SecondTableInA? ReferToA2 { get { int o = __p.__offset(6); return o != 0 ? (NamespaceA.SecondTableInA?)(new NamespaceA.SecondTableInA()).__assign(__p.__indirect(o + __p.bb_pos), __p.bb) : null; } }
-
- public static Offset<TableInC> CreateTableInC(FlatBufferBuilder builder,
- Offset<NamespaceA.TableInFirstNS> refer_to_a1Offset = default(Offset<NamespaceA.TableInFirstNS>),
- Offset<NamespaceA.SecondTableInA> refer_to_a2Offset = default(Offset<NamespaceA.SecondTableInA>)) {
- builder.StartObject(2);
- TableInC.AddReferToA2(builder, refer_to_a2Offset);
- TableInC.AddReferToA1(builder, refer_to_a1Offset);
- return TableInC.EndTableInC(builder);
- }
-
- public static void StartTableInC(FlatBufferBuilder builder) { builder.StartObject(2); }
- public static void AddReferToA1(FlatBufferBuilder builder, Offset<NamespaceA.TableInFirstNS> referToA1Offset) { builder.AddOffset(0, referToA1Offset.Value, 0); }
- public static void AddReferToA2(FlatBufferBuilder builder, Offset<NamespaceA.SecondTableInA> referToA2Offset) { builder.AddOffset(1, referToA2Offset.Value, 0); }
- public static Offset<TableInC> EndTableInC(FlatBufferBuilder builder) {
- int o = builder.EndObject();
- return new Offset<TableInC>(o);
- }
-};
-
-
-}
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceC/TableInC.go b/third_party/flatbuffers/tests/namespace_test/NamespaceC/TableInC.go
deleted file mode 100644
index 7e6c733..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceC/TableInC.go
+++ /dev/null
@@ -1,66 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package NamespaceC
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type TableInC struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsTableInC(buf []byte, offset flatbuffers.UOffsetT) *TableInC {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &TableInC{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *TableInC) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *TableInC) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *TableInC) ReferToA1(obj *TableInFirstNS) *TableInFirstNS {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- x := rcv._tab.Indirect(o + rcv._tab.Pos)
- if obj == nil {
- obj = new(TableInFirstNS)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-func (rcv *TableInC) ReferToA2(obj *SecondTableInA) *SecondTableInA {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- x := rcv._tab.Indirect(o + rcv._tab.Pos)
- if obj == nil {
- obj = new(SecondTableInA)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-func TableInCStart(builder *flatbuffers.Builder) {
- builder.StartObject(2)
-}
-func TableInCAddReferToA1(builder *flatbuffers.Builder, referToA1 flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(0, flatbuffers.UOffsetT(referToA1), 0)
-}
-func TableInCAddReferToA2(builder *flatbuffers.Builder, referToA2 flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(referToA2), 0)
-}
-func TableInCEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceC/TableInC.java b/third_party/flatbuffers/tests/namespace_test/NamespaceC/TableInC.java
deleted file mode 100644
index 56d4954..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceC/TableInC.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-package NamespaceC;
-
-import java.nio.*;
-import java.lang.*;
-import java.util.*;
-import com.google.flatbuffers.*;
-
-@SuppressWarnings("unused")
-public final class TableInC extends Table {
- public static TableInC getRootAsTableInC(ByteBuffer _bb) { return getRootAsTableInC(_bb, new TableInC()); }
- public static TableInC getRootAsTableInC(ByteBuffer _bb, TableInC obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
- public void __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; }
- public TableInC __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
-
- public NamespaceA.TableInFirstNS referToA1() { return referToA1(new NamespaceA.TableInFirstNS()); }
- public NamespaceA.TableInFirstNS referToA1(NamespaceA.TableInFirstNS obj) { int o = __offset(4); return o != 0 ? obj.__assign(__indirect(o + bb_pos), bb) : null; }
- public NamespaceA.SecondTableInA referToA2() { return referToA2(new NamespaceA.SecondTableInA()); }
- public NamespaceA.SecondTableInA referToA2(NamespaceA.SecondTableInA obj) { int o = __offset(6); return o != 0 ? obj.__assign(__indirect(o + bb_pos), bb) : null; }
-
- public static int createTableInC(FlatBufferBuilder builder,
- int refer_to_a1Offset,
- int refer_to_a2Offset) {
- builder.startObject(2);
- TableInC.addReferToA2(builder, refer_to_a2Offset);
- TableInC.addReferToA1(builder, refer_to_a1Offset);
- return TableInC.endTableInC(builder);
- }
-
- public static void startTableInC(FlatBufferBuilder builder) { builder.startObject(2); }
- public static void addReferToA1(FlatBufferBuilder builder, int referToA1Offset) { builder.addOffset(0, referToA1Offset, 0); }
- public static void addReferToA2(FlatBufferBuilder builder, int referToA2Offset) { builder.addOffset(1, referToA2Offset, 0); }
- public static int endTableInC(FlatBufferBuilder builder) {
- int o = builder.endObject();
- return o;
- }
-}
-
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceC/TableInC.php b/third_party/flatbuffers/tests/namespace_test/NamespaceC/TableInC.php
deleted file mode 100644
index 116aea1..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceC/TableInC.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-// automatically generated by the FlatBuffers compiler, do not modify
-
-namespace NamespaceC;
-
-use \Google\FlatBuffers\Struct;
-use \Google\FlatBuffers\Table;
-use \Google\FlatBuffers\ByteBuffer;
-use \Google\FlatBuffers\FlatBufferBuilder;
-
-class TableInC extends Table
-{
- /**
- * @param ByteBuffer $bb
- * @return TableInC
- */
- public static function getRootAsTableInC(ByteBuffer $bb)
- {
- $obj = new TableInC();
- return ($obj->init($bb->getInt($bb->getPosition()) + $bb->getPosition(), $bb));
- }
-
- /**
- * @param int $_i offset
- * @param ByteBuffer $_bb
- * @return TableInC
- **/
- public function init($_i, ByteBuffer $_bb)
- {
- $this->bb_pos = $_i;
- $this->bb = $_bb;
- return $this;
- }
-
- public function getReferToA1()
- {
- $obj = new TableInFirstNS();
- $o = $this->__offset(4);
- return $o != 0 ? $obj->init($this->__indirect($o + $this->bb_pos), $this->bb) : 0;
- }
-
- public function getReferToA2()
- {
- $obj = new SecondTableInA();
- $o = $this->__offset(6);
- return $o != 0 ? $obj->init($this->__indirect($o + $this->bb_pos), $this->bb) : 0;
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return void
- */
- public static function startTableInC(FlatBufferBuilder $builder)
- {
- $builder->StartObject(2);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return TableInC
- */
- public static function createTableInC(FlatBufferBuilder $builder, $refer_to_a1, $refer_to_a2)
- {
- $builder->startObject(2);
- self::addReferToA1($builder, $refer_to_a1);
- self::addReferToA2($builder, $refer_to_a2);
- $o = $builder->endObject();
- return $o;
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param int
- * @return void
- */
- public static function addReferToA1(FlatBufferBuilder $builder, $referToA1)
- {
- $builder->addOffsetX(0, $referToA1, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @param int
- * @return void
- */
- public static function addReferToA2(FlatBufferBuilder $builder, $referToA2)
- {
- $builder->addOffsetX(1, $referToA2, 0);
- }
-
- /**
- * @param FlatBufferBuilder $builder
- * @return int table offset
- */
- public static function endTableInC(FlatBufferBuilder $builder)
- {
- $o = $builder->endObject();
- return $o;
- }
-}
diff --git a/third_party/flatbuffers/tests/namespace_test/NamespaceC/TableInC.py b/third_party/flatbuffers/tests/namespace_test/NamespaceC/TableInC.py
deleted file mode 100644
index 90b8736..0000000
--- a/third_party/flatbuffers/tests/namespace_test/NamespaceC/TableInC.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# automatically generated by the FlatBuffers compiler, do not modify
-
-# namespace: NamespaceC
-
-import flatbuffers
-
-class TableInC(object):
- __slots__ = ['_tab']
-
- @classmethod
- def GetRootAsTableInC(cls, buf, offset):
- n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset)
- x = TableInC()
- x.Init(buf, n + offset)
- return x
-
- # TableInC
- def Init(self, buf, pos):
- self._tab = flatbuffers.table.Table(buf, pos)
-
- # TableInC
- def ReferToA1(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
- if o != 0:
- x = self._tab.Indirect(o + self._tab.Pos)
- from .TableInFirstNS import TableInFirstNS
- obj = TableInFirstNS()
- obj.Init(self._tab.Bytes, x)
- return obj
- return None
-
- # TableInC
- def ReferToA2(self):
- o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
- if o != 0:
- x = self._tab.Indirect(o + self._tab.Pos)
- from .SecondTableInA import SecondTableInA
- obj = SecondTableInA()
- obj.Init(self._tab.Bytes, x)
- return obj
- return None
-
-def TableInCStart(builder): builder.StartObject(2)
-def TableInCAddReferToA1(builder, referToA1): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(referToA1), 0)
-def TableInCAddReferToA2(builder, referToA2): builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(referToA2), 0)
-def TableInCEnd(builder): return builder.EndObject()
diff --git a/third_party/flatbuffers/tests/namespace_test/namespace_test1.fbs b/third_party/flatbuffers/tests/namespace_test/namespace_test1.fbs
deleted file mode 100644
index 49449bf..0000000
--- a/third_party/flatbuffers/tests/namespace_test/namespace_test1.fbs
+++ /dev/null
@@ -1,17 +0,0 @@
-namespace NamespaceA.NamespaceB;
-
-table TableInNestedNS
-{
- foo:int;
-}
-
-enum EnumInNestedNS:byte
-{
- A, B, C
-}
-
-struct StructInNestedNS
-{
- a:int;
- b:int;
-}
\ No newline at end of file
diff --git a/third_party/flatbuffers/tests/namespace_test/namespace_test1_generated.h b/third_party/flatbuffers/tests/namespace_test/namespace_test1_generated.h
deleted file mode 100644
index 2a71fbc..0000000
--- a/third_party/flatbuffers/tests/namespace_test/namespace_test1_generated.h
+++ /dev/null
@@ -1,116 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-
-#ifndef FLATBUFFERS_GENERATED_NAMESPACETEST1_NAMESPACEA_NAMESPACEB_H_
-#define FLATBUFFERS_GENERATED_NAMESPACETEST1_NAMESPACEA_NAMESPACEB_H_
-
-#include "flatbuffers/flatbuffers.h"
-
-namespace NamespaceA {
-namespace NamespaceB {
-
-struct TableInNestedNS;
-
-struct StructInNestedNS;
-
-enum EnumInNestedNS {
- EnumInNestedNS_A = 0,
- EnumInNestedNS_B = 1,
- EnumInNestedNS_C = 2,
- EnumInNestedNS_MIN = EnumInNestedNS_A,
- EnumInNestedNS_MAX = EnumInNestedNS_C
-};
-
-inline const char **EnumNamesEnumInNestedNS() {
- static const char *names[] = {
- "A",
- "B",
- "C",
- nullptr
- };
- return names;
-}
-
-inline const char *EnumNameEnumInNestedNS(EnumInNestedNS e) {
- const size_t index = static_cast<int>(e);
- return EnumNamesEnumInNestedNS()[index];
-}
-
-MANUALLY_ALIGNED_STRUCT(4) StructInNestedNS FLATBUFFERS_FINAL_CLASS {
- private:
- int32_t a_;
- int32_t b_;
-
- public:
- StructInNestedNS() {
- memset(this, 0, sizeof(StructInNestedNS));
- }
- StructInNestedNS(const StructInNestedNS &_o) {
- memcpy(this, &_o, sizeof(StructInNestedNS));
- }
- StructInNestedNS(int32_t _a, int32_t _b)
- : a_(flatbuffers::EndianScalar(_a)),
- b_(flatbuffers::EndianScalar(_b)) {
- }
- int32_t a() const {
- return flatbuffers::EndianScalar(a_);
- }
- void mutate_a(int32_t _a) {
- flatbuffers::WriteScalar(&a_, _a);
- }
- int32_t b() const {
- return flatbuffers::EndianScalar(b_);
- }
- void mutate_b(int32_t _b) {
- flatbuffers::WriteScalar(&b_, _b);
- }
-};
-STRUCT_END(StructInNestedNS, 8);
-
-struct TableInNestedNS FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum {
- VT_FOO = 4
- };
- int32_t foo() const {
- return GetField<int32_t>(VT_FOO, 0);
- }
- bool mutate_foo(int32_t _foo) {
- return SetField<int32_t>(VT_FOO, _foo, 0);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyField<int32_t>(verifier, VT_FOO) &&
- verifier.EndTable();
- }
-};
-
-struct TableInNestedNSBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_foo(int32_t foo) {
- fbb_.AddElement<int32_t>(TableInNestedNS::VT_FOO, foo, 0);
- }
- TableInNestedNSBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- TableInNestedNSBuilder &operator=(const TableInNestedNSBuilder &);
- flatbuffers::Offset<TableInNestedNS> Finish() {
- const auto end = fbb_.EndTable(start_, 1);
- auto o = flatbuffers::Offset<TableInNestedNS>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<TableInNestedNS> CreateTableInNestedNS(
- flatbuffers::FlatBufferBuilder &_fbb,
- int32_t foo = 0) {
- TableInNestedNSBuilder builder_(_fbb);
- builder_.add_foo(foo);
- return builder_.Finish();
-}
-
-} // namespace NamespaceB
-} // namespace NamespaceA
-
-#endif // FLATBUFFERS_GENERATED_NAMESPACETEST1_NAMESPACEA_NAMESPACEB_H_
diff --git a/third_party/flatbuffers/tests/namespace_test/namespace_test1_generated.js b/third_party/flatbuffers/tests/namespace_test/namespace_test1_generated.js
deleted file mode 100644
index 7551a18..0000000
--- a/third_party/flatbuffers/tests/namespace_test/namespace_test1_generated.js
+++ /dev/null
@@ -1,190 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-/**
- * @const
- * @namespace
- */
-var NamespaceA = NamespaceA || {};
-
-/**
- * @const
- * @namespace
- */
-NamespaceA.NamespaceB = NamespaceA.NamespaceB || {};
-
-/**
- * @enum
- */
-NamespaceA.NamespaceB.EnumInNestedNS = {
- A: 0,
- B: 1,
- C: 2
-};
-
-/**
- * @constructor
- */
-NamespaceA.NamespaceB.TableInNestedNS = function() {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- this.bb = null;
-
- /**
- * @type {number}
- */
- this.bb_pos = 0;
-};
-
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {NamespaceA.NamespaceB.TableInNestedNS}
- */
-NamespaceA.NamespaceB.TableInNestedNS.prototype.__init = function(i, bb) {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @param {NamespaceA.NamespaceB.TableInNestedNS=} obj
- * @returns {NamespaceA.NamespaceB.TableInNestedNS}
- */
-NamespaceA.NamespaceB.TableInNestedNS.getRootAsTableInNestedNS = function(bb, obj) {
- return (obj || new NamespaceA.NamespaceB.TableInNestedNS).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @returns {number}
- */
-NamespaceA.NamespaceB.TableInNestedNS.prototype.foo = function() {
- var offset = this.bb.__offset(this.bb_pos, 4);
- return offset ? this.bb.readInt32(this.bb_pos + offset) : 0;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-NamespaceA.NamespaceB.TableInNestedNS.prototype.mutate_foo = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 4);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- */
-NamespaceA.NamespaceB.TableInNestedNS.startTableInNestedNS = function(builder) {
- builder.startObject(1);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} foo
- */
-NamespaceA.NamespaceB.TableInNestedNS.addFoo = function(builder, foo) {
- builder.addFieldInt32(0, foo, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @returns {flatbuffers.Offset}
- */
-NamespaceA.NamespaceB.TableInNestedNS.endTableInNestedNS = function(builder) {
- var offset = builder.endObject();
- return offset;
-};
-
-/**
- * @constructor
- */
-NamespaceA.NamespaceB.StructInNestedNS = function() {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- this.bb = null;
-
- /**
- * @type {number}
- */
- this.bb_pos = 0;
-};
-
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {NamespaceA.NamespaceB.StructInNestedNS}
- */
-NamespaceA.NamespaceB.StructInNestedNS.prototype.__init = function(i, bb) {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @returns {number}
- */
-NamespaceA.NamespaceB.StructInNestedNS.prototype.a = function() {
- return this.bb.readInt32(this.bb_pos);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-NamespaceA.NamespaceB.StructInNestedNS.prototype.mutate_a = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 0);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-NamespaceA.NamespaceB.StructInNestedNS.prototype.b = function() {
- return this.bb.readInt32(this.bb_pos + 4);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-NamespaceA.NamespaceB.StructInNestedNS.prototype.mutate_b = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 4);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} a
- * @param {number} b
- * @returns {flatbuffers.Offset}
- */
-NamespaceA.NamespaceB.StructInNestedNS.createStructInNestedNS = function(builder, a, b) {
- builder.prep(4, 8);
- builder.writeInt32(b);
- builder.writeInt32(a);
- return builder.offset();
-};
-
-// Exports for Node.js and RequireJS
-this.NamespaceA = NamespaceA;
diff --git a/third_party/flatbuffers/tests/namespace_test/namespace_test1_generated.ts b/third_party/flatbuffers/tests/namespace_test/namespace_test1_generated.ts
deleted file mode 100644
index 42a1a69..0000000
--- a/third_party/flatbuffers/tests/namespace_test/namespace_test1_generated.ts
+++ /dev/null
@@ -1,179 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-/**
- * @enum
- */
-export namespace NamespaceA.NamespaceB{
-export enum EnumInNestedNS{
- A= 0,
- B= 1,
- C= 2
-}};
-
-/**
- * @constructor
- */
-export namespace NamespaceA.NamespaceB{
-export class TableInNestedNS {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- bb: flatbuffers.ByteBuffer= null;
-
- /**
- * @type {number}
- */
- bb_pos:number = 0;
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {TableInNestedNS}
- */
-__init(i:number, bb:flatbuffers.ByteBuffer):TableInNestedNS {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @param {TableInNestedNS=} obj
- * @returns {TableInNestedNS}
- */
-static getRootAsTableInNestedNS(bb:flatbuffers.ByteBuffer, obj?:TableInNestedNS):TableInNestedNS {
- return (obj || new TableInNestedNS).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @returns {number}
- */
-foo():number {
- var offset = this.bb.__offset(this.bb_pos, 4);
- return offset ? this.bb.readInt32(this.bb_pos + offset) : 0;
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-mutate_foo(value:number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 4);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- */
-static startTableInNestedNS(builder:flatbuffers.Builder) {
- builder.startObject(1);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} foo
- */
-static addFoo(builder:flatbuffers.Builder, foo:number) {
- builder.addFieldInt32(0, foo, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @returns {flatbuffers.Offset}
- */
-static endTableInNestedNS(builder:flatbuffers.Builder):flatbuffers.Offset {
- var offset = builder.endObject();
- return offset;
-};
-
-}
-}
-/**
- * @constructor
- */
-export namespace NamespaceA.NamespaceB{
-export class StructInNestedNS {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- bb: flatbuffers.ByteBuffer= null;
-
- /**
- * @type {number}
- */
- bb_pos:number = 0;
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {StructInNestedNS}
- */
-__init(i:number, bb:flatbuffers.ByteBuffer):StructInNestedNS {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @returns {number}
- */
-a():number {
- return this.bb.readInt32(this.bb_pos);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-mutate_a(value:number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 0);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @returns {number}
- */
-b():number {
- return this.bb.readInt32(this.bb_pos + 4);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-mutate_b(value:number):boolean {
- var offset = this.bb.__offset(this.bb_pos, 4);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt32(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} a
- * @param {number} b
- * @returns {flatbuffers.Offset}
- */
-static createStructInNestedNS(builder:flatbuffers.Builder, a: number, b: number):flatbuffers.Offset {
- builder.prep(4, 8);
- builder.writeInt32(b);
- builder.writeInt32(a);
- return builder.offset();
-};
-
-}
-}
diff --git a/third_party/flatbuffers/tests/namespace_test/namespace_test2.fbs b/third_party/flatbuffers/tests/namespace_test/namespace_test2.fbs
deleted file mode 100644
index 11d7dea..0000000
--- a/third_party/flatbuffers/tests/namespace_test/namespace_test2.fbs
+++ /dev/null
@@ -1,24 +0,0 @@
-include "namespace_test1.fbs";
-
-namespace NamespaceA;
-
-table TableInFirstNS
-{
- foo_table:NamespaceB.TableInNestedNS;
- foo_enum:NamespaceB.EnumInNestedNS;
- foo_struct:NamespaceB.StructInNestedNS;
-}
-
-// Test switching namespaces inside a file.
-namespace NamespaceC;
-
-table TableInC {
- refer_to_a1:NamespaceA.TableInFirstNS;
- refer_to_a2:NamespaceA.SecondTableInA;
-}
-
-namespace NamespaceA;
-
-table SecondTableInA {
- refer_to_c:NamespaceC.TableInC;
-}
diff --git a/third_party/flatbuffers/tests/namespace_test/namespace_test2_generated.h b/third_party/flatbuffers/tests/namespace_test/namespace_test2_generated.h
deleted file mode 100644
index 4e2a622..0000000
--- a/third_party/flatbuffers/tests/namespace_test/namespace_test2_generated.h
+++ /dev/null
@@ -1,217 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-
-#ifndef FLATBUFFERS_GENERATED_NAMESPACETEST2_NAMESPACEA_H_
-#define FLATBUFFERS_GENERATED_NAMESPACETEST2_NAMESPACEA_H_
-
-#include "flatbuffers/flatbuffers.h"
-
-#include "namespace_test1_generated.h"
-
-namespace NamespaceA {
-
-struct TableInFirstNS;
-
-} // namespace NamespaceA
-
-namespace NamespaceC {
-
-struct TableInC;
-
-} // namespace NamespaceC
-
-namespace NamespaceA {
-
-struct SecondTableInA;
-
-struct TableInFirstNS FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum {
- VT_FOO_TABLE = 4,
- VT_FOO_ENUM = 6,
- VT_FOO_STRUCT = 8
- };
- const NamespaceA::NamespaceB::TableInNestedNS *foo_table() const {
- return GetPointer<const NamespaceA::NamespaceB::TableInNestedNS *>(VT_FOO_TABLE);
- }
- NamespaceA::NamespaceB::TableInNestedNS *mutable_foo_table() {
- return GetPointer<NamespaceA::NamespaceB::TableInNestedNS *>(VT_FOO_TABLE);
- }
- NamespaceA::NamespaceB::EnumInNestedNS foo_enum() const {
- return static_cast<NamespaceA::NamespaceB::EnumInNestedNS>(GetField<int8_t>(VT_FOO_ENUM, 0));
- }
- bool mutate_foo_enum(NamespaceA::NamespaceB::EnumInNestedNS _foo_enum) {
- return SetField<int8_t>(VT_FOO_ENUM, static_cast<int8_t>(_foo_enum), 0);
- }
- const NamespaceA::NamespaceB::StructInNestedNS *foo_struct() const {
- return GetStruct<const NamespaceA::NamespaceB::StructInNestedNS *>(VT_FOO_STRUCT);
- }
- NamespaceA::NamespaceB::StructInNestedNS *mutable_foo_struct() {
- return GetStruct<NamespaceA::NamespaceB::StructInNestedNS *>(VT_FOO_STRUCT);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_FOO_TABLE) &&
- verifier.VerifyTable(foo_table()) &&
- VerifyField<int8_t>(verifier, VT_FOO_ENUM) &&
- VerifyField<NamespaceA::NamespaceB::StructInNestedNS>(verifier, VT_FOO_STRUCT) &&
- verifier.EndTable();
- }
-};
-
-struct TableInFirstNSBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_foo_table(flatbuffers::Offset<NamespaceA::NamespaceB::TableInNestedNS> foo_table) {
- fbb_.AddOffset(TableInFirstNS::VT_FOO_TABLE, foo_table);
- }
- void add_foo_enum(NamespaceA::NamespaceB::EnumInNestedNS foo_enum) {
- fbb_.AddElement<int8_t>(TableInFirstNS::VT_FOO_ENUM, static_cast<int8_t>(foo_enum), 0);
- }
- void add_foo_struct(const NamespaceA::NamespaceB::StructInNestedNS *foo_struct) {
- fbb_.AddStruct(TableInFirstNS::VT_FOO_STRUCT, foo_struct);
- }
- TableInFirstNSBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- TableInFirstNSBuilder &operator=(const TableInFirstNSBuilder &);
- flatbuffers::Offset<TableInFirstNS> Finish() {
- const auto end = fbb_.EndTable(start_, 3);
- auto o = flatbuffers::Offset<TableInFirstNS>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<TableInFirstNS> CreateTableInFirstNS(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<NamespaceA::NamespaceB::TableInNestedNS> foo_table = 0,
- NamespaceA::NamespaceB::EnumInNestedNS foo_enum = NamespaceA::NamespaceB::EnumInNestedNS_A,
- const NamespaceA::NamespaceB::StructInNestedNS *foo_struct = 0) {
- TableInFirstNSBuilder builder_(_fbb);
- builder_.add_foo_struct(foo_struct);
- builder_.add_foo_table(foo_table);
- builder_.add_foo_enum(foo_enum);
- return builder_.Finish();
-}
-
-} // namespace NamespaceA
-
-namespace NamespaceC {
-
-struct TableInC FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum {
- VT_REFER_TO_A1 = 4,
- VT_REFER_TO_A2 = 6
- };
- const NamespaceA::TableInFirstNS *refer_to_a1() const {
- return GetPointer<const NamespaceA::TableInFirstNS *>(VT_REFER_TO_A1);
- }
- NamespaceA::TableInFirstNS *mutable_refer_to_a1() {
- return GetPointer<NamespaceA::TableInFirstNS *>(VT_REFER_TO_A1);
- }
- const NamespaceA::SecondTableInA *refer_to_a2() const {
- return GetPointer<const NamespaceA::SecondTableInA *>(VT_REFER_TO_A2);
- }
- NamespaceA::SecondTableInA *mutable_refer_to_a2() {
- return GetPointer<NamespaceA::SecondTableInA *>(VT_REFER_TO_A2);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_REFER_TO_A1) &&
- verifier.VerifyTable(refer_to_a1()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_REFER_TO_A2) &&
- verifier.VerifyTable(refer_to_a2()) &&
- verifier.EndTable();
- }
-};
-
-struct TableInCBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_refer_to_a1(flatbuffers::Offset<NamespaceA::TableInFirstNS> refer_to_a1) {
- fbb_.AddOffset(TableInC::VT_REFER_TO_A1, refer_to_a1);
- }
- void add_refer_to_a2(flatbuffers::Offset<NamespaceA::SecondTableInA> refer_to_a2) {
- fbb_.AddOffset(TableInC::VT_REFER_TO_A2, refer_to_a2);
- }
- TableInCBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- TableInCBuilder &operator=(const TableInCBuilder &);
- flatbuffers::Offset<TableInC> Finish() {
- const auto end = fbb_.EndTable(start_, 2);
- auto o = flatbuffers::Offset<TableInC>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<TableInC> CreateTableInC(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<NamespaceA::TableInFirstNS> refer_to_a1 = 0,
- flatbuffers::Offset<NamespaceA::SecondTableInA> refer_to_a2 = 0) {
- TableInCBuilder builder_(_fbb);
- builder_.add_refer_to_a2(refer_to_a2);
- builder_.add_refer_to_a1(refer_to_a1);
- return builder_.Finish();
-}
-
-} // namespace NamespaceC
-
-namespace NamespaceA {
-
-struct SecondTableInA FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum {
- VT_REFER_TO_C = 4
- };
- const NamespaceC::TableInC *refer_to_c() const {
- return GetPointer<const NamespaceC::TableInC *>(VT_REFER_TO_C);
- }
- NamespaceC::TableInC *mutable_refer_to_c() {
- return GetPointer<NamespaceC::TableInC *>(VT_REFER_TO_C);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_REFER_TO_C) &&
- verifier.VerifyTable(refer_to_c()) &&
- verifier.EndTable();
- }
-};
-
-struct SecondTableInABuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_refer_to_c(flatbuffers::Offset<NamespaceC::TableInC> refer_to_c) {
- fbb_.AddOffset(SecondTableInA::VT_REFER_TO_C, refer_to_c);
- }
- SecondTableInABuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- SecondTableInABuilder &operator=(const SecondTableInABuilder &);
- flatbuffers::Offset<SecondTableInA> Finish() {
- const auto end = fbb_.EndTable(start_, 1);
- auto o = flatbuffers::Offset<SecondTableInA>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<SecondTableInA> CreateSecondTableInA(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<NamespaceC::TableInC> refer_to_c = 0) {
- SecondTableInABuilder builder_(_fbb);
- builder_.add_refer_to_c(refer_to_c);
- return builder_.Finish();
-}
-
-} // namespace NamespaceA
-
-namespace NamespaceC {
-
-} // namespace NamespaceC
-
-namespace NamespaceA {
-
-} // namespace NamespaceA
-
-#endif // FLATBUFFERS_GENERATED_NAMESPACETEST2_NAMESPACEA_H_
diff --git a/third_party/flatbuffers/tests/namespace_test/namespace_test2_generated.js b/third_party/flatbuffers/tests/namespace_test/namespace_test2_generated.js
deleted file mode 100644
index c1c25ef..0000000
--- a/third_party/flatbuffers/tests/namespace_test/namespace_test2_generated.js
+++ /dev/null
@@ -1,292 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-/**
- * @const
- * @namespace
- */
-var NamespaceA = NamespaceA || {};
-
-/**
- * @const
- * @namespace
- */
-NamespaceA.NamespaceB = NamespaceA.NamespaceB || {};
-
-/**
- * @const
- * @namespace
- */
-var NamespaceC = NamespaceC || {};
-
-/**
- * @constructor
- */
-NamespaceA.TableInFirstNS = function() {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- this.bb = null;
-
- /**
- * @type {number}
- */
- this.bb_pos = 0;
-};
-
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {NamespaceA.TableInFirstNS}
- */
-NamespaceA.TableInFirstNS.prototype.__init = function(i, bb) {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @param {NamespaceA.TableInFirstNS=} obj
- * @returns {NamespaceA.TableInFirstNS}
- */
-NamespaceA.TableInFirstNS.getRootAsTableInFirstNS = function(bb, obj) {
- return (obj || new NamespaceA.TableInFirstNS).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @param {NamespaceA.NamespaceB.TableInNestedNS=} obj
- * @returns {NamespaceA.NamespaceB.TableInNestedNS}
- */
-NamespaceA.TableInFirstNS.prototype.fooTable = function(obj) {
- var offset = this.bb.__offset(this.bb_pos, 4);
- return offset ? (obj || new NamespaceA.NamespaceB.TableInNestedNS).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;
-};
-
-/**
- * @returns {NamespaceA.NamespaceB.EnumInNestedNS}
- */
-NamespaceA.TableInFirstNS.prototype.fooEnum = function() {
- var offset = this.bb.__offset(this.bb_pos, 6);
- return offset ? /** @type {NamespaceA.NamespaceB.EnumInNestedNS} */ (this.bb.readInt8(this.bb_pos + offset)) : NamespaceA.NamespaceB.EnumInNestedNS.A;
-};
-
-/**
- * @param {NamespaceA.NamespaceB.EnumInNestedNS} value
- * @returns {boolean}
- */
-NamespaceA.TableInFirstNS.prototype.mutate_foo_enum = function(value) {
- var offset = this.bb.__offset(this.bb_pos, 6);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt8(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {NamespaceA.NamespaceB.StructInNestedNS=} obj
- * @returns {NamespaceA.NamespaceB.StructInNestedNS}
- */
-NamespaceA.TableInFirstNS.prototype.fooStruct = function(obj) {
- var offset = this.bb.__offset(this.bb_pos, 8);
- return offset ? (obj || new NamespaceA.NamespaceB.StructInNestedNS).__init(this.bb_pos + offset, this.bb) : null;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- */
-NamespaceA.TableInFirstNS.startTableInFirstNS = function(builder) {
- builder.startObject(3);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} fooTableOffset
- */
-NamespaceA.TableInFirstNS.addFooTable = function(builder, fooTableOffset) {
- builder.addFieldOffset(0, fooTableOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {NamespaceA.NamespaceB.EnumInNestedNS} fooEnum
- */
-NamespaceA.TableInFirstNS.addFooEnum = function(builder, fooEnum) {
- builder.addFieldInt8(1, fooEnum, NamespaceA.NamespaceB.EnumInNestedNS.A);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} fooStructOffset
- */
-NamespaceA.TableInFirstNS.addFooStruct = function(builder, fooStructOffset) {
- builder.addFieldStruct(2, fooStructOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @returns {flatbuffers.Offset}
- */
-NamespaceA.TableInFirstNS.endTableInFirstNS = function(builder) {
- var offset = builder.endObject();
- return offset;
-};
-
-/**
- * @constructor
- */
-NamespaceC.TableInC = function() {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- this.bb = null;
-
- /**
- * @type {number}
- */
- this.bb_pos = 0;
-};
-
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {NamespaceC.TableInC}
- */
-NamespaceC.TableInC.prototype.__init = function(i, bb) {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @param {NamespaceC.TableInC=} obj
- * @returns {NamespaceC.TableInC}
- */
-NamespaceC.TableInC.getRootAsTableInC = function(bb, obj) {
- return (obj || new NamespaceC.TableInC).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @param {NamespaceA.TableInFirstNS=} obj
- * @returns {NamespaceA.TableInFirstNS}
- */
-NamespaceC.TableInC.prototype.referToA1 = function(obj) {
- var offset = this.bb.__offset(this.bb_pos, 4);
- return offset ? (obj || new NamespaceA.TableInFirstNS).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;
-};
-
-/**
- * @param {NamespaceA.SecondTableInA=} obj
- * @returns {NamespaceA.SecondTableInA}
- */
-NamespaceC.TableInC.prototype.referToA2 = function(obj) {
- var offset = this.bb.__offset(this.bb_pos, 6);
- return offset ? (obj || new NamespaceA.SecondTableInA).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- */
-NamespaceC.TableInC.startTableInC = function(builder) {
- builder.startObject(2);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} referToA1Offset
- */
-NamespaceC.TableInC.addReferToA1 = function(builder, referToA1Offset) {
- builder.addFieldOffset(0, referToA1Offset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} referToA2Offset
- */
-NamespaceC.TableInC.addReferToA2 = function(builder, referToA2Offset) {
- builder.addFieldOffset(1, referToA2Offset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @returns {flatbuffers.Offset}
- */
-NamespaceC.TableInC.endTableInC = function(builder) {
- var offset = builder.endObject();
- return offset;
-};
-
-/**
- * @constructor
- */
-NamespaceA.SecondTableInA = function() {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- this.bb = null;
-
- /**
- * @type {number}
- */
- this.bb_pos = 0;
-};
-
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {NamespaceA.SecondTableInA}
- */
-NamespaceA.SecondTableInA.prototype.__init = function(i, bb) {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @param {NamespaceA.SecondTableInA=} obj
- * @returns {NamespaceA.SecondTableInA}
- */
-NamespaceA.SecondTableInA.getRootAsSecondTableInA = function(bb, obj) {
- return (obj || new NamespaceA.SecondTableInA).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @param {NamespaceC.TableInC=} obj
- * @returns {NamespaceC.TableInC}
- */
-NamespaceA.SecondTableInA.prototype.referToC = function(obj) {
- var offset = this.bb.__offset(this.bb_pos, 4);
- return offset ? (obj || new NamespaceC.TableInC).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- */
-NamespaceA.SecondTableInA.startSecondTableInA = function(builder) {
- builder.startObject(1);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} referToCOffset
- */
-NamespaceA.SecondTableInA.addReferToC = function(builder, referToCOffset) {
- builder.addFieldOffset(0, referToCOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @returns {flatbuffers.Offset}
- */
-NamespaceA.SecondTableInA.endSecondTableInA = function(builder) {
- var offset = builder.endObject();
- return offset;
-};
-
-// Exports for Node.js and RequireJS
-this.NamespaceA = NamespaceA;
-this.NamespaceC = NamespaceC;
diff --git a/third_party/flatbuffers/tests/namespace_test/namespace_test2_generated.ts b/third_party/flatbuffers/tests/namespace_test/namespace_test2_generated.ts
deleted file mode 100644
index d08366b..0000000
--- a/third_party/flatbuffers/tests/namespace_test/namespace_test2_generated.ts
+++ /dev/null
@@ -1,275 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-import * as NS9459827973991502386 from "./namespace_test1_generated";
-/**
- * @constructor
- */
-export namespace NamespaceA{
-export class TableInFirstNS {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- bb: flatbuffers.ByteBuffer= null;
-
- /**
- * @type {number}
- */
- bb_pos:number = 0;
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {TableInFirstNS}
- */
-__init(i:number, bb:flatbuffers.ByteBuffer):TableInFirstNS {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @param {TableInFirstNS=} obj
- * @returns {TableInFirstNS}
- */
-static getRootAsTableInFirstNS(bb:flatbuffers.ByteBuffer, obj?:TableInFirstNS):TableInFirstNS {
- return (obj || new TableInFirstNS).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @param {NamespaceA.NamespaceB.TableInNestedNS=} obj
- * @returns {NamespaceA.NamespaceB.TableInNestedNS}
- */
-fooTable(obj?:NS9459827973991502386.NamespaceA.NamespaceB.TableInNestedNS):NS9459827973991502386.NamespaceA.NamespaceB.TableInNestedNS {
- var offset = this.bb.__offset(this.bb_pos, 4);
- return offset ? (obj || new NS9459827973991502386.NamespaceA.NamespaceB.TableInNestedNS).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;
-};
-
-/**
- * @returns {NamespaceA.NamespaceB.EnumInNestedNS}
- */
-fooEnum():NS9459827973991502386.NamespaceA.NamespaceB.EnumInNestedNS {
- var offset = this.bb.__offset(this.bb_pos, 6);
- return offset ? /** @type {NamespaceA.NamespaceB.EnumInNestedNS} */ (this.bb.readInt8(this.bb_pos + offset)) : NS9459827973991502386.NamespaceA.NamespaceB.EnumInNestedNS.A;
-};
-
-/**
- * @param {NamespaceA.NamespaceB.EnumInNestedNS} value
- * @returns {boolean}
- */
-mutate_foo_enum(value:NS9459827973991502386.NamespaceA.NamespaceB.EnumInNestedNS):boolean {
- var offset = this.bb.__offset(this.bb_pos, 6);
-
- if (offset === 0) {
- return false;
- }
-
- this.bb.writeInt8(this.bb_pos + offset, value);
- return true;
-};
-
-/**
- * @param {NamespaceA.NamespaceB.StructInNestedNS=} obj
- * @returns {NamespaceA.NamespaceB.StructInNestedNS}
- */
-fooStruct(obj?:NS9459827973991502386.NamespaceA.NamespaceB.StructInNestedNS):NS9459827973991502386.NamespaceA.NamespaceB.StructInNestedNS {
- var offset = this.bb.__offset(this.bb_pos, 8);
- return offset ? (obj || new NS9459827973991502386.NamespaceA.NamespaceB.StructInNestedNS).__init(this.bb_pos + offset, this.bb) : null;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- */
-static startTableInFirstNS(builder:flatbuffers.Builder) {
- builder.startObject(3);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} fooTableOffset
- */
-static addFooTable(builder:flatbuffers.Builder, fooTableOffset:flatbuffers.Offset) {
- builder.addFieldOffset(0, fooTableOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {NamespaceA.NamespaceB.EnumInNestedNS} fooEnum
- */
-static addFooEnum(builder:flatbuffers.Builder, fooEnum:NS9459827973991502386.NamespaceA.NamespaceB.EnumInNestedNS) {
- builder.addFieldInt8(1, fooEnum, NS9459827973991502386.NamespaceA.NamespaceB.EnumInNestedNS.A);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} fooStructOffset
- */
-static addFooStruct(builder:flatbuffers.Builder, fooStructOffset:flatbuffers.Offset) {
- builder.addFieldStruct(2, fooStructOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @returns {flatbuffers.Offset}
- */
-static endTableInFirstNS(builder:flatbuffers.Builder):flatbuffers.Offset {
- var offset = builder.endObject();
- return offset;
-};
-
-}
-}
-/**
- * @constructor
- */
-export namespace NamespaceC{
-export class TableInC {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- bb: flatbuffers.ByteBuffer= null;
-
- /**
- * @type {number}
- */
- bb_pos:number = 0;
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {TableInC}
- */
-__init(i:number, bb:flatbuffers.ByteBuffer):TableInC {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @param {TableInC=} obj
- * @returns {TableInC}
- */
-static getRootAsTableInC(bb:flatbuffers.ByteBuffer, obj?:TableInC):TableInC {
- return (obj || new TableInC).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @param {NamespaceA.TableInFirstNS=} obj
- * @returns {NamespaceA.TableInFirstNS}
- */
-referToA1(obj?:NamespaceA.TableInFirstNS):NamespaceA.TableInFirstNS {
- var offset = this.bb.__offset(this.bb_pos, 4);
- return offset ? (obj || new NamespaceA.TableInFirstNS).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;
-};
-
-/**
- * @param {NamespaceA.SecondTableInA=} obj
- * @returns {NamespaceA.SecondTableInA}
- */
-referToA2(obj?:NamespaceA.SecondTableInA):NamespaceA.SecondTableInA {
- var offset = this.bb.__offset(this.bb_pos, 6);
- return offset ? (obj || new NamespaceA.SecondTableInA).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- */
-static startTableInC(builder:flatbuffers.Builder) {
- builder.startObject(2);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} referToA1Offset
- */
-static addReferToA1(builder:flatbuffers.Builder, referToA1Offset:flatbuffers.Offset) {
- builder.addFieldOffset(0, referToA1Offset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} referToA2Offset
- */
-static addReferToA2(builder:flatbuffers.Builder, referToA2Offset:flatbuffers.Offset) {
- builder.addFieldOffset(1, referToA2Offset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @returns {flatbuffers.Offset}
- */
-static endTableInC(builder:flatbuffers.Builder):flatbuffers.Offset {
- var offset = builder.endObject();
- return offset;
-};
-
-}
-}
-/**
- * @constructor
- */
-export namespace NamespaceA{
-export class SecondTableInA {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- bb: flatbuffers.ByteBuffer= null;
-
- /**
- * @type {number}
- */
- bb_pos:number = 0;
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {SecondTableInA}
- */
-__init(i:number, bb:flatbuffers.ByteBuffer):SecondTableInA {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @param {SecondTableInA=} obj
- * @returns {SecondTableInA}
- */
-static getRootAsSecondTableInA(bb:flatbuffers.ByteBuffer, obj?:SecondTableInA):SecondTableInA {
- return (obj || new SecondTableInA).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @param {NamespaceC.TableInC=} obj
- * @returns {NamespaceC.TableInC}
- */
-referToC(obj?:NamespaceC.TableInC):NamespaceC.TableInC {
- var offset = this.bb.__offset(this.bb_pos, 4);
- return offset ? (obj || new NamespaceC.TableInC).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- */
-static startSecondTableInA(builder:flatbuffers.Builder) {
- builder.startObject(1);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} referToCOffset
- */
-static addReferToC(builder:flatbuffers.Builder, referToCOffset:flatbuffers.Offset) {
- builder.addFieldOffset(0, referToCOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @returns {flatbuffers.Offset}
- */
-static endSecondTableInA(builder:flatbuffers.Builder):flatbuffers.Offset {
- var offset = builder.endObject();
- return offset;
-};
-
-}
-}
diff --git a/third_party/flatbuffers/tests/phpTest.php b/third_party/flatbuffers/tests/phpTest.php
deleted file mode 100644
index 4dc83b2..0000000
--- a/third_party/flatbuffers/tests/phpTest.php
+++ /dev/null
@@ -1,632 +0,0 @@
-<?php
-// manual load for testing. please use PSR style autoloader when you use flatbuffers.
-require join(DIRECTORY_SEPARATOR, array(dirname(dirname(__FILE__)), "php", "Constants.php"));
-require join(DIRECTORY_SEPARATOR, array(dirname(dirname(__FILE__)), "php", "ByteBuffer.php"));
-require join(DIRECTORY_SEPARATOR, array(dirname(dirname(__FILE__)), "php", "FlatbufferBuilder.php"));
-require join(DIRECTORY_SEPARATOR, array(dirname(dirname(__FILE__)), "php", "Table.php"));
-require join(DIRECTORY_SEPARATOR, array(dirname(dirname(__FILE__)), "php", "Struct.php"));
-foreach (glob(join(DIRECTORY_SEPARATOR, array(dirname(__FILE__), "MyGame", "Example", "*.php"))) as $file) {
- require $file;
-}
-
-function main()
-{
- /// Begin Test
- $assert = new Assert();
-
- // First, let's test reading a FlatBuffer generated by C++ code:
- // This file was generated from monsterdata_test.json
-
- // Now test it:
- $data = file_get_contents('monsterdata_test.mon');
- $bb = Google\FlatBuffers\ByteBuffer::wrap($data);
- test_buffer($assert, $bb);
-
- // Second, let's create a FlatBuffer from scratch in JavaScript, and test it also.
- // We use an initial size of 1 to exercise the reallocation algorithm,
- // normally a size larger than the typical FlatBuffer you generate would be
- // better for performance.
- $fbb = new Google\FlatBuffers\FlatBufferBuilder(1);
-
- // We set up the same values as monsterdata.json:
- $str = $fbb->createString("MyMonster");
- $name = $fbb->createString('Fred');
- \MyGame\Example\Monster::startMonster($fbb);
- \MyGame\Example\Monster::addName($fbb, $name);
- $enemy = \MyGame\Example\Monster::endMonster($fbb);
-
- $inv = \MyGame\Example\Monster::CreateInventoryVector($fbb, array(0, 1, 2, 3, 4));
-
- $fred = $fbb->createString('Fred');
- \MyGame\Example\Monster::StartMonster($fbb);
- \MyGame\Example\Monster::AddName($fbb, $fred);
- $mon2 = \MyGame\Example\Monster::EndMonster($fbb);
-
- \MyGame\Example\Monster::StartTest4Vector($fbb, 2);
- \MyGame\Example\Test::CreateTest($fbb, 10, 20);
- \MyGame\Example\Test::CreateTest($fbb, 30, 40);
- $test4 = $fbb->endVector();
-
- $testArrayOfString = \MyGame\Example\Monster::CreateTestarrayofstringVector($fbb, array(
- $fbb->createString('test1'),
- $fbb->createString('test2')
- ));
-
- \MyGame\Example\Monster::StartMonster($fbb);
- \MyGame\Example\Monster::AddPos($fbb, \MyGame\Example\Vec3::CreateVec3($fbb,
- 1.0, 2.0, 3.0, //float
- 3.0, // double
- \MyGame\Example\Color::Green,
- 5, //short
- 6));
- \MyGame\Example\Monster::AddHp($fbb, 80);
- \MyGame\Example\Monster::AddName($fbb, $str);
- \MyGame\Example\Monster::AddInventory($fbb, $inv);
- \MyGame\Example\Monster::AddTestType($fbb, \MyGame\Example\Any::Monster);
- \MyGame\Example\Monster::AddTest($fbb, $mon2);
- \MyGame\Example\Monster::AddTest4($fbb, $test4);
- \MyGame\Example\Monster::AddTestarrayofstring($fbb, $testArrayOfString);
- \MyGame\Example\Monster::AddEnemy($fbb, $enemy);
- \MyGame\Example\Monster::AddTestbool($fbb, false);
- $mon = \MyGame\Example\Monster::EndMonster($fbb);
-
- \MyGame\Example\Monster::FinishMonsterBuffer($fbb, $mon);
-
- // Test it:
- test_buffer($assert, $fbb->dataBuffer());
-
- testByteBuffer($assert);
- fuzzTest1($assert);
-// testUnicode($assert);
-
- echo 'FlatBuffers php test: completed successfully' . PHP_EOL;
-}
-
-try {
- main();
- exit(0);
-} catch(Exception $e) {
- printf("Fatal error: Uncaught exception '%s' with message '%s. in %s:%d\n", get_class($e), $e->getMessage(), $e->getFile(), $e->getLine());
- printf("Stack trace:\n");
- echo $e->getTraceAsString() . PHP_EOL;
- printf(" thrown in in %s:%d\n", $e->getFile(), $e->getLine());
-
- die(-1);
-}
-
-function test_buffer(Assert $assert, Google\FlatBuffers\ByteBuffer $bb) {
-
- $assert->ok(MyGame\Example\Monster::MonsterBufferHasIdentifier($bb));
- $monster = \MyGame\Example\Monster::GetRootAsMonster($bb);
-
- $assert->strictEqual($monster->GetHp(), 80);
- $assert->strictEqual($monster->GetMana(), 150); // default
-
- $assert->strictEqual($monster->GetName(), 'MyMonster');
-
- $pos = $monster->GetPos();
- $assert->strictEqual($pos->GetX(), 1.0);
- $assert->strictEqual($pos->GetY(), 2.0);
- $assert->strictEqual($pos->GetZ(), 3.0);
-
- $assert->Equal($pos->GetTest1(), 3.0);
- $assert->strictEqual($pos->GetTest2(), \MyGame\Example\Color::Green);
-
- $t = $pos->GetTest3();
- $assert->strictEqual($t->GetA(), 5);
- $assert->strictEqual($t->GetB(), 6);
- $assert->strictEqual($monster->GetTestType(), \MyGame\Example\Any::Monster);
-
- $monster2 = new \MyGame\Example\Monster();
- $assert->strictEqual($monster->GetTest($monster2) != null, true);
- $assert->strictEqual($monster2->GetName(), 'Fred');
-
- $assert->strictEqual($monster->GetInventoryLength(), 5);
- $invsum = 0;
- for ($i = 0; $i < $monster->GetInventoryLength(); $i++) {
- $invsum += $monster->GetInventory($i);
- }
- $assert->strictEqual($invsum, 10);
-
- $assert->strictEqual(bin2hex($monster->GetInventoryBytes()), "0001020304");
-
- $test_0 = $monster->GetTest4(0);
- $test_1 = $monster->GetTest4(1);
- $assert->strictEqual($monster->GetTest4Length(), 2);
- $assert->strictEqual($test_0->GetA() + $test_0->GetB() + $test_1->GetA() + $test_1->GetB(), 100);
-
- $assert->strictEqual($monster->GetTestarrayofstringLength(), 2);
- $assert->strictEqual($monster->GetTestarrayofstring(0), 'test1');
- $assert->strictEqual($monster->GetTestarrayofstring(1), 'test2');
-
- $fred = $monster->getEnemy();
- $assert->Equal('Fred', $fred->getName());
-
- $assert->strictEqual($monster->GetTestbool(), false);
-}
-
-//function testUnicode(Assert $assert) {
-// // missing unicode_test.mon, implemented later
-// $correct = file_get_contents('unicode_test.mon');
-// $json = json_decode(file_get_contents('unicode_test.json'));
-//
-// // Test reading
-// $bb = flatbuffers\ByteBuffer::Wrap($correct);
-// $monster = \MyGame\Example\Monster::GetRootAsMonster($bb);
-// $assert->strictEqual($monster->GetName(), $json["name"]);
-//
-// //$assert->deepEqual(new Buffer(monster.name(flatbuffers.Encoding.UTF8_BYTES)), new Buffer(json.name));
-// //assert.strictEqual(monster.testarrayoftablesLength(), json.testarrayoftables.length);
-// foreach ($json["testarrayoftables"]as $i => $table) {
-// $value = $monster->GetTestArrayOfTables($i);
-// $assert->strictEqual($value->GetName(), $table["name"]);
-// //assert.deepEqual(new Buffer(value.name(flatbuffers.Encoding.UTF8_BYTES)), new Buffer(table.name));
-// }
-// $assert->strictEqual($monster->GetTestarrayofstringLength(), $json["testarrayofstring"]["length"]);
-// foreach ($json["testarrayofstring"] as $i => $string) {
-// $assert->strictEqual($monster->GetTestarrayofstring($i), $string);
-// //assert.deepEqual(new Buffer(monster.testarrayofstring(i, flatbuffers.Encoding.UTF8_BYTES)), new Buffer(string));
-// }
-//
-// // Test writing
-// $fbb = new FlatBuffers\FlatBufferBuilder(1);
-// $name = $fbb->CreateString($json["name"]);
-// $testarrayoftablesOffsets = array_map(function($table) use($fbb) {
-// $name = $fbb->CreateString($table["name"]);
-// \MyGame\Example\Monster::StartMonster($fbb);
-// \MyGame\Example\Monster::AddName($fbb, $name);
-// return \MyGame\Example\Monster::EndMonster($fbb);
-// }, $json["testarrayoftables"]);
-// $testarrayoftablesOffset = \MyGame\Example\Monster::CreateTestarrayoftablesVector($fbb,
-// $testarrayoftablesOffsets);
-//// $testarrayofstringOffset = \MyGame\Example\Monster::CreateTestarrayofstringVector($fbb,
-//// $json["testarrayofstring"].map(function(string) { return fbb.createString(string); }));
-//
-// \MyGame\Example\Monster::startMonster($fbb);
-// \MyGame\Example\Monster::addTestarrayofstring($fbb, $testarrayoftablesOffset);
-// \MyGame\Example\Monster::addTestarrayoftables($fbb, $testarrayoftablesOffset);
-// \MyGame\Example\Monster::addName($fbb, $name);
-// \MyGame\Example\Monster::finishMonsterBuffer($fbb, \MyGame\Example\Monster::endMonster($fbb));
-// //;assert.deepEqual(new Buffer(fbb.asUint8Array()), correct);
-//}
-
-// Low level stress/fuzz test: serialize/deserialize a variety of
-// different kinds of data in different combinations
-function fuzzTest1(Assert $assert)
-{
-
- // Values we're testing against: chosen to ensure no bits get chopped
- // off anywhere, and also be different from eachother.
- $bool_val = true;
- $char_val = -127; // 0x81
- $uchar_val = 0xFF;
- $short_val = -32222; // 0x8222;
- $ushort_val = 0xFEEE;
- $int_val = 0x7fffffff | 0;
- // for now
- $uint_val = 1;
- $long_val = 2;
- $ulong_val = 3;
-
-// var uint_val = 0xFDDDDDDD;
-// var long_val = new flatbuffers.Long(0x44444444, 0x84444444);
-// var ulong_val = new flatbuffers.Long(0xCCCCCCCC, 0xFCCCCCCC);
-
- $float_val = 3.14159;
- $double_val = 3.14159265359;
-
- $test_values_max = 11;
- $fields_per_object = 4;
- // current implementation is not good at encoding.
- $num_fuzz_objects = 1000;
- $builder = new Google\FlatBuffers\FlatBufferBuilder(1);
-
- // can't use same implementation due to PHP_INTMAX overflow issue.
- // we use mt_rand function to reproduce fuzzy test.
- mt_srand(48271);
- $objects = array();
- // Generate num_fuzz_objects random objects each consisting of
- // fields_per_object fields, each of a random type.
- for ($i = 0; $i < $num_fuzz_objects; $i++) {
- $builder->startObject($fields_per_object);
- for ($f = 0; $f < $fields_per_object; $f++) {
- $choice = mt_rand() % $test_values_max;
- switch ($choice) {
- case 0:
- $builder->addBoolX($f, $bool_val, 0);
- break;
- case 1:
- $builder->addByteX($f, $char_val, 0);
- break;
- case 2:
- $builder->addSbyteX($f, $uchar_val, 0);
- break;
- case 3:
- $builder->addShortX($f, $short_val, 0);
- break;
- case 4:
- $builder->addUshortX($f, $ushort_val, 0);
- break;
- case 5:
- $builder->addIntX($f, $int_val, 0);
- break;
- case 6:
- $builder->addUintX($f, $uint_val, 0);
- break;
- case 7:
- $builder->addLongX($f, $long_val, 0);
- break;
- case 8:
- $builder->addUlongX($f, $ulong_val, 0);
- break;
- case 9:
- $builder->addFloatX($f, $float_val, 0);
- break;
- case 10:
- $builder->addDoubleX($f, $double_val, 0);
- break;
- }
- }
- $objects[] = $builder->endObject();
- }
- $builder->prep(8, 0); // Align whole buffer.
-
- mt_srand(48271); // Reset
- $builder->finish($objects[count($objects) - 1]);
-
- $view = Google\FlatBuffers\ByteBuffer::wrap($builder->sizedByteArray());
- for ($i = 0; $i < $num_fuzz_objects; $i++) {
- $offset = $view->capacity() - $objects[$i];
- for ($f = 0; $f < $fields_per_object; $f++) {
- $choice = mt_rand() % $test_values_max;
- $vtable_offset = fieldIndexToOffset($f);
- $vtable = $offset - $view->getInt($offset);
- $assert->ok($vtable_offset < $view->getShort($vtable));
- $field_offset = $offset + $view->getShort($vtable + $vtable_offset);
- switch ($choice) {
- case 0:
- $assert->strictEqual(!!$view->getBool($field_offset), $bool_val);
- break;
- case 1:
- $assert->strictEqual($view->getSbyte($field_offset), $char_val);
- break;
- case 2:
- $assert->strictEqual($view->getByte($field_offset), $uchar_val);
- break;
- case 3:
- $assert->strictEqual($view->getShort($field_offset), $short_val);
- break;
- case 4:
- $assert->strictEqual($view->getUShort($field_offset), $ushort_val);
- break;
- case 5:
- $assert->strictEqual($view->getInt($field_offset), $int_val);
- break;
- case 6:
- $assert->strictEqual($view->getUint($field_offset), $uint_val);
- break;
- case 7:
- if (PHP_INT_SIZE <= 4) break;
- $assert->strictEqual($view->getLong($field_offset), $long_val);
- break;
- case 8:
- if (PHP_INT_SIZE <= 4) break;
- $assert->strictEqual($view->getUlong($field_offset), $ulong_val);
- break;
- case 9:
- $assert->strictEqual(floor($view->getFloat($field_offset)), floor($float_val));
- break;
- case 10:
- $assert->strictEqual($view->getDouble($field_offset), $double_val);
- break;
- }
- }
- }
-}
-
-function fieldIndexToOffset($field_id) {
- // Should correspond to what EndTable() below builds up.
- $fixed_fields = 2; // Vtable size and Object Size.
- return ($field_id + $fixed_fields) * 2;
-}
-
-function testByteBuffer(Assert $assert) {
-
- //Test: ByteBuffer_Length_MatchesBufferLength
- $buffer = str_repeat("\0", 100);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Equal($uut->capacity(), strlen($buffer));
-
- //Test: ByteBuffer_PutBytePopulatesBufferAtZeroOffset
- $buffer = "\0";
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $uut->putByte(0, "\x63"); // 99
- $assert->Equal("\x63", $uut->_buffer[0]); // don't share buffer as php user might confuse reference.
-
- //Test: ByteBuffer_PutByteCannotPutAtOffsetPastLength
- $buffer = "\0";
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Throws(new OutOfRangeException(), function() use ($uut) {
- $uut->putByte(1, "\x63"); // 99
- });
-
- //Test: ByteBuffer_PutShortPopulatesBufferCorrectly
- $buffer = str_repeat("\0", 2);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $uut->putShort(0, 1);
-
- // Ensure Endiannes was written correctly
- $assert->Equal(chr(0x01), $uut->_buffer[0]);
- $assert->Equal(chr(0x00), $uut->_buffer[1]);
-
- $buffer = str_repeat("\0", 2);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $uut->putShort(0, -32768);
-
- // Ensure Endiannes was written correctly
- $assert->Equal(chr(0x00), $uut->_buffer[0]);
- $assert->Equal(chr(0x80), $uut->_buffer[1]);
-
- //Test: ByteBuffer_PutShortCannotPutAtOffsetPastLength
- $buffer = "\0";
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Throws(new OutOfRangeException(), function() use ($uut) {
- $uut->putShort(2, "\x63"); // 99
- });
-
- //Test: ByteBuffer_PutShortChecksLength
- $buffer = "\0";
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Throws(new OutOfRangeException(), function() use ($uut) {
- $uut->putShort(0, "\x63"); // 99
- });
-
- //Test: ByteBuffer_PutShortChecksLengthAndOffset
- $buffer = str_repeat("\0", 2);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Throws(new OutOfRangeException(), function() use ($uut) {
- $uut->putShort(1, "\x63"); // 99
- });
-
- //Test: ByteBuffer_PutIntPopulatesBufferCorrectly
- $buffer = str_repeat("\0", 4);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $uut->putInt(0, 0x0A0B0C0D);
- $assert->Equal(chr(0x0D), $uut->_buffer[0]);
- $assert->Equal(chr(0x0C), $uut->_buffer[1]);
- $assert->Equal(chr(0x0B), $uut->_buffer[2]);
- $assert->Equal(chr(0x0A), $uut->_buffer[3]);
-
- $buffer = str_repeat("\0", 4);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $uut->putInt(0, -2147483648);
- $assert->Equal(chr(0x00), $uut->_buffer[0]);
- $assert->Equal(chr(0x00), $uut->_buffer[1]);
- $assert->Equal(chr(0x00), $uut->_buffer[2]);
- $assert->Equal(chr(0x80), $uut->_buffer[3]);
-
- //Test: ByteBuffer_PutIntCannotPutAtOffsetPastLength
- $buffer = str_repeat("\0", 4);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Throws(new OutOfRangeException(), function() use ($uut) {
- $uut->putInt(2, 0x0A0B0C0D);
- });
-
- //Test: ByteBuffer_PutIntChecksLength
- $buffer = str_repeat("\0", 1);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Throws(new OutOfRangeException(), function() use ($uut) {
- $uut->putInt(0, 0x0A0B0C0D);
- });
-
- //Test: ByteBuffer_PutIntChecksLengthAndOffset
- $buffer = str_repeat("\0", 4);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Throws(new OutOfRangeException(), function() use ($uut) {
- $uut->putInt(2, 0x0A0B0C0D);
- });
-
- if (PHP_INT_SIZE > 4) {
- //Test: ByteBuffer_PutLongPopulatesBufferCorrectly
- $buffer = str_repeat("\0", 8);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $uut->putLong(0, 0x010203040A0B0C0D);
- $assert->Equal(chr(0x0D), $uut->_buffer[0]);
- $assert->Equal(chr(0x0C), $uut->_buffer[1]);
- $assert->Equal(chr(0x0B), $uut->_buffer[2]);
- $assert->Equal(chr(0x0A), $uut->_buffer[3]);
- $assert->Equal(chr(0x04), $uut->_buffer[4]);
- $assert->Equal(chr(0x03), $uut->_buffer[5]);
- $assert->Equal(chr(0x02), $uut->_buffer[6]);
- $assert->Equal(chr(0x01), $uut->_buffer[7]);
-
- //Test: ByteBuffer_PutLongCannotPutAtOffsetPastLength
- $buffer = str_repeat("\0", 8);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Throws(new OutOfRangeException(), function() use ($uut) {
- $uut->putLong(2, 0x010203040A0B0C0D);
- });
-
- //Test: ByteBuffer_PutLongCannotPutAtOffsetPastLength
- $buffer = str_repeat("\0", 1);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Throws(new OutOfRangeException(), function() use ($uut) {
- $uut->putLong(0, 0x010203040A0B0C0D);
- });
-
-
- //Test: ByteBuffer_PutLongChecksLengthAndOffset
- $buffer = str_repeat("\0", 8);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Throws(new OutOfRangeException(), function() use ($uut) {
- $uut->putLong(2, 0x010203040A0B0C0D);
- });
- }
-
- //Test: ByteBuffer_GetByteReturnsCorrectData
- $buffer = str_repeat("\0", 1);
- $buffer[0] = "\x63";
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Equal("\x63", $uut->get(0));
-
- //Test: ByteBuffer_GetByteChecksOffset
- $buffer = str_repeat("\0", 1);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Throws(new OutOfRangeException(), function() use ($uut) {
- $uut->get(1);
- });
-
- //Test: ByteBuffer_GetShortReturnsCorrectData
- $buffer = str_repeat("\0", 2);
- $buffer[0] = chr(0x01);
- $buffer[1] = chr(0x00);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Equal(1, $uut->getShort(0));
-
- //Test: ByteBuffer_GetShortReturnsCorrectData (signed value)
- $buffer = str_repeat("\0", 2);
- $buffer[0] = chr(0x00);
- $buffer[1] = chr(0x80);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Equal(-32768, $uut->getShort(0));
-
- //Test: ByteBuffer_GetShortChecksOffset
- $buffer = str_repeat("\0", 2);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Throws(new OutOfRangeException(), function() use ($uut) {
- $uut->getShort(2);
- });
-
- //Test: ByteBuffer_GetShortChecksLength
- $buffer = str_repeat("\0", 2);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Throws(new OutOfRangeException(), function() use ($uut) {
- $uut->getShort(1);
- });
-
- //Test: ByteBuffer_GetIntReturnsCorrectData
- $buffer = str_repeat("\0", 4);
- $buffer[0] = chr(0x0D);
- $buffer[1] = chr(0x0C);
- $buffer[2] = chr(0x0B);
- $buffer[3] = chr(0x0A);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Equal(0x0A0B0C0D, $uut->getInt(0));
-
- $buffer = str_repeat("\0", 4);
- $buffer[0] = chr(0x00);
- $buffer[1] = chr(0x00);
- $buffer[2] = chr(0x00);
- $buffer[3] = chr(0x80);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Equal(-2147483648, $uut->getInt(0));
-
- //Test: ByteBuffer_GetIntChecksOffset
- $buffer = str_repeat("\0", 4);
-
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Throws(new OutOfRangeException(), function() use ($uut) {
- $uut->getInt(4);
- });
-
- //Test: ByteBuffer_GetIntChecksLength
- $buffer = str_repeat("\0", 2);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Throws(new OutOfRangeException(), function() use ($uut) {
- $uut->getInt(0);
- });
-
- if (PHP_INT_SIZE > 4) {
- //Test: ByteBuffer_GetLongReturnsCorrectData
- $buffer = str_repeat("\0", 8);
- $buffer[0] = chr(0x0D);
- $buffer[1] = chr(0x0C);
- $buffer[2] = chr(0x0B);
- $buffer[3] = chr(0x0A);
- $buffer[4] = chr(0x04);
- $buffer[5] = chr(0x03);
- $buffer[6] = chr(0x02);
- $buffer[7] = chr(0x01);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Equal(0x010203040A0B0C0D, $uut->getLong(0));
-
- //Test: Signed Long
- $buffer = str_repeat("\0", 8);
- $buffer[0] = chr(0x00);
- $buffer[1] = chr(0x00);
- $buffer[2] = chr(0x00);
- $buffer[3] = chr(0x00);
- $buffer[4] = chr(0x00);
- $buffer[5] = chr(0x00);
- $buffer[6] = chr(0x00);
- $buffer[7] = chr(0x80);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Equal(-1 << 63, $uut->getLong(0));
- }
-
- //Test: ByteBuffer_GetLongChecksOffset
- $buffer = str_repeat("\0", 8);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Throws(new OutOfRangeException(), function() use ($uut) {
- $uut->getLong(8);
- });
-
- //Test: ByteBuffer_GetLongChecksLength
- $buffer = str_repeat("\0", 7);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Throws(new OutOfRangeException(), function() use ($uut) {
- $uut->getLong(0);
- });
-
- //Test: big endian
- $buffer = str_repeat("\0", 2);
- // 0xFF 0x00
- // Little Endian: 255
- // Big Endian: 65280
- $buffer[0] = chr(0xff);
- $buffer[1] = chr(0x00);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Equal(65280, $uut->readLittleEndian(0, 2, true));
-
- $buffer = str_repeat("\0", 4);
- $buffer[0] = chr(0x0D);
- $buffer[1] = chr(0x0C);
- $buffer[2] = chr(0x0B);
- $buffer[3] = chr(0x0A);
- $uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
- $assert->Equal(0x0D0C0B0A, $uut->readLittleEndian(0, 4, true));
-
-}
-
-class Assert {
- public function ok($result, $message = "") {
- if (!$result){
- throw new Exception(!empty($message) ? $message : "{$result} is not true.");
- }
- }
-
- public function Equal($result, $expected, $message = "") {
- if ($result != $expected) {
- throw new Exception(!empty($message) ? $message : "given the result {$result} is not equals as {$expected}");
- }
- }
-
-
- public function strictEqual($result, $expected, $message = "") {
- if ($result !== $expected) {
- throw new Exception(!empty($message) ? $message : "given the result {$result} is not strict equals as {$expected}");
- }
- }
-
- public function Throws($class, Callable $callback) {
- try {
- $callback();
-
- throw new \Exception("passed statement don't throw an exception.");
- } catch (\Exception $e) {
- if (get_class($e) != get_class($class)) {
- throw new Exception("passed statement doesn't throw " . get_class($class) . ". throwws " . get_class($e));
- }
- }
- }
-}
diff --git a/third_party/flatbuffers/tests/prototest/imported.proto b/third_party/flatbuffers/tests/prototest/imported.proto
deleted file mode 100644
index 5b43e4b..0000000
--- a/third_party/flatbuffers/tests/prototest/imported.proto
+++ /dev/null
@@ -1,5 +0,0 @@
-package proto.test;
-
-message ImportedMessage {
- optional int32 a = 26;
-}
diff --git a/third_party/flatbuffers/tests/prototest/test.golden b/third_party/flatbuffers/tests/prototest/test.golden
deleted file mode 100644
index 2c74413..0000000
--- a/third_party/flatbuffers/tests/prototest/test.golden
+++ /dev/null
@@ -1,52 +0,0 @@
-// Generated from test.proto
-
-namespace _proto._test;
-
-/// Enum doc comment.
-enum ProtoEnum : int {
- FOO = 1,
- /// Enum 2nd value doc comment misaligned.
- BAR = 5,
-}
-
-namespace _proto._test;
-
-table ImportedMessage {
- a:int;
-}
-
-namespace _proto._test;
-
-/// 2nd table doc comment with
-/// many lines.
-table ProtoMessage {
- c:int = 16;
- d:long;
- p:uint;
- e:ulong;
- /// doc comment for f.
- f:int = -1;
- g:long;
- h:uint;
- q:ulong;
- i:int;
- j:long;
- /// doc comment for k.
- k:bool;
- /// doc comment for l on 2
- /// lines
- l:string (required);
- m:string;
- n:_proto._test._ProtoMessage.OtherMessage;
- o:[string];
- z:_proto._test.ImportedMessage;
-}
-
-namespace _proto._test._ProtoMessage;
-
-table OtherMessage {
- a:double;
- /// doc comment for b.
- b:float = 3.14149;
-}
-
diff --git a/third_party/flatbuffers/tests/prototest/test.proto b/third_party/flatbuffers/tests/prototest/test.proto
deleted file mode 100644
index 913b564..0000000
--- a/third_party/flatbuffers/tests/prototest/test.proto
+++ /dev/null
@@ -1,45 +0,0 @@
-// Sample .proto file that we can translate to the corresponding .fbs.
-
-option some_option = is_ignored;
-import "imported.proto";
-
-package proto.test;
-
-/// Enum doc comment.
-enum ProtoEnum {
- FOO = 1;
-/// Enum 2nd value doc comment misaligned.
- BAR = 5;
-}
-
-/// 2nd table doc comment with
-/// many lines.
-message ProtoMessage {
- // Ignored non-doc comment.
- // A nested message declaration, will be moved to top level in .fbs
- message OtherMessage {
- optional double a = 26;
- /// doc comment for b.
- optional float b = 32 [default = 3.14149];
- }
- optional int32 c = 12 [default = 16];
- optional int64 d = 1 [default = 0];
- optional uint32 p = 1;
- optional uint64 e = 2;
- /// doc comment for f.
- optional sint32 f = 3 [default = -1];
- optional sint64 g = 4;
- optional fixed32 h = 5;
- optional fixed64 q = 6;
- optional sfixed32 i = 7;
- optional sfixed64 j = 8;
- /// doc comment for k.
- optional bool k = 9;
- /// doc comment for l on 2
- /// lines
- required string l = 10;
- optional bytes m = 11;
- optional OtherMessage n = 12;
- repeated string o = 14;
- optional ImportedMessage z = 16;
-}
diff --git a/third_party/flatbuffers/tests/py_test.py b/third_party/flatbuffers/tests/py_test.py
deleted file mode 100644
index e660944..0000000
--- a/third_party/flatbuffers/tests/py_test.py
+++ /dev/null
@@ -1,1371 +0,0 @@
-# coding=utf-8
-# Copyright 2014 Google Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import os.path
-import sys
-PY_VERSION = sys.version_info[:2]
-
-import ctypes
-from collections import defaultdict
-import timeit
-import unittest
-
-
-from flatbuffers import compat
-from flatbuffers.compat import range_func as compat_range
-
-import flatbuffers
-from flatbuffers import number_types as N
-
-import MyGame # refers to generated code
-import MyGame.Example # refers to generated code
-import MyGame.Example.Any # refers to generated code
-import MyGame.Example.Color # refers to generated code
-import MyGame.Example.Monster # refers to generated code
-import MyGame.Example.Test # refers to generated code
-import MyGame.Example.Stat # refers to generated code
-import MyGame.Example.Vec3 # refers to generated code
-
-
-def assertRaises(test_case, fn, exception_class):
- ''' Backwards-compatible assertion for exceptions raised. '''
-
- exc = None
- try:
- fn()
- except Exception as e:
- exc = e
- test_case.assertTrue(exc is not None)
- test_case.assertTrue(isinstance(exc, exception_class))
-
-
-class TestWireFormat(unittest.TestCase):
- def test_wire_format(self):
- # Verify that using the generated Python code builds a buffer without
- # returning errors, and is interpreted correctly:
- gen_buf, gen_off = make_monster_from_generated_code()
- CheckReadBuffer(gen_buf, gen_off)
-
- # Verify that the canonical flatbuffer file is readable by the
- # generated Python code. Note that context managers are not part of
- # Python 2.5, so we use the simpler open/close methods here:
- f = open('monsterdata_test.mon', 'rb')
- canonicalWireData = f.read()
- f.close()
- CheckReadBuffer(bytearray(canonicalWireData), 0)
-
- # Write the generated buffer out to a file:
- f = open('monsterdata_python_wire.mon', 'wb')
- f.write(gen_buf[gen_off:])
- f.close()
-
-
-def CheckReadBuffer(buf, offset):
- ''' CheckReadBuffer checks that the given buffer is evaluated correctly
- as the example Monster. '''
-
- def asserter(stmt):
- ''' An assertion helper that is separated from TestCase classes. '''
- if not stmt:
- raise AssertionError('CheckReadBuffer case failed')
-
- monster = MyGame.Example.Monster.Monster.GetRootAsMonster(buf, offset)
-
- asserter(monster.Hp() == 80)
- asserter(monster.Mana() == 150)
- asserter(monster.Name() == b'MyMonster')
-
- # initialize a Vec3 from Pos()
- vec = monster.Pos()
- asserter(vec is not None)
-
- # verify the properties of the Vec3
- asserter(vec.X() == 1.0)
- asserter(vec.Y() == 2.0)
- asserter(vec.Z() == 3.0)
- asserter(vec.Test1() == 3.0)
- asserter(vec.Test2() == 2)
-
- # initialize a Test from Test3(...)
- t = MyGame.Example.Test.Test()
- t = vec.Test3(t)
- asserter(t is not None)
-
- # verify the properties of the Test
- asserter(t.A() == 5)
- asserter(t.B() == 6)
-
- # verify that the enum code matches the enum declaration:
- union_type = MyGame.Example.Any.Any
- asserter(monster.TestType() == union_type.Monster)
-
- # initialize a Table from a union field Test(...)
- table2 = monster.Test()
- asserter(type(table2) is flatbuffers.table.Table)
-
- # initialize a Monster from the Table from the union
- monster2 = MyGame.Example.Monster.Monster()
- monster2.Init(table2.Bytes, table2.Pos)
-
- asserter(monster2.Name() == b"Fred")
-
- # iterate through the first monster's inventory:
- asserter(monster.InventoryLength() == 5)
-
- invsum = 0
- for i in compat_range(monster.InventoryLength()):
- v = monster.Inventory(i)
- invsum += int(v)
- asserter(invsum == 10)
-
- asserter(monster.Test4Length() == 2)
-
- # create a 'Test' object and populate it:
- test0 = monster.Test4(0)
- asserter(type(test0) is MyGame.Example.Test.Test)
-
- test1 = monster.Test4(1)
- asserter(type(test1) is MyGame.Example.Test.Test)
-
- # the position of test0 and test1 are swapped in monsterdata_java_wire
- # and monsterdata_test_wire, so ignore ordering
- v0 = test0.A()
- v1 = test0.B()
- v2 = test1.A()
- v3 = test1.B()
- sumtest12 = int(v0) + int(v1) + int(v2) + int(v3)
-
- asserter(sumtest12 == 100)
-
- asserter(monster.TestarrayofstringLength() == 2)
- asserter(monster.Testarrayofstring(0) == b"test1")
- asserter(monster.Testarrayofstring(1) == b"test2")
-
- asserter(monster.TestarrayoftablesLength() == 0)
- asserter(monster.TestnestedflatbufferLength() == 0)
- asserter(monster.Testempty() is None)
-
-
-class TestFuzz(unittest.TestCase):
- ''' Low level stress/fuzz test: serialize/deserialize a variety of
- different kinds of data in different combinations '''
-
- binary_type = compat.binary_types[0] # this will always exist
- ofInt32Bytes = binary_type([0x83, 0x33, 0x33, 0x33])
- ofInt64Bytes = binary_type([0x84, 0x44, 0x44, 0x44,
- 0x44, 0x44, 0x44, 0x44])
- overflowingInt32Val = flatbuffers.encode.Get(flatbuffers.packer.int32,
- ofInt32Bytes, 0)
- overflowingInt64Val = flatbuffers.encode.Get(flatbuffers.packer.int64,
- ofInt64Bytes, 0)
-
- # Values we're testing against: chosen to ensure no bits get chopped
- # off anywhere, and also be different from eachother.
- boolVal = True
- int8Val = N.Int8Flags.py_type(-127) # 0x81
- uint8Val = N.Uint8Flags.py_type(0xFF)
- int16Val = N.Int16Flags.py_type(-32222) # 0x8222
- uint16Val = N.Uint16Flags.py_type(0xFEEE)
- int32Val = N.Int32Flags.py_type(overflowingInt32Val)
- uint32Val = N.Uint32Flags.py_type(0xFDDDDDDD)
- int64Val = N.Int64Flags.py_type(overflowingInt64Val)
- uint64Val = N.Uint64Flags.py_type(0xFCCCCCCCCCCCCCCC)
- # Python uses doubles, so force it here
- float32Val = N.Float32Flags.py_type(ctypes.c_float(3.14159).value)
- float64Val = N.Float64Flags.py_type(3.14159265359)
-
- def test_fuzz(self):
- return self.check_once(11, 100)
-
- def check_once(self, fuzzFields, fuzzObjects):
- testValuesMax = 11 # hardcoded to the number of scalar types
-
- builder = flatbuffers.Builder(0)
- l = LCG()
-
- objects = [0 for _ in compat_range(fuzzObjects)]
-
- # Generate fuzzObjects random objects each consisting of
- # fuzzFields fields, each of a random type.
- for i in compat_range(fuzzObjects):
- builder.StartObject(fuzzFields)
-
- for j in compat_range(fuzzFields):
- choice = int(l.Next()) % testValuesMax
- if choice == 0:
- builder.PrependBoolSlot(int(j), self.boolVal, False)
- elif choice == 1:
- builder.PrependInt8Slot(int(j), self.int8Val, 0)
- elif choice == 2:
- builder.PrependUint8Slot(int(j), self.uint8Val, 0)
- elif choice == 3:
- builder.PrependInt16Slot(int(j), self.int16Val, 0)
- elif choice == 4:
- builder.PrependUint16Slot(int(j), self.uint16Val, 0)
- elif choice == 5:
- builder.PrependInt32Slot(int(j), self.int32Val, 0)
- elif choice == 6:
- builder.PrependUint32Slot(int(j), self.uint32Val, 0)
- elif choice == 7:
- builder.PrependInt64Slot(int(j), self.int64Val, 0)
- elif choice == 8:
- builder.PrependUint64Slot(int(j), self.uint64Val, 0)
- elif choice == 9:
- builder.PrependFloat32Slot(int(j), self.float32Val, 0)
- elif choice == 10:
- builder.PrependFloat64Slot(int(j), self.float64Val, 0)
- else:
- raise RuntimeError('unreachable')
-
- off = builder.EndObject()
-
- # store the offset from the end of the builder buffer,
- # since it will keep growing:
- objects[i] = off
-
- # Do some bookkeeping to generate stats on fuzzes:
- stats = defaultdict(int)
- def check(table, desc, want, got):
- stats[desc] += 1
- self.assertEqual(want, got, "%s != %s, %s" % (want, got, desc))
-
- l = LCG() # Reset.
-
- # Test that all objects we generated are readable and return the
- # expected values. We generate random objects in the same order
- # so this is deterministic.
- for i in compat_range(fuzzObjects):
-
- table = flatbuffers.table.Table(builder.Bytes,
- len(builder.Bytes) - objects[i])
-
- for j in compat_range(fuzzFields):
- field_count = flatbuffers.builder.VtableMetadataFields + j
- f = N.VOffsetTFlags.py_type(field_count *
- N.VOffsetTFlags.bytewidth)
- choice = int(l.Next()) % testValuesMax
-
- if choice == 0:
- check(table, "bool", self.boolVal,
- table.GetSlot(f, False, N.BoolFlags))
- elif choice == 1:
- check(table, "int8", self.int8Val,
- table.GetSlot(f, 0, N.Int8Flags))
- elif choice == 2:
- check(table, "uint8", self.uint8Val,
- table.GetSlot(f, 0, N.Uint8Flags))
- elif choice == 3:
- check(table, "int16", self.int16Val,
- table.GetSlot(f, 0, N.Int16Flags))
- elif choice == 4:
- check(table, "uint16", self.uint16Val,
- table.GetSlot(f, 0, N.Uint16Flags))
- elif choice == 5:
- check(table, "int32", self.int32Val,
- table.GetSlot(f, 0, N.Int32Flags))
- elif choice == 6:
- check(table, "uint32", self.uint32Val,
- table.GetSlot(f, 0, N.Uint32Flags))
- elif choice == 7:
- check(table, "int64", self.int64Val,
- table.GetSlot(f, 0, N.Int64Flags))
- elif choice == 8:
- check(table, "uint64", self.uint64Val,
- table.GetSlot(f, 0, N.Uint64Flags))
- elif choice == 9:
- check(table, "float32", self.float32Val,
- table.GetSlot(f, 0, N.Float32Flags))
- elif choice == 10:
- check(table, "float64", self.float64Val,
- table.GetSlot(f, 0, N.Float64Flags))
- else:
- raise RuntimeError('unreachable')
-
- # If enough checks were made, verify that all scalar types were used:
- self.assertEqual(testValuesMax, len(stats),
- "fuzzing failed to test all scalar types: %s" % stats)
-
-
-class TestByteLayout(unittest.TestCase):
- ''' TestByteLayout checks the bytes of a Builder in various scenarios. '''
-
- def assertBuilderEquals(self, builder, want_chars_or_ints):
- def integerize(x):
- if isinstance(x, compat.string_types):
- return ord(x)
- return x
-
- want_ints = list(map(integerize, want_chars_or_ints))
- want = bytearray(want_ints)
- got = builder.Bytes[builder.Head():] # use the buffer directly
- self.assertEqual(want, got)
-
- def test_numbers(self):
- b = flatbuffers.Builder(0)
- self.assertBuilderEquals(b, [])
- b.PrependBool(True)
- self.assertBuilderEquals(b, [1])
- b.PrependInt8(-127)
- self.assertBuilderEquals(b, [129, 1])
- b.PrependUint8(255)
- self.assertBuilderEquals(b, [255, 129, 1])
- b.PrependInt16(-32222)
- self.assertBuilderEquals(b, [0x22, 0x82, 0, 255, 129, 1]) # first pad
- b.PrependUint16(0xFEEE)
- # no pad this time:
- self.assertBuilderEquals(b, [0xEE, 0xFE, 0x22, 0x82, 0, 255, 129, 1])
- b.PrependInt32(-53687092)
- self.assertBuilderEquals(b, [204, 204, 204, 252, 0xEE, 0xFE,
- 0x22, 0x82, 0, 255, 129, 1])
- b.PrependUint32(0x98765432)
- self.assertBuilderEquals(b, [0x32, 0x54, 0x76, 0x98,
- 204, 204, 204, 252,
- 0xEE, 0xFE, 0x22, 0x82,
- 0, 255, 129, 1])
-
- def test_numbers64(self):
- b = flatbuffers.Builder(0)
- b.PrependUint64(0x1122334455667788)
- self.assertBuilderEquals(b, [0x88, 0x77, 0x66, 0x55,
- 0x44, 0x33, 0x22, 0x11])
-
- b = flatbuffers.Builder(0)
- b.PrependInt64(0x1122334455667788)
- self.assertBuilderEquals(b, [0x88, 0x77, 0x66, 0x55,
- 0x44, 0x33, 0x22, 0x11])
-
- def test_1xbyte_vector(self):
- b = flatbuffers.Builder(0)
- self.assertBuilderEquals(b, [])
- b.StartVector(flatbuffers.number_types.Uint8Flags.bytewidth, 1, 1)
- self.assertBuilderEquals(b, [0, 0, 0]) # align to 4bytes
- b.PrependByte(1)
- self.assertBuilderEquals(b, [1, 0, 0, 0])
- b.EndVector(1)
- self.assertBuilderEquals(b, [1, 0, 0, 0, 1, 0, 0, 0]) # padding
-
- def test_2xbyte_vector(self):
- b = flatbuffers.Builder(0)
- b.StartVector(flatbuffers.number_types.Uint8Flags.bytewidth, 2, 1)
- self.assertBuilderEquals(b, [0, 0]) # align to 4bytes
- b.PrependByte(1)
- self.assertBuilderEquals(b, [1, 0, 0])
- b.PrependByte(2)
- self.assertBuilderEquals(b, [2, 1, 0, 0])
- b.EndVector(2)
- self.assertBuilderEquals(b, [2, 0, 0, 0, 2, 1, 0, 0]) # padding
-
- def test_1xuint16_vector(self):
- b = flatbuffers.Builder(0)
- b.StartVector(flatbuffers.number_types.Uint16Flags.bytewidth, 1, 1)
- self.assertBuilderEquals(b, [0, 0]) # align to 4bytes
- b.PrependUint16(1)
- self.assertBuilderEquals(b, [1, 0, 0, 0])
- b.EndVector(1)
- self.assertBuilderEquals(b, [1, 0, 0, 0, 1, 0, 0, 0]) # padding
-
- def test_2xuint16_vector(self):
- b = flatbuffers.Builder(0)
- b.StartVector(flatbuffers.number_types.Uint16Flags.bytewidth, 2, 1)
- self.assertBuilderEquals(b, []) # align to 4bytes
- b.PrependUint16(0xABCD)
- self.assertBuilderEquals(b, [0xCD, 0xAB])
- b.PrependUint16(0xDCBA)
- self.assertBuilderEquals(b, [0xBA, 0xDC, 0xCD, 0xAB])
- b.EndVector(2)
- self.assertBuilderEquals(b, [2, 0, 0, 0, 0xBA, 0xDC, 0xCD, 0xAB])
-
- def test_create_ascii_string(self):
- b = flatbuffers.Builder(0)
- b.CreateString(u"foo", encoding='ascii')
-
- # 0-terminated, no pad:
- self.assertBuilderEquals(b, [3, 0, 0, 0, 'f', 'o', 'o', 0])
- b.CreateString(u"moop", encoding='ascii')
- # 0-terminated, 3-byte pad:
- self.assertBuilderEquals(b, [4, 0, 0, 0, 'm', 'o', 'o', 'p',
- 0, 0, 0, 0,
- 3, 0, 0, 0, 'f', 'o', 'o', 0])
-
- def test_create_utf8_string(self):
- b = flatbuffers.Builder(0)
- b.CreateString(u"Цлїςσδε")
- self.assertBuilderEquals(b, "\x0e\x00\x00\x00\xd0\xa6\xd0\xbb\xd1\x97" \
- "\xcf\x82\xcf\x83\xce\xb4\xce\xb5\x00\x00")
-
- b.CreateString(u"フムアムカモケモ")
- self.assertBuilderEquals(b, "\x18\x00\x00\x00\xef\xbe\x8c\xef\xbe\x91" \
- "\xef\xbd\xb1\xef\xbe\x91\xef\xbd\xb6\xef\xbe\x93\xef\xbd\xb9\xef" \
- "\xbe\x93\x00\x00\x00\x00\x0e\x00\x00\x00\xd0\xa6\xd0\xbb\xd1\x97" \
- "\xcf\x82\xcf\x83\xce\xb4\xce\xb5\x00\x00")
-
- def test_create_arbitrary_string(self):
- b = flatbuffers.Builder(0)
- s = "\x01\x02\x03"
- b.CreateString(s) # Default encoding is utf-8.
- # 0-terminated, no pad:
- self.assertBuilderEquals(b, [3, 0, 0, 0, 1, 2, 3, 0])
- s2 = "\x04\x05\x06\x07"
- b.CreateString(s2) # Default encoding is utf-8.
- # 0-terminated, 3-byte pad:
- self.assertBuilderEquals(b, [4, 0, 0, 0, 4, 5, 6, 7, 0, 0, 0, 0,
- 3, 0, 0, 0, 1, 2, 3, 0])
-
- def test_empty_vtable(self):
- b = flatbuffers.Builder(0)
- b.StartObject(0)
- self.assertBuilderEquals(b, [])
- b.EndObject()
- self.assertBuilderEquals(b, [4, 0, 4, 0, 4, 0, 0, 0])
-
- def test_vtable_with_one_true_bool(self):
- b = flatbuffers.Builder(0)
- self.assertBuilderEquals(b, [])
- b.StartObject(1)
- self.assertBuilderEquals(b, [])
- b.PrependBoolSlot(0, True, False)
- b.EndObject()
- self.assertBuilderEquals(b, [
- 6, 0, # vtable bytes
- 8, 0, # length of object including vtable offset
- 7, 0, # start of bool value
- 6, 0, 0, 0, # offset for start of vtable (int32)
- 0, 0, 0, # padded to 4 bytes
- 1, # bool value
- ])
-
- def test_vtable_with_one_default_bool(self):
- b = flatbuffers.Builder(0)
- self.assertBuilderEquals(b, [])
- b.StartObject(1)
- self.assertBuilderEquals(b, [])
- b.PrependBoolSlot(0, False, False)
- b.EndObject()
- self.assertBuilderEquals(b, [
- 6, 0, # vtable bytes
- 4, 0, # end of object from here
- 0, 0, # entry 1 is zero
- 6, 0, 0, 0, # offset for start of vtable (int32)
- ])
-
- def test_vtable_with_one_int16(self):
- b = flatbuffers.Builder(0)
- b.StartObject(1)
- b.PrependInt16Slot(0, 0x789A, 0)
- b.EndObject()
- self.assertBuilderEquals(b, [
- 6, 0, # vtable bytes
- 8, 0, # end of object from here
- 6, 0, # offset to value
- 6, 0, 0, 0, # offset for start of vtable (int32)
- 0, 0, # padding to 4 bytes
- 0x9A, 0x78,
- ])
-
- def test_vtable_with_two_int16(self):
- b = flatbuffers.Builder(0)
- b.StartObject(2)
- b.PrependInt16Slot(0, 0x3456, 0)
- b.PrependInt16Slot(1, 0x789A, 0)
- b.EndObject()
- self.assertBuilderEquals(b, [
- 8, 0, # vtable bytes
- 8, 0, # end of object from here
- 6, 0, # offset to value 0
- 4, 0, # offset to value 1
- 8, 0, 0, 0, # offset for start of vtable (int32)
- 0x9A, 0x78, # value 1
- 0x56, 0x34, # value 0
- ])
-
- def test_vtable_with_int16_and_bool(self):
- b = flatbuffers.Builder(0)
- b.StartObject(2)
- b.PrependInt16Slot(0, 0x3456, 0)
- b.PrependBoolSlot(1, True, False)
- b.EndObject()
- self.assertBuilderEquals(b, [
- 8, 0, # vtable bytes
- 8, 0, # end of object from here
- 6, 0, # offset to value 0
- 5, 0, # offset to value 1
- 8, 0, 0, 0, # offset for start of vtable (int32)
- 0, # padding
- 1, # value 1
- 0x56, 0x34, # value 0
- ])
-
- def test_vtable_with_empty_vector(self):
- b = flatbuffers.Builder(0)
- b.StartVector(flatbuffers.number_types.Uint8Flags.bytewidth, 0, 1)
- vecend = b.EndVector(0)
- b.StartObject(1)
- b.PrependUOffsetTRelativeSlot(0, vecend, 0)
- b.EndObject()
- self.assertBuilderEquals(b, [
- 6, 0, # vtable bytes
- 8, 0,
- 4, 0, # offset to vector offset
- 6, 0, 0, 0, # offset for start of vtable (int32)
- 4, 0, 0, 0,
- 0, 0, 0, 0, # length of vector (not in struct)
- ])
-
- def test_vtable_with_empty_vector_of_byte_and_some_scalars(self):
- b = flatbuffers.Builder(0)
- b.StartVector(flatbuffers.number_types.Uint8Flags.bytewidth, 0, 1)
- vecend = b.EndVector(0)
- b.StartObject(2)
- b.PrependInt16Slot(0, 55, 0)
- b.PrependUOffsetTRelativeSlot(1, vecend, 0)
- b.EndObject()
- self.assertBuilderEquals(b, [
- 8, 0, # vtable bytes
- 12, 0,
- 10, 0, # offset to value 0
- 4, 0, # offset to vector offset
- 8, 0, 0, 0, # vtable loc
- 8, 0, 0, 0, # value 1
- 0, 0, 55, 0, # value 0
-
- 0, 0, 0, 0, # length of vector (not in struct)
- ])
-
- def test_vtable_with_1_int16_and_2vector_of_int16(self):
- b = flatbuffers.Builder(0)
- b.StartVector(flatbuffers.number_types.Int16Flags.bytewidth, 2, 1)
- b.PrependInt16(0x1234)
- b.PrependInt16(0x5678)
- vecend = b.EndVector(2)
- b.StartObject(2)
- b.PrependUOffsetTRelativeSlot(1, vecend, 0)
- b.PrependInt16Slot(0, 55, 0)
- b.EndObject()
- self.assertBuilderEquals(b, [
- 8, 0, # vtable bytes
- 12, 0, # length of object
- 6, 0, # start of value 0 from end of vtable
- 8, 0, # start of value 1 from end of buffer
- 8, 0, 0, 0, # offset for start of vtable (int32)
- 0, 0, # padding
- 55, 0, # value 0
- 4, 0, 0, 0, # vector position from here
- 2, 0, 0, 0, # length of vector (uint32)
- 0x78, 0x56, # vector value 1
- 0x34, 0x12, # vector value 0
- ])
-
- def test_vtable_with_1_struct_of_1_int8__1_int16__1_int32(self):
- b = flatbuffers.Builder(0)
- b.StartObject(1)
- b.Prep(4+4+4, 0)
- b.PrependInt8(55)
- b.Pad(3)
- b.PrependInt16(0x1234)
- b.Pad(2)
- b.PrependInt32(0x12345678)
- structStart = b.Offset()
- b.PrependStructSlot(0, structStart, 0)
- b.EndObject()
- self.assertBuilderEquals(b, [
- 6, 0, # vtable bytes
- 16, 0, # end of object from here
- 4, 0, # start of struct from here
- 6, 0, 0, 0, # offset for start of vtable (int32)
- 0x78, 0x56, 0x34, 0x12, # value 2
- 0, 0, # padding
- 0x34, 0x12, # value 1
- 0, 0, 0, # padding
- 55, # value 0
- ])
-
- def test_vtable_with_1_vector_of_2_struct_of_2_int8(self):
- b = flatbuffers.Builder(0)
- b.StartVector(flatbuffers.number_types.Int8Flags.bytewidth*2, 2, 1)
- b.PrependInt8(33)
- b.PrependInt8(44)
- b.PrependInt8(55)
- b.PrependInt8(66)
- vecend = b.EndVector(2)
- b.StartObject(1)
- b.PrependUOffsetTRelativeSlot(0, vecend, 0)
- b.EndObject()
- self.assertBuilderEquals(b, [
- 6, 0, # vtable bytes
- 8, 0,
- 4, 0, # offset of vector offset
- 6, 0, 0, 0, # offset for start of vtable (int32)
- 4, 0, 0, 0, # vector start offset
-
- 2, 0, 0, 0, # vector length
- 66, # vector value 1,1
- 55, # vector value 1,0
- 44, # vector value 0,1
- 33, # vector value 0,0
- ])
-
- def test_table_with_some_elements(self):
- b = flatbuffers.Builder(0)
- b.StartObject(2)
- b.PrependInt8Slot(0, 33, 0)
- b.PrependInt16Slot(1, 66, 0)
- off = b.EndObject()
- b.Finish(off)
-
- self.assertBuilderEquals(b, [
- 12, 0, 0, 0, # root of table: points to vtable offset
-
- 8, 0, # vtable bytes
- 8, 0, # end of object from here
- 7, 0, # start of value 0
- 4, 0, # start of value 1
-
- 8, 0, 0, 0, # offset for start of vtable (int32)
-
- 66, 0, # value 1
- 0, # padding
- 33, # value 0
- ])
-
- def test__one_unfinished_table_and_one_finished_table(self):
- b = flatbuffers.Builder(0)
- b.StartObject(2)
- b.PrependInt8Slot(0, 33, 0)
- b.PrependInt8Slot(1, 44, 0)
- off = b.EndObject()
- b.Finish(off)
-
- b.StartObject(3)
- b.PrependInt8Slot(0, 55, 0)
- b.PrependInt8Slot(1, 66, 0)
- b.PrependInt8Slot(2, 77, 0)
- off = b.EndObject()
- b.Finish(off)
-
- self.assertBuilderEquals(b, [
- 16, 0, 0, 0, # root of table: points to object
- 0, 0, # padding
-
- 10, 0, # vtable bytes
- 8, 0, # size of object
- 7, 0, # start of value 0
- 6, 0, # start of value 1
- 5, 0, # start of value 2
- 10, 0, 0, 0, # offset for start of vtable (int32)
- 0, # padding
- 77, # value 2
- 66, # value 1
- 55, # value 0
-
- 12, 0, 0, 0, # root of table: points to object
-
- 8, 0, # vtable bytes
- 8, 0, # size of object
- 7, 0, # start of value 0
- 6, 0, # start of value 1
- 8, 0, 0, 0, # offset for start of vtable (int32)
- 0, 0, # padding
- 44, # value 1
- 33, # value 0
- ])
-
- def test_a_bunch_of_bools(self):
- b = flatbuffers.Builder(0)
- b.StartObject(8)
- b.PrependBoolSlot(0, True, False)
- b.PrependBoolSlot(1, True, False)
- b.PrependBoolSlot(2, True, False)
- b.PrependBoolSlot(3, True, False)
- b.PrependBoolSlot(4, True, False)
- b.PrependBoolSlot(5, True, False)
- b.PrependBoolSlot(6, True, False)
- b.PrependBoolSlot(7, True, False)
- off = b.EndObject()
- b.Finish(off)
-
- self.assertBuilderEquals(b, [
- 24, 0, 0, 0, # root of table: points to vtable offset
-
- 20, 0, # vtable bytes
- 12, 0, # size of object
- 11, 0, # start of value 0
- 10, 0, # start of value 1
- 9, 0, # start of value 2
- 8, 0, # start of value 3
- 7, 0, # start of value 4
- 6, 0, # start of value 5
- 5, 0, # start of value 6
- 4, 0, # start of value 7
- 20, 0, 0, 0, # vtable offset
-
- 1, # value 7
- 1, # value 6
- 1, # value 5
- 1, # value 4
- 1, # value 3
- 1, # value 2
- 1, # value 1
- 1, # value 0
- ])
-
- def test_three_bools(self):
- b = flatbuffers.Builder(0)
- b.StartObject(3)
- b.PrependBoolSlot(0, True, False)
- b.PrependBoolSlot(1, True, False)
- b.PrependBoolSlot(2, True, False)
- off = b.EndObject()
- b.Finish(off)
-
- self.assertBuilderEquals(b, [
- 16, 0, 0, 0, # root of table: points to vtable offset
-
- 0, 0, # padding
-
- 10, 0, # vtable bytes
- 8, 0, # size of object
- 7, 0, # start of value 0
- 6, 0, # start of value 1
- 5, 0, # start of value 2
- 10, 0, 0, 0, # vtable offset from here
-
- 0, # padding
- 1, # value 2
- 1, # value 1
- 1, # value 0
- ])
-
- def test_some_floats(self):
- b = flatbuffers.Builder(0)
- b.StartObject(1)
- b.PrependFloat32Slot(0, 1.0, 0.0)
- off = b.EndObject()
-
- self.assertBuilderEquals(b, [
- 6, 0, # vtable bytes
- 8, 0, # size of object
- 4, 0, # start of value 0
- 6, 0, 0, 0, # vtable offset
-
- 0, 0, 128, 63, # value 0
- ])
-
-
-def make_monster_from_generated_code():
- ''' Use generated code to build the example Monster. '''
-
- b = flatbuffers.Builder(0)
- string = b.CreateString("MyMonster")
- test1 = b.CreateString("test1")
- test2 = b.CreateString("test2")
- fred = b.CreateString("Fred")
-
- MyGame.Example.Monster.MonsterStartInventoryVector(b, 5)
- b.PrependByte(4)
- b.PrependByte(3)
- b.PrependByte(2)
- b.PrependByte(1)
- b.PrependByte(0)
- inv = b.EndVector(5)
-
- MyGame.Example.Monster.MonsterStart(b)
- MyGame.Example.Monster.MonsterAddName(b, fred)
- mon2 = MyGame.Example.Monster.MonsterEnd(b)
-
- MyGame.Example.Monster.MonsterStartTest4Vector(b, 2)
- MyGame.Example.Test.CreateTest(b, 10, 20)
- MyGame.Example.Test.CreateTest(b, 30, 40)
- test4 = b.EndVector(2)
-
- MyGame.Example.Monster.MonsterStartTestarrayofstringVector(b, 2)
- b.PrependUOffsetTRelative(test2)
- b.PrependUOffsetTRelative(test1)
- testArrayOfString = b.EndVector(2)
-
- MyGame.Example.Monster.MonsterStart(b)
-
- pos = MyGame.Example.Vec3.CreateVec3(b, 1.0, 2.0, 3.0, 3.0, 2, 5, 6)
- MyGame.Example.Monster.MonsterAddPos(b, pos)
-
- MyGame.Example.Monster.MonsterAddHp(b, 80)
- MyGame.Example.Monster.MonsterAddName(b, string)
- MyGame.Example.Monster.MonsterAddInventory(b, inv)
- MyGame.Example.Monster.MonsterAddTestType(b, 1)
- MyGame.Example.Monster.MonsterAddTest(b, mon2)
- MyGame.Example.Monster.MonsterAddTest4(b, test4)
- MyGame.Example.Monster.MonsterAddTestarrayofstring(b, testArrayOfString)
- mon = MyGame.Example.Monster.MonsterEnd(b)
-
- b.Finish(mon)
-
- return b.Bytes, b.Head()
-
-
-class TestAllCodePathsOfExampleSchema(unittest.TestCase):
- def setUp(self, *args, **kwargs):
- super(TestAllCodePathsOfExampleSchema, self).setUp(*args, **kwargs)
-
- b = flatbuffers.Builder(0)
- MyGame.Example.Monster.MonsterStart(b)
- gen_mon = MyGame.Example.Monster.MonsterEnd(b)
- b.Finish(gen_mon)
-
- self.mon = MyGame.Example.Monster.Monster.GetRootAsMonster(b.Bytes,
- b.Head())
-
- def test_default_monster_pos(self):
- self.assertTrue(self.mon.Pos() is None)
-
- def test_nondefault_monster_mana(self):
- b = flatbuffers.Builder(0)
- MyGame.Example.Monster.MonsterStart(b)
- MyGame.Example.Monster.MonsterAddMana(b, 50)
- mon = MyGame.Example.Monster.MonsterEnd(b)
- b.Finish(mon)
-
- got_mon = MyGame.Example.Monster.Monster.GetRootAsMonster(b.Bytes,
- b.Head())
- self.assertEqual(50, got_mon.Mana())
-
- def test_default_monster_hp(self):
- self.assertEqual(100, self.mon.Hp())
-
- def test_default_monster_name(self):
- self.assertEqual('', self.mon.Name())
-
- def test_default_monster_inventory_item(self):
- self.assertEqual(0, self.mon.Inventory(0))
-
- def test_default_monster_inventory_length(self):
- self.assertEqual(0, self.mon.InventoryLength())
-
- def test_default_monster_color(self):
- self.assertEqual(MyGame.Example.Color.Color.Blue, self.mon.Color())
-
- def test_nondefault_monster_color(self):
- b = flatbuffers.Builder(0)
- color = MyGame.Example.Color.Color.Red
- MyGame.Example.Monster.MonsterStart(b)
- MyGame.Example.Monster.MonsterAddColor(b, color)
- mon = MyGame.Example.Monster.MonsterEnd(b)
- b.Finish(mon)
-
- mon2 = MyGame.Example.Monster.Monster.GetRootAsMonster(b.Bytes,
- b.Head())
- self.assertEqual(MyGame.Example.Color.Color.Red, mon2.Color())
-
- def test_default_monster_testtype(self):
- self.assertEqual(0, self.mon.TestType())
-
- def test_default_monster_test_field(self):
- self.assertEqual(None, self.mon.Test())
-
- def test_default_monster_test4_item(self):
- self.assertEqual(None, self.mon.Test4(0))
-
- def test_default_monster_test4_length(self):
- self.assertEqual(0, self.mon.Test4Length())
-
- def test_default_monster_testarrayofstring(self):
- self.assertEqual("", self.mon.Testarrayofstring(0))
-
- def test_default_monster_testarrayofstring_length(self):
- self.assertEqual(0, self.mon.TestarrayofstringLength())
-
- def test_default_monster_testarrayoftables(self):
- self.assertEqual(None, self.mon.Testarrayoftables(0))
-
- def test_nondefault_monster_testarrayoftables(self):
- b = flatbuffers.Builder(0)
-
- # make a child Monster within a vector of Monsters:
- MyGame.Example.Monster.MonsterStart(b)
- MyGame.Example.Monster.MonsterAddHp(b, 99)
- sub_monster = MyGame.Example.Monster.MonsterEnd(b)
-
- # build the vector:
- MyGame.Example.Monster.MonsterStartTestarrayoftablesVector(b, 1)
- b.PrependUOffsetTRelative(sub_monster)
- vec = b.EndVector(1)
-
- # make the parent monster and include the vector of Monster:
- MyGame.Example.Monster.MonsterStart(b)
- MyGame.Example.Monster.MonsterAddTestarrayoftables(b, vec)
- mon = MyGame.Example.Monster.MonsterEnd(b)
- b.Finish(mon)
-
- # inspect the resulting data:
- mon2 = MyGame.Example.Monster.Monster.GetRootAsMonster(b.Output(), 0)
- self.assertEqual(99, mon2.Testarrayoftables(0).Hp())
- self.assertEqual(1, mon2.TestarrayoftablesLength())
-
- def test_default_monster_testarrayoftables_length(self):
- self.assertEqual(0, self.mon.TestarrayoftablesLength())
-
- def test_nondefault_monster_enemy(self):
- b = flatbuffers.Builder(0)
-
- # make an Enemy object:
- MyGame.Example.Monster.MonsterStart(b)
- MyGame.Example.Monster.MonsterAddHp(b, 88)
- enemy = MyGame.Example.Monster.MonsterEnd(b)
- b.Finish(enemy)
-
- # make the parent monster and include the vector of Monster:
- MyGame.Example.Monster.MonsterStart(b)
- MyGame.Example.Monster.MonsterAddEnemy(b, enemy)
- mon = MyGame.Example.Monster.MonsterEnd(b)
- b.Finish(mon)
-
- # inspect the resulting data:
- mon2 = MyGame.Example.Monster.Monster.GetRootAsMonster(b.Bytes,
- b.Head())
- self.assertEqual(88, mon2.Enemy().Hp())
-
- def test_default_monster_testnestedflatbuffer(self):
- self.assertEqual(0, self.mon.Testnestedflatbuffer(0))
-
- def test_default_monster_testnestedflatbuffer_length(self):
- self.assertEqual(0, self.mon.TestnestedflatbufferLength())
-
- def test_nondefault_monster_testnestedflatbuffer(self):
- b = flatbuffers.Builder(0)
-
- MyGame.Example.Monster.MonsterStartTestnestedflatbufferVector(b, 3)
- b.PrependByte(4)
- b.PrependByte(2)
- b.PrependByte(0)
- sub_buf = b.EndVector(3)
-
- # make the parent monster and include the vector of Monster:
- MyGame.Example.Monster.MonsterStart(b)
- MyGame.Example.Monster.MonsterAddTestnestedflatbuffer(b, sub_buf)
- mon = MyGame.Example.Monster.MonsterEnd(b)
- b.Finish(mon)
-
- # inspect the resulting data:
- mon2 = MyGame.Example.Monster.Monster.GetRootAsMonster(b.Bytes,
- b.Head())
- self.assertEqual(3, mon2.TestnestedflatbufferLength())
- self.assertEqual(0, mon2.Testnestedflatbuffer(0))
- self.assertEqual(2, mon2.Testnestedflatbuffer(1))
- self.assertEqual(4, mon2.Testnestedflatbuffer(2))
-
- def test_nondefault_monster_testempty(self):
- b = flatbuffers.Builder(0)
-
- # make a Stat object:
- MyGame.Example.Stat.StatStart(b)
- MyGame.Example.Stat.StatAddVal(b, 123)
- my_stat = MyGame.Example.Stat.StatEnd(b)
- b.Finish(my_stat)
-
- # include the stat object in a monster:
- MyGame.Example.Monster.MonsterStart(b)
- MyGame.Example.Monster.MonsterAddTestempty(b, my_stat)
- mon = MyGame.Example.Monster.MonsterEnd(b)
- b.Finish(mon)
-
- # inspect the resulting data:
- mon2 = MyGame.Example.Monster.Monster.GetRootAsMonster(b.Bytes,
- b.Head())
- self.assertEqual(123, mon2.Testempty().Val())
-
- def test_default_monster_testbool(self):
- self.assertFalse(self.mon.Testbool())
-
- def test_nondefault_monster_testbool(self):
- b = flatbuffers.Builder(0)
- MyGame.Example.Monster.MonsterStart(b)
- MyGame.Example.Monster.MonsterAddTestbool(b, True)
- mon = MyGame.Example.Monster.MonsterEnd(b)
- b.Finish(mon)
-
- # inspect the resulting data:
- mon2 = MyGame.Example.Monster.Monster.GetRootAsMonster(b.Bytes,
- b.Head())
- self.assertTrue(mon2.Testbool())
-
- def test_default_monster_testhashes(self):
- self.assertEqual(0, self.mon.Testhashs32Fnv1())
- self.assertEqual(0, self.mon.Testhashu32Fnv1())
- self.assertEqual(0, self.mon.Testhashs64Fnv1())
- self.assertEqual(0, self.mon.Testhashu64Fnv1())
- self.assertEqual(0, self.mon.Testhashs32Fnv1a())
- self.assertEqual(0, self.mon.Testhashu32Fnv1a())
- self.assertEqual(0, self.mon.Testhashs64Fnv1a())
- self.assertEqual(0, self.mon.Testhashu64Fnv1a())
-
- def test_nondefault_monster_testhashes(self):
- b = flatbuffers.Builder(0)
- MyGame.Example.Monster.MonsterStart(b)
- MyGame.Example.Monster.MonsterAddTesthashs32Fnv1(b, 1)
- MyGame.Example.Monster.MonsterAddTesthashu32Fnv1(b, 2)
- MyGame.Example.Monster.MonsterAddTesthashs64Fnv1(b, 3)
- MyGame.Example.Monster.MonsterAddTesthashu64Fnv1(b, 4)
- MyGame.Example.Monster.MonsterAddTesthashs32Fnv1a(b, 5)
- MyGame.Example.Monster.MonsterAddTesthashu32Fnv1a(b, 6)
- MyGame.Example.Monster.MonsterAddTesthashs64Fnv1a(b, 7)
- MyGame.Example.Monster.MonsterAddTesthashu64Fnv1a(b, 8)
- mon = MyGame.Example.Monster.MonsterEnd(b)
- b.Finish(mon)
-
- # inspect the resulting data:
- mon2 = MyGame.Example.Monster.Monster.GetRootAsMonster(b.Bytes,
- b.Head())
- self.assertEqual(1, mon2.Testhashs32Fnv1())
- self.assertEqual(2, mon2.Testhashu32Fnv1())
- self.assertEqual(3, mon2.Testhashs64Fnv1())
- self.assertEqual(4, mon2.Testhashu64Fnv1())
- self.assertEqual(5, mon2.Testhashs32Fnv1a())
- self.assertEqual(6, mon2.Testhashu32Fnv1a())
- self.assertEqual(7, mon2.Testhashs64Fnv1a())
- self.assertEqual(8, mon2.Testhashu64Fnv1a())
-
- def test_getrootas_for_nonroot_table(self):
- b = flatbuffers.Builder(0)
- string = b.CreateString("MyStat")
-
- MyGame.Example.Stat.StatStart(b)
- MyGame.Example.Stat.StatAddId(b, string)
- MyGame.Example.Stat.StatAddVal(b, 12345678)
- MyGame.Example.Stat.StatAddCount(b, 12345)
- stat = MyGame.Example.Stat.StatEnd(b)
- b.Finish(stat)
-
- stat2 = MyGame.Example.Stat.Stat.GetRootAsStat(b.Bytes, b.Head())
-
- self.assertEqual(b"MyStat", stat2.Id())
- self.assertEqual(12345678, stat2.Val())
- self.assertEqual(12345, stat2.Count())
-
-
-class TestVtableDeduplication(unittest.TestCase):
- ''' TestVtableDeduplication verifies that vtables are deduplicated. '''
-
- def test_vtable_deduplication(self):
- b = flatbuffers.Builder(0)
-
- b.StartObject(4)
- b.PrependByteSlot(0, 0, 0)
- b.PrependByteSlot(1, 11, 0)
- b.PrependByteSlot(2, 22, 0)
- b.PrependInt16Slot(3, 33, 0)
- obj0 = b.EndObject()
-
- b.StartObject(4)
- b.PrependByteSlot(0, 0, 0)
- b.PrependByteSlot(1, 44, 0)
- b.PrependByteSlot(2, 55, 0)
- b.PrependInt16Slot(3, 66, 0)
- obj1 = b.EndObject()
-
- b.StartObject(4)
- b.PrependByteSlot(0, 0, 0)
- b.PrependByteSlot(1, 77, 0)
- b.PrependByteSlot(2, 88, 0)
- b.PrependInt16Slot(3, 99, 0)
- obj2 = b.EndObject()
-
- got = b.Bytes[b.Head():]
-
- want = bytearray([
- 240, 255, 255, 255, # == -12. offset to dedupped vtable.
- 99, 0,
- 88,
- 77,
- 248, 255, 255, 255, # == -8. offset to dedupped vtable.
- 66, 0,
- 55,
- 44,
- 12, 0,
- 8, 0,
- 0, 0,
- 7, 0,
- 6, 0,
- 4, 0,
- 12, 0, 0, 0,
- 33, 0,
- 22,
- 11,
- ])
-
- self.assertEqual((len(want), want), (len(got), got))
-
- table0 = flatbuffers.table.Table(b.Bytes, len(b.Bytes) - obj0)
- table1 = flatbuffers.table.Table(b.Bytes, len(b.Bytes) - obj1)
- table2 = flatbuffers.table.Table(b.Bytes, len(b.Bytes) - obj2)
-
- def _checkTable(tab, voffsett_value, b, c, d):
- # vtable size
- got = tab.GetVOffsetTSlot(0, 0)
- self.assertEqual(12, got, 'case 0, 0')
-
- # object size
- got = tab.GetVOffsetTSlot(2, 0)
- self.assertEqual(8, got, 'case 2, 0')
-
- # default value
- got = tab.GetVOffsetTSlot(4, 0)
- self.assertEqual(voffsett_value, got, 'case 4, 0')
-
- got = tab.GetSlot(6, 0, N.Uint8Flags)
- self.assertEqual(b, got, 'case 6, 0')
-
- val = tab.GetSlot(8, 0, N.Uint8Flags)
- self.assertEqual(c, val, 'failed 8, 0')
-
- got = tab.GetSlot(10, 0, N.Uint8Flags)
- self.assertEqual(d, got, 'failed 10, 0')
-
- _checkTable(table0, 0, 11, 22, 33)
- _checkTable(table1, 0, 44, 55, 66)
- _checkTable(table2, 0, 77, 88, 99)
-
-
-class TestExceptions(unittest.TestCase):
- def test_object_is_nested_error(self):
- b = flatbuffers.Builder(0)
- b.StartObject(0)
- assertRaises(self, lambda: b.StartObject(0),
- flatbuffers.builder.IsNestedError)
-
- def test_object_is_not_nested_error(self):
- b = flatbuffers.Builder(0)
- assertRaises(self, lambda: b.EndObject(),
- flatbuffers.builder.IsNotNestedError)
-
- def test_struct_is_not_inline_error(self):
- b = flatbuffers.Builder(0)
- b.StartObject(0)
- assertRaises(self, lambda: b.PrependStructSlot(0, 1, 0),
- flatbuffers.builder.StructIsNotInlineError)
-
- def test_unreachable_error(self):
- b = flatbuffers.Builder(0)
- assertRaises(self, lambda: b.PrependUOffsetTRelative(1),
- flatbuffers.builder.OffsetArithmeticError)
-
- def test_create_string_is_nested_error(self):
- b = flatbuffers.Builder(0)
- b.StartObject(0)
- s = 'test1'
- assertRaises(self, lambda: b.CreateString(s),
- flatbuffers.builder.IsNestedError)
-
- def test_finished_bytes_error(self):
- b = flatbuffers.Builder(0)
- assertRaises(self, lambda: b.Output(),
- flatbuffers.builder.BuilderNotFinishedError)
-
-
-def CheckAgainstGoldDataGo():
- try:
- gen_buf, gen_off = make_monster_from_generated_code()
- fn = 'monsterdata_go_wire.mon'
- if not os.path.exists(fn):
- print('Go-generated data does not exist, failed.')
- return False
-
- # would like to use a context manager here, but it's less
- # backwards-compatible:
- f = open(fn, 'rb')
- go_wire_data = f.read()
- f.close()
-
- CheckReadBuffer(bytearray(go_wire_data), 0)
- if not bytearray(gen_buf[gen_off:]) == bytearray(go_wire_data):
- raise AssertionError('CheckAgainstGoldDataGo failed')
- except:
- print('Failed to test against Go-generated test data.')
- return False
-
- print('Can read Go-generated test data, and Python generates bytewise identical data.')
- return True
-
-
-def CheckAgainstGoldDataJava():
- try:
- gen_buf, gen_off = make_monster_from_generated_code()
- fn = 'monsterdata_java_wire.mon'
- if not os.path.exists(fn):
- print('Java-generated data does not exist, failed.')
- return False
- f = open(fn, 'rb')
- java_wire_data = f.read()
- f.close()
-
- CheckReadBuffer(bytearray(java_wire_data), 0)
- except:
- print('Failed to read Java-generated test data.')
- return False
-
- print('Can read Java-generated test data.')
- return True
-
-
-class LCG(object):
- ''' Include simple random number generator to ensure results will be the
- same cross platform.
- http://en.wikipedia.org/wiki/Park%E2%80%93Miller_random_number_generator '''
-
- __slots__ = ['n']
-
- InitialLCGSeed = 48271
-
- def __init__(self):
- self.n = self.InitialLCGSeed
-
- def Reset(self):
- self.n = self.InitialLCGSeed
-
- def Next(self):
- self.n = ((self.n * 279470273) % 4294967291) & 0xFFFFFFFF
- return self.n
-
-
-def BenchmarkVtableDeduplication(count):
- '''
- BenchmarkVtableDeduplication measures the speed of vtable deduplication
- by creating `prePop` vtables, then populating `count` objects with a
- different single vtable.
-
- When count is large (as in long benchmarks), memory usage may be high.
- '''
-
- prePop = 10
- builder = flatbuffers.Builder(0)
-
- # pre-populate some vtables:
- for i in compat_range(prePop):
- builder.StartObject(i)
- for j in compat_range(i):
- builder.PrependInt16Slot(j, j, 0)
- builder.EndObject()
-
- # benchmark deduplication of a new vtable:
- def f():
- builder.StartObject(prePop)
- for j in compat_range(prePop):
- builder.PrependInt16Slot(j, j, 0)
- builder.EndObject()
-
- duration = timeit.timeit(stmt=f, number=count)
- rate = float(count) / duration
- print(('vtable deduplication rate: %.2f/sec' % rate))
-
-
-def BenchmarkCheckReadBuffer(count, buf, off):
- '''
- BenchmarkCheckReadBuffer measures the speed of flatbuffer reading
- by re-using the CheckReadBuffer function with the gold data.
- '''
-
- def f():
- CheckReadBuffer(buf, off)
-
- duration = timeit.timeit(stmt=f, number=count)
- rate = float(count) / duration
- data = float(len(buf) * count) / float(1024 * 1024)
- data_rate = data / float(duration)
-
- print(('traversed %d %d-byte flatbuffers in %.2fsec: %.2f/sec, %.2fMB/sec')
- % (count, len(buf), duration, rate, data_rate))
-
-
-def BenchmarkMakeMonsterFromGeneratedCode(count, length):
- '''
- BenchmarkMakeMonsterFromGeneratedCode measures the speed of flatbuffer
- creation by re-using the make_monster_from_generated_code function for
- generating gold data examples.
- '''
-
- duration = timeit.timeit(stmt=make_monster_from_generated_code,
- number=count)
- rate = float(count) / duration
- data = float(length * count) / float(1024 * 1024)
- data_rate = data / float(duration)
-
- print(('built %d %d-byte flatbuffers in %.2fsec: %.2f/sec, %.2fMB/sec' % \
- (count, length, duration, rate, data_rate)))
-
-
-def backward_compatible_run_tests(**kwargs):
- if PY_VERSION < (2, 6):
- sys.stderr.write("Python version less than 2.6 are not supported")
- sys.stderr.flush()
- return False
-
- # python2.6 has a reduced-functionality unittest.main function:
- if PY_VERSION == (2, 6):
- try:
- unittest.main(**kwargs)
- except SystemExit as e:
- if not e.code == 0:
- return False
- return True
-
- # python2.7 and above let us not exit once unittest.main is run:
- kwargs['exit'] = False
- kwargs['verbosity'] = 0
- ret = unittest.main(**kwargs)
- if ret.result.errors or ret.result.failures:
- return False
-
- return True
-
-def main():
- import os
- import sys
- if not len(sys.argv) == 4:
- sys.stderr.write('Usage: %s <benchmark vtable count>'
- '<benchmark read count> <benchmark build count>\n'
- % sys.argv[0])
- sys.stderr.write(' Provide COMPARE_GENERATED_TO_GO=1 to check'
- 'for bytewise comparison to Go data.\n')
- sys.stderr.write(' Provide COMPARE_GENERATED_TO_JAVA=1 to check'
- 'for bytewise comparison to Java data.\n')
- sys.stderr.flush()
- sys.exit(1)
-
- kwargs = dict(argv=sys.argv[:-3])
-
- # run tests, and run some language comparison checks if needed:
- success = backward_compatible_run_tests(**kwargs)
- if success and os.environ.get('COMPARE_GENERATED_TO_GO', 0) == "1":
- success = success and CheckAgainstGoldDataGo()
- if success and os.environ.get('COMPARE_GENERATED_TO_JAVA', 0) == "1":
- success = success and CheckAgainstGoldDataJava()
-
- if not success:
- sys.stderr.write('Tests failed, skipping benchmarks.\n')
- sys.stderr.flush()
- sys.exit(1)
-
- # run benchmarks (if 0, they will be a noop):
- bench_vtable = int(sys.argv[1])
- bench_traverse = int(sys.argv[2])
- bench_build = int(sys.argv[3])
- if bench_vtable:
- BenchmarkVtableDeduplication(bench_vtable)
- if bench_traverse:
- buf, off = make_monster_from_generated_code()
- BenchmarkCheckReadBuffer(bench_traverse, buf, off)
- if bench_build:
- buf, off = make_monster_from_generated_code()
- BenchmarkMakeMonsterFromGeneratedCode(bench_build, len(buf))
-
-if __name__ == '__main__':
- main()
diff --git a/third_party/flatbuffers/tests/test.cpp b/third_party/flatbuffers/tests/test.cpp
deleted file mode 100644
index cc632bb..0000000
--- a/third_party/flatbuffers/tests/test.cpp
+++ /dev/null
@@ -1,1558 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "flatbuffers/flatbuffers.h"
-#include "flatbuffers/idl.h"
-#include "flatbuffers/util.h"
-
-#include "monster_test_generated.h"
-#include "namespace_test/namespace_test1_generated.h"
-#include "namespace_test/namespace_test2_generated.h"
-#include "union_vector/union_vector_generated.h"
-
-#ifndef FLATBUFFERS_CPP98_STL
- #include <random>
-#endif
-
-#include "flatbuffers/flexbuffers.h"
-
-using namespace MyGame::Example;
-
-#ifdef __ANDROID__
- #include <android/log.h>
- #define TEST_OUTPUT_LINE(...) \
- __android_log_print(ANDROID_LOG_INFO, "FlatBuffers", __VA_ARGS__)
- #define FLATBUFFERS_NO_FILE_TESTS
-#else
- #define TEST_OUTPUT_LINE(...) \
- { printf(__VA_ARGS__); printf("\n"); }
-#endif
-
-int testing_fails = 0;
-
-void TestFail(const char *expval, const char *val, const char *exp,
- const char *file, int line) {
- TEST_OUTPUT_LINE("TEST FAILED: %s:%d, %s (%s) != %s", file, line,
- exp, expval, val);
- assert(0);
- testing_fails++;
-}
-
-void TestEqStr(const char *expval, const char *val, const char *exp,
- const char *file, int line) {
- if (strcmp(expval, val) != 0) {
- TestFail(expval, val, exp, file, line);
- }
-}
-
-template<typename T, typename U>
-void TestEq(T expval, U val, const char *exp, const char *file, int line) {
- if (U(expval) != val) {
- TestFail(flatbuffers::NumToString(expval).c_str(),
- flatbuffers::NumToString(val).c_str(),
- exp, file, line);
- }
-}
-
-#define TEST_EQ(exp, val) TestEq(exp, val, #exp, __FILE__, __LINE__)
-#define TEST_NOTNULL(exp) TestEq(exp == NULL, false, #exp, __FILE__, __LINE__)
-#define TEST_EQ_STR(exp, val) TestEqStr(exp, val, #exp, __FILE__, __LINE__)
-
-// Include simple random number generator to ensure results will be the
-// same cross platform.
-// http://en.wikipedia.org/wiki/Park%E2%80%93Miller_random_number_generator
-uint32_t lcg_seed = 48271;
-uint32_t lcg_rand() {
- return lcg_seed = ((uint64_t)lcg_seed * 279470273UL) % 4294967291UL;
-}
-void lcg_reset() { lcg_seed = 48271; }
-
-// example of how to build up a serialized buffer algorithmically:
-flatbuffers::unique_ptr_t CreateFlatBufferTest(std::string &buffer) {
- flatbuffers::FlatBufferBuilder builder;
-
- auto vec = Vec3(1, 2, 3, 0, Color_Red, Test(10, 20));
-
- auto name = builder.CreateString("MyMonster");
-
- unsigned char inv_data[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
- auto inventory = builder.CreateVector(inv_data, 10);
-
- // Alternatively, create the vector first, and fill in data later:
- // unsigned char *inv_buf = nullptr;
- // auto inventory = builder.CreateUninitializedVector<unsigned char>(
- // 10, &inv_buf);
- // memcpy(inv_buf, inv_data, 10);
-
- Test tests[] = { Test(10, 20), Test(30, 40) };
- auto testv = builder.CreateVectorOfStructs(tests, 2);
-
- // create monster with very few fields set:
- // (same functionality as CreateMonster below, but sets fields manually)
- flatbuffers::Offset<Monster> mlocs[3];
- auto fred = builder.CreateString("Fred");
- auto barney = builder.CreateString("Barney");
- auto wilma = builder.CreateString("Wilma");
- MonsterBuilder mb1(builder);
- mb1.add_name(fred);
- mlocs[0] = mb1.Finish();
- MonsterBuilder mb2(builder);
- mb2.add_name(barney);
- mb2.add_hp(1000);
- mlocs[1] = mb2.Finish();
- MonsterBuilder mb3(builder);
- mb3.add_name(wilma);
- mlocs[2] = mb3.Finish();
-
- // Create an array of strings. Also test string pooling, and lambdas.
- const char *names[] = { "bob", "fred", "bob", "fred" };
- auto vecofstrings =
- builder.CreateVector<flatbuffers::Offset<flatbuffers::String>>(4,
- [&](size_t i) {
- return builder.CreateSharedString(names[i]);
- });
-
- // Creating vectors of strings in one convenient call.
- std::vector<std::string> names2;
- names2.push_back("jane");
- names2.push_back("mary");
- auto vecofstrings2 = builder.CreateVectorOfStrings(names2);
-
- // Create an array of sorted tables, can be used with binary search when read:
- auto vecoftables = builder.CreateVectorOfSortedTables(mlocs, 3);
-
- // Create an array of sorted structs,
- // can be used with binary search when read:
- std::vector<Ability> abilities;
- abilities.push_back(Ability(4, 40));
- abilities.push_back(Ability(3, 30));
- abilities.push_back(Ability(2, 20));
- abilities.push_back(Ability(1, 10));
- auto vecofstructs = builder.CreateVectorOfSortedStructs(&abilities);
-
- // shortcut for creating monster with all fields set:
- auto mloc = CreateMonster(builder, &vec, 150, 80, name, inventory, Color_Blue,
- Any_Monster, mlocs[1].Union(), // Store a union.
- testv, vecofstrings, vecoftables, 0, 0, 0, false,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.14159f, 3.0f, 0.0f,
- vecofstrings2, vecofstructs);
-
- FinishMonsterBuffer(builder, mloc);
-
- #ifdef FLATBUFFERS_TEST_VERBOSE
- // print byte data for debugging:
- auto p = builder.GetBufferPointer();
- for (flatbuffers::uoffset_t i = 0; i < builder.GetSize(); i++)
- printf("%d ", p[i]);
- #endif
-
- // return the buffer for the caller to use.
- auto bufferpointer =
- reinterpret_cast<const char *>(builder.GetBufferPointer());
- buffer.assign(bufferpointer, bufferpointer + builder.GetSize());
-
- return builder.ReleaseBufferPointer();
-}
-
-// example of accessing a buffer loaded in memory:
-void AccessFlatBufferTest(const uint8_t *flatbuf, size_t length,
- bool pooled = true) {
-
- // First, verify the buffers integrity (optional)
- flatbuffers::Verifier verifier(flatbuf, length);
- TEST_EQ(VerifyMonsterBuffer(verifier), true);
-
- std::vector<uint8_t> test_buff;
- test_buff.resize(length * 2);
- std::memcpy(&test_buff[0], flatbuf , length);
- std::memcpy(&test_buff[length], flatbuf , length);
-
- flatbuffers::Verifier verifierl(&test_buff[0], length - 1);
- TEST_EQ(VerifyMonsterBuffer(verifierl), false);
- TEST_EQ(verifierl.GetComputedSize(), 0);
-
- flatbuffers::Verifier verifier1(&test_buff[0], length);
- TEST_EQ(VerifyMonsterBuffer(verifier1), true);
- TEST_EQ(verifier1.GetComputedSize(), length);
-
- flatbuffers::Verifier verifier2(&test_buff[length], length);
- TEST_EQ(VerifyMonsterBuffer(verifier2), true);
- TEST_EQ(verifier2.GetComputedSize(), length);
-
- TEST_EQ(strcmp(MonsterIdentifier(), "MONS"), 0);
- TEST_EQ(MonsterBufferHasIdentifier(flatbuf), true);
- TEST_EQ(strcmp(MonsterExtension(), "mon"), 0);
-
- // Access the buffer from the root.
- auto monster = GetMonster(flatbuf);
-
- TEST_EQ(monster->hp(), 80);
- TEST_EQ(monster->mana(), 150); // default
- TEST_EQ_STR(monster->name()->c_str(), "MyMonster");
- // Can't access the following field, it is deprecated in the schema,
- // which means accessors are not generated:
- // monster.friendly()
-
- auto pos = monster->pos();
- TEST_NOTNULL(pos);
- TEST_EQ(pos->z(), 3);
- TEST_EQ(pos->test3().a(), 10);
- TEST_EQ(pos->test3().b(), 20);
-
- auto inventory = monster->inventory();
- TEST_EQ(VectorLength(inventory), 10UL); // Works even if inventory is null.
- TEST_NOTNULL(inventory);
- unsigned char inv_data[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
- for (auto it = inventory->begin(); it != inventory->end(); ++it)
- TEST_EQ(*it, inv_data[it - inventory->begin()]);
-
- TEST_EQ(monster->color(), Color_Blue);
-
- // Example of accessing a union:
- TEST_EQ(monster->test_type(), Any_Monster); // First make sure which it is.
- auto monster2 = reinterpret_cast<const Monster *>(monster->test());
- TEST_NOTNULL(monster2);
- TEST_EQ_STR(monster2->name()->c_str(), "Fred");
-
- // Example of accessing a vector of strings:
- auto vecofstrings = monster->testarrayofstring();
- TEST_EQ(vecofstrings->Length(), 4U);
- TEST_EQ_STR(vecofstrings->Get(0)->c_str(), "bob");
- TEST_EQ_STR(vecofstrings->Get(1)->c_str(), "fred");
- if (pooled) {
- // These should have pointer equality because of string pooling.
- TEST_EQ(vecofstrings->Get(0)->c_str(), vecofstrings->Get(2)->c_str());
- TEST_EQ(vecofstrings->Get(1)->c_str(), vecofstrings->Get(3)->c_str());
- }
-
- auto vecofstrings2 = monster->testarrayofstring2();
- if (vecofstrings2) {
- TEST_EQ(vecofstrings2->Length(), 2U);
- TEST_EQ_STR(vecofstrings2->Get(0)->c_str(), "jane");
- TEST_EQ_STR(vecofstrings2->Get(1)->c_str(), "mary");
- }
-
- // Example of accessing a vector of tables:
- auto vecoftables = monster->testarrayoftables();
- TEST_EQ(vecoftables->Length(), 3U);
- for (auto it = vecoftables->begin(); it != vecoftables->end(); ++it)
- TEST_EQ(strlen(it->name()->c_str()) >= 4, true);
- TEST_EQ_STR(vecoftables->Get(0)->name()->c_str(), "Barney");
- TEST_EQ(vecoftables->Get(0)->hp(), 1000);
- TEST_EQ_STR(vecoftables->Get(1)->name()->c_str(), "Fred");
- TEST_EQ_STR(vecoftables->Get(2)->name()->c_str(), "Wilma");
- TEST_NOTNULL(vecoftables->LookupByKey("Barney"));
- TEST_NOTNULL(vecoftables->LookupByKey("Fred"));
- TEST_NOTNULL(vecoftables->LookupByKey("Wilma"));
-
- // Test accessing a vector of sorted structs
- auto vecofstructs = monster->testarrayofsortedstruct();
- if (vecofstructs) { // not filled in monster_test.bfbs
- for (flatbuffers::uoffset_t i = 0; i < vecofstructs->size()-1; i++) {
- auto left = vecofstructs->Get(i);
- auto right = vecofstructs->Get(i+1);
- TEST_EQ(true, (left->KeyCompareLessThan(right)));
- }
- TEST_NOTNULL(vecofstructs->LookupByKey(3));
- TEST_EQ(static_cast<const Ability*>(nullptr), vecofstructs->LookupByKey(5));
- }
-
- // Since Flatbuffers uses explicit mechanisms to override the default
- // compiler alignment, double check that the compiler indeed obeys them:
- // (Test consists of a short and byte):
- TEST_EQ(flatbuffers::AlignOf<Test>(), 2UL);
- TEST_EQ(sizeof(Test), 4UL);
-
- auto tests = monster->test4();
- TEST_NOTNULL(tests);
- auto test_0 = tests->Get(0);
- auto test_1 = tests->Get(1);
- TEST_EQ(test_0->a(), 10);
- TEST_EQ(test_0->b(), 20);
- TEST_EQ(test_1->a(), 30);
- TEST_EQ(test_1->b(), 40);
- for (auto it = tests->begin(); it != tests->end(); ++it) {
- TEST_EQ(it->a() == 10 || it->a() == 30, true); // Just testing iterators.
- }
-
- // Checking for presence of fields:
- TEST_EQ(flatbuffers::IsFieldPresent(monster, Monster::VT_HP), true);
- TEST_EQ(flatbuffers::IsFieldPresent(monster, Monster::VT_MANA), false);
-
- // Obtaining a buffer from a root:
- TEST_EQ(GetBufferStartFromRootPointer(monster), flatbuf);
-}
-
-// Change a FlatBuffer in-place, after it has been constructed.
-void MutateFlatBuffersTest(uint8_t *flatbuf, std::size_t length) {
- // Get non-const pointer to root.
- auto monster = GetMutableMonster(flatbuf);
-
- // Each of these tests mutates, then tests, then set back to the original,
- // so we can test that the buffer in the end still passes our original test.
- auto hp_ok = monster->mutate_hp(10);
- TEST_EQ(hp_ok, true); // Field was present.
- TEST_EQ(monster->hp(), 10);
- // Mutate to default value
- auto hp_ok_default = monster->mutate_hp(100);
- TEST_EQ(hp_ok_default, true); // Field was present.
- TEST_EQ(monster->hp(), 100);
- // Test that mutate to default above keeps field valid for further mutations
- auto hp_ok_2 = monster->mutate_hp(20);
- TEST_EQ(hp_ok_2, true);
- TEST_EQ(monster->hp(), 20);
- monster->mutate_hp(80);
-
- // Monster originally at 150 mana (default value)
- auto mana_default_ok = monster->mutate_mana(150); // Mutate to default value.
- TEST_EQ(mana_default_ok, true); // Mutation should succeed, because default value.
- TEST_EQ(monster->mana(), 150);
- auto mana_ok = monster->mutate_mana(10);
- TEST_EQ(mana_ok, false); // Field was NOT present, because default value.
- TEST_EQ(monster->mana(), 150);
-
- // Mutate structs.
- auto pos = monster->mutable_pos();
- auto test3 = pos->mutable_test3(); // Struct inside a struct.
- test3.mutate_a(50); // Struct fields never fail.
- TEST_EQ(test3.a(), 50);
- test3.mutate_a(10);
-
- // Mutate vectors.
- auto inventory = monster->mutable_inventory();
- inventory->Mutate(9, 100);
- TEST_EQ(inventory->Get(9), 100);
- inventory->Mutate(9, 9);
-
- auto tables = monster->mutable_testarrayoftables();
- auto first = tables->GetMutableObject(0);
- TEST_EQ(first->hp(), 1000);
- first->mutate_hp(0);
- TEST_EQ(first->hp(), 0);
- first->mutate_hp(1000);
-
- // Run the verifier and the regular test to make sure we didn't trample on
- // anything.
- AccessFlatBufferTest(flatbuf, length);
-}
-
-// Unpack a FlatBuffer into objects.
-void ObjectFlatBuffersTest(uint8_t *flatbuf) {
- // Optional: we can specify resolver and rehasher functions to turn hashed
- // strings into object pointers and back, to implement remote references
- // and such.
- auto resolver = flatbuffers::resolver_function_t(
- [](void **pointer_adr, flatbuffers::hash_value_t hash) {
- (void)pointer_adr;
- (void)hash;
- // Don't actually do anything, leave variable null.
- });
- auto rehasher = flatbuffers::rehasher_function_t(
- [](void *pointer) -> flatbuffers::hash_value_t {
- (void)pointer;
- return 0;
- });
-
- // Turn a buffer into C++ objects.
- auto monster1 = UnPackMonster(flatbuf, &resolver);
-
- // Re-serialize the data.
- flatbuffers::FlatBufferBuilder fbb1;
- fbb1.Finish(CreateMonster(fbb1, monster1.get(), &rehasher),
- MonsterIdentifier());
-
- // Unpack again, and re-serialize again.
- auto monster2 = UnPackMonster(fbb1.GetBufferPointer(), &resolver);
- flatbuffers::FlatBufferBuilder fbb2;
- fbb2.Finish(CreateMonster(fbb2, monster2.get(), &rehasher),
- MonsterIdentifier());
-
- // Now we've gone full round-trip, the two buffers should match.
- auto len1 = fbb1.GetSize();
- auto len2 = fbb2.GetSize();
- TEST_EQ(len1, len2);
- TEST_EQ(memcmp(fbb1.GetBufferPointer(), fbb2.GetBufferPointer(),
- len1), 0);
-
- // Test it with the original buffer test to make sure all data survived.
- AccessFlatBufferTest(fbb2.GetBufferPointer(), len2, false);
-
- // Test accessing fields, similar to AccessFlatBufferTest above.
- TEST_EQ(monster2->hp, 80);
- TEST_EQ(monster2->mana, 150); // default
- TEST_EQ_STR(monster2->name.c_str(), "MyMonster");
-
- auto &pos = monster2->pos;
- TEST_NOTNULL(pos);
- TEST_EQ(pos->z(), 3);
- TEST_EQ(pos->test3().a(), 10);
- TEST_EQ(pos->test3().b(), 20);
-
- auto &inventory = monster2->inventory;
- TEST_EQ(inventory.size(), 10UL);
- unsigned char inv_data[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
- for (auto it = inventory.begin(); it != inventory.end(); ++it)
- TEST_EQ(*it, inv_data[it - inventory.begin()]);
-
- TEST_EQ(monster2->color, Color_Blue);
-
- auto monster3 = monster2->test.AsMonster();
- TEST_NOTNULL(monster3);
- TEST_EQ_STR(monster3->name.c_str(), "Fred");
-
- auto &vecofstrings = monster2->testarrayofstring;
- TEST_EQ(vecofstrings.size(), 4U);
- TEST_EQ_STR(vecofstrings[0].c_str(), "bob");
- TEST_EQ_STR(vecofstrings[1].c_str(), "fred");
-
- auto &vecofstrings2 = monster2->testarrayofstring2;
- TEST_EQ(vecofstrings2.size(), 2U);
- TEST_EQ_STR(vecofstrings2[0].c_str(), "jane");
- TEST_EQ_STR(vecofstrings2[1].c_str(), "mary");
-
- auto &vecoftables = monster2->testarrayoftables;
- TEST_EQ(vecoftables.size(), 3U);
- TEST_EQ_STR(vecoftables[0]->name.c_str(), "Barney");
- TEST_EQ(vecoftables[0]->hp, 1000);
- TEST_EQ_STR(vecoftables[1]->name.c_str(), "Fred");
- TEST_EQ_STR(vecoftables[2]->name.c_str(), "Wilma");
-
- auto &tests = monster2->test4;
- TEST_EQ(tests[0].a(), 10);
- TEST_EQ(tests[0].b(), 20);
- TEST_EQ(tests[1].a(), 30);
- TEST_EQ(tests[1].b(), 40);
-}
-
-// Prefix a FlatBuffer with a size field.
-void SizePrefixedTest() {
- // Create size prefixed buffer.
- flatbuffers::FlatBufferBuilder fbb;
- fbb.FinishSizePrefixed(CreateMonster(fbb, 0, 200, 300,
- fbb.CreateString("bob")));
-
- // Verify it.
- flatbuffers::Verifier verifier(fbb.GetBufferPointer(), fbb.GetSize());
- TEST_EQ(verifier.VerifySizePrefixedBuffer<Monster>(nullptr), true);
-
- // Access it.
- auto m = flatbuffers::GetSizePrefixedRoot<MyGame::Example::Monster>(
- fbb.GetBufferPointer());
- TEST_EQ(m->mana(), 200);
- TEST_EQ(m->hp(), 300);
- TEST_EQ_STR(m->name()->c_str(), "bob");
-}
-
-// example of parsing text straight into a buffer, and generating
-// text back from it:
-void ParseAndGenerateTextTest() {
- // load FlatBuffer schema (.fbs) and JSON from disk
- std::string schemafile;
- std::string jsonfile;
- TEST_EQ(flatbuffers::LoadFile(
- "tests/monster_test.fbs", false, &schemafile), true);
- TEST_EQ(flatbuffers::LoadFile(
- "tests/monsterdata_test.golden", false, &jsonfile), true);
-
- // parse schema first, so we can use it to parse the data after
- flatbuffers::Parser parser;
- const char *include_directories[] = { "tests", nullptr };
- TEST_EQ(parser.Parse(schemafile.c_str(), include_directories), true);
- TEST_EQ(parser.Parse(jsonfile.c_str(), include_directories), true);
-
- // here, parser.builder_ contains a binary buffer that is the parsed data.
-
- // First, verify it, just in case:
- flatbuffers::Verifier verifier(parser.builder_.GetBufferPointer(),
- parser.builder_.GetSize());
- TEST_EQ(VerifyMonsterBuffer(verifier), true);
-
- // to ensure it is correct, we now generate text back from the binary,
- // and compare the two:
- std::string jsongen;
- auto result = GenerateText(parser, parser.builder_.GetBufferPointer(), &jsongen);
- TEST_EQ(result, true);
-
- if (jsongen != jsonfile) {
- printf("%s----------------\n%s", jsongen.c_str(), jsonfile.c_str());
- TEST_NOTNULL(NULL);
- }
-}
-
-void ReflectionTest(uint8_t *flatbuf, size_t length) {
- // Load a binary schema.
- std::string bfbsfile;
- TEST_EQ(flatbuffers::LoadFile(
- "tests/monster_test.bfbs", true, &bfbsfile), true);
-
- // Verify it, just in case:
- flatbuffers::Verifier verifier(
- reinterpret_cast<const uint8_t *>(bfbsfile.c_str()), bfbsfile.length());
- TEST_EQ(reflection::VerifySchemaBuffer(verifier), true);
-
- // Make sure the schema is what we expect it to be.
- auto &schema = *reflection::GetSchema(bfbsfile.c_str());
- auto root_table = schema.root_table();
- TEST_EQ_STR(root_table->name()->c_str(), "MyGame.Example.Monster");
- auto fields = root_table->fields();
- auto hp_field_ptr = fields->LookupByKey("hp");
- TEST_NOTNULL(hp_field_ptr);
- auto &hp_field = *hp_field_ptr;
- TEST_EQ_STR(hp_field.name()->c_str(), "hp");
- TEST_EQ(hp_field.id(), 2);
- TEST_EQ(hp_field.type()->base_type(), reflection::Short);
- auto friendly_field_ptr = fields->LookupByKey("friendly");
- TEST_NOTNULL(friendly_field_ptr);
- TEST_NOTNULL(friendly_field_ptr->attributes());
- TEST_NOTNULL(friendly_field_ptr->attributes()->LookupByKey("priority"));
-
- // Make sure the table index is what we expect it to be.
- auto pos_field_ptr = fields->LookupByKey("pos");
- TEST_NOTNULL(pos_field_ptr);
- TEST_EQ(pos_field_ptr->type()->base_type(), reflection::Obj);
- auto pos_table_ptr = schema.objects()->Get(pos_field_ptr->type()->index());
- TEST_NOTNULL(pos_table_ptr);
- TEST_EQ_STR(pos_table_ptr->name()->c_str(), "MyGame.Example.Vec3");
-
- // Now use it to dynamically access a buffer.
- auto &root = *flatbuffers::GetAnyRoot(flatbuf);
-
- // Verify the buffer first using reflection based verification
- TEST_EQ(flatbuffers::Verify(schema, *schema.root_table(), flatbuf, length),
- true);
-
- auto hp = flatbuffers::GetFieldI<uint16_t>(root, hp_field);
- TEST_EQ(hp, 80);
-
- // Rather than needing to know the type, we can also get the value of
- // any field as an int64_t/double/string, regardless of what it actually is.
- auto hp_int64 = flatbuffers::GetAnyFieldI(root, hp_field);
- TEST_EQ(hp_int64, 80);
- auto hp_double = flatbuffers::GetAnyFieldF(root, hp_field);
- TEST_EQ(hp_double, 80.0);
- auto hp_string = flatbuffers::GetAnyFieldS(root, hp_field, &schema);
- TEST_EQ_STR(hp_string.c_str(), "80");
-
- // Get struct field through reflection
- auto pos_struct = flatbuffers::GetFieldStruct(root, *pos_field_ptr);
- TEST_NOTNULL(pos_struct);
- TEST_EQ(flatbuffers::GetAnyFieldF(
- *pos_struct, *pos_table_ptr->fields()->LookupByKey("z")), 3.0f);
-
- auto test3_field = pos_table_ptr->fields()->LookupByKey("test3");
- auto test3_struct = flatbuffers::GetFieldStruct(*pos_struct, *test3_field);
- TEST_NOTNULL(test3_struct);
- auto test3_object = schema.objects()->Get(test3_field->type()->index());
-
- TEST_EQ(flatbuffers::GetAnyFieldF(
- *test3_struct, *test3_object->fields()->LookupByKey("a")), 10);
-
- // We can also modify it.
- flatbuffers::SetField<uint16_t>(&root, hp_field, 200);
- hp = flatbuffers::GetFieldI<uint16_t>(root, hp_field);
- TEST_EQ(hp, 200);
-
- // We can also set fields generically:
- flatbuffers::SetAnyFieldI(&root, hp_field, 300);
- hp_int64 = flatbuffers::GetAnyFieldI(root, hp_field);
- TEST_EQ(hp_int64, 300);
- flatbuffers::SetAnyFieldF(&root, hp_field, 300.5);
- hp_int64 = flatbuffers::GetAnyFieldI(root, hp_field);
- TEST_EQ(hp_int64, 300);
- flatbuffers::SetAnyFieldS(&root, hp_field, "300");
- hp_int64 = flatbuffers::GetAnyFieldI(root, hp_field);
- TEST_EQ(hp_int64, 300);
-
- // Test buffer is valid after the modifications
- TEST_EQ(flatbuffers::Verify(schema, *schema.root_table(), flatbuf, length),
- true);
-
- // Reset it, for further tests.
- flatbuffers::SetField<uint16_t>(&root, hp_field, 80);
-
- // More advanced functionality: changing the size of items in-line!
- // First we put the FlatBuffer inside an std::vector.
- std::vector<uint8_t> resizingbuf(flatbuf, flatbuf + length);
- // Find the field we want to modify.
- auto &name_field = *fields->LookupByKey("name");
- // Get the root.
- // This time we wrap the result from GetAnyRoot in a smartpointer that
- // will keep rroot valid as resizingbuf resizes.
- auto rroot = flatbuffers::piv(flatbuffers::GetAnyRoot(resizingbuf.data()),
- resizingbuf);
- SetString(schema, "totally new string", GetFieldS(**rroot, name_field),
- &resizingbuf);
- // Here resizingbuf has changed, but rroot is still valid.
- TEST_EQ_STR(GetFieldS(**rroot, name_field)->c_str(), "totally new string");
- // Now lets extend a vector by 100 elements (10 -> 110).
- auto &inventory_field = *fields->LookupByKey("inventory");
- auto rinventory = flatbuffers::piv(
- flatbuffers::GetFieldV<uint8_t>(**rroot, inventory_field),
- resizingbuf);
- flatbuffers::ResizeVector<uint8_t>(schema, 110, 50, *rinventory,
- &resizingbuf);
- // rinventory still valid, so lets read from it.
- TEST_EQ(rinventory->Get(10), 50);
-
- // For reflection uses not covered already, there is a more powerful way:
- // we can simply generate whatever object we want to add/modify in a
- // FlatBuffer of its own, then add that to an existing FlatBuffer:
- // As an example, let's add a string to an array of strings.
- // First, find our field:
- auto &testarrayofstring_field = *fields->LookupByKey("testarrayofstring");
- // Find the vector value:
- auto rtestarrayofstring = flatbuffers::piv(
- flatbuffers::GetFieldV<flatbuffers::Offset<flatbuffers::String>>(
- **rroot, testarrayofstring_field),
- resizingbuf);
- // It's a vector of 2 strings, to which we add one more, initialized to
- // offset 0.
- flatbuffers::ResizeVector<flatbuffers::Offset<flatbuffers::String>>(
- schema, 3, 0, *rtestarrayofstring, &resizingbuf);
- // Here we just create a buffer that contans a single string, but this
- // could also be any complex set of tables and other values.
- flatbuffers::FlatBufferBuilder stringfbb;
- stringfbb.Finish(stringfbb.CreateString("hank"));
- // Add the contents of it to our existing FlatBuffer.
- // We do this last, so the pointer doesn't get invalidated (since it is
- // at the end of the buffer):
- auto string_ptr = flatbuffers::AddFlatBuffer(resizingbuf,
- stringfbb.GetBufferPointer(),
- stringfbb.GetSize());
- // Finally, set the new value in the vector.
- rtestarrayofstring->MutateOffset(2, string_ptr);
- TEST_EQ_STR(rtestarrayofstring->Get(0)->c_str(), "bob");
- TEST_EQ_STR(rtestarrayofstring->Get(2)->c_str(), "hank");
- // Test integrity of all resize operations above.
- flatbuffers::Verifier resize_verifier(
- reinterpret_cast<const uint8_t *>(resizingbuf.data()),
- resizingbuf.size());
- TEST_EQ(VerifyMonsterBuffer(resize_verifier), true);
-
- // Test buffer is valid using reflection as well
- TEST_EQ(flatbuffers::Verify(schema, *schema.root_table(), resizingbuf.data(),
- resizingbuf.size()), true);
-
- // As an additional test, also set it on the name field.
- // Note: unlike the name change above, this just overwrites the offset,
- // rather than changing the string in-place.
- SetFieldT(*rroot, name_field, string_ptr);
- TEST_EQ_STR(GetFieldS(**rroot, name_field)->c_str(), "hank");
-
- // Using reflection, rather than mutating binary FlatBuffers, we can also copy
- // tables and other things out of other FlatBuffers into a FlatBufferBuilder,
- // either part or whole.
- flatbuffers::FlatBufferBuilder fbb;
- auto root_offset = flatbuffers::CopyTable(fbb, schema, *root_table,
- *flatbuffers::GetAnyRoot(flatbuf),
- true);
- fbb.Finish(root_offset, MonsterIdentifier());
- // Test that it was copied correctly:
- AccessFlatBufferTest(fbb.GetBufferPointer(), fbb.GetSize());
-
- // Test buffer is valid using reflection as well
- TEST_EQ(flatbuffers::Verify(schema, *schema.root_table(),
- fbb.GetBufferPointer(), fbb.GetSize()), true);
-}
-
-// Parse a .proto schema, output as .fbs
-void ParseProtoTest() {
- // load the .proto and the golden file from disk
- std::string protofile;
- std::string goldenfile;
- TEST_EQ(flatbuffers::LoadFile(
- "tests/prototest/test.proto", false, &protofile), true);
- TEST_EQ(flatbuffers::LoadFile(
- "tests/prototest/test.golden", false, &goldenfile), true);
-
- flatbuffers::IDLOptions opts;
- opts.include_dependence_headers = false;
- opts.proto_mode = true;
-
- // Parse proto.
- flatbuffers::Parser parser(opts);
- const char *include_directories[] = { "tests/prototest", nullptr };
- TEST_EQ(parser.Parse(protofile.c_str(), include_directories), true);
-
- // Generate fbs.
- auto fbs = flatbuffers::GenerateFBS(parser, "test");
-
- // Ensure generated file is parsable.
- flatbuffers::Parser parser2;
- TEST_EQ(parser2.Parse(fbs.c_str(), nullptr), true);
-
- if (fbs != goldenfile) {
- printf("%s----------------\n%s", fbs.c_str(), goldenfile.c_str());
- TEST_NOTNULL(NULL);
- }
-}
-
-template<typename T> void CompareTableFieldValue(flatbuffers::Table *table,
- flatbuffers::voffset_t voffset,
- T val) {
- T read = table->GetField(voffset, static_cast<T>(0));
- TEST_EQ(read, val);
-}
-
-// Low level stress/fuzz test: serialize/deserialize a variety of
-// different kinds of data in different combinations
-void FuzzTest1() {
-
- // Values we're testing against: chosen to ensure no bits get chopped
- // off anywhere, and also be different from eachother.
- const uint8_t bool_val = true;
- const int8_t char_val = -127; // 0x81
- const uint8_t uchar_val = 0xFF;
- const int16_t short_val = -32222; // 0x8222;
- const uint16_t ushort_val = 0xFEEE;
- const int32_t int_val = 0x83333333;
- const uint32_t uint_val = 0xFDDDDDDD;
- const int64_t long_val = 0x8444444444444444LL;
- const uint64_t ulong_val = 0xFCCCCCCCCCCCCCCCULL;
- const float float_val = 3.14159f;
- const double double_val = 3.14159265359;
-
- const int test_values_max = 11;
- const flatbuffers::voffset_t fields_per_object = 4;
- const int num_fuzz_objects = 10000; // The higher, the more thorough :)
-
- flatbuffers::FlatBufferBuilder builder;
-
- lcg_reset(); // Keep it deterministic.
-
- flatbuffers::uoffset_t objects[num_fuzz_objects];
-
- // Generate num_fuzz_objects random objects each consisting of
- // fields_per_object fields, each of a random type.
- for (int i = 0; i < num_fuzz_objects; i++) {
- auto start = builder.StartTable();
- for (flatbuffers::voffset_t f = 0; f < fields_per_object; f++) {
- int choice = lcg_rand() % test_values_max;
- auto off = flatbuffers::FieldIndexToOffset(f);
- switch (choice) {
- case 0: builder.AddElement<uint8_t >(off, bool_val, 0); break;
- case 1: builder.AddElement<int8_t >(off, char_val, 0); break;
- case 2: builder.AddElement<uint8_t >(off, uchar_val, 0); break;
- case 3: builder.AddElement<int16_t >(off, short_val, 0); break;
- case 4: builder.AddElement<uint16_t>(off, ushort_val, 0); break;
- case 5: builder.AddElement<int32_t >(off, int_val, 0); break;
- case 6: builder.AddElement<uint32_t>(off, uint_val, 0); break;
- case 7: builder.AddElement<int64_t >(off, long_val, 0); break;
- case 8: builder.AddElement<uint64_t>(off, ulong_val, 0); break;
- case 9: builder.AddElement<float >(off, float_val, 0); break;
- case 10: builder.AddElement<double >(off, double_val, 0); break;
- }
- }
- objects[i] = builder.EndTable(start, fields_per_object);
- }
- builder.PreAlign<flatbuffers::largest_scalar_t>(0); // Align whole buffer.
-
- lcg_reset(); // Reset.
-
- uint8_t *eob = builder.GetCurrentBufferPointer() + builder.GetSize();
-
- // Test that all objects we generated are readable and return the
- // expected values. We generate random objects in the same order
- // so this is deterministic.
- for (int i = 0; i < num_fuzz_objects; i++) {
- auto table = reinterpret_cast<flatbuffers::Table *>(eob - objects[i]);
- for (flatbuffers::voffset_t f = 0; f < fields_per_object; f++) {
- int choice = lcg_rand() % test_values_max;
- flatbuffers::voffset_t off = flatbuffers::FieldIndexToOffset(f);
- switch (choice) {
- case 0: CompareTableFieldValue(table, off, bool_val ); break;
- case 1: CompareTableFieldValue(table, off, char_val ); break;
- case 2: CompareTableFieldValue(table, off, uchar_val ); break;
- case 3: CompareTableFieldValue(table, off, short_val ); break;
- case 4: CompareTableFieldValue(table, off, ushort_val); break;
- case 5: CompareTableFieldValue(table, off, int_val ); break;
- case 6: CompareTableFieldValue(table, off, uint_val ); break;
- case 7: CompareTableFieldValue(table, off, long_val ); break;
- case 8: CompareTableFieldValue(table, off, ulong_val ); break;
- case 9: CompareTableFieldValue(table, off, float_val ); break;
- case 10: CompareTableFieldValue(table, off, double_val); break;
- }
- }
- }
-}
-
-// High level stress/fuzz test: generate a big schema and
-// matching json data in random combinations, then parse both,
-// generate json back from the binary, and compare with the original.
-void FuzzTest2() {
- lcg_reset(); // Keep it deterministic.
-
- const int num_definitions = 30;
- const int num_struct_definitions = 5; // Subset of num_definitions.
- const int fields_per_definition = 15;
- const int instances_per_definition = 5;
- const int deprecation_rate = 10; // 1 in deprecation_rate fields will
- // be deprecated.
-
- std::string schema = "namespace test;\n\n";
-
- struct RndDef {
- std::string instances[instances_per_definition];
-
- // Since we're generating schema and corresponding data in tandem,
- // this convenience function adds strings to both at once.
- static void Add(RndDef (&definitions_l)[num_definitions],
- std::string &schema_l,
- const int instances_per_definition_l,
- const char *schema_add, const char *instance_add,
- int definition) {
- schema_l += schema_add;
- for (int i = 0; i < instances_per_definition_l; i++)
- definitions_l[definition].instances[i] += instance_add;
- }
- };
-
- #define AddToSchemaAndInstances(schema_add, instance_add) \
- RndDef::Add(definitions, schema, instances_per_definition, \
- schema_add, instance_add, definition)
-
- #define Dummy() \
- RndDef::Add(definitions, schema, instances_per_definition, \
- "byte", "1", definition)
-
- RndDef definitions[num_definitions];
-
- // We are going to generate num_definitions, the first
- // num_struct_definitions will be structs, the rest tables. For each
- // generate random fields, some of which may be struct/table types
- // referring to previously generated structs/tables.
- // Simultanenously, we generate instances_per_definition JSON data
- // definitions, which will have identical structure to the schema
- // being generated. We generate multiple instances such that when creating
- // hierarchy, we get some variety by picking one randomly.
- for (int definition = 0; definition < num_definitions; definition++) {
- std::string definition_name = "D" + flatbuffers::NumToString(definition);
-
- bool is_struct = definition < num_struct_definitions;
-
- AddToSchemaAndInstances(
- ((is_struct ? "struct " : "table ") + definition_name + " {\n").c_str(),
- "{\n");
-
- for (int field = 0; field < fields_per_definition; field++) {
- const bool is_last_field = field == fields_per_definition - 1;
-
- // Deprecate 1 in deprecation_rate fields. Only table fields can be
- // deprecated.
- // Don't deprecate the last field to avoid dangling commas in JSON.
- const bool deprecated = !is_struct &&
- !is_last_field &&
- (lcg_rand() % deprecation_rate == 0);
-
- std::string field_name = "f" + flatbuffers::NumToString(field);
- AddToSchemaAndInstances((" " + field_name + ":").c_str(),
- deprecated ? "" : (field_name + ": ").c_str());
- // Pick random type:
- int base_type = lcg_rand() % (flatbuffers::BASE_TYPE_UNION + 1);
- switch (base_type) {
- case flatbuffers::BASE_TYPE_STRING:
- if (is_struct) {
- Dummy(); // No strings in structs.
- } else {
- AddToSchemaAndInstances("string", deprecated ? "" : "\"hi\"");
- }
- break;
- case flatbuffers::BASE_TYPE_VECTOR:
- if (is_struct) {
- Dummy(); // No vectors in structs.
- }
- else {
- AddToSchemaAndInstances("[ubyte]",
- deprecated ? "" : "[\n0,\n1,\n255\n]");
- }
- break;
- case flatbuffers::BASE_TYPE_NONE:
- case flatbuffers::BASE_TYPE_UTYPE:
- case flatbuffers::BASE_TYPE_STRUCT:
- case flatbuffers::BASE_TYPE_UNION:
- if (definition) {
- // Pick a random previous definition and random data instance of
- // that definition.
- int defref = lcg_rand() % definition;
- int instance = lcg_rand() % instances_per_definition;
- AddToSchemaAndInstances(
- ("D" + flatbuffers::NumToString(defref)).c_str(),
- deprecated
- ? ""
- : definitions[defref].instances[instance].c_str());
- } else {
- // If this is the first definition, we have no definition we can
- // refer to.
- Dummy();
- }
- break;
- case flatbuffers::BASE_TYPE_BOOL:
- AddToSchemaAndInstances("bool", deprecated
- ? ""
- : (lcg_rand() % 2 ? "true" : "false"));
- break;
- default:
- // All the scalar types.
- schema += flatbuffers::kTypeNames[base_type];
-
- if (!deprecated) {
- // We want each instance to use its own random value.
- for (int inst = 0; inst < instances_per_definition; inst++)
- definitions[definition].instances[inst] +=
- flatbuffers::NumToString(lcg_rand() % 128).c_str();
- }
- }
- AddToSchemaAndInstances(
- deprecated ? "(deprecated);\n" : ";\n",
- deprecated ? "" : is_last_field ? "\n" : ",\n");
- }
- AddToSchemaAndInstances("}\n\n", "}");
- }
-
- schema += "root_type D" + flatbuffers::NumToString(num_definitions - 1);
- schema += ";\n";
-
- flatbuffers::Parser parser;
-
- // Will not compare against the original if we don't write defaults
- parser.builder_.ForceDefaults(true);
-
- // Parse the schema, parse the generated data, then generate text back
- // from the binary and compare against the original.
- TEST_EQ(parser.Parse(schema.c_str()), true);
-
- const std::string &json =
- definitions[num_definitions - 1].instances[0] + "\n";
-
- TEST_EQ(parser.Parse(json.c_str()), true);
-
- std::string jsongen;
- parser.opts.indent_step = 0;
- auto result = GenerateText(parser, parser.builder_.GetBufferPointer(), &jsongen);
- TEST_EQ(result, true);
-
- if (jsongen != json) {
- // These strings are larger than a megabyte, so we show the bytes around
- // the first bytes that are different rather than the whole string.
- size_t len = std::min(json.length(), jsongen.length());
- for (size_t i = 0; i < len; i++) {
- if (json[i] != jsongen[i]) {
- i -= std::min(static_cast<size_t>(10), i); // show some context;
- size_t end = std::min(len, i + 20);
- for (; i < end; i++)
- printf("at %d: found \"%c\", expected \"%c\"\n",
- static_cast<int>(i), jsongen[i], json[i]);
- break;
- }
- }
- TEST_NOTNULL(NULL);
- }
-
- printf("%dk schema tested with %dk of json\n",
- static_cast<int>(schema.length() / 1024),
- static_cast<int>(json.length() / 1024));
-}
-
-// Test that parser errors are actually generated.
-void TestError(const char *src, const char *error_substr,
- bool strict_json = false) {
- flatbuffers::IDLOptions opts;
- opts.strict_json = strict_json;
- flatbuffers::Parser parser(opts);
- TEST_EQ(parser.Parse(src), false); // Must signal error
- // Must be the error we're expecting
- TEST_NOTNULL(strstr(parser.error_.c_str(), error_substr));
-}
-
-// Test that parsing errors occur as we'd expect.
-// Also useful for coverage, making sure these paths are run.
-void ErrorTest() {
- // In order they appear in idl_parser.cpp
- TestError("table X { Y:byte; } root_type X; { Y: 999 }", "does not fit");
- TestError(".0", "floating point");
- TestError("\"\0", "illegal");
- TestError("\"\\q", "escape code");
- TestError("table ///", "documentation");
- TestError("@", "illegal");
- TestError("table 1", "expecting");
- TestError("table X { Y:[[int]]; }", "nested vector");
- TestError("table X { Y:1; }", "illegal type");
- TestError("table X { Y:int; Y:int; }", "field already");
- TestError("struct X { Y:string; }", "only scalar");
- TestError("struct X { Y:int (deprecated); }", "deprecate");
- TestError("union Z { X } table X { Y:Z; } root_type X; { Y: {}, A:1 }",
- "missing type field");
- TestError("union Z { X } table X { Y:Z; } root_type X; { Y_type: 99, Y: {",
- "type id");
- TestError("table X { Y:int; } root_type X; { Z:", "unknown field");
- TestError("table X { Y:int; } root_type X; { Y:", "string constant", true);
- TestError("table X { Y:int; } root_type X; { \"Y\":1, }", "string constant",
- true);
- TestError("struct X { Y:int; Z:int; } table W { V:X; } root_type W; "
- "{ V:{ Y:1 } }", "wrong number");
- TestError("enum E:byte { A } table X { Y:E; } root_type X; { Y:U }",
- "unknown enum value");
- TestError("table X { Y:byte; } root_type X; { Y:; }", "starting");
- TestError("enum X:byte { Y } enum X {", "enum already");
- TestError("enum X:float {}", "underlying");
- TestError("enum X:byte { Y, Y }", "value already");
- TestError("enum X:byte { Y=2, Z=1 }", "ascending");
- TestError("enum X:byte (bit_flags) { Y=8 }", "bit flag out");
- TestError("table X { Y:int; } table X {", "datatype already");
- TestError("struct X (force_align: 7) { Y:int; }", "force_align");
- TestError("{}", "no root");
- TestError("table X { Y:byte; } root_type X; { Y:1 } { Y:1 }", "one json");
- TestError("root_type X;", "unknown root");
- TestError("struct X { Y:int; } root_type X;", "a table");
- TestError("union X { Y }", "referenced");
- TestError("union Z { X } struct X { Y:int; }", "only tables");
- TestError("table X { Y:[int]; YLength:int; }", "clash");
- TestError("table X { Y:string = 1; }", "scalar");
- TestError("table X { Y:byte; } root_type X; { Y:1, Y:2 }", "more than once");
-}
-
-template<typename T> T TestValue(const char *json, const char *type_name) {
- flatbuffers::Parser parser;
-
- // Simple schema.
- TEST_EQ(parser.Parse(std::string("table X { Y:" + std::string(type_name) +
- "; } root_type X;").c_str()), true);
-
- TEST_EQ(parser.Parse(json), true);
- auto root = flatbuffers::GetRoot<flatbuffers::Table>(
- parser.builder_.GetBufferPointer());
- return root->GetField<T>(flatbuffers::FieldIndexToOffset(0), 0);
-}
-
-bool FloatCompare(float a, float b) { return fabs(a - b) < 0.001; }
-
-// Additional parser testing not covered elsewhere.
-void ValueTest() {
- // Test scientific notation numbers.
- TEST_EQ(FloatCompare(TestValue<float>("{ Y:0.0314159e+2 }","float"),
- (float)3.14159), true);
-
- // Test conversion functions.
- TEST_EQ(FloatCompare(TestValue<float>("{ Y:cos(rad(180)) }","float"), -1),
- true);
-
- // Test negative hex constant.
- TEST_EQ(TestValue<int>("{ Y:-0x80 }","int"), -128);
-
- // Make sure we do unsigned 64bit correctly.
- TEST_EQ(TestValue<uint64_t>("{ Y:12335089644688340133 }","ulong"),
- 12335089644688340133ULL);
-}
-
-void EnumStringsTest() {
- flatbuffers::Parser parser1;
- TEST_EQ(parser1.Parse("enum E:byte { A, B, C } table T { F:[E]; }"
- "root_type T;"
- "{ F:[ A, B, \"C\", \"A B C\" ] }"), true);
- flatbuffers::Parser parser2;
- TEST_EQ(parser2.Parse("enum E:byte { A, B, C } table T { F:[int]; }"
- "root_type T;"
- "{ F:[ \"E.C\", \"E.A E.B E.C\" ] }"), true);
-}
-
-void IntegerOutOfRangeTest() {
- TestError("table T { F:byte; } root_type T; { F:128 }",
- "constant does not fit");
- TestError("table T { F:byte; } root_type T; { F:-129 }",
- "constant does not fit");
- TestError("table T { F:ubyte; } root_type T; { F:256 }",
- "constant does not fit");
- TestError("table T { F:ubyte; } root_type T; { F:-1 }",
- "constant does not fit");
- TestError("table T { F:short; } root_type T; { F:32768 }",
- "constant does not fit");
- TestError("table T { F:short; } root_type T; { F:-32769 }",
- "constant does not fit");
- TestError("table T { F:ushort; } root_type T; { F:65536 }",
- "constant does not fit");
- TestError("table T { F:ushort; } root_type T; { F:-1 }",
- "constant does not fit");
- TestError("table T { F:int; } root_type T; { F:2147483648 }",
- "constant does not fit");
- TestError("table T { F:int; } root_type T; { F:-2147483649 }",
- "constant does not fit");
- TestError("table T { F:uint; } root_type T; { F:4294967296 }",
- "constant does not fit");
- TestError("table T { F:uint; } root_type T; { F:-1 }",
- "constant does not fit");
-}
-
-void IntegerBoundaryTest() {
- TEST_EQ(TestValue<int8_t>("{ Y:127 }","byte"), 127);
- TEST_EQ(TestValue<int8_t>("{ Y:-128 }","byte"), -128);
- TEST_EQ(TestValue<uint8_t>("{ Y:255 }","ubyte"), 255);
- TEST_EQ(TestValue<uint8_t>("{ Y:0 }","ubyte"), 0);
- TEST_EQ(TestValue<int16_t>("{ Y:32767 }","short"), 32767);
- TEST_EQ(TestValue<int16_t>("{ Y:-32768 }","short"), -32768);
- TEST_EQ(TestValue<uint16_t>("{ Y:65535 }","ushort"), 65535);
- TEST_EQ(TestValue<uint16_t>("{ Y:0 }","ushort"), 0);
- TEST_EQ(TestValue<int32_t>("{ Y:2147483647 }","int"), 2147483647);
- TEST_EQ(TestValue<int32_t>("{ Y:-2147483648 }","int"), (-2147483647 - 1));
- TEST_EQ(TestValue<uint32_t>("{ Y:4294967295 }","uint"), 4294967295);
- TEST_EQ(TestValue<uint32_t>("{ Y:0 }","uint"), 0);
- TEST_EQ(TestValue<int64_t>("{ Y:9223372036854775807 }","long"), 9223372036854775807);
- TEST_EQ(TestValue<int64_t>("{ Y:-9223372036854775808 }","long"), (-9223372036854775807 - 1));
- TEST_EQ(TestValue<uint64_t>("{ Y:18446744073709551615 }","ulong"), 18446744073709551615U);
- TEST_EQ(TestValue<uint64_t>("{ Y:0 }","ulong"), 0);
-}
-
-void UnicodeTest() {
- flatbuffers::Parser parser;
- // Without setting allow_non_utf8 = true, we treat \x sequences as byte sequences
- // which are then validated as UTF-8.
- TEST_EQ(parser.Parse("table T { F:string; }"
- "root_type T;"
- "{ F:\"\\u20AC\\u00A2\\u30E6\\u30FC\\u30B6\\u30FC"
- "\\u5225\\u30B5\\u30A4\\u30C8\\xE2\\x82\\xAC\\u0080\\uD83D\\uDE0E\" }"),
- true);
- std::string jsongen;
- parser.opts.indent_step = -1;
- auto result = GenerateText(parser, parser.builder_.GetBufferPointer(), &jsongen);
- TEST_EQ(result, true);
- TEST_EQ(jsongen,
- std::string(
- "{F: \"\\u20AC\\u00A2\\u30E6\\u30FC\\u30B6\\u30FC"
- "\\u5225\\u30B5\\u30A4\\u30C8\\u20AC\\u0080\\uD83D\\uDE0E\"}"));
-}
-
-void UnicodeTestAllowNonUTF8() {
- flatbuffers::Parser parser;
- parser.opts.allow_non_utf8 = true;
- TEST_EQ(parser.Parse("table T { F:string; }"
- "root_type T;"
- "{ F:\"\\u20AC\\u00A2\\u30E6\\u30FC\\u30B6\\u30FC"
- "\\u5225\\u30B5\\u30A4\\u30C8\\x01\\x80\\u0080\\uD83D\\uDE0E\" }"), true);
- std::string jsongen;
- parser.opts.indent_step = -1;
- auto result = GenerateText(parser, parser.builder_.GetBufferPointer(), &jsongen);
- TEST_EQ(result, true);
- TEST_EQ(jsongen,
- std::string(
- "{F: \"\\u20AC\\u00A2\\u30E6\\u30FC\\u30B6\\u30FC"
- "\\u5225\\u30B5\\u30A4\\u30C8\\u0001\\x80\\u0080\\uD83D\\uDE0E\"}"));
-}
-
-void UnicodeTestGenerateTextFailsOnNonUTF8() {
- flatbuffers::Parser parser;
- // Allow non-UTF-8 initially to model what happens when we load a binary flatbuffer from disk
- // which contains non-UTF-8 strings.
- parser.opts.allow_non_utf8 = true;
- TEST_EQ(parser.Parse("table T { F:string; }"
- "root_type T;"
- "{ F:\"\\u20AC\\u00A2\\u30E6\\u30FC\\u30B6\\u30FC"
- "\\u5225\\u30B5\\u30A4\\u30C8\\x01\\x80\\u0080\\uD83D\\uDE0E\" }"), true);
- std::string jsongen;
- parser.opts.indent_step = -1;
- // Now, disallow non-UTF-8 (the default behavior) so GenerateText indicates failure.
- parser.opts.allow_non_utf8 = false;
- auto result = GenerateText(parser, parser.builder_.GetBufferPointer(), &jsongen);
- TEST_EQ(result, false);
-}
-
-void UnicodeSurrogatesTest() {
- flatbuffers::Parser parser;
-
- TEST_EQ(
- parser.Parse(
- "table T { F:string (id: 0); }"
- "root_type T;"
- "{ F:\"\\uD83D\\uDCA9\"}"), true);
- auto root = flatbuffers::GetRoot<flatbuffers::Table>(
- parser.builder_.GetBufferPointer());
- auto string = root->GetPointer<flatbuffers::String *>(
- flatbuffers::FieldIndexToOffset(0));
- TEST_EQ(strcmp(string->c_str(), "\xF0\x9F\x92\xA9"), 0);
-}
-
-void UnicodeInvalidSurrogatesTest() {
- TestError(
- "table T { F:string; }"
- "root_type T;"
- "{ F:\"\\uD800\"}", "unpaired high surrogate");
- TestError(
- "table T { F:string; }"
- "root_type T;"
- "{ F:\"\\uD800abcd\"}", "unpaired high surrogate");
- TestError(
- "table T { F:string; }"
- "root_type T;"
- "{ F:\"\\uD800\\n\"}", "unpaired high surrogate");
- TestError(
- "table T { F:string; }"
- "root_type T;"
- "{ F:\"\\uD800\\uD800\"}", "multiple high surrogates");
- TestError(
- "table T { F:string; }"
- "root_type T;"
- "{ F:\"\\uDC00\"}", "unpaired low surrogate");
-}
-
-void InvalidUTF8Test() {
- // "1 byte" pattern, under min length of 2 bytes
- TestError(
- "table T { F:string; }"
- "root_type T;"
- "{ F:\"\x80\"}", "illegal UTF-8 sequence");
- // 2 byte pattern, string too short
- TestError(
- "table T { F:string; }"
- "root_type T;"
- "{ F:\"\xDF\"}", "illegal UTF-8 sequence");
- // 3 byte pattern, string too short
- TestError(
- "table T { F:string; }"
- "root_type T;"
- "{ F:\"\xEF\xBF\"}", "illegal UTF-8 sequence");
- // 4 byte pattern, string too short
- TestError(
- "table T { F:string; }"
- "root_type T;"
- "{ F:\"\xF7\xBF\xBF\"}", "illegal UTF-8 sequence");
- // "5 byte" pattern, string too short
- TestError(
- "table T { F:string; }"
- "root_type T;"
- "{ F:\"\xFB\xBF\xBF\xBF\"}", "illegal UTF-8 sequence");
- // "6 byte" pattern, string too short
- TestError(
- "table T { F:string; }"
- "root_type T;"
- "{ F:\"\xFD\xBF\xBF\xBF\xBF\"}", "illegal UTF-8 sequence");
- // "7 byte" pattern, string too short
- TestError(
- "table T { F:string; }"
- "root_type T;"
- "{ F:\"\xFE\xBF\xBF\xBF\xBF\xBF\"}", "illegal UTF-8 sequence");
- // "5 byte" pattern, over max length of 4 bytes
- TestError(
- "table T { F:string; }"
- "root_type T;"
- "{ F:\"\xFB\xBF\xBF\xBF\xBF\"}", "illegal UTF-8 sequence");
- // "6 byte" pattern, over max length of 4 bytes
- TestError(
- "table T { F:string; }"
- "root_type T;"
- "{ F:\"\xFD\xBF\xBF\xBF\xBF\xBF\"}", "illegal UTF-8 sequence");
- // "7 byte" pattern, over max length of 4 bytes
- TestError(
- "table T { F:string; }"
- "root_type T;"
- "{ F:\"\xFE\xBF\xBF\xBF\xBF\xBF\xBF\"}", "illegal UTF-8 sequence");
-
- // Three invalid encodings for U+000A (\n, aka NEWLINE)
- TestError(
- "table T { F:string; }"
- "root_type T;"
- "{ F:\"\xC0\x8A\"}", "illegal UTF-8 sequence");
- TestError(
- "table T { F:string; }"
- "root_type T;"
- "{ F:\"\xE0\x80\x8A\"}", "illegal UTF-8 sequence");
- TestError(
- "table T { F:string; }"
- "root_type T;"
- "{ F:\"\xF0\x80\x80\x8A\"}", "illegal UTF-8 sequence");
-
- // Two invalid encodings for U+00A9 (COPYRIGHT SYMBOL)
- TestError(
- "table T { F:string; }"
- "root_type T;"
- "{ F:\"\xE0\x81\xA9\"}", "illegal UTF-8 sequence");
- TestError(
- "table T { F:string; }"
- "root_type T;"
- "{ F:\"\xF0\x80\x81\xA9\"}", "illegal UTF-8 sequence");
-
- // Invalid encoding for U+20AC (EURO SYMBOL)
- TestError(
- "table T { F:string; }"
- "root_type T;"
- "{ F:\"\xF0\x82\x82\xAC\"}", "illegal UTF-8 sequence");
-
- // UTF-16 surrogate values between U+D800 and U+DFFF cannot be encoded in UTF-8
- TestError(
- "table T { F:string; }"
- "root_type T;"
- // U+10400 "encoded" as U+D801 U+DC00
- "{ F:\"\xED\xA0\x81\xED\xB0\x80\"}", "illegal UTF-8 sequence");
-}
-
-void UnknownFieldsTest() {
- flatbuffers::IDLOptions opts;
- opts.skip_unexpected_fields_in_json = true;
- flatbuffers::Parser parser(opts);
-
- TEST_EQ(parser.Parse("table T { str:string; i:int;}"
- "root_type T;"
- "{ str:\"test\","
- "unknown_string:\"test\","
- "\"unknown_string\":\"test\","
- "unknown_int:10,"
- "unknown_float:1.0,"
- "unknown_array: [ 1, 2, 3, 4],"
- "unknown_object: { i: 10 },"
- "\"unknown_object\": { \"i\": 10 },"
- "i:10}"), true);
-
- std::string jsongen;
- parser.opts.indent_step = -1;
- auto result = GenerateText(parser, parser.builder_.GetBufferPointer(), &jsongen);
- TEST_EQ(result, true);
- TEST_EQ(jsongen == "{str: \"test\",i: 10}", true);
-}
-
-void ParseUnionTest() {
- // Unions must be parseable with the type field following the object.
- flatbuffers::Parser parser;
- TEST_EQ(parser.Parse("table T { A:int; }"
- "union U { T }"
- "table V { X:U; }"
- "root_type V;"
- "{ X:{ A:1 }, X_type: T }"), true);
- // Unions must be parsable with prefixed namespace.
- flatbuffers::Parser parser2;
- TEST_EQ(parser2.Parse("namespace N; table A {} namespace; union U { N.A }"
- "table B { e:U; } root_type B;"
- "{ e_type: N_A, e: {} }"), true);
-}
-
-void UnionVectorTest() {
- // load FlatBuffer fbs schema.
- // TODO: load a JSON file with such a vector when JSON support is ready.
- std::string schemafile;
- TEST_EQ(flatbuffers::LoadFile(
- "tests/union_vector/union_vector.fbs", false, &schemafile), true);
-
- // parse schema.
- flatbuffers::IDLOptions idl_opts;
- idl_opts.lang_to_generate |= flatbuffers::IDLOptions::kCpp;
- flatbuffers::Parser parser(idl_opts);
- const char *include_directories[] = { "tests/union_vector", nullptr };
- TEST_EQ(parser.Parse(schemafile.c_str(), include_directories), true);
-
- flatbuffers::FlatBufferBuilder fbb;
-
- // union types.
- std::vector<uint8_t> types;
- types.push_back(static_cast<uint8_t>(Character_Belle));
- types.push_back(static_cast<uint8_t>(Character_MuLan));
- types.push_back(static_cast<uint8_t>(Character_BookFan));
- types.push_back(static_cast<uint8_t>(Character_Other));
- types.push_back(static_cast<uint8_t>(Character_Unused));
-
- // union values.
- std::vector<flatbuffers::Offset<void>> characters;
- characters.push_back(fbb.CreateStruct(BookReader(/*books_read=*/7)).Union());
- characters.push_back(CreateAttacker(fbb, /*sword_attack_damage=*/5).Union());
- characters.push_back(fbb.CreateStruct(BookReader(/*books_read=*/2)).Union());
- characters.push_back(fbb.CreateString("Other").Union());
- characters.push_back(fbb.CreateString("Unused").Union());
-
- // create Movie.
- const auto movie_offset =
- CreateMovie(fbb,
- Character_Rapunzel,
- fbb.CreateStruct(Rapunzel(/*hair_length=*/6)).Union(),
- fbb.CreateVector(types),
- fbb.CreateVector(characters));
- FinishMovieBuffer(fbb, movie_offset);
- auto buf = fbb.GetBufferPointer();
-
- flatbuffers::Verifier verifier(buf, fbb.GetSize());
- TEST_EQ(VerifyMovieBuffer(verifier), true);
-
- auto flat_movie = GetMovie(buf);
-
- auto TestMovie = [](const Movie *movie) {
- TEST_EQ(movie->main_character_type() == Character_Rapunzel, true);
-
- auto cts = movie->characters_type();
- TEST_EQ(movie->characters_type()->size(), 5);
- TEST_EQ(cts->GetEnum<Character>(0) == Character_Belle, true);
- TEST_EQ(cts->GetEnum<Character>(1) == Character_MuLan, true);
- TEST_EQ(cts->GetEnum<Character>(2) == Character_BookFan, true);
- TEST_EQ(cts->GetEnum<Character>(3) == Character_Other, true);
- TEST_EQ(cts->GetEnum<Character>(4) == Character_Unused, true);
-
- auto rapunzel = movie->main_character_as_Rapunzel();
- TEST_EQ(rapunzel->hair_length(), 6);
-
- auto cs = movie->characters();
- TEST_EQ(cs->size(), 5);
- auto belle = cs->GetAs<BookReader>(0);
- TEST_EQ(belle->books_read(), 7);
- auto mu_lan = cs->GetAs<Attacker>(1);
- TEST_EQ(mu_lan->sword_attack_damage(), 5);
- auto book_fan = cs->GetAs<BookReader>(2);
- TEST_EQ(book_fan->books_read(), 2);
- auto other = cs->GetAsString(3);
- TEST_EQ_STR(other->c_str(), "Other");
- auto unused = cs->GetAsString(4);
- TEST_EQ_STR(unused->c_str(), "Unused");
- };
-
- TestMovie(flat_movie);
-
- auto movie_object = flat_movie->UnPack();
- TEST_EQ(movie_object->main_character.AsRapunzel()->hair_length(), 6);
- TEST_EQ(movie_object->characters[0].AsBelle()->books_read(), 7);
- TEST_EQ(movie_object->characters[1].AsMuLan()->sword_attack_damage, 5);
- TEST_EQ(movie_object->characters[2].AsBookFan()->books_read(), 2);
- TEST_EQ_STR(movie_object->characters[3].AsOther()->c_str(), "Other");
- TEST_EQ_STR(movie_object->characters[4].AsUnused()->c_str(), "Unused");
-
- fbb.Clear();
- fbb.Finish(Movie::Pack(fbb, movie_object));
-
- auto repacked_movie = GetMovie(fbb.GetBufferPointer());
-
- TestMovie(repacked_movie);
-}
-
-void ConformTest() {
- flatbuffers::Parser parser;
- TEST_EQ(parser.Parse("table T { A:int; } enum E:byte { A }"), true);
-
- auto test_conform = [&](const char *test, const char *expected_err) {
- flatbuffers::Parser parser2;
- TEST_EQ(parser2.Parse(test), true);
- auto err = parser2.ConformTo(parser);
- TEST_NOTNULL(strstr(err.c_str(), expected_err));
- };
-
- test_conform("table T { A:byte; }", "types differ for field");
- test_conform("table T { B:int; A:int; }", "offsets differ for field");
- test_conform("table T { A:int = 1; }", "defaults differ for field");
- test_conform("table T { B:float; }", "field renamed to different type");
- test_conform("enum E:byte { B, A }", "values differ for enum");
-}
-
-void FlexBuffersTest() {
- flexbuffers::Builder slb(512,
- flexbuffers::BUILDER_FLAG_SHARE_KEYS_AND_STRINGS);
-
- // Write the equivalent of:
- // { vec: [ -100, "Fred", 4.0 ], bar: [ 1, 2, 3 ], foo: 100 }
- slb.Map([&]() {
- slb.Vector("vec", [&]() {
- slb += -100; // Equivalent to slb.Add(-100) or slb.Int(-100);
- slb += "Fred";
- slb.IndirectFloat(4.0f);
- });
- int ints[] = { 1, 2, 3 };
- slb.Vector("bar", ints, 3);
- slb.FixedTypedVector("bar3", ints, 3);
- slb.Double("foo", 100);
- slb.Map("mymap", [&]() {
- slb.String("foo", "Fred"); // Testing key and string reuse.
- });
- });
- slb.Finish();
-
- for (size_t i = 0; i < slb.GetBuffer().size(); i++)
- printf("%d ", slb.GetBuffer().data()[i]);
- printf("\n");
-
- auto map = flexbuffers::GetRoot(slb.GetBuffer()).AsMap();
- TEST_EQ(map.size(), 5);
- auto vec = map["vec"].AsVector();
- TEST_EQ(vec.size(), 3);
- TEST_EQ(vec[0].AsInt64(), -100);
- TEST_EQ_STR(vec[1].AsString().c_str(), "Fred");
- TEST_EQ(vec[1].AsInt64(), 0); // Number parsing failed.
- TEST_EQ(vec[2].AsDouble(), 4.0);
- TEST_EQ(vec[2].AsString().IsTheEmptyString(), true); // Wrong Type.
- TEST_EQ_STR(vec[2].AsString().c_str(), ""); // This still works though.
- TEST_EQ_STR(vec[2].ToString().c_str(), "4"); // Or have it converted.
- auto tvec = map["bar"].AsTypedVector();
- TEST_EQ(tvec.size(), 3);
- TEST_EQ(tvec[2].AsInt8(), 3);
- auto tvec3 = map["bar3"].AsFixedTypedVector();
- TEST_EQ(tvec3.size(), 3);
- TEST_EQ(tvec3[2].AsInt8(), 3);
- TEST_EQ(map["foo"].AsUInt8(), 100);
- TEST_EQ(map["unknown"].IsNull(), true);
- auto mymap = map["mymap"].AsMap();
- // These should be equal by pointer equality, since key and value are shared.
- TEST_EQ(mymap.Keys()[0].AsKey(), map.Keys()[2].AsKey());
- TEST_EQ(mymap.Values()[0].AsString().c_str(), vec[1].AsString().c_str());
- // We can mutate values in the buffer.
- TEST_EQ(vec[0].MutateInt(-99), true);
- TEST_EQ(vec[0].AsInt64(), -99);
- TEST_EQ(vec[1].MutateString("John"), true); // Size must match.
- TEST_EQ_STR(vec[1].AsString().c_str(), "John");
- TEST_EQ(vec[1].MutateString("Alfred"), false); // Too long.
- TEST_EQ(vec[2].MutateFloat(2.0f), true);
- TEST_EQ(vec[2].AsFloat(), 2.0f);
- TEST_EQ(vec[2].MutateFloat(3.14159), false); // Double does not fit in float.
-}
-
-int main(int /*argc*/, const char * /*argv*/[]) {
- // Run our various test suites:
-
- std::string rawbuf;
- auto flatbuf = CreateFlatBufferTest(rawbuf);
- AccessFlatBufferTest(reinterpret_cast<const uint8_t *>(rawbuf.c_str()),
- rawbuf.length());
- AccessFlatBufferTest(flatbuf.get(), rawbuf.length());
-
- MutateFlatBuffersTest(flatbuf.get(), rawbuf.length());
-
- ObjectFlatBuffersTest(flatbuf.get());
-
- SizePrefixedTest();
-
- #ifndef FLATBUFFERS_NO_FILE_TESTS
- ParseAndGenerateTextTest();
- ReflectionTest(flatbuf.get(), rawbuf.length());
- ParseProtoTest();
- UnionVectorTest();
- #endif
-
- FuzzTest1();
- FuzzTest2();
-
- ErrorTest();
- ValueTest();
- EnumStringsTest();
- IntegerOutOfRangeTest();
- IntegerBoundaryTest();
- UnicodeTest();
- UnicodeTestAllowNonUTF8();
- UnicodeTestGenerateTextFailsOnNonUTF8();
- UnicodeSurrogatesTest();
- UnicodeInvalidSurrogatesTest();
- InvalidUTF8Test();
- UnknownFieldsTest();
- ParseUnionTest();
- ConformTest();
-
- FlexBuffersTest();
-
- if (!testing_fails) {
- TEST_OUTPUT_LINE("ALL TESTS PASSED");
- return 0;
- } else {
- TEST_OUTPUT_LINE("%d FAILED TESTS", testing_fails);
- return 1;
- }
-}
-
diff --git a/third_party/flatbuffers/tests/unicode_test.json b/third_party/flatbuffers/tests/unicode_test.json
deleted file mode 100644
index 75e467a..0000000
--- a/third_party/flatbuffers/tests/unicode_test.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "unicode_test",
- "testarrayoftables": [
- { "name": "Цлїςσδε" },
- { "name": "フムアムカモケモ" },
- { "name": "フムヤムカモケモ" },
- { "name": "㊀㊁㊂㊃㊄" },
- { "name": "☳☶☲" },
- { "name": "𡇙𝌆" }
- ],
- "testarrayofstring": [
- "Цлїςσδε",
- "フムアムカモケモ",
- "フムヤムカモケモ",
- "㊀㊁㊂㊃㊄",
- "☳☶☲",
- "𡇙𝌆"
- ]
-}
diff --git a/third_party/flatbuffers/tests/union_vector/union_vector.fbs b/third_party/flatbuffers/tests/union_vector/union_vector.fbs
deleted file mode 100644
index 495076f..0000000
--- a/third_party/flatbuffers/tests/union_vector/union_vector.fbs
+++ /dev/null
@@ -1,31 +0,0 @@
-// Demonstrates the ability to have vectors of unions, and also to
-// store structs and strings in unions.
-
-table Attacker {
- sword_attack_damage: int;
-}
-
-struct Rapunzel {
- hair_length: int;
-}
-
-struct BookReader {
- books_read: int;
-}
-
-union Character {
- MuLan: Attacker, // Can have name be different from type.
- Rapunzel, // Or just both the same, as before.
- Belle: BookReader,
- BookFan: BookReader,
- Other: string,
- Unused: string
-}
-
-table Movie {
- main_character: Character;
- characters: [Character];
-}
-
-root_type Movie;
-file_identifier "MOVI";
diff --git a/third_party/flatbuffers/tests/union_vector/union_vector_generated.h b/third_party/flatbuffers/tests/union_vector/union_vector_generated.h
deleted file mode 100644
index 104c665..0000000
--- a/third_party/flatbuffers/tests/union_vector/union_vector_generated.h
+++ /dev/null
@@ -1,598 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-
-#ifndef FLATBUFFERS_GENERATED_UNIONVECTOR_H_
-#define FLATBUFFERS_GENERATED_UNIONVECTOR_H_
-
-#include "flatbuffers/flatbuffers.h"
-
-struct Attacker;
-struct AttackerT;
-
-struct Rapunzel;
-
-struct BookReader;
-
-struct Movie;
-struct MovieT;
-
-enum Character {
- Character_NONE = 0,
- Character_MuLan = 1,
- Character_Rapunzel = 2,
- Character_Belle = 3,
- Character_BookFan = 4,
- Character_Other = 5,
- Character_Unused = 6,
- Character_MIN = Character_NONE,
- Character_MAX = Character_Unused
-};
-
-inline const char **EnumNamesCharacter() {
- static const char *names[] = {
- "NONE",
- "MuLan",
- "Rapunzel",
- "Belle",
- "BookFan",
- "Other",
- "Unused",
- nullptr
- };
- return names;
-}
-
-inline const char *EnumNameCharacter(Character e) {
- const size_t index = static_cast<int>(e);
- return EnumNamesCharacter()[index];
-}
-
-struct CharacterUnion {
- Character type;
- void *value;
-
- CharacterUnion() : type(Character_NONE), value(nullptr) {}
- CharacterUnion(CharacterUnion&& u) FLATBUFFERS_NOEXCEPT :
- type(Character_NONE), value(nullptr)
- { std::swap(type, u.type); std::swap(value, u.value); }
- CharacterUnion(const CharacterUnion &) FLATBUFFERS_NOEXCEPT;
- CharacterUnion &operator=(const CharacterUnion &u) FLATBUFFERS_NOEXCEPT
- { CharacterUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; }
- CharacterUnion &operator=(CharacterUnion &&u) FLATBUFFERS_NOEXCEPT
- { std::swap(type, u.type); std::swap(value, u.value); return *this; }
- ~CharacterUnion() { Reset(); }
-
- void Reset();
-
- static void *UnPack(const void *obj, Character type, const flatbuffers::resolver_function_t *resolver);
- flatbuffers::Offset<void> Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const;
-
- AttackerT *AsMuLan() {
- return type == Character_MuLan ?
- reinterpret_cast<AttackerT *>(value) : nullptr;
- }
- Rapunzel *AsRapunzel() {
- return type == Character_Rapunzel ?
- reinterpret_cast<Rapunzel *>(value) : nullptr;
- }
- BookReader *AsBelle() {
- return type == Character_Belle ?
- reinterpret_cast<BookReader *>(value) : nullptr;
- }
- BookReader *AsBookFan() {
- return type == Character_BookFan ?
- reinterpret_cast<BookReader *>(value) : nullptr;
- }
- std::string *AsOther() {
- return type == Character_Other ?
- reinterpret_cast<std::string *>(value) : nullptr;
- }
- std::string *AsUnused() {
- return type == Character_Unused ?
- reinterpret_cast<std::string *>(value) : nullptr;
- }
-};
-
-bool VerifyCharacter(flatbuffers::Verifier &verifier, const void *obj, Character type);
-bool VerifyCharacterVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
-
-MANUALLY_ALIGNED_STRUCT(4) Rapunzel FLATBUFFERS_FINAL_CLASS {
- private:
- int32_t hair_length_;
-
- public:
- Rapunzel() {
- memset(this, 0, sizeof(Rapunzel));
- }
- Rapunzel(const Rapunzel &_o) {
- memcpy(this, &_o, sizeof(Rapunzel));
- }
- Rapunzel(int32_t _hair_length)
- : hair_length_(flatbuffers::EndianScalar(_hair_length)) {
- }
- int32_t hair_length() const {
- return flatbuffers::EndianScalar(hair_length_);
- }
- void mutate_hair_length(int32_t _hair_length) {
- flatbuffers::WriteScalar(&hair_length_, _hair_length);
- }
-};
-STRUCT_END(Rapunzel, 4);
-
-MANUALLY_ALIGNED_STRUCT(4) BookReader FLATBUFFERS_FINAL_CLASS {
- private:
- int32_t books_read_;
-
- public:
- BookReader() {
- memset(this, 0, sizeof(BookReader));
- }
- BookReader(const BookReader &_o) {
- memcpy(this, &_o, sizeof(BookReader));
- }
- BookReader(int32_t _books_read)
- : books_read_(flatbuffers::EndianScalar(_books_read)) {
- }
- int32_t books_read() const {
- return flatbuffers::EndianScalar(books_read_);
- }
- void mutate_books_read(int32_t _books_read) {
- flatbuffers::WriteScalar(&books_read_, _books_read);
- }
-};
-STRUCT_END(BookReader, 4);
-
-struct AttackerT : public flatbuffers::NativeTable {
- typedef Attacker TableType;
- int32_t sword_attack_damage;
- AttackerT()
- : sword_attack_damage(0) {
- }
-};
-
-struct Attacker FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- typedef AttackerT NativeTableType;
- enum {
- VT_SWORD_ATTACK_DAMAGE = 4
- };
- int32_t sword_attack_damage() const {
- return GetField<int32_t>(VT_SWORD_ATTACK_DAMAGE, 0);
- }
- bool mutate_sword_attack_damage(int32_t _sword_attack_damage) {
- return SetField<int32_t>(VT_SWORD_ATTACK_DAMAGE, _sword_attack_damage, 0);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyField<int32_t>(verifier, VT_SWORD_ATTACK_DAMAGE) &&
- verifier.EndTable();
- }
- AttackerT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
- void UnPackTo(AttackerT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
- static flatbuffers::Offset<Attacker> Pack(flatbuffers::FlatBufferBuilder &_fbb, const AttackerT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
-};
-
-struct AttackerBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_sword_attack_damage(int32_t sword_attack_damage) {
- fbb_.AddElement<int32_t>(Attacker::VT_SWORD_ATTACK_DAMAGE, sword_attack_damage, 0);
- }
- AttackerBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- AttackerBuilder &operator=(const AttackerBuilder &);
- flatbuffers::Offset<Attacker> Finish() {
- const auto end = fbb_.EndTable(start_, 1);
- auto o = flatbuffers::Offset<Attacker>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<Attacker> CreateAttacker(
- flatbuffers::FlatBufferBuilder &_fbb,
- int32_t sword_attack_damage = 0) {
- AttackerBuilder builder_(_fbb);
- builder_.add_sword_attack_damage(sword_attack_damage);
- return builder_.Finish();
-}
-
-flatbuffers::Offset<Attacker> CreateAttacker(flatbuffers::FlatBufferBuilder &_fbb, const AttackerT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
-
-struct MovieT : public flatbuffers::NativeTable {
- typedef Movie TableType;
- CharacterUnion main_character;
- std::vector<CharacterUnion> characters;
- MovieT() {
- }
-};
-
-struct Movie FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- typedef MovieT NativeTableType;
- enum {
- VT_MAIN_CHARACTER_TYPE = 4,
- VT_MAIN_CHARACTER = 6,
- VT_CHARACTERS_TYPE = 8,
- VT_CHARACTERS = 10
- };
- Character main_character_type() const {
- return static_cast<Character>(GetField<uint8_t>(VT_MAIN_CHARACTER_TYPE, 0));
- }
- bool mutate_main_character_type(Character _main_character_type) {
- return SetField<uint8_t>(VT_MAIN_CHARACTER_TYPE, static_cast<uint8_t>(_main_character_type), 0);
- }
- const void *main_character() const {
- return GetPointer<const void *>(VT_MAIN_CHARACTER);
- }
- template<typename T> const T *main_character_as() const;
- const Attacker *main_character_as_MuLan() const {
- return main_character_type() == Character_MuLan ? static_cast<const Attacker *>(main_character()) : nullptr;
- }
- const Rapunzel *main_character_as_Rapunzel() const {
- return main_character_type() == Character_Rapunzel ? static_cast<const Rapunzel *>(main_character()) : nullptr;
- }
- const BookReader *main_character_as_Belle() const {
- return main_character_type() == Character_Belle ? static_cast<const BookReader *>(main_character()) : nullptr;
- }
- const BookReader *main_character_as_BookFan() const {
- return main_character_type() == Character_BookFan ? static_cast<const BookReader *>(main_character()) : nullptr;
- }
- const flatbuffers::String *main_character_as_Other() const {
- return main_character_type() == Character_Other ? static_cast<const flatbuffers::String *>(main_character()) : nullptr;
- }
- const flatbuffers::String *main_character_as_Unused() const {
- return main_character_type() == Character_Unused ? static_cast<const flatbuffers::String *>(main_character()) : nullptr;
- }
- void *mutable_main_character() {
- return GetPointer<void *>(VT_MAIN_CHARACTER);
- }
- const flatbuffers::Vector<uint8_t> *characters_type() const {
- return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_CHARACTERS_TYPE);
- }
- flatbuffers::Vector<uint8_t> *mutable_characters_type() {
- return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_CHARACTERS_TYPE);
- }
- const flatbuffers::Vector<flatbuffers::Offset<void>> *characters() const {
- return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<void>> *>(VT_CHARACTERS);
- }
- flatbuffers::Vector<flatbuffers::Offset<void>> *mutable_characters() {
- return GetPointer<flatbuffers::Vector<flatbuffers::Offset<void>> *>(VT_CHARACTERS);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyField<uint8_t>(verifier, VT_MAIN_CHARACTER_TYPE) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_MAIN_CHARACTER) &&
- VerifyCharacter(verifier, main_character(), main_character_type()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_CHARACTERS_TYPE) &&
- verifier.Verify(characters_type()) &&
- VerifyField<flatbuffers::uoffset_t>(verifier, VT_CHARACTERS) &&
- verifier.Verify(characters()) &&
- VerifyCharacterVector(verifier, characters(), characters_type()) &&
- verifier.EndTable();
- }
- MovieT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
- void UnPackTo(MovieT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
- static flatbuffers::Offset<Movie> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MovieT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
-};
-
-struct MovieBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_main_character_type(Character main_character_type) {
- fbb_.AddElement<uint8_t>(Movie::VT_MAIN_CHARACTER_TYPE, static_cast<uint8_t>(main_character_type), 0);
- }
- void add_main_character(flatbuffers::Offset<void> main_character) {
- fbb_.AddOffset(Movie::VT_MAIN_CHARACTER, main_character);
- }
- void add_characters_type(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> characters_type) {
- fbb_.AddOffset(Movie::VT_CHARACTERS_TYPE, characters_type);
- }
- void add_characters(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<void>>> characters) {
- fbb_.AddOffset(Movie::VT_CHARACTERS, characters);
- }
- MovieBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- MovieBuilder &operator=(const MovieBuilder &);
- flatbuffers::Offset<Movie> Finish() {
- const auto end = fbb_.EndTable(start_, 4);
- auto o = flatbuffers::Offset<Movie>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<Movie> CreateMovie(
- flatbuffers::FlatBufferBuilder &_fbb,
- Character main_character_type = Character_NONE,
- flatbuffers::Offset<void> main_character = 0,
- flatbuffers::Offset<flatbuffers::Vector<uint8_t>> characters_type = 0,
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<void>>> characters = 0) {
- MovieBuilder builder_(_fbb);
- builder_.add_characters(characters);
- builder_.add_characters_type(characters_type);
- builder_.add_main_character(main_character);
- builder_.add_main_character_type(main_character_type);
- return builder_.Finish();
-}
-
-inline flatbuffers::Offset<Movie> CreateMovieDirect(
- flatbuffers::FlatBufferBuilder &_fbb,
- Character main_character_type = Character_NONE,
- flatbuffers::Offset<void> main_character = 0,
- const std::vector<uint8_t> *characters_type = nullptr,
- const std::vector<flatbuffers::Offset<void>> *characters = nullptr) {
- return CreateMovie(
- _fbb,
- main_character_type,
- main_character,
- characters_type ? _fbb.CreateVector<uint8_t>(*characters_type) : 0,
- characters ? _fbb.CreateVector<flatbuffers::Offset<void>>(*characters) : 0);
-}
-
-flatbuffers::Offset<Movie> CreateMovie(flatbuffers::FlatBufferBuilder &_fbb, const MovieT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
-
-inline AttackerT *Attacker::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
- auto _o = new AttackerT();
- UnPackTo(_o, _resolver);
- return _o;
-}
-
-inline void Attacker::UnPackTo(AttackerT *_o, const flatbuffers::resolver_function_t *_resolver) const {
- (void)_o;
- (void)_resolver;
- { auto _e = sword_attack_damage(); _o->sword_attack_damage = _e; };
-}
-
-inline flatbuffers::Offset<Attacker> Attacker::Pack(flatbuffers::FlatBufferBuilder &_fbb, const AttackerT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
- return CreateAttacker(_fbb, _o, _rehasher);
-}
-
-inline flatbuffers::Offset<Attacker> CreateAttacker(flatbuffers::FlatBufferBuilder &_fbb, const AttackerT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
- (void)_rehasher;
- (void)_o;
- auto _sword_attack_damage = _o->sword_attack_damage;
- return CreateAttacker(
- _fbb,
- _sword_attack_damage);
-}
-
-inline MovieT *Movie::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
- auto _o = new MovieT();
- UnPackTo(_o, _resolver);
- return _o;
-}
-
-inline void Movie::UnPackTo(MovieT *_o, const flatbuffers::resolver_function_t *_resolver) const {
- (void)_o;
- (void)_resolver;
- { auto _e = main_character_type(); _o->main_character.type = _e; };
- { auto _e = main_character(); if (_e) _o->main_character.value = CharacterUnion::UnPack(_e, main_character_type(), _resolver); };
- { auto _e = characters_type(); if (_e) { _o->characters.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->characters[_i].type = (Character)_e->Get(_i); } } };
- { auto _e = characters(); if (_e) { _o->characters.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->characters[_i].value = CharacterUnion::UnPack(_e->Get(_i), characters_type()->GetEnum<Character>(_i), _resolver); } } };
-}
-
-inline flatbuffers::Offset<Movie> Movie::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MovieT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
- return CreateMovie(_fbb, _o, _rehasher);
-}
-
-inline flatbuffers::Offset<Movie> CreateMovie(flatbuffers::FlatBufferBuilder &_fbb, const MovieT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
- (void)_rehasher;
- (void)_o;
- auto _main_character_type = _o->main_character.type;
- auto _main_character = _o->main_character.Pack(_fbb);
- auto _characters_type = _o->characters.size() ? _fbb.CreateVector<uint8_t>(_o->characters.size(), [&](size_t i) { return static_cast<uint8_t>(_o->characters[i].type); }) : 0;
- auto _characters = _o->characters.size() ? _fbb.CreateVector<flatbuffers::Offset<void>>(_o->characters.size(), [&](size_t i) { return _o->characters[i].Pack(_fbb, _rehasher); }) : 0;
- return CreateMovie(
- _fbb,
- _main_character_type,
- _main_character,
- _characters_type,
- _characters);
-}
-
-inline bool VerifyCharacter(flatbuffers::Verifier &verifier, const void *obj, Character type) {
- switch (type) {
- case Character_NONE: {
- return true;
- }
- case Character_MuLan: {
- auto ptr = reinterpret_cast<const Attacker *>(obj);
- return verifier.VerifyTable(ptr);
- }
- case Character_Rapunzel: {
- return true;
- }
- case Character_Belle: {
- return true;
- }
- case Character_BookFan: {
- return true;
- }
- case Character_Other: {
- auto ptr = reinterpret_cast<const flatbuffers::String *>(obj);
- return verifier.Verify(ptr);
- }
- case Character_Unused: {
- auto ptr = reinterpret_cast<const flatbuffers::String *>(obj);
- return verifier.Verify(ptr);
- }
- default: return false;
- }
-}
-
-inline bool VerifyCharacterVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
- if (values->size() != types->size()) return false;
- for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
- if (!VerifyCharacter(
- verifier, values->Get(i), types->GetEnum<Character>(i))) {
- return false;
- }
- }
- return true;
-}
-
-inline void *CharacterUnion::UnPack(const void *obj, Character type, const flatbuffers::resolver_function_t *resolver) {
- switch (type) {
- case Character_MuLan: {
- auto ptr = reinterpret_cast<const Attacker *>(obj);
- return ptr->UnPack(resolver);
- }
- case Character_Rapunzel: {
- auto ptr = reinterpret_cast<const Rapunzel *>(obj);
- return new Rapunzel(*ptr);
- }
- case Character_Belle: {
- auto ptr = reinterpret_cast<const BookReader *>(obj);
- return new BookReader(*ptr);
- }
- case Character_BookFan: {
- auto ptr = reinterpret_cast<const BookReader *>(obj);
- return new BookReader(*ptr);
- }
- case Character_Other: {
- auto ptr = reinterpret_cast<const flatbuffers::String *>(obj);
- return new std::string(ptr->c_str(), ptr->size());
- }
- case Character_Unused: {
- auto ptr = reinterpret_cast<const flatbuffers::String *>(obj);
- return new std::string(ptr->c_str(), ptr->size());
- }
- default: return nullptr;
- }
-}
-
-inline flatbuffers::Offset<void> CharacterUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const {
- switch (type) {
- case Character_MuLan: {
- auto ptr = reinterpret_cast<const AttackerT *>(value);
- return CreateAttacker(_fbb, ptr, _rehasher).Union();
- }
- case Character_Rapunzel: {
- auto ptr = reinterpret_cast<const Rapunzel *>(value);
- return _fbb.CreateStruct(*ptr).Union();
- }
- case Character_Belle: {
- auto ptr = reinterpret_cast<const BookReader *>(value);
- return _fbb.CreateStruct(*ptr).Union();
- }
- case Character_BookFan: {
- auto ptr = reinterpret_cast<const BookReader *>(value);
- return _fbb.CreateStruct(*ptr).Union();
- }
- case Character_Other: {
- auto ptr = reinterpret_cast<const std::string *>(value);
- return _fbb.CreateString(*ptr).Union();
- }
- case Character_Unused: {
- auto ptr = reinterpret_cast<const std::string *>(value);
- return _fbb.CreateString(*ptr).Union();
- }
- default: return 0;
- }
-}
-
-inline CharacterUnion::CharacterUnion(const CharacterUnion &u) FLATBUFFERS_NOEXCEPT : type(u.type), value(nullptr) {
- switch (type) {
- case Character_MuLan: {
- value = new AttackerT(*reinterpret_cast<AttackerT *>(u.value));
- break;
- }
- case Character_Rapunzel: {
- value = new Rapunzel(*reinterpret_cast<Rapunzel *>(u.value));
- break;
- }
- case Character_Belle: {
- value = new BookReader(*reinterpret_cast<BookReader *>(u.value));
- break;
- }
- case Character_BookFan: {
- value = new BookReader(*reinterpret_cast<BookReader *>(u.value));
- break;
- }
- case Character_Other: {
- value = new std::string(*reinterpret_cast<std::string *>(u.value));
- break;
- }
- case Character_Unused: {
- value = new std::string(*reinterpret_cast<std::string *>(u.value));
- break;
- }
- default:
- break;
- }
-}
-
-inline void CharacterUnion::Reset() {
- switch (type) {
- case Character_MuLan: {
- auto ptr = reinterpret_cast<AttackerT *>(value);
- delete ptr;
- break;
- }
- case Character_Rapunzel: {
- auto ptr = reinterpret_cast<Rapunzel *>(value);
- delete ptr;
- break;
- }
- case Character_Belle: {
- auto ptr = reinterpret_cast<BookReader *>(value);
- delete ptr;
- break;
- }
- case Character_BookFan: {
- auto ptr = reinterpret_cast<BookReader *>(value);
- delete ptr;
- break;
- }
- case Character_Other: {
- auto ptr = reinterpret_cast<std::string *>(value);
- delete ptr;
- break;
- }
- case Character_Unused: {
- auto ptr = reinterpret_cast<std::string *>(value);
- delete ptr;
- break;
- }
- default: break;
- }
- value = nullptr;
- type = Character_NONE;
-}
-
-inline const Movie *GetMovie(const void *buf) {
- return flatbuffers::GetRoot<Movie>(buf);
-}
-
-inline Movie *GetMutableMovie(void *buf) {
- return flatbuffers::GetMutableRoot<Movie>(buf);
-}
-
-inline const char *MovieIdentifier() {
- return "MOVI";
-}
-
-inline bool MovieBufferHasIdentifier(const void *buf) {
- return flatbuffers::BufferHasIdentifier(
- buf, MovieIdentifier());
-}
-
-inline bool VerifyMovieBuffer(
- flatbuffers::Verifier &verifier) {
- return verifier.VerifyBuffer<Movie>(MovieIdentifier());
-}
-
-inline void FinishMovieBuffer(
- flatbuffers::FlatBufferBuilder &fbb,
- flatbuffers::Offset<Movie> root) {
- fbb.Finish(root, MovieIdentifier());
-}
-
-inline std::unique_ptr<MovieT> UnPackMovie(
- const void *buf,
- const flatbuffers::resolver_function_t *res = nullptr) {
- return std::unique_ptr<MovieT>(GetMovie(buf)->UnPack(res));
-}
-
-#endif // FLATBUFFERS_GENERATED_UNIONVECTOR_H_