Squashed 'third_party/flatbuffers/' changes from 338393f85..e5f331db9
e5f331db9 [TS] Add single-file ts codegen & bazel rule for typescript (#7161)
2f84c6038 Apply Namer to Go code gen (#7150)
d64839651 [Lobster] file_identifier support
777e78d8d [Lobster] support unsigned integer reads
4016c549d Apply Namer to Python code gen (#7146)
40827b21b Fix missing 'break' (#7151)
65a10b6e3 Implement a config based name manager and use it in Rust codegen (#7144)
8db2fef3f [TS] Escape keywords in typescript object names (#7137)
9ed132304 Fix 64-bit numeric enum values in typescript (#7135)
1a4c40566 updated npm to 2.0.6
318594e4b prevent name clash (#7133)
3d903302c [Rust] Add length checks to arrays and vectors. (#7130)
c9571d989 Replaced ToDasherCase with ConvertCase (#7131)
3694b830a Use ConvertCase instead of Make{Upper,Lower,Snake} implementations (#7127)
0471fa807 remove stall reference to version
914344ea9 some minor help edits
b40266c56 Use target_compile_features to target C++11 (#7122)
8a9303d46 update proto tests with alaised enum (#7121)
30c4bf47f Trigger fuzzing CI only on relevant changes (#7120)
46ce45601 remove auto generate code from cmakelists (#7119)
433312c55 add the missing checkNullConditionnal code in the "GenObjApi" function when the field is scalar optional (#7114)
9c52ec374 Add deps attribute to flatbuffer_cc_library (#7107)
70e2f49bf fixed string-json -> strict-json typo
5ac0367ed [TS] Fix generation of reserved words in object api (#7106) (#7115)
5d101afb5 Fix minor typo in WhitePaper.md (#7108)
06f4af11b Go optional scalars (#7104)
57e338f81 explicitly use windows-2019 to unblock ci (#7105)
615616cb5 Change Rust generated file defaults (#7101)
3413c3300 Fixed FlexBuffers verifier fuzzer timing out
69f5660a4 Fixed Parser not checking size of union types vector
d5add9fca Fixed FlexBuffers ToString unquoted non-ident keys
15df50eb7 Remove @ExperimentalUnsignedTypes annotation from kotlin code generator. (#7092)
a94132a45 Swift FlatBufferBuilder.sizedByteArray to ByteBuffer.toArray() (#7093)
48befb6be [TS] Refactor away circular ref (#7099)
b30069133 Add reflection support for python (#7026)
faadbc10e Add CreateVector overload to accept array like (#7095)
ed6ae8d32 explicitly defined std::allocator (#7094)
e910bddbc [JS] Add ".js" suffix to all import statements to generate a browser compatible mjs version. (#7086)
c85fb690f Add Parsing Completed function for Rust (#7084)
c1daa6ba0 rust: Bump thiserror version and remove git dependency (#7080)
4c71c7b02 replace framework include of flatbuffers (#7079)
f5664d33f fix go_test implement error (#7012)
39c8a19ce fixed comparator for native_inline (#7076)
826193ff6 skip generating reflection.fbs in generate_scripts (#7077)
fd0d1ed92 update C++ generator to emit scoped enums in vector of unions (#7075)
424988f30 replaced removed xml tag
b2550dbaa removed BSD-3-Clause license and Zlib licenses (#7073)
a2b238960 Fixed default value of bool in struct for Swift (#7072)
619b78437 one last dart omit local (#7070)
68a766154 more omit type annotations for dart local variables (#7069)
7dac9961f omit type annotations for dart local variables (#7067)
c65c389c6 add xmlns to .Net (#7066)
6446dcf3d Updates swift gen licence for grpc code (#7063)
e090d8da1 Fixed long cast to int in flexbufferbuilder.java (#7059)
bc901436d clang format on codebase (#7058)
240be9b5a attempt to remove appveyor (#7056)
bc366a7f9 Provide a short help text and default in error case (#6992)
14b19d446 Use FindPython3 (#7055)
9e6f17b94 remove BIICODE
c3801ad37 Update readme.md
4f3b24db0 Fixes a bug where bools arent being nil when marked optional (#7051)
1d294a31b Implement Serialize on generated rust types (#7022)
dd8fccfb1 Cmake 3.16 de-facto minimum version (#7049)
7089c9ecd Convert flatbuffers_version_string to inline function (#7046)
43203984f [C++] Support C++ object copies and moves (#5988)
5993338ee [ts] Builder incorrectly serializing empty strings (#7047)
19920db39 Include a SizePrefixed..HasIdentifier for c++. (#6871)
dbbaeac85 Use `${PYTHON_EXECUTABLE}` instead of `py` in cmake (#7042)
028f0fde6 'flattest': Add --test_path option (#7041)
87343631b Added support for clang-cl on windows (CMake) (#7038)
1fbfaf5c5 Fix/cmake build grpc (#7028)
4421375bb Add FlatBuffers::FlatBuffers interface, needed for FetchContent_Declare (#7023)
162ad7a37 Fix comment with line orders - Rust should be last. (#7037)
a0a6c3f8c Use actions/checkout@v2, which fixes security vulnerability. (#7036)
a2d38fbb9 Add --warnings-as-errors to flatc compiler. (#7034)
9ef1524d3 Emit include for bfbs-gen-embed (#7031)
0c9de0352 Upgraded GRPC version to 1.42.0 (#7033)
a783bc926 chore: dart 2.0.5 release changes (#6983)
aff818ceb rust: Allow for usage in no_std environment (#6989)
d7b75417f Make flatbuffer builder deterministic (#6993)
a42e89897 Added verifier alignment checking to table fields (#7018)
96cc2f3ee BuildFlatBuffers.cmake: fix arguments not passed properly to flatc (#7013)
3250a1f8d Add initial C# vector of unions support to the documentation. (#6880)
ace4a37f2 [TS/JS] BigInt implementation (#6998)
f28c2b293 Avoid implicit conversion from float to double. (#7003)
96f3cf690 Rearrange #include directives to pass to compilation with a particular DSP toolchain (#7000)
b3edfdbfb Reverting grpc generated file suffix (#6995)
b8aaccee8 Disable parsing of nested_flatbuffers as bytes by default
2dc8ae774 Enable OSS-Fuzz on CI
5b0d49112 Updated FlexBuffers fuzzer
d8b7041d7 Added alignment checking to FlexBuffers verifier
5a0c3366c FlexBuffers verifier additionally checks for nesting
f8148b8da Made FlexBuffers reuse tracker track types
a22b1b626 Prevent shadow with _{{FIELD_NAME}} (#6991)
4264daadd FlexBuffers fuzzer fixes
3cbc120a0 Refractor Flatc Options (#6987)
8dcd2682c [CMake] Add option for disable universal on OSX (#6990)
b78002ff3 Validate C# json/object-api options (#6985)
c555ee8fa Add .NET test to github workflows (#6982)
b92bb0584 [CMake]: Fix version in pkgconfig file (#6986)
956d11569 re-enabled FlexBuffer JSON in fuzzer
e367ca32a Verifier for FlexBuffers (#6977)
705f27f6e [CMake]: Fix python command for mingw environment (#6984)
5fc87f4c4 Enable --gen-onefile in Python (#6953)
11749095a Make idl_parser deterministic (#6976)
d0cede9c9 Bumping to Version 2.0.5 (#6967)
fcc2bee0b Fix typo in variable name (#6973)
e08da4dea remove Appveyor's Vs2010 and 13 builds (#6969)
18538c401 [TS] Fix reserved words as arguments (#6955) (#6956)
e57f4ab2d Update stale bot version and provide away to exempt issues with the not-stale label (#6968)
deed68db5 missing generated files (#6966)
061d61f3f Lua Generator using IR. (#6940)
cffe0c454 FixedTypedVector: add const to ElementType() and size() (#6965)
fadd40e40 Have grpc include file with correct filename-suffix given to flatc (#6954)
e47dc0e46 Removed test/generate_code.{sh|bat} (#6873)
5c5475479 switched to windows-lastest, removed deadcode (#6948)
4f7f6dc30 Restore FlatBufferBuilder::kFileIdentifierLength. (#6960)
0fadaf391 Enable verifier on nested_flatbuffers
4d0e9a870 Turn off nested FlatBuffers/FlexBuffers for the fuzzer
c05f6783a invalid conditional running genrate_code.py (#6952)
a14f4052c rust: remove needless borrow (#6922)
9e4ca857b Vector Downward GetSize optimization (#6925)
a2b99084b Fix flexbuffers clang-analyzer warning (#6947)
85b4effac test: fix undefined order of functio parameters. (#6946)
790f41154 [cmake] Fix getting version info from tags during the build (#6936)
e89de4411 clang-all (#6941)
256ab3798 WIP: Dart release 2.0 (#6927)
a59288a01 Add benchmarks to Linux CI (#6928)
587bbd49a [C++] Fix compile failure on Object API union construction for struct member (#6923)
a9c341545 Fix integer overflow warnings
8aa18b629 fixed cmp0048 error (#6932)
d727579b6 fuzzers: fix typo in file path (#6931)
97a30171c Added Raw C++ benchmarks (#6924)
0989fc5e5 Added Google benchmarks (and gtests) (#6920)
927175ea2 [Java] lookup by byteArray is giving back wrong entry (#6915)
6748c373b Removal of support for FLATBUFFERS_CPP98_STL (#6918)
3fab0c6ee move [[ ]] to calling sites (#6914)
6c8c29155 [C++] Split flatbuffers.h into separate files (#6868)
fd4ff23da Keep methods with struct name and switch them to default (#6879)
f8b69e330 [Python] Verify EnumDef is not generated in GenUnionCreator (#6903)
c0394bb09 Support `--conform` for vector of unions (#6883)
8433eb108 Typo fixes in comments of flatbuffers.h and flexbuffers.h (#6901)
f2f9380c8 [Java] Prevent generation of enum names when underlying type is long (#6781) (#6895)
e672dabfe [C++] Fix memory leak when using grpc (#6896) (#6897)
9a4ca2764 Output errors / warnings on stderr instead of stdout (#6881)
4c7a9c10d Adds JSON encoding to swift (#6874)
38295a187 [Kotlin] Fix missing escape for struct construction statements (#6877)
31bb0b972 add working directory (#6878)
45e5642e9 Default Arguments for Mutators C++ [Updated] (#6872)
a592f4c89 [Cmake] Add a post build command after flatc to run the new generate_code.py script. (#6866)
b9d43a557 dart - add Packable interface (#6846)
2ece9e25b Bumped package.json to 2.0.4
2dd212637 Fix linker errors on (Free|Open)BSD. (#6860)
f63c130c2 Improves documentation, and adding DocC (#6784)
e2b26ee19 Make and generate_code.sh generate same outputs (#6855)
9d686bf43 Include subdirectories in published npm package (#6850)
1d26daff3 Use ArrayBuffer type for JS flexbuffer's toObject (#6851)
e72e18d9f feat(build): compile "universal" libraries and executables for Mac (#6852)
354d97f6d fixed errant itemgroup element in C# test project (#6854)
6f7a57eaa [C#] Using 'global::' as qualifying_start_ within BaseGenerator (#6767)
90baa1444 Dart: binary lists (typed_data) (#6839)
0a3b017f0 Delete IDLOptions::lang (#6841)
47d35f105 BugFix: Optional enum when it is null (#6835)
8fb8c2ce1 [C#] Use @ for keyword escaping (#6834)
1d063d87c [C++] Let builder accept custom-alloc std::vector (#6814)
338331b55 Changes to support binary schema file loading and parsing (flatc) (#6823)
156a30c75 Move Apple-specific build flags to Clang section (#6802)
550d2f904 Issue error if jsonschema has no root type defined #6821 (#6831)
c3a38242e Fix typos in docs (#6829)
74c3d7eba [C++] Add mutable version of LookupByKey and test (#6826)
db6eae5c4 Add html and latex to gitignore (#6819)
0e9d79c35 [Java] Avoid casting ByteBuffer to Buffer (#6785)
b20c4d3aa [C++] Add GetMutableSizePrefixedRoot and generate GetMutableSizePrefixedXxx functions (#6815)
ae145293c flattests_cpp17 doesn't compile with Visual Studio 2017: warning C4100: 'indent': unreferenced formal parameter (#6811)
e3c76a5cd Dart lints (#6808)
4b9123baf fix parser string=null (#6810)
f89e0b1a6 Refactor idl_gen_rust and Rust generated code to use consistent whitespace (#6809)
273f6084e Fix Rust keyword inconsistency (#6794)
4a0879458 [C#] Remove superfluous semicolon in C# structs (#6791)
d6f51ea16 fix ptr in flatbuffers cpp tutorial (#6787)
067dce6e7 [C#] Handle keywords (#6775)
2ca5f0e72 [C#] Respect command line parameter for file name extension and suffix (#6779)
f20d2253a update Java version to 2.0.3
390d438e2 [Kotlin] Fix CI by changing compiler to Java 11 (#6783)
6fb2c90d9 avoiding even more NoSuchMethod exceptions (#6729)
a7b527d94 java: Use maven profile to target Java 8 bytecode (#6764)
5d77820b3 [C++] Using calculated fields_number for field_names size (#6769)
909ce970a [C++] Use UnPackTo instead of UnPack if pointer exists (#6725)
35e2cac6e Store vtables sorted in Rust builder (#6765)
c39fc9dd9 [C++] Use nullptr instead of 0 in generated headers (#6762)
775c6567d [C++] Fix compiler warning -Wredundant-parens in clang (#6761)
97d9527f6 Dart 2.0 release prep (#6759)
e01205466 [C++] Use proper gRPC C++ API when using MemoryBuffer Slice (#6756)
5235133f3 Dart - make ascii optimization optional in StringReader, same as in writeString() (#6758)
c871df770 Dart - change table building to assert() instead of exceptions (#6754)
a6eeeb3b9 Dart - inline small functions to increase performance (#6755)
3dd02144d [C#] Fix field name struct name collision (#6744) (#6757)
e77926f0e [C#] Add Union Constructor Utility for ObjectAPI. (#6105)
ac2348202 Dart - fixup writeString() return type after previous merges (#6753)
8be8a0a71 [C++] Fix union type handling on object api in C++17 (#6745)
12e341e4f Rework how Rust generated files are laid out (#6731)
c36672d80 Dart - optimize writeString for ASCII (#6736)
2bfc8e9f0 Dart - make writeString() argument non-nullable (#6737)
674a9f2aa fix lints in rust tests (#6743)
016e6aa13 Add a split on ':' to build_defs.bzl (#6742)
65700441d Dart - make vTable fixed size (expect the number of fields when creating) (#6735)
dd5bb55ca Dart - make vTable deduplication optional (#6734)
e8423da1b Dart - regenerate example after recent flatc changes (#6733)
0980e39c9 flexbuffers: Add variant of Blob() that takes a key (#6730)
e73fab27d Dart - store empty vectors instead of NULL (#6728)
92ae532e4 Dart - finish/lowFinish/buffer changes (#6712)
7482b25f8 Remove ubuntu1604 from presubmit.yml (#6715)
3f77dc9a0 Dart - unpack() must use eager list reader (#6723)
838c93b84 Dart - fix flex-builder compilation error (#6722)
089f48a4a Dart - make sure added padding is zeroed, same as in C++ (#6716)
bf3470c16 Fix UB in CreateVectorOfStructs in case of an empty vector: avoid calling memcpy in this case (#6726)
8f8196e13 Fix 6348 (#6717)
8ab35b2a5 Dart - add custom allocator support (#6711)
c0ba2870c Fix typo in docu (#6714)
22498cf3a [C++] add make_span for Array<T,N> (#6663)
bd37e67ac [C++] Fix a -Wdeprecated-copy warning. (#6708)
a6ee33557 Dart null safety (#6696)
71d43f3be Make --bfbs-filenames default to location of first schema file. (#6705)
c8db1ca5d Jsonschema add prop comments (#6617)
962751a6e Improve generated comparisons for tables (#6486)
06fd6d640 Replace filenames in reflection with filenames+includes. (#6703)
acce4ac3f Fix incorrect assertion usage. (#6702)
8fd7861b7 Fix warning about deprecated module: imp (#6362)
c58ae9422 Add the file a symbol is declared in to Reflection (#6613)
2cf7bb796 Intermediate Representation docs (#6685)
4e3a66c14 Dart object API (#6682)
d959e2320 dart - change Builder.reset() to reuse an existing buffer (#6661)
a9fb54088 use improved versioning (#6691)
337eb8b8f update docs - structs can't be roots (#6690)
6415ef05d [Python] [Codegen] Fixes nested structs with underscore names (#6686)
f069396d1 [C++] flatc --cpp-field-case-style option to permit camel-case field names in C++ (#6669)
021177af0 Fix snap version formatting (#6683)
e1e9f9373 [C++/grpc] added hiding of unused variables in the generated code (#6677)
15110094e Fix GitHub Actions CI gcc/clang versions
093badb0a Use unoptimized path for ReadUInt64 for win32 build as the optimized path crashes. (#6681)
752c7b576 avoiding more NoSuchMethod exceptions (#6671)
7c3e267e1 [Java] ObjectAPI implementation (#6521) (#6582)
baaffbaed npm update to 2.0.3 and script fix
4cb3f222b [TS] Fix module reference in package.json (#6676)
eabdbda75 [TS] Generate entry point module (#6674)
bec23700f Prepare for Java 2.0.1 release
12f2eedad Update CI to GCC/Clang 11
221eeb231 Fix typo in C++ doc (#6664)
813d3632e avoiding NoSuchMethod exception (#6658)
d84bccb0c Removed most heap allocations in builder (#6662)
b4e67f9bf Dart test fix (#6660)
54c11932f [Java] Flexbuffers - Negative signed object length (#6651)
fbcb3c423 [TS/JS] Updates the grpc (#6654)
8937dcfd7 Updates go lang support to allow other languages to communicate with it (#6653)
512d5a689 Update readme.md to point to security policy
a92cb5dd7 Create Security.md
d151dcbb9 Revert "[C++] Removed most heap allocations in builder (#6620)" (#6659)
f1884c66f Fix gRPC test to use EndVector without specifying the length. (#6646)
72730ecd8 [C++] Removed most heap allocations in builder (#6620)
fe2bc2b0a Added README for Rust Flatbuffers (before publishing v=2.0) (#6652)
4867c9456 Fixed generation of c++ code with flags (#6637)
ef0eb3701 Ran clang-format-all.sh. Removed default --style=file parameter (#6639)
f83ee1af5 [idl_parser] Check structs and enums do not clash in a namespace (#6562)
a5175c513 Implements verifier and code gen for swift (#6373)
04b10f5a3 Deprecate EnumVal.object (#6612)
c121c0345 Fixed Java gRPC version number dependency
8fd10606c Implement Serialize for flexbuffer::Reader (#6635)
a1730fcea [Swift] Updated cocoapods to 2.0.0 (#6634)
a9a295fec More missing version changes
5c01ad387 Dart generated code update
42ca1b914 Swift/Kotlin generated code version updates
6ed780dbd C++/Rust version changes
3412fab8e C#/Java generated code version updates
8a7d013f8 Updated main version numbers to 2.0
170af5978 [Go] Add missing namespace when using Object API (#6633)
c8c16de16 Fix reverse iterators for Vector and Array (#6626)
4525cd9c5 [Lua] manipulate byte array as string (#6624)
47361baf6 [C++] Fix union copy constructor to work with nested structs (#6552) (#6607)
8a582883a Updates swift generated monster sample file (#6616)
a4bb8f0c2 [Lua] Avoid infinite loop when creating empty string (#6614)
82aed82b8 Added support for Lua 5.1, 5.2 and 5.4 (#6606)
60ff76630 [TS] Remove wrong and obsolete NS prefix use (#6604)
a27c7d809 Fixed LuaJIT when not compiled with COMPAT mode (#6605)
363220823 removed unneeded type prefixing (#6601)
6b44c605b Bump Rust to 0.9.0 (#6610)
d3cd78a87 [Lua] Add LuaJIT support (#6584)
8fa3dfdb5 Introduce new_from_vec in Rust (also fix formatting) (#6599)
29379e8e4 fix typo in CppUsage.md (#6595)
14725d6c3 [Lua] GetRootAs can accept strings. Made Luatest Benchmarks optional (#6593)
16836ff95 Add advance feature indicators to reflection (#6546)
c87179e73 Rust Remove SafeSliceAccess for Arrays, and fix miri. (#6592)
c24031c36 Mark endian_scalar as unsafe. (#6588)
4ccc52c7a [swift] Implements union strings (#6589)
b82fe0738 [Rust] Fix small mistyping (#6585)
1e7f6c8c7 [TS] Commit the generated tests code (#6579)
84714b109 chore: ensure bash is used to generate code (#6577)
1045d7dd4 [Lua] Fix EnforceNumberAndPack for bool type (#6576)
0c7777596 [TS] Remove duplicated build-ts ci (#6575)
c43ba1752 [Rust] Specify Minimum Supported Rust Version (#6573)
da3bb64ef [Rust] Add support for fixed size arrays (#6548)
151900ba9 [Kotlin][FlexBuffers] Add support for Kotlin-iOS (#6564)
c012f29f9 silenced clippy warning (#6565)
df2df21ec [Kotlin] Bump kotlinx.benchmark dependency to 0.3.0 (#6560)
408e4db4a [TS] Add Build TS to CI jobs (#6524)
4d2364f34 [Kotlin][FlexBuffers] Add support for Kotlin-JS (#6554)
261cf3b20 Default-empty vectors of enums (#6505)
cd67261bb [CI] fixes buildkite (#6544)
1aa0c2f6a Limit formatter to pull requests only (#6540)
4133a39df Rust structz (#6539)
1c26d2a1a [Kotlin][FlexBuffers] JSON support for Flexbuffers (#6417)
276b1bc34 [grpc] Support latest version of grpc PoC (#6338)
124654ffc fixed packing structs (#6530)
3b7d1e86b [GO] Tries to add go format to the CI (#6518)
78f0c0d1d [C++] #6501 - Problem when mapping a native type multiple times (#6514)
c992eafb5 [fuzzer] Add `monster_debug` target (#6513)
ef8dd7792 [Swift] Removes allman rule (#6519)
69b329fc8 [flexbuffers, json] Parse `nan` and `inf` (#6512)
6543ba529 fixed packing structs in nested buffers (#6509)
0e453ac35 [idl_parser] Add kTokenNumericConstant token (#6432)
e9b4ae69d Remove `flatbuffers.pc` from the repository (#6508)
fc4fffea4 Bump grpc to 1.0.0 (#6507)
b240ab704 Move Traits struct and Create method out of --cpp-static-reflection. (#6503)
9a4f1f434 Disable x64-specific optimizations for ARM64EC ReadInt64 (#6506)
fac64918d Add --cpp-static-reflection to generate_code.bat. (#6502)
a69815f72 [C++17] Add compile-time reflection for fields. (#6324)
4033ff589 fixed invalid TS call and added test files (#6495)
a08357251 disable clippy (#6494)
5319dedb1 [idl_parser, JSON] Disable parsing of JSON for incomplete schemes (#6493)
bd4e0b30a [idl_parser] Track included files by hash (#6434)
bf9061200 fix for noUncheckedIndexedAccess in ts (#6474)
8142fedd1 Working on a python example plus fixing python grpc code (#6456)
c0be1cb7a [rust] Remove debug code (#6475)
8cccdfba5 Revert "[C#] Fix truncated ArraySegment<byte> if elementSize != 1 (#6462)" (#6488)
cbbbaa61b [C#] Fix truncated ArraySegment<byte> if elementSize != 1 (#6462)
ffc2ef77c [CI] Adds Code Generation tests on Github Actions (#6482)
1da6f4f18 [CMake] generate pkg-config flatbuffers.pc file (#6455)
b5da526e6 [Swift] Moves grpc example to grpc/examples (#6479)
3b5365762 [TS] Moves grpc code to examples folder (#6476)
e2f5438ac Fixes grammer (#6477)
5e3613f73 Fix sample_binary.py to use latest EndVector without a size. (#6478)
e6b911d40 updated JS docs to reflect current status (#6436)
0c7ae5816 [Go] Working on a go example plus fixing go grpc code (#6448)
ae603b977 [Swift] adds support for default vectors and strings (#6461)
7f47718b6 Update Building.md (#6473)
54dc09e8a GetUOffsetT must get value by GetUint32 not GetInt32 (#6072)
334c6be49 Fix a typo in Swift codegen (#6470)
4174c10e7 [rust] Genericize flexbuffer reader (#6450)
a20f606c2 [Swift] Renaming protocols (#6469)
a72a20827 Update swift docs (#6460)
86401e078 Default strings and vectors: Parser + Rust support (#6421)
6af37e672 [CMake] Renames BUILD files (#6457)
1b88655b0 [Build, cmake] Add -Werror override option (#6429)
0b15916e5 [C++]Fix extra char generation for byte type during json schema generation (#6276)
60eed0ca6 Updating working code (#6441)
0f83367f5 JSON schema - tailing double quotes for maximum (#6452)
fee095410 [idl_parser] Validate `force_align` on all possible paths (#6430)
6f3e45eca Implement Rust object API defaults (#6444)
815d3e820 Upgrade swift grpc to alpha 24 (#6439)
76e7a0ff5 [fuzzer] Limit parser_fuzzer execution time (#6431)
6d91096a2 This commit contains the initial implementation of Flexbuffers in Kotlin. The code was ported based (#6387)
13d9e3585 Better python generated code naming (#6336)
6effe431b Rust: remove inner attributes (#6410)
efcbdc769 [Rust] Ensure unions are referenced with the correct path (#6422)
e581013e3 Refactor FieldDef to model presense as an enum rather than 2 bools. (#6420)
0984d4328 [c++] Apply NativeName before WrapInNameSpace in idl_gen_cpp.cpp (#6419)
786f69b24 Formats cpp code (#6349)
1da0a2dfa Rust Object API (#6070)
796ed68fa Clarify that (Flat|Flex)Buffers do not deduplicate vector elements (#6415)
7b1ee31d8 Clarify that FlatBuffers unions do not support scalars (#6416)
4aff1198d Explain how FlatBuffers encodes unions (#6414)
ad3a729f9 dart Builder - expose finished buffer size (#6403)
52e217706 Remove invalid claim that Protocol Buffers does not support unions (#6413)
760c65755 [TS/JS] New gen TS code gen (#6302)
75c859e98 [idl_parser] Improve symbols lookup thru parent namespaces (#6407)
91b0958c4 Search for includes in the directory containg the current file (#6371)
8008dde11 Upgrade Rust dependencies (#6406)
c81cf8249 [TS/JS] New gen TS code gen prequel to preserve history (#6404)
8573108bb Unset FieldDef.optional if its key (#6402)
7abe612b5 [fuzzer] Fix the binary schema loading in the monster_fuzzer (#6396)
408cf5802 Fix Rust UB problems (#6393)
39e115fdb Define Vector::value_type for STL compatibility (#6394)
85719669c [fuzzer] Debug the monster_tets.bfbs on clusterfuzz server (#6392)
809fe49c7 Fix up scripts, fix generated enum value for strong mode, regenerate files (#6389)
41253e574 [go] tests/GoTest.sh: Fix flags.Parse location to work on new go SDKs. (#6388)
08d2ce844 fix Dart Builder._writeString() - always write trailing zero byte (#6390)
a15a8d930 fix Dart Builder.reset() - clear vTables (#6386)
83ce29cc2 [C++, JSON] Fix nullptr access when reading a key with a default value. (#6375)
4363c1d2c Fix generated EndVector. (#6385)
1bf1ec027 Implements type promotion for Java enum (#6382)
080097653 Delete label_notify.yml
795408115 Disabled PHP CI (#6381)
46545e627 fixed warnings (#6355)
0168178a1 Fix multiple fbs code generation failure (#6365)
82836a62b [idl_parser] Improve stack overflow protection (#6364)
e7430bbeb [idl_parser] Check the range of explicitly set field's id value (#6363)
24dd85fd2 Generate code to encode and decode nested flatbuffers in Python. (#6354)
57f68e289 [Rust] Shared String (#6367)
44cf2bde1 Updates license date to 2021 (#6378)
be37d4da1 include_prefix support for rust (#6330)
4e79d129c [Swift] Rebuild the way swift handles structs from scratch (#6326)
05192553f Fix typos in usage/comments; Make rust generator respect to --filenam… (#6342)
f2511d7d4 Renaming infinity variables in test.cpp (#6340)
f8b203c9c Add vectorNumElements attribute to Builder for simpler vector creation. (#6328)
8ab7c7e2c [CI] Adds formatter to CI (#6272)
7e0039028 Fix Max CI build path (#6333)
65c415911 Generate nullable properties in C# object-based API for optional scalars. (without -gen-mutable) (#6273)
a9e91116d [Python] Commit some orphan python genfile diffs. (#6325)
80a745d9b Fixed missing ending quotes in labeller (#6327)
9fca5e4f4 Add flatc option to inhibit all warnings #6005 (#6301)
92a806b4e [fuzzer] Rename fuzzing dictionaries for `oss-fuzz` (#6318)
9c9baf6d5 bumprust (#6322)
aafc5dc95 Set default initialSize for Builder to 0 (#6310)
442949bc1 Rust Flatbuffers Verifier (#6269)
9064072e8 Version message should be a "STATUS" to avoid going to stderr. (#6316)
fd4c1b5ff Replace std::string and const char* CreateSharedString with string_view (#6315)
bc7eb8ade [fuzzer] Fix mistakes in the `parser` and `scalar` fuzzers. (#6314)
fc960f367 Add default to offset param of Python generated GetRootAs (#6312)
f437f0f7e [fuzzer] Fix loading of schema in monster_fuzzer (#6308)
7f33cf682 [C++] Switch `flatc` to `--cpp-std c++11` C++ code generator (#6306)
8d9eae9ac [idl_parser] Unify parsing of NaN values read from .fbs and .json files (#6296)
2046bffa4 Moved various language tests from AppVeyor to GitHub Actions (#6300)
git-subtree-dir: third_party/flatbuffers
git-subtree-split: e5f331db998a808f78cf5a4880e6f5d0a321c4d0
Signed-off-by: James Kuszmaul <jabukuszmaul+collab@gmail.com>
Change-Id: I37f8aaf007fc86226cfa250169a87807afa64a78
diff --git a/tests/union_vector/Attacker.cs b/tests/union_vector/Attacker.cs
index 870643f..cf6d1a7 100644
--- a/tests/union_vector/Attacker.cs
+++ b/tests/union_vector/Attacker.cs
@@ -10,7 +10,7 @@
{
private Table __p;
public ByteBuffer ByteBuffer { get { return __p.bb; } }
- public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_1_12_0(); }
+ public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_2_0_0(); }
public static Attacker GetRootAsAttacker(ByteBuffer _bb) { return GetRootAsAttacker(_bb, new Attacker()); }
public static Attacker GetRootAsAttacker(ByteBuffer _bb, Attacker obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
public void __init(int _i, ByteBuffer _bb) { __p = new Table(_i, _bb); }
@@ -46,7 +46,7 @@
builder,
_o.SwordAttackDamage);
}
-};
+}
public class AttackerT
{
diff --git a/tests/union_vector/Attacker.java b/tests/union_vector/Attacker.java
index 2221944..482a3ae 100644
--- a/tests/union_vector/Attacker.java
+++ b/tests/union_vector/Attacker.java
@@ -7,7 +7,7 @@
@SuppressWarnings("unused")
public final class Attacker extends Table {
- public static void ValidateVersion() { Constants.FLATBUFFERS_1_12_0(); }
+ public static void ValidateVersion() { Constants.FLATBUFFERS_2_0_0(); }
public static Attacker getRootAsAttacker(ByteBuffer _bb) { return getRootAsAttacker(_bb, new Attacker()); }
public static Attacker getRootAsAttacker(ByteBuffer _bb, Attacker obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); }
@@ -17,9 +17,9 @@
public boolean mutateSwordAttackDamage(int sword_attack_damage) { int o = __offset(4); if (o != 0) { bb.putInt(o + bb_pos, sword_attack_damage); return true; } else { return false; } }
public static int createAttacker(FlatBufferBuilder builder,
- int sword_attack_damage) {
+ int swordAttackDamage) {
builder.startTable(1);
- Attacker.addSwordAttackDamage(builder, sword_attack_damage);
+ Attacker.addSwordAttackDamage(builder, swordAttackDamage);
return Attacker.endAttacker(builder);
}
@@ -36,5 +36,20 @@
public Attacker get(int j) { return get(new Attacker(), j); }
public Attacker get(Attacker obj, int j) { return obj.__assign(__indirect(__element(j), bb), bb); }
}
+ public AttackerT unpack() {
+ AttackerT _o = new AttackerT();
+ unpackTo(_o);
+ return _o;
+ }
+ public void unpackTo(AttackerT _o) {
+ int _oSwordAttackDamage = swordAttackDamage();
+ _o.setSwordAttackDamage(_oSwordAttackDamage);
+ }
+ public static int pack(FlatBufferBuilder builder, AttackerT _o) {
+ if (_o == null) return 0;
+ return createAttacker(
+ builder,
+ _o.getSwordAttackDamage());
+ }
}
diff --git a/tests/union_vector/Attacker.kt b/tests/union_vector/Attacker.kt
index d398227..9f22e98 100644
--- a/tests/union_vector/Attacker.kt
+++ b/tests/union_vector/Attacker.kt
@@ -5,7 +5,6 @@
import com.google.flatbuffers.*
@Suppress("unused")
-@ExperimentalUnsignedTypes
class Attacker : Table() {
fun __init(_i: Int, _bb: ByteBuffer) {
@@ -30,7 +29,7 @@
}
}
companion object {
- fun validateVersion() = Constants.FLATBUFFERS_1_12_0()
+ fun validateVersion() = Constants.FLATBUFFERS_2_0_0()
fun getRootAsAttacker(_bb: ByteBuffer): Attacker = getRootAsAttacker(_bb, Attacker())
fun getRootAsAttacker(_bb: ByteBuffer, obj: Attacker): Attacker {
_bb.order(ByteOrder.LITTLE_ENDIAN)
diff --git a/tests/union_vector/AttackerT.java b/tests/union_vector/AttackerT.java
new file mode 100644
index 0000000..c5ca2f1
--- /dev/null
+++ b/tests/union_vector/AttackerT.java
@@ -0,0 +1,20 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+import java.nio.*;
+import java.lang.*;
+import java.util.*;
+import com.google.flatbuffers.*;
+
+public class AttackerT {
+ private int swordAttackDamage;
+
+ public int getSwordAttackDamage() { return swordAttackDamage; }
+
+ public void setSwordAttackDamage(int swordAttackDamage) { this.swordAttackDamage = swordAttackDamage; }
+
+
+ public AttackerT() {
+ this.swordAttackDamage = 0;
+ }
+}
+
diff --git a/tests/union_vector/BookReader.cs b/tests/union_vector/BookReader.cs
index 3f80cdf..6cd88b3 100644
--- a/tests/union_vector/BookReader.cs
+++ b/tests/union_vector/BookReader.cs
@@ -35,7 +35,7 @@
builder,
_o.BooksRead);
}
-};
+}
public class BookReaderT
{
diff --git a/tests/union_vector/BookReader.java b/tests/union_vector/BookReader.java
index a6d1b43..e90fadd 100644
--- a/tests/union_vector/BookReader.java
+++ b/tests/union_vector/BookReader.java
@@ -25,5 +25,20 @@
public BookReader get(int j) { return get(new BookReader(), j); }
public BookReader get(BookReader obj, int j) { return obj.__assign(__element(j), bb); }
}
+ public BookReaderT unpack() {
+ BookReaderT _o = new BookReaderT();
+ unpackTo(_o);
+ return _o;
+ }
+ public void unpackTo(BookReaderT _o) {
+ int _oBooksRead = booksRead();
+ _o.setBooksRead(_oBooksRead);
+ }
+ public static int pack(FlatBufferBuilder builder, BookReaderT _o) {
+ if (_o == null) return 0;
+ return createBookReader(
+ builder,
+ _o.getBooksRead());
+ }
}
diff --git a/tests/union_vector/BookReader.kt b/tests/union_vector/BookReader.kt
index fc41473..558606e 100644
--- a/tests/union_vector/BookReader.kt
+++ b/tests/union_vector/BookReader.kt
@@ -5,7 +5,6 @@
import com.google.flatbuffers.*
@Suppress("unused")
-@ExperimentalUnsignedTypes
class BookReader : Struct() {
fun __init(_i: Int, _bb: ByteBuffer) {
diff --git a/tests/union_vector/BookReaderT.java b/tests/union_vector/BookReaderT.java
new file mode 100644
index 0000000..6a5d026
--- /dev/null
+++ b/tests/union_vector/BookReaderT.java
@@ -0,0 +1,20 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+import java.nio.*;
+import java.lang.*;
+import java.util.*;
+import com.google.flatbuffers.*;
+
+public class BookReaderT {
+ private int booksRead;
+
+ public int getBooksRead() { return booksRead; }
+
+ public void setBooksRead(int booksRead) { this.booksRead = booksRead; }
+
+
+ public BookReaderT() {
+ this.booksRead = 0;
+ }
+}
+
diff --git a/tests/union_vector/Character.cs b/tests/union_vector/Character.cs
index d067e22..4978bdc 100644
--- a/tests/union_vector/Character.cs
+++ b/tests/union_vector/Character.cs
@@ -25,11 +25,17 @@
public T As<T>() where T : class { return this.Value as T; }
public AttackerT AsMuLan() { return this.As<AttackerT>(); }
+ public static CharacterUnion FromMuLan(AttackerT _mulan) { return new CharacterUnion{ Type = Character.MuLan, Value = _mulan }; }
public RapunzelT AsRapunzel() { return this.As<RapunzelT>(); }
+ public static CharacterUnion FromRapunzel(RapunzelT _rapunzel) { return new CharacterUnion{ Type = Character.Rapunzel, Value = _rapunzel }; }
public BookReaderT AsBelle() { return this.As<BookReaderT>(); }
+ public static CharacterUnion FromBelle(BookReaderT _belle) { return new CharacterUnion{ Type = Character.Belle, Value = _belle }; }
public BookReaderT AsBookFan() { return this.As<BookReaderT>(); }
+ public static CharacterUnion FromBookFan(BookReaderT _bookfan) { return new CharacterUnion{ Type = Character.BookFan, Value = _bookfan }; }
public string AsOther() { return this.As<string>(); }
+ public static CharacterUnion FromOther(string _other) { return new CharacterUnion{ Type = Character.Other, Value = _other }; }
public string AsUnused() { return this.As<string>(); }
+ public static CharacterUnion FromUnused(string _unused) { return new CharacterUnion{ Type = Character.Unused, Value = _unused }; }
public static int Pack(FlatBuffers.FlatBufferBuilder builder, CharacterUnion _o) {
switch (_o.Type) {
diff --git a/tests/union_vector/Character.java b/tests/union_vector/Character.java
index 5d6c5b7..615958b 100644
--- a/tests/union_vector/Character.java
+++ b/tests/union_vector/Character.java
@@ -1,5 +1,6 @@
// automatically generated by the FlatBuffers compiler, do not modify
+@SuppressWarnings("unused")
public final class Character {
private Character() { }
public static final byte NONE = 0;
diff --git a/tests/union_vector/Character.kt b/tests/union_vector/Character.kt
index ff7dd5e..2e80a35 100644
--- a/tests/union_vector/Character.kt
+++ b/tests/union_vector/Character.kt
@@ -1,7 +1,6 @@
// automatically generated by the FlatBuffers compiler, do not modify
@Suppress("unused")
-@ExperimentalUnsignedTypes
class Character_ private constructor() {
companion object {
const val NONE: UByte = 0u
diff --git a/tests/union_vector/CharacterUnion.java b/tests/union_vector/CharacterUnion.java
new file mode 100644
index 0000000..424218b
--- /dev/null
+++ b/tests/union_vector/CharacterUnion.java
@@ -0,0 +1,41 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+import com.google.flatbuffers.FlatBufferBuilder;
+
+public class CharacterUnion {
+ private byte type;
+ private Object value;
+
+ public byte getType() { return type; }
+
+ public void setType(byte type) { this.type = type; }
+
+ public Object getValue() { return value; }
+
+ public void setValue(Object value) { this.value = value; }
+
+ public CharacterUnion() {
+ this.type = Character.NONE;
+ this.value = null;
+ }
+
+ public AttackerT asMuLan() { return (AttackerT) value; }
+ public RapunzelT asRapunzel() { return (RapunzelT) value; }
+ public BookReaderT asBelle() { return (BookReaderT) value; }
+ public BookReaderT asBookFan() { return (BookReaderT) value; }
+ public String asOther() { return (String) value; }
+ public String asUnused() { return (String) value; }
+
+ public static int pack(FlatBufferBuilder builder, CharacterUnion _o) {
+ switch (_o.type) {
+ case Character.MuLan: return Attacker.pack(builder, _o.asMuLan());
+ case Character.Rapunzel: return Rapunzel.pack(builder, _o.asRapunzel());
+ case Character.Belle: return BookReader.pack(builder, _o.asBelle());
+ case Character.BookFan: return BookReader.pack(builder, _o.asBookFan());
+ case Character.Other: return builder.createString(_o.asOther());
+ case Character.Unused: return builder.createString(_o.asUnused());
+ default: return 0;
+ }
+ }
+}
+
diff --git a/tests/union_vector/FallingTub.cs b/tests/union_vector/FallingTub.cs
new file mode 100644
index 0000000..36c574c
--- /dev/null
+++ b/tests/union_vector/FallingTub.cs
@@ -0,0 +1,49 @@
+// <auto-generated>
+// automatically generated by the FlatBuffers compiler, do not modify
+// </auto-generated>
+
+using global::System;
+using global::System.Collections.Generic;
+using global::FlatBuffers;
+
+public struct FallingTub : IFlatbufferObject
+{
+ private Struct __p;
+ public ByteBuffer ByteBuffer { get { return __p.bb; } }
+ public void __init(int _i, ByteBuffer _bb) { __p = new Struct(_i, _bb); }
+ public FallingTub __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
+
+ public int Weight { get { return __p.bb.GetInt(__p.bb_pos + 0); } }
+ public void MutateWeight(int weight) { __p.bb.PutInt(__p.bb_pos + 0, weight); }
+
+ public static Offset<FallingTub> CreateFallingTub(FlatBufferBuilder builder, int Weight) {
+ builder.Prep(4, 4);
+ builder.PutInt(Weight);
+ return new Offset<FallingTub>(builder.Offset);
+ }
+ public FallingTubT UnPack() {
+ var _o = new FallingTubT();
+ this.UnPackTo(_o);
+ return _o;
+ }
+ public void UnPackTo(FallingTubT _o) {
+ _o.Weight = this.Weight;
+ }
+ public static Offset<FallingTub> Pack(FlatBufferBuilder builder, FallingTubT _o) {
+ if (_o == null) return default(Offset<FallingTub>);
+ return CreateFallingTub(
+ builder,
+ _o.Weight);
+ }
+}
+
+public class FallingTubT
+{
+ [Newtonsoft.Json.JsonProperty("weight")]
+ public int Weight { get; set; }
+
+ public FallingTubT() {
+ this.Weight = 0;
+ }
+}
+
diff --git a/tests/union_vector/FallingTub.java b/tests/union_vector/FallingTub.java
new file mode 100644
index 0000000..5c2fae3
--- /dev/null
+++ b/tests/union_vector/FallingTub.java
@@ -0,0 +1,44 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+import java.nio.*;
+import java.lang.*;
+import java.util.*;
+import com.google.flatbuffers.*;
+
+@SuppressWarnings("unused")
+public final class FallingTub extends Struct {
+ public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); }
+ public FallingTub __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
+
+ public int weight() { return bb.getInt(bb_pos + 0); }
+ public void mutateWeight(int weight) { bb.putInt(bb_pos + 0, weight); }
+
+ public static int createFallingTub(FlatBufferBuilder builder, int weight) {
+ builder.prep(4, 4);
+ builder.putInt(weight);
+ return builder.offset();
+ }
+
+ public static final class Vector extends BaseVector {
+ public Vector __assign(int _vector, int _element_size, ByteBuffer _bb) { __reset(_vector, _element_size, _bb); return this; }
+
+ public FallingTub get(int j) { return get(new FallingTub(), j); }
+ public FallingTub get(FallingTub obj, int j) { return obj.__assign(__element(j), bb); }
+ }
+ public FallingTubT unpack() {
+ FallingTubT _o = new FallingTubT();
+ unpackTo(_o);
+ return _o;
+ }
+ public void unpackTo(FallingTubT _o) {
+ int _oWeight = weight();
+ _o.setWeight(_oWeight);
+ }
+ public static int pack(FlatBufferBuilder builder, FallingTubT _o) {
+ if (_o == null) return 0;
+ return createFallingTub(
+ builder,
+ _o.getWeight());
+ }
+}
+
diff --git a/tests/union_vector/FallingTub.kt b/tests/union_vector/FallingTub.kt
new file mode 100644
index 0000000..0a823e2
--- /dev/null
+++ b/tests/union_vector/FallingTub.kt
@@ -0,0 +1,26 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+import java.nio.*
+import kotlin.math.sign
+import com.google.flatbuffers.*
+
+@Suppress("unused")
+class FallingTub : Struct() {
+
+ fun __init(_i: Int, _bb: ByteBuffer) {
+ __reset(_i, _bb)
+ }
+ fun __assign(_i: Int, _bb: ByteBuffer) : FallingTub {
+ __init(_i, _bb)
+ return this
+ }
+ val weight : Int get() = bb.getInt(bb_pos + 0)
+ fun mutateWeight(weight: Int) : ByteBuffer = bb.putInt(bb_pos + 0, weight)
+ companion object {
+ fun createFallingTub(builder: FlatBufferBuilder, weight: Int) : Int {
+ builder.prep(4, 4)
+ builder.putInt(weight)
+ return builder.offset()
+ }
+ }
+}
diff --git a/tests/union_vector/FallingTub.php b/tests/union_vector/FallingTub.php
new file mode 100644
index 0000000..3a6800d
--- /dev/null
+++ b/tests/union_vector/FallingTub.php
@@ -0,0 +1,41 @@
+<?php
+// automatically generated by the FlatBuffers compiler, do not modify
+
+use \Google\FlatBuffers\Struct;
+use \Google\FlatBuffers\Table;
+use \Google\FlatBuffers\ByteBuffer;
+use \Google\FlatBuffers\FlatBufferBuilder;
+
+class FallingTub extends Struct
+{
+ /**
+ * @param int $_i offset
+ * @param ByteBuffer $_bb
+ * @return FallingTub
+ **/
+ public function init($_i, ByteBuffer $_bb)
+ {
+ $this->bb_pos = $_i;
+ $this->bb = $_bb;
+ return $this;
+ }
+
+ /**
+ * @return int
+ */
+ public function GetWeight()
+ {
+ return $this->bb->getInt($this->bb_pos + 0);
+ }
+
+
+ /**
+ * @return int offset
+ */
+ public static function createFallingTub(FlatBufferBuilder $builder, $weight)
+ {
+ $builder->prep(4, 4);
+ $builder->putInt($weight);
+ return $builder->offset();
+ }
+}
diff --git a/tests/union_vector/FallingTubT.java b/tests/union_vector/FallingTubT.java
new file mode 100644
index 0000000..0b98699
--- /dev/null
+++ b/tests/union_vector/FallingTubT.java
@@ -0,0 +1,20 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+import java.nio.*;
+import java.lang.*;
+import java.util.*;
+import com.google.flatbuffers.*;
+
+public class FallingTubT {
+ private int weight;
+
+ public int getWeight() { return weight; }
+
+ public void setWeight(int weight) { this.weight = weight; }
+
+
+ public FallingTubT() {
+ this.weight = 0;
+ }
+}
+
diff --git a/tests/union_vector/Gadget.cs b/tests/union_vector/Gadget.cs
new file mode 100644
index 0000000..e4770dd
--- /dev/null
+++ b/tests/union_vector/Gadget.cs
@@ -0,0 +1,78 @@
+// <auto-generated>
+// automatically generated by the FlatBuffers compiler, do not modify
+// </auto-generated>
+
+[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
+public enum Gadget : byte
+{
+ NONE = 0,
+ FallingTub = 1,
+ HandFan = 2,
+};
+
+public class GadgetUnion {
+ public Gadget Type { get; set; }
+ public object Value { get; set; }
+
+ public GadgetUnion() {
+ this.Type = Gadget.NONE;
+ this.Value = null;
+ }
+
+ public T As<T>() where T : class { return this.Value as T; }
+ public FallingTubT AsFallingTub() { return this.As<FallingTubT>(); }
+ public static GadgetUnion FromFallingTub(FallingTubT _fallingtub) { return new GadgetUnion{ Type = Gadget.FallingTub, Value = _fallingtub }; }
+ public HandFanT AsHandFan() { return this.As<HandFanT>(); }
+ public static GadgetUnion FromHandFan(HandFanT _handfan) { return new GadgetUnion{ Type = Gadget.HandFan, Value = _handfan }; }
+
+ public static int Pack(FlatBuffers.FlatBufferBuilder builder, GadgetUnion _o) {
+ switch (_o.Type) {
+ default: return 0;
+ case Gadget.FallingTub: return FallingTub.Pack(builder, _o.AsFallingTub()).Value;
+ case Gadget.HandFan: return HandFan.Pack(builder, _o.AsHandFan()).Value;
+ }
+ }
+}
+
+public class GadgetUnion_JsonConverter : Newtonsoft.Json.JsonConverter {
+ public override bool CanConvert(System.Type objectType) {
+ return objectType == typeof(GadgetUnion) || objectType == typeof(System.Collections.Generic.List<GadgetUnion>);
+ }
+ public override void WriteJson(Newtonsoft.Json.JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer) {
+ var _olist = value as System.Collections.Generic.List<GadgetUnion>;
+ if (_olist != null) {
+ writer.WriteStartArray();
+ foreach (var _o in _olist) { this.WriteJson(writer, _o, serializer); }
+ writer.WriteEndArray();
+ } else {
+ this.WriteJson(writer, value as GadgetUnion, serializer);
+ }
+ }
+ public void WriteJson(Newtonsoft.Json.JsonWriter writer, GadgetUnion _o, Newtonsoft.Json.JsonSerializer serializer) {
+ if (_o == null) return;
+ serializer.Serialize(writer, _o.Value);
+ }
+ public override object ReadJson(Newtonsoft.Json.JsonReader reader, System.Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer) {
+ var _olist = existingValue as System.Collections.Generic.List<GadgetUnion>;
+ if (_olist != null) {
+ for (var _j = 0; _j < _olist.Count; ++_j) {
+ reader.Read();
+ _olist[_j] = this.ReadJson(reader, _olist[_j], serializer);
+ }
+ reader.Read();
+ return _olist;
+ } else {
+ return this.ReadJson(reader, existingValue as GadgetUnion, serializer);
+ }
+ }
+ public GadgetUnion ReadJson(Newtonsoft.Json.JsonReader reader, GadgetUnion _o, Newtonsoft.Json.JsonSerializer serializer) {
+ if (_o == null) return null;
+ switch (_o.Type) {
+ default: break;
+ case Gadget.FallingTub: _o.Value = serializer.Deserialize<FallingTubT>(reader); break;
+ case Gadget.HandFan: _o.Value = serializer.Deserialize<HandFanT>(reader); break;
+ }
+ return _o;
+ }
+}
+
diff --git a/tests/union_vector/Gadget.java b/tests/union_vector/Gadget.java
new file mode 100644
index 0000000..effc315
--- /dev/null
+++ b/tests/union_vector/Gadget.java
@@ -0,0 +1,14 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+@SuppressWarnings("unused")
+public final class Gadget {
+ private Gadget() { }
+ public static final byte NONE = 0;
+ public static final byte FallingTub = 1;
+ public static final byte HandFan = 2;
+
+ public static final String[] names = { "NONE", "FallingTub", "HandFan", };
+
+ public static String name(int e) { return names[e]; }
+}
+
diff --git a/tests/union_vector/Gadget.kt b/tests/union_vector/Gadget.kt
new file mode 100644
index 0000000..4fb3b10
--- /dev/null
+++ b/tests/union_vector/Gadget.kt
@@ -0,0 +1,12 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+@Suppress("unused")
+class Gadget private constructor() {
+ companion object {
+ const val NONE: UByte = 0u
+ const val FallingTub: UByte = 1u
+ const val HandFan: UByte = 2u
+ val names : Array<String> = arrayOf("NONE", "FallingTub", "HandFan")
+ fun name(e: Int) : String = names[e]
+ }
+}
diff --git a/tests/union_vector/Gadget.php b/tests/union_vector/Gadget.php
new file mode 100644
index 0000000..069f82d
--- /dev/null
+++ b/tests/union_vector/Gadget.php
@@ -0,0 +1,23 @@
+<?php
+// automatically generated by the FlatBuffers compiler, do not modify
+
+class Gadget
+{
+ const NONE = 0;
+ const FallingTub = 1;
+ const HandFan = 2;
+
+ private static $names = array(
+ Gadget::NONE=>"NONE",
+ Gadget::FallingTub=>"FallingTub",
+ Gadget::HandFan=>"HandFan",
+ );
+
+ public static function Name($e)
+ {
+ if (!isset(self::$names[$e])) {
+ throw new \Exception();
+ }
+ return self::$names[$e];
+ }
+}
diff --git a/tests/union_vector/GadgetUnion.java b/tests/union_vector/GadgetUnion.java
new file mode 100644
index 0000000..2ac2745
--- /dev/null
+++ b/tests/union_vector/GadgetUnion.java
@@ -0,0 +1,33 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+import com.google.flatbuffers.FlatBufferBuilder;
+
+public class GadgetUnion {
+ private byte type;
+ private Object value;
+
+ public byte getType() { return type; }
+
+ public void setType(byte type) { this.type = type; }
+
+ public Object getValue() { return value; }
+
+ public void setValue(Object value) { this.value = value; }
+
+ public GadgetUnion() {
+ this.type = Gadget.NONE;
+ this.value = null;
+ }
+
+ public FallingTubT asFallingTub() { return (FallingTubT) value; }
+ public HandFanT asHandFan() { return (HandFanT) value; }
+
+ public static int pack(FlatBufferBuilder builder, GadgetUnion _o) {
+ switch (_o.type) {
+ case Gadget.FallingTub: return FallingTub.pack(builder, _o.asFallingTub());
+ case Gadget.HandFan: return HandFan.pack(builder, _o.asHandFan());
+ default: return 0;
+ }
+ }
+}
+
diff --git a/tests/union_vector/HandFan.cs b/tests/union_vector/HandFan.cs
new file mode 100644
index 0000000..a888abf
--- /dev/null
+++ b/tests/union_vector/HandFan.cs
@@ -0,0 +1,60 @@
+// <auto-generated>
+// automatically generated by the FlatBuffers compiler, do not modify
+// </auto-generated>
+
+using global::System;
+using global::System.Collections.Generic;
+using global::FlatBuffers;
+
+public struct HandFan : IFlatbufferObject
+{
+ private Table __p;
+ public ByteBuffer ByteBuffer { get { return __p.bb; } }
+ public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_2_0_0(); }
+ public static HandFan GetRootAsHandFan(ByteBuffer _bb) { return GetRootAsHandFan(_bb, new HandFan()); }
+ public static HandFan GetRootAsHandFan(ByteBuffer _bb, HandFan obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
+ public void __init(int _i, ByteBuffer _bb) { __p = new Table(_i, _bb); }
+ public HandFan __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
+
+ public int Length { get { int o = __p.__offset(4); return o != 0 ? __p.bb.GetInt(o + __p.bb_pos) : (int)0; } }
+ public bool MutateLength(int length) { int o = __p.__offset(4); if (o != 0) { __p.bb.PutInt(o + __p.bb_pos, length); return true; } else { return false; } }
+
+ public static Offset<HandFan> CreateHandFan(FlatBufferBuilder builder,
+ int length = 0) {
+ builder.StartTable(1);
+ HandFan.AddLength(builder, length);
+ return HandFan.EndHandFan(builder);
+ }
+
+ public static void StartHandFan(FlatBufferBuilder builder) { builder.StartTable(1); }
+ public static void AddLength(FlatBufferBuilder builder, int length) { builder.AddInt(0, length, 0); }
+ public static Offset<HandFan> EndHandFan(FlatBufferBuilder builder) {
+ int o = builder.EndTable();
+ return new Offset<HandFan>(o);
+ }
+ public HandFanT UnPack() {
+ var _o = new HandFanT();
+ this.UnPackTo(_o);
+ return _o;
+ }
+ public void UnPackTo(HandFanT _o) {
+ _o.Length = this.Length;
+ }
+ public static Offset<HandFan> Pack(FlatBufferBuilder builder, HandFanT _o) {
+ if (_o == null) return default(Offset<HandFan>);
+ return CreateHandFan(
+ builder,
+ _o.Length);
+ }
+}
+
+public class HandFanT
+{
+ [Newtonsoft.Json.JsonProperty("length")]
+ public int Length { get; set; }
+
+ public HandFanT() {
+ this.Length = 0;
+ }
+}
+
diff --git a/tests/union_vector/HandFan.java b/tests/union_vector/HandFan.java
new file mode 100644
index 0000000..14b2520
--- /dev/null
+++ b/tests/union_vector/HandFan.java
@@ -0,0 +1,55 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+import java.nio.*;
+import java.lang.*;
+import java.util.*;
+import com.google.flatbuffers.*;
+
+@SuppressWarnings("unused")
+public final class HandFan extends Table {
+ public static void ValidateVersion() { Constants.FLATBUFFERS_2_0_0(); }
+ public static HandFan getRootAsHandFan(ByteBuffer _bb) { return getRootAsHandFan(_bb, new HandFan()); }
+ public static HandFan getRootAsHandFan(ByteBuffer _bb, HandFan obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
+ public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); }
+ public HandFan __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
+
+ public int length() { int o = __offset(4); return o != 0 ? bb.getInt(o + bb_pos) : 0; }
+ public boolean mutateLength(int length) { int o = __offset(4); if (o != 0) { bb.putInt(o + bb_pos, length); return true; } else { return false; } }
+
+ public static int createHandFan(FlatBufferBuilder builder,
+ int length) {
+ builder.startTable(1);
+ HandFan.addLength(builder, length);
+ return HandFan.endHandFan(builder);
+ }
+
+ public static void startHandFan(FlatBufferBuilder builder) { builder.startTable(1); }
+ public static void addLength(FlatBufferBuilder builder, int length) { builder.addInt(0, length, 0); }
+ public static int endHandFan(FlatBufferBuilder builder) {
+ int o = builder.endTable();
+ return o;
+ }
+
+ public static final class Vector extends BaseVector {
+ public Vector __assign(int _vector, int _element_size, ByteBuffer _bb) { __reset(_vector, _element_size, _bb); return this; }
+
+ public HandFan get(int j) { return get(new HandFan(), j); }
+ public HandFan get(HandFan obj, int j) { return obj.__assign(__indirect(__element(j), bb), bb); }
+ }
+ public HandFanT unpack() {
+ HandFanT _o = new HandFanT();
+ unpackTo(_o);
+ return _o;
+ }
+ public void unpackTo(HandFanT _o) {
+ int _oLength = length();
+ _o.setLength(_oLength);
+ }
+ public static int pack(FlatBufferBuilder builder, HandFanT _o) {
+ if (_o == null) return 0;
+ return createHandFan(
+ builder,
+ _o.getLength());
+ }
+}
+
diff --git a/tests/union_vector/HandFan.kt b/tests/union_vector/HandFan.kt
new file mode 100644
index 0000000..0a8a055
--- /dev/null
+++ b/tests/union_vector/HandFan.kt
@@ -0,0 +1,50 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+import java.nio.*
+import kotlin.math.sign
+import com.google.flatbuffers.*
+
+@Suppress("unused")
+class HandFan : Table() {
+
+ fun __init(_i: Int, _bb: ByteBuffer) {
+ __reset(_i, _bb)
+ }
+ fun __assign(_i: Int, _bb: ByteBuffer) : HandFan {
+ __init(_i, _bb)
+ return this
+ }
+ val length : Int
+ get() {
+ val o = __offset(4)
+ return if(o != 0) bb.getInt(o + bb_pos) else 0
+ }
+ fun mutateLength(length: Int) : Boolean {
+ val o = __offset(4)
+ return if (o != 0) {
+ bb.putInt(o + bb_pos, length)
+ true
+ } else {
+ false
+ }
+ }
+ companion object {
+ fun validateVersion() = Constants.FLATBUFFERS_2_0_0()
+ fun getRootAsHandFan(_bb: ByteBuffer): HandFan = getRootAsHandFan(_bb, HandFan())
+ fun getRootAsHandFan(_bb: ByteBuffer, obj: HandFan): HandFan {
+ _bb.order(ByteOrder.LITTLE_ENDIAN)
+ return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb))
+ }
+ fun createHandFan(builder: FlatBufferBuilder, length: Int) : Int {
+ builder.startTable(1)
+ addLength(builder, length)
+ return endHandFan(builder)
+ }
+ fun startHandFan(builder: FlatBufferBuilder) = builder.startTable(1)
+ fun addLength(builder: FlatBufferBuilder, length: Int) = builder.addInt(0, length, 0)
+ fun endHandFan(builder: FlatBufferBuilder) : Int {
+ val o = builder.endTable()
+ return o
+ }
+ }
+}
diff --git a/tests/union_vector/HandFan.php b/tests/union_vector/HandFan.php
new file mode 100644
index 0000000..673e336
--- /dev/null
+++ b/tests/union_vector/HandFan.php
@@ -0,0 +1,92 @@
+<?php
+// automatically generated by the FlatBuffers compiler, do not modify
+
+use \Google\FlatBuffers\Struct;
+use \Google\FlatBuffers\Table;
+use \Google\FlatBuffers\ByteBuffer;
+use \Google\FlatBuffers\FlatBufferBuilder;
+
+class HandFan extends Table
+{
+ /**
+ * @param ByteBuffer $bb
+ * @return HandFan
+ */
+ public static function getRootAsHandFan(ByteBuffer $bb)
+ {
+ $obj = new HandFan();
+ return ($obj->init($bb->getInt($bb->getPosition()) + $bb->getPosition(), $bb));
+ }
+
+ public static function HandFanIdentifier()
+ {
+ return "MOVI";
+ }
+
+ public static function HandFanBufferHasIdentifier(ByteBuffer $buf)
+ {
+ return self::__has_identifier($buf, self::HandFanIdentifier());
+ }
+
+ /**
+ * @param int $_i offset
+ * @param ByteBuffer $_bb
+ * @return HandFan
+ **/
+ public function init($_i, ByteBuffer $_bb)
+ {
+ $this->bb_pos = $_i;
+ $this->bb = $_bb;
+ return $this;
+ }
+
+ /**
+ * @return int
+ */
+ public function getLength()
+ {
+ $o = $this->__offset(4);
+ return $o != 0 ? $this->bb->getInt($o + $this->bb_pos) : 0;
+ }
+
+ /**
+ * @param FlatBufferBuilder $builder
+ * @return void
+ */
+ public static function startHandFan(FlatBufferBuilder $builder)
+ {
+ $builder->StartObject(1);
+ }
+
+ /**
+ * @param FlatBufferBuilder $builder
+ * @return HandFan
+ */
+ public static function createHandFan(FlatBufferBuilder $builder, $length)
+ {
+ $builder->startObject(1);
+ self::addLength($builder, $length);
+ $o = $builder->endObject();
+ return $o;
+ }
+
+ /**
+ * @param FlatBufferBuilder $builder
+ * @param int
+ * @return void
+ */
+ public static function addLength(FlatBufferBuilder $builder, $length)
+ {
+ $builder->addIntX(0, $length, 0);
+ }
+
+ /**
+ * @param FlatBufferBuilder $builder
+ * @return int table offset
+ */
+ public static function endHandFan(FlatBufferBuilder $builder)
+ {
+ $o = $builder->endObject();
+ return $o;
+ }
+}
diff --git a/tests/union_vector/HandFanT.java b/tests/union_vector/HandFanT.java
new file mode 100644
index 0000000..d3b202b
--- /dev/null
+++ b/tests/union_vector/HandFanT.java
@@ -0,0 +1,20 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+import java.nio.*;
+import java.lang.*;
+import java.util.*;
+import com.google.flatbuffers.*;
+
+public class HandFanT {
+ private int length;
+
+ public int getLength() { return length; }
+
+ public void setLength(int length) { this.length = length; }
+
+
+ public HandFanT() {
+ this.length = 0;
+ }
+}
+
diff --git a/tests/union_vector/Movie.cs b/tests/union_vector/Movie.cs
index dfbdd8d..f85daa6 100644
--- a/tests/union_vector/Movie.cs
+++ b/tests/union_vector/Movie.cs
@@ -10,7 +10,7 @@
{
private Table __p;
public ByteBuffer ByteBuffer { get { return __p.bb; } }
- public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_1_12_0(); }
+ public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_2_0_0(); }
public static Movie GetRootAsMovie(ByteBuffer _bb) { return GetRootAsMovie(_bb, new Movie()); }
public static Movie GetRootAsMovie(ByteBuffer _bb, Movie obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
public static bool MovieBufferHasIdentifier(ByteBuffer _bb) { return Table.__has_identifier(_bb, "MOVI"); }
@@ -148,7 +148,7 @@
_characters_type,
_characters);
}
-};
+}
public class MovieT
{
diff --git a/tests/union_vector/Movie.java b/tests/union_vector/Movie.java
index d8a97bf..dc40d80 100644
--- a/tests/union_vector/Movie.java
+++ b/tests/union_vector/Movie.java
@@ -7,7 +7,7 @@
@SuppressWarnings("unused")
public final class Movie extends Table {
- public static void ValidateVersion() { Constants.FLATBUFFERS_1_12_0(); }
+ public static void ValidateVersion() { Constants.FLATBUFFERS_2_0_0(); }
public static Movie getRootAsMovie(ByteBuffer _bb) { return getRootAsMovie(_bb, new Movie()); }
public static Movie getRootAsMovie(ByteBuffer _bb, Movie obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
public static boolean MovieBufferHasIdentifier(ByteBuffer _bb) { return __has_identifier(_bb, "MOVI"); }
@@ -28,15 +28,15 @@
public UnionVector charactersVector(UnionVector obj) { int o = __offset(10); return o != 0 ? obj.__assign(__vector(o), 4, bb) : null; }
public static int createMovie(FlatBufferBuilder builder,
- byte main_character_type,
- int main_characterOffset,
- int characters_typeOffset,
+ byte mainCharacterType,
+ int mainCharacterOffset,
+ int charactersTypeOffset,
int charactersOffset) {
builder.startTable(4);
Movie.addCharacters(builder, charactersOffset);
- Movie.addCharactersType(builder, characters_typeOffset);
- Movie.addMainCharacter(builder, main_characterOffset);
- Movie.addMainCharacterType(builder, main_character_type);
+ Movie.addCharactersType(builder, charactersTypeOffset);
+ Movie.addMainCharacter(builder, mainCharacterOffset);
+ Movie.addMainCharacterType(builder, mainCharacterType);
return Movie.endMovie(builder);
}
@@ -62,5 +62,65 @@
public Movie get(int j) { return get(new Movie(), j); }
public Movie get(Movie obj, int j) { return obj.__assign(__indirect(__element(j), bb), bb); }
}
+ public MovieT unpack() {
+ MovieT _o = new MovieT();
+ unpackTo(_o);
+ return _o;
+ }
+ public void unpackTo(MovieT _o) {
+ CharacterUnion _oMainCharacter = new CharacterUnion();
+ byte _oMainCharacterType = mainCharacterType();
+ _oMainCharacter.setType(_oMainCharacterType);
+ Table _oMainCharacterValue;
+ switch (_oMainCharacterType) {
+ case Character.MuLan:
+ _oMainCharacterValue = mainCharacter(new Attacker());
+ _oMainCharacter.setValue(_oMainCharacterValue != null ? ((Attacker) _oMainCharacterValue).unpack() : null);
+ break;
+ default: break;
+ }
+ _o.setMainCharacter(_oMainCharacter);
+ CharacterUnion[] _oCharacters = new CharacterUnion[charactersLength()];
+ for (int _j = 0; _j < charactersLength(); ++_j) {
+ CharacterUnion _oCharactersElement = new CharacterUnion();
+ byte _oCharactersElementType = charactersType(_j);
+ _oCharactersElement.setType(_oCharactersElementType);
+ Table _oCharactersElementValue;
+ switch (_oCharactersElementType) {
+ case Character.MuLan:
+ _oCharactersElementValue = characters(new Attacker(), _j);
+ _oCharactersElement.setValue(_oCharactersElementValue != null ? ((Attacker) _oCharactersElementValue).unpack() : null);
+ break;
+ default: break;
+ }
+ _oCharacters[_j] = _oCharactersElement;
+ }
+ _o.setCharacters(_oCharacters);
+ }
+ public static int pack(FlatBufferBuilder builder, MovieT _o) {
+ if (_o == null) return 0;
+ byte _mainCharacterType = _o.getMainCharacter() == null ? Character.NONE : _o.getMainCharacter().getType();
+ int _mainCharacter = _o.getMainCharacter() == null ? 0 : CharacterUnion.pack(builder, _o.getMainCharacter());
+ int _charactersType = 0;
+ if (_o.getCharacters() != null) {
+ byte[] __charactersType = new byte[_o.getCharacters().length];
+ int _j = 0;
+ for (CharacterUnion _e : _o.getCharacters()) { __charactersType[_j] = _o.getCharacters()[_j].getType(); _j++;}
+ _charactersType = createCharactersTypeVector(builder, __charactersType);
+ }
+ int _characters = 0;
+ if (_o.getCharacters() != null) {
+ int[] __characters = new int[_o.getCharacters().length];
+ int _j = 0;
+ for (CharacterUnion _e : _o.getCharacters()) { __characters[_j] = CharacterUnion.pack(builder, _o.getCharacters()[_j]); _j++;}
+ _characters = createCharactersVector(builder, __characters);
+ }
+ return createMovie(
+ builder,
+ _mainCharacterType,
+ _mainCharacter,
+ _charactersType,
+ _characters);
+ }
}
diff --git a/tests/union_vector/Movie.kt b/tests/union_vector/Movie.kt
index 714d46f..a9ad906 100644
--- a/tests/union_vector/Movie.kt
+++ b/tests/union_vector/Movie.kt
@@ -5,7 +5,6 @@
import com.google.flatbuffers.*
@Suppress("unused")
-@ExperimentalUnsignedTypes
class Movie : Table() {
fun __init(_i: Int, _bb: ByteBuffer) {
@@ -68,7 +67,7 @@
val o = __offset(10); return if (o != 0) __vector_len(o) else 0
}
companion object {
- fun validateVersion() = Constants.FLATBUFFERS_1_12_0()
+ fun validateVersion() = Constants.FLATBUFFERS_2_0_0()
fun getRootAsMovie(_bb: ByteBuffer): Movie = getRootAsMovie(_bb, Movie())
fun getRootAsMovie(_bb: ByteBuffer, obj: Movie): Movie {
_bb.order(ByteOrder.LITTLE_ENDIAN)
diff --git a/tests/union_vector/MovieT.java b/tests/union_vector/MovieT.java
new file mode 100644
index 0000000..122d4ea
--- /dev/null
+++ b/tests/union_vector/MovieT.java
@@ -0,0 +1,34 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+import java.nio.*;
+import java.lang.*;
+import java.util.*;
+import com.google.flatbuffers.*;
+
+public class MovieT {
+ private CharacterUnion mainCharacter;
+ private CharacterUnion[] characters;
+
+ public CharacterUnion getMainCharacter() { return mainCharacter; }
+
+ public void setMainCharacter(CharacterUnion mainCharacter) { this.mainCharacter = mainCharacter; }
+
+ public CharacterUnion[] getCharacters() { return characters; }
+
+ public void setCharacters(CharacterUnion[] characters) { this.characters = characters; }
+
+
+ public MovieT() {
+ this.mainCharacter = null;
+ this.characters = null;
+ }
+ public static MovieT deserializeFromBinary(byte[] fbBuffer) {
+ return Movie.getRootAsMovie(ByteBuffer.wrap(fbBuffer)).unpack();
+ }
+ public byte[] serializeToBinary() {
+ FlatBufferBuilder fbb = new FlatBufferBuilder();
+ Movie.finishMovieBuffer(fbb, Movie.pack(fbb, this));
+ return fbb.sizedByteArray();
+ }
+}
+
diff --git a/tests/union_vector/Rapunzel.cs b/tests/union_vector/Rapunzel.cs
index e5ffff8..31d2cdf 100644
--- a/tests/union_vector/Rapunzel.cs
+++ b/tests/union_vector/Rapunzel.cs
@@ -35,7 +35,7 @@
builder,
_o.HairLength);
}
-};
+}
public class RapunzelT
{
diff --git a/tests/union_vector/Rapunzel.java b/tests/union_vector/Rapunzel.java
index 96d3cfe..ad6d9c1 100644
--- a/tests/union_vector/Rapunzel.java
+++ b/tests/union_vector/Rapunzel.java
@@ -25,5 +25,20 @@
public Rapunzel get(int j) { return get(new Rapunzel(), j); }
public Rapunzel get(Rapunzel obj, int j) { return obj.__assign(__element(j), bb); }
}
+ public RapunzelT unpack() {
+ RapunzelT _o = new RapunzelT();
+ unpackTo(_o);
+ return _o;
+ }
+ public void unpackTo(RapunzelT _o) {
+ int _oHairLength = hairLength();
+ _o.setHairLength(_oHairLength);
+ }
+ public static int pack(FlatBufferBuilder builder, RapunzelT _o) {
+ if (_o == null) return 0;
+ return createRapunzel(
+ builder,
+ _o.getHairLength());
+ }
}
diff --git a/tests/union_vector/Rapunzel.kt b/tests/union_vector/Rapunzel.kt
index 080a7f7..72261d4 100644
--- a/tests/union_vector/Rapunzel.kt
+++ b/tests/union_vector/Rapunzel.kt
@@ -5,7 +5,6 @@
import com.google.flatbuffers.*
@Suppress("unused")
-@ExperimentalUnsignedTypes
class Rapunzel : Struct() {
fun __init(_i: Int, _bb: ByteBuffer) {
diff --git a/tests/union_vector/RapunzelT.java b/tests/union_vector/RapunzelT.java
new file mode 100644
index 0000000..b58732c
--- /dev/null
+++ b/tests/union_vector/RapunzelT.java
@@ -0,0 +1,20 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+import java.nio.*;
+import java.lang.*;
+import java.util.*;
+import com.google.flatbuffers.*;
+
+public class RapunzelT {
+ private int hairLength;
+
+ public int getHairLength() { return hairLength; }
+
+ public void setHairLength(int hairLength) { this.hairLength = hairLength; }
+
+
+ public RapunzelT() {
+ this.hairLength = 0;
+ }
+}
+
diff --git a/tests/union_vector/attacker.js b/tests/union_vector/attacker.js
new file mode 100644
index 0000000..32be94e
--- /dev/null
+++ b/tests/union_vector/attacker.js
@@ -0,0 +1,64 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+import * as flatbuffers from 'flatbuffers';
+export class Attacker {
+ constructor() {
+ this.bb = null;
+ this.bb_pos = 0;
+ }
+ __init(i, bb) {
+ this.bb_pos = i;
+ this.bb = bb;
+ return this;
+ }
+ static getRootAsAttacker(bb, obj) {
+ return (obj || new Attacker()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
+ }
+ static getSizePrefixedRootAsAttacker(bb, obj) {
+ bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);
+ return (obj || new Attacker()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
+ }
+ swordAttackDamage() {
+ const offset = this.bb.__offset(this.bb_pos, 4);
+ return offset ? this.bb.readInt32(this.bb_pos + offset) : 0;
+ }
+ mutate_sword_attack_damage(value) {
+ const offset = this.bb.__offset(this.bb_pos, 4);
+ if (offset === 0) {
+ return false;
+ }
+ this.bb.writeInt32(this.bb_pos + offset, value);
+ return true;
+ }
+ static getFullyQualifiedName() {
+ return 'Attacker';
+ }
+ static startAttacker(builder) {
+ builder.startObject(1);
+ }
+ static addSwordAttackDamage(builder, swordAttackDamage) {
+ builder.addFieldInt32(0, swordAttackDamage, 0);
+ }
+ static endAttacker(builder) {
+ const offset = builder.endObject();
+ return offset;
+ }
+ static createAttacker(builder, swordAttackDamage) {
+ Attacker.startAttacker(builder);
+ Attacker.addSwordAttackDamage(builder, swordAttackDamage);
+ return Attacker.endAttacker(builder);
+ }
+ unpack() {
+ return new AttackerT(this.swordAttackDamage());
+ }
+ unpackTo(_o) {
+ _o.swordAttackDamage = this.swordAttackDamage();
+ }
+}
+export class AttackerT {
+ constructor(swordAttackDamage = 0) {
+ this.swordAttackDamage = swordAttackDamage;
+ }
+ pack(builder) {
+ return Attacker.createAttacker(builder, this.swordAttackDamage);
+ }
+}
diff --git a/tests/union_vector/attacker.ts b/tests/union_vector/attacker.ts
new file mode 100644
index 0000000..af37020
--- /dev/null
+++ b/tests/union_vector/attacker.ts
@@ -0,0 +1,87 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+import * as flatbuffers from 'flatbuffers';
+
+
+
+export class Attacker {
+ bb: flatbuffers.ByteBuffer|null = null;
+ bb_pos = 0;
+__init(i:number, bb:flatbuffers.ByteBuffer):Attacker {
+ this.bb_pos = i;
+ this.bb = bb;
+ return this;
+}
+
+static getRootAsAttacker(bb:flatbuffers.ByteBuffer, obj?:Attacker):Attacker {
+ return (obj || new Attacker()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
+}
+
+static getSizePrefixedRootAsAttacker(bb:flatbuffers.ByteBuffer, obj?:Attacker):Attacker {
+ bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);
+ return (obj || new Attacker()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
+}
+
+swordAttackDamage():number {
+ const offset = this.bb!.__offset(this.bb_pos, 4);
+ return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;
+}
+
+mutate_sword_attack_damage(value:number):boolean {
+ const offset = this.bb!.__offset(this.bb_pos, 4);
+
+ if (offset === 0) {
+ return false;
+ }
+
+ this.bb!.writeInt32(this.bb_pos + offset, value);
+ return true;
+}
+
+static getFullyQualifiedName():string {
+ return 'Attacker';
+}
+
+static startAttacker(builder:flatbuffers.Builder) {
+ builder.startObject(1);
+}
+
+static addSwordAttackDamage(builder:flatbuffers.Builder, swordAttackDamage:number) {
+ builder.addFieldInt32(0, swordAttackDamage, 0);
+}
+
+static endAttacker(builder:flatbuffers.Builder):flatbuffers.Offset {
+ const offset = builder.endObject();
+ return offset;
+}
+
+static createAttacker(builder:flatbuffers.Builder, swordAttackDamage:number):flatbuffers.Offset {
+ Attacker.startAttacker(builder);
+ Attacker.addSwordAttackDamage(builder, swordAttackDamage);
+ return Attacker.endAttacker(builder);
+}
+
+unpack(): AttackerT {
+ return new AttackerT(
+ this.swordAttackDamage()
+ );
+}
+
+
+unpackTo(_o: AttackerT): void {
+ _o.swordAttackDamage = this.swordAttackDamage();
+}
+}
+
+export class AttackerT {
+constructor(
+ public swordAttackDamage: number = 0
+){}
+
+
+pack(builder:flatbuffers.Builder): flatbuffers.Offset {
+ return Attacker.createAttacker(builder,
+ this.swordAttackDamage
+ );
+}
+}
diff --git a/tests/union_vector/book-reader.js b/tests/union_vector/book-reader.js
new file mode 100644
index 0000000..0d9e1a5
--- /dev/null
+++ b/tests/union_vector/book-reader.js
@@ -0,0 +1,44 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+export class BookReader {
+ constructor() {
+ this.bb = null;
+ this.bb_pos = 0;
+ }
+ __init(i, bb) {
+ this.bb_pos = i;
+ this.bb = bb;
+ return this;
+ }
+ booksRead() {
+ return this.bb.readInt32(this.bb_pos);
+ }
+ mutate_books_read(value) {
+ this.bb.writeInt32(this.bb_pos + 0, value);
+ return true;
+ }
+ static getFullyQualifiedName() {
+ return 'BookReader';
+ }
+ static sizeOf() {
+ return 4;
+ }
+ static createBookReader(builder, books_read) {
+ builder.prep(4, 4);
+ builder.writeInt32(books_read);
+ return builder.offset();
+ }
+ unpack() {
+ return new BookReaderT(this.booksRead());
+ }
+ unpackTo(_o) {
+ _o.booksRead = this.booksRead();
+ }
+}
+export class BookReaderT {
+ constructor(booksRead = 0) {
+ this.booksRead = booksRead;
+ }
+ pack(builder) {
+ return BookReader.createBookReader(builder, this.booksRead);
+ }
+}
diff --git a/tests/union_vector/book-reader.ts b/tests/union_vector/book-reader.ts
new file mode 100644
index 0000000..2310600
--- /dev/null
+++ b/tests/union_vector/book-reader.ts
@@ -0,0 +1,63 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+import * as flatbuffers from 'flatbuffers';
+
+
+
+export class BookReader {
+ bb: flatbuffers.ByteBuffer|null = null;
+ bb_pos = 0;
+__init(i:number, bb:flatbuffers.ByteBuffer):BookReader {
+ this.bb_pos = i;
+ this.bb = bb;
+ return this;
+}
+
+booksRead():number {
+ return this.bb!.readInt32(this.bb_pos);
+}
+
+mutate_books_read(value:number):boolean {
+ this.bb!.writeInt32(this.bb_pos + 0, value);
+ return true;
+}
+
+static getFullyQualifiedName():string {
+ return 'BookReader';
+}
+
+static sizeOf():number {
+ return 4;
+}
+
+static createBookReader(builder:flatbuffers.Builder, books_read: number):flatbuffers.Offset {
+ builder.prep(4, 4);
+ builder.writeInt32(books_read);
+ return builder.offset();
+}
+
+
+unpack(): BookReaderT {
+ return new BookReaderT(
+ this.booksRead()
+ );
+}
+
+
+unpackTo(_o: BookReaderT): void {
+ _o.booksRead = this.booksRead();
+}
+}
+
+export class BookReaderT {
+constructor(
+ public booksRead: number = 0
+){}
+
+
+pack(builder:flatbuffers.Builder): flatbuffers.Offset {
+ return BookReader.createBookReader(builder,
+ this.booksRead
+ );
+}
+}
diff --git a/tests/union_vector/character.js b/tests/union_vector/character.js
new file mode 100644
index 0000000..c060298
--- /dev/null
+++ b/tests/union_vector/character.js
@@ -0,0 +1,38 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+import { Attacker } from './attacker';
+import { BookReader } from './book-reader';
+import { Rapunzel } from './rapunzel';
+export var Character;
+(function (Character) {
+ Character[Character["NONE"] = 0] = "NONE";
+ Character[Character["MuLan"] = 1] = "MuLan";
+ Character[Character["Rapunzel"] = 2] = "Rapunzel";
+ Character[Character["Belle"] = 3] = "Belle";
+ Character[Character["BookFan"] = 4] = "BookFan";
+ Character[Character["Other"] = 5] = "Other";
+ Character[Character["Unused"] = 6] = "Unused";
+})(Character || (Character = {}));
+export function unionToCharacter(type, accessor) {
+ switch (Character[type]) {
+ case 'NONE': return null;
+ case 'MuLan': return accessor(new Attacker());
+ case 'Rapunzel': return accessor(new Rapunzel());
+ case 'Belle': return accessor(new BookReader());
+ case 'BookFan': return accessor(new BookReader());
+ case 'Other': return accessor('');
+ case 'Unused': return accessor('');
+ default: return null;
+ }
+}
+export function unionListToCharacter(type, accessor, index) {
+ switch (Character[type]) {
+ case 'NONE': return null;
+ case 'MuLan': return accessor(index, new Attacker());
+ case 'Rapunzel': return accessor(index, new Rapunzel());
+ case 'Belle': return accessor(index, new BookReader());
+ case 'BookFan': return accessor(index, new BookReader());
+ case 'Other': return accessor(index, '');
+ case 'Unused': return accessor(index, '');
+ default: return null;
+ }
+}
diff --git a/tests/union_vector/character.ts b/tests/union_vector/character.ts
new file mode 100644
index 0000000..dbf8d51
--- /dev/null
+++ b/tests/union_vector/character.ts
@@ -0,0 +1,50 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+import { Attacker, AttackerT } from './attacker';
+import { BookReader, BookReaderT } from './book-reader';
+import { Rapunzel, RapunzelT } from './rapunzel';
+
+
+export enum Character{
+ NONE = 0,
+ MuLan = 1,
+ Rapunzel = 2,
+ Belle = 3,
+ BookFan = 4,
+ Other = 5,
+ Unused = 6
+}
+
+export function unionToCharacter(
+ type: Character,
+ accessor: (obj:Attacker|BookReader|Rapunzel|string) => Attacker|BookReader|Rapunzel|string|null
+): Attacker|BookReader|Rapunzel|string|null {
+ switch(Character[type]) {
+ case 'NONE': return null;
+ case 'MuLan': return accessor(new Attacker())! as Attacker;
+ case 'Rapunzel': return accessor(new Rapunzel())! as Rapunzel;
+ case 'Belle': return accessor(new BookReader())! as BookReader;
+ case 'BookFan': return accessor(new BookReader())! as BookReader;
+ case 'Other': return accessor('') as string;
+ case 'Unused': return accessor('') as string;
+ default: return null;
+ }
+}
+
+export function unionListToCharacter(
+ type: Character,
+ accessor: (index: number, obj:Attacker|BookReader|Rapunzel|string) => Attacker|BookReader|Rapunzel|string|null,
+ index: number
+): Attacker|BookReader|Rapunzel|string|null {
+ switch(Character[type]) {
+ case 'NONE': return null;
+ case 'MuLan': return accessor(index, new Attacker())! as Attacker;
+ case 'Rapunzel': return accessor(index, new Rapunzel())! as Rapunzel;
+ case 'Belle': return accessor(index, new BookReader())! as BookReader;
+ case 'BookFan': return accessor(index, new BookReader())! as BookReader;
+ case 'Other': return accessor(index, '') as string;
+ case 'Unused': return accessor(index, '') as string;
+ default: return null;
+ }
+}
+
diff --git a/tests/union_vector/falling-tub.ts b/tests/union_vector/falling-tub.ts
new file mode 100644
index 0000000..3a836b3
--- /dev/null
+++ b/tests/union_vector/falling-tub.ts
@@ -0,0 +1,63 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+import * as flatbuffers from 'flatbuffers';
+
+
+
+export class FallingTub {
+ bb: flatbuffers.ByteBuffer|null = null;
+ bb_pos = 0;
+__init(i:number, bb:flatbuffers.ByteBuffer):FallingTub {
+ this.bb_pos = i;
+ this.bb = bb;
+ return this;
+}
+
+weight():number {
+ return this.bb!.readInt32(this.bb_pos);
+}
+
+mutate_weight(value:number):boolean {
+ this.bb!.writeInt32(this.bb_pos + 0, value);
+ return true;
+}
+
+static getFullyQualifiedName():string {
+ return 'FallingTub';
+}
+
+static sizeOf():number {
+ return 4;
+}
+
+static createFallingTub(builder:flatbuffers.Builder, weight: number):flatbuffers.Offset {
+ builder.prep(4, 4);
+ builder.writeInt32(weight);
+ return builder.offset();
+}
+
+
+unpack(): FallingTubT {
+ return new FallingTubT(
+ this.weight()
+ );
+}
+
+
+unpackTo(_o: FallingTubT): void {
+ _o.weight = this.weight();
+}
+}
+
+export class FallingTubT {
+constructor(
+ public weight: number = 0
+){}
+
+
+pack(builder:flatbuffers.Builder): flatbuffers.Offset {
+ return FallingTub.createFallingTub(builder,
+ this.weight
+ );
+}
+}
diff --git a/tests/union_vector/gadget.ts b/tests/union_vector/gadget.ts
new file mode 100644
index 0000000..4d84b0a
--- /dev/null
+++ b/tests/union_vector/gadget.ts
@@ -0,0 +1,37 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+import { FallingTub, FallingTubT } from './falling-tub';
+import { HandFan, HandFanT } from './hand-fan';
+
+
+export enum Gadget{
+ NONE = 0,
+ FallingTub = 1,
+ HandFan = 2
+}
+
+export function unionToGadget(
+ type: Gadget,
+ accessor: (obj:FallingTub|HandFan) => FallingTub|HandFan|null
+): FallingTub|HandFan|null {
+ switch(Gadget[type]) {
+ case 'NONE': return null;
+ case 'FallingTub': return accessor(new FallingTub())! as FallingTub;
+ case 'HandFan': return accessor(new HandFan())! as HandFan;
+ default: return null;
+ }
+}
+
+export function unionListToGadget(
+ type: Gadget,
+ accessor: (index: number, obj:FallingTub|HandFan) => FallingTub|HandFan|null,
+ index: number
+): FallingTub|HandFan|null {
+ switch(Gadget[type]) {
+ case 'NONE': return null;
+ case 'FallingTub': return accessor(index, new FallingTub())! as FallingTub;
+ case 'HandFan': return accessor(index, new HandFan())! as HandFan;
+ default: return null;
+ }
+}
+
diff --git a/tests/union_vector/hand-fan.ts b/tests/union_vector/hand-fan.ts
new file mode 100644
index 0000000..4a770ba
--- /dev/null
+++ b/tests/union_vector/hand-fan.ts
@@ -0,0 +1,87 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+import * as flatbuffers from 'flatbuffers';
+
+
+
+export class HandFan {
+ bb: flatbuffers.ByteBuffer|null = null;
+ bb_pos = 0;
+__init(i:number, bb:flatbuffers.ByteBuffer):HandFan {
+ this.bb_pos = i;
+ this.bb = bb;
+ return this;
+}
+
+static getRootAsHandFan(bb:flatbuffers.ByteBuffer, obj?:HandFan):HandFan {
+ return (obj || new HandFan()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
+}
+
+static getSizePrefixedRootAsHandFan(bb:flatbuffers.ByteBuffer, obj?:HandFan):HandFan {
+ bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);
+ return (obj || new HandFan()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
+}
+
+length():number {
+ const offset = this.bb!.__offset(this.bb_pos, 4);
+ return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;
+}
+
+mutate_length(value:number):boolean {
+ const offset = this.bb!.__offset(this.bb_pos, 4);
+
+ if (offset === 0) {
+ return false;
+ }
+
+ this.bb!.writeInt32(this.bb_pos + offset, value);
+ return true;
+}
+
+static getFullyQualifiedName():string {
+ return 'HandFan';
+}
+
+static startHandFan(builder:flatbuffers.Builder) {
+ builder.startObject(1);
+}
+
+static addLength(builder:flatbuffers.Builder, length:number) {
+ builder.addFieldInt32(0, length, 0);
+}
+
+static endHandFan(builder:flatbuffers.Builder):flatbuffers.Offset {
+ const offset = builder.endObject();
+ return offset;
+}
+
+static createHandFan(builder:flatbuffers.Builder, length:number):flatbuffers.Offset {
+ HandFan.startHandFan(builder);
+ HandFan.addLength(builder, length);
+ return HandFan.endHandFan(builder);
+}
+
+unpack(): HandFanT {
+ return new HandFanT(
+ this.length()
+ );
+}
+
+
+unpackTo(_o: HandFanT): void {
+ _o.length = this.length();
+}
+}
+
+export class HandFanT {
+constructor(
+ public length: number = 0
+){}
+
+
+pack(builder:flatbuffers.Builder): flatbuffers.Offset {
+ return HandFan.createHandFan(builder,
+ this.length
+ );
+}
+}
diff --git a/tests/union_vector/movie.js b/tests/union_vector/movie.js
new file mode 100644
index 0000000..b4d8099
--- /dev/null
+++ b/tests/union_vector/movie.js
@@ -0,0 +1,185 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+import * as flatbuffers from 'flatbuffers';
+import { Character, unionToCharacter, unionListToCharacter } from './character';
+export class Movie {
+ constructor() {
+ this.bb = null;
+ this.bb_pos = 0;
+ }
+ __init(i, bb) {
+ this.bb_pos = i;
+ this.bb = bb;
+ return this;
+ }
+ static getRootAsMovie(bb, obj) {
+ return (obj || new Movie()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
+ }
+ static getSizePrefixedRootAsMovie(bb, obj) {
+ bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);
+ return (obj || new Movie()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
+ }
+ static bufferHasIdentifier(bb) {
+ return bb.__has_identifier('MOVI');
+ }
+ mainCharacterType() {
+ const offset = this.bb.__offset(this.bb_pos, 4);
+ return offset ? this.bb.readUint8(this.bb_pos + offset) : Character.NONE;
+ }
+ mainCharacter(obj) {
+ const offset = this.bb.__offset(this.bb_pos, 6);
+ return offset ? this.bb.__union_with_string(obj, this.bb_pos + offset) : null;
+ }
+ charactersType(index) {
+ const offset = this.bb.__offset(this.bb_pos, 8);
+ return offset ? this.bb.readUint8(this.bb.__vector(this.bb_pos + offset) + index) : 0;
+ }
+ charactersTypeLength() {
+ const offset = this.bb.__offset(this.bb_pos, 8);
+ return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
+ }
+ charactersTypeArray() {
+ const offset = this.bb.__offset(this.bb_pos, 8);
+ 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;
+ }
+ characters(index, obj) {
+ const offset = this.bb.__offset(this.bb_pos, 10);
+ return offset ? this.bb.__union_with_string(obj, this.bb.__vector(this.bb_pos + offset) + index * 4) : null;
+ }
+ charactersLength() {
+ const offset = this.bb.__offset(this.bb_pos, 10);
+ return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
+ }
+ static getFullyQualifiedName() {
+ return 'Movie';
+ }
+ static startMovie(builder) {
+ builder.startObject(4);
+ }
+ static addMainCharacterType(builder, mainCharacterType) {
+ builder.addFieldInt8(0, mainCharacterType, Character.NONE);
+ }
+ static addMainCharacter(builder, mainCharacterOffset) {
+ builder.addFieldOffset(1, mainCharacterOffset, 0);
+ }
+ static addCharactersType(builder, charactersTypeOffset) {
+ builder.addFieldOffset(2, charactersTypeOffset, 0);
+ }
+ static createCharactersTypeVector(builder, data) {
+ builder.startVector(1, data.length, 1);
+ for (let i = data.length - 1; i >= 0; i--) {
+ builder.addInt8(data[i]);
+ }
+ return builder.endVector();
+ }
+ static startCharactersTypeVector(builder, numElems) {
+ builder.startVector(1, numElems, 1);
+ }
+ static addCharacters(builder, charactersOffset) {
+ builder.addFieldOffset(3, charactersOffset, 0);
+ }
+ static createCharactersVector(builder, data) {
+ builder.startVector(4, data.length, 4);
+ for (let i = data.length - 1; i >= 0; i--) {
+ builder.addOffset(data[i]);
+ }
+ return builder.endVector();
+ }
+ static startCharactersVector(builder, numElems) {
+ builder.startVector(4, numElems, 4);
+ }
+ static endMovie(builder) {
+ const offset = builder.endObject();
+ return offset;
+ }
+ static finishMovieBuffer(builder, offset) {
+ builder.finish(offset, 'MOVI');
+ }
+ static finishSizePrefixedMovieBuffer(builder, offset) {
+ builder.finish(offset, 'MOVI', true);
+ }
+ static createMovie(builder, mainCharacterType, mainCharacterOffset, charactersTypeOffset, charactersOffset) {
+ Movie.startMovie(builder);
+ Movie.addMainCharacterType(builder, mainCharacterType);
+ Movie.addMainCharacter(builder, mainCharacterOffset);
+ Movie.addCharactersType(builder, charactersTypeOffset);
+ Movie.addCharacters(builder, charactersOffset);
+ return Movie.endMovie(builder);
+ }
+ unpack() {
+ return new MovieT(this.mainCharacterType(), (() => {
+ let temp = unionToCharacter(this.mainCharacterType(), this.mainCharacter.bind(this));
+ if (temp === null) {
+ return null;
+ }
+ if (typeof temp === 'string') {
+ return temp;
+ }
+ return temp.unpack();
+ })(), this.bb.createScalarList(this.charactersType.bind(this), this.charactersTypeLength()), (() => {
+ let ret = [];
+ for (let targetEnumIndex = 0; targetEnumIndex < this.charactersTypeLength(); ++targetEnumIndex) {
+ let targetEnum = this.charactersType(targetEnumIndex);
+ if (targetEnum === null || Character[targetEnum] === 'NONE') {
+ continue;
+ }
+ let temp = unionListToCharacter(targetEnum, this.characters.bind(this), targetEnumIndex);
+ if (temp === null) {
+ continue;
+ }
+ if (typeof temp === 'string') {
+ ret.push(temp);
+ continue;
+ }
+ ret.push(temp.unpack());
+ }
+ return ret;
+ })());
+ }
+ unpackTo(_o) {
+ _o.mainCharacterType = this.mainCharacterType();
+ _o.mainCharacter = (() => {
+ let temp = unionToCharacter(this.mainCharacterType(), this.mainCharacter.bind(this));
+ if (temp === null) {
+ return null;
+ }
+ if (typeof temp === 'string') {
+ return temp;
+ }
+ return temp.unpack();
+ })();
+ _o.charactersType = this.bb.createScalarList(this.charactersType.bind(this), this.charactersTypeLength());
+ _o.characters = (() => {
+ let ret = [];
+ for (let targetEnumIndex = 0; targetEnumIndex < this.charactersTypeLength(); ++targetEnumIndex) {
+ let targetEnum = this.charactersType(targetEnumIndex);
+ if (targetEnum === null || Character[targetEnum] === 'NONE') {
+ continue;
+ }
+ let temp = unionListToCharacter(targetEnum, this.characters.bind(this), targetEnumIndex);
+ if (temp === null) {
+ continue;
+ }
+ if (typeof temp === 'string') {
+ ret.push(temp);
+ continue;
+ }
+ ret.push(temp.unpack());
+ }
+ return ret;
+ })();
+ }
+}
+export class MovieT {
+ constructor(mainCharacterType = Character.NONE, mainCharacter = null, charactersType = [], characters = []) {
+ this.mainCharacterType = mainCharacterType;
+ this.mainCharacter = mainCharacter;
+ this.charactersType = charactersType;
+ this.characters = characters;
+ }
+ pack(builder) {
+ const mainCharacter = builder.createObjectOffset(this.mainCharacter);
+ const charactersType = Movie.createCharactersTypeVector(builder, this.charactersType);
+ const characters = Movie.createCharactersVector(builder, builder.createObjectOffsetList(this.characters));
+ return Movie.createMovie(builder, this.mainCharacterType, mainCharacter, charactersType, characters);
+ }
+}
diff --git a/tests/union_vector/movie.ts b/tests/union_vector/movie.ts
new file mode 100644
index 0000000..b3e8381
--- /dev/null
+++ b/tests/union_vector/movie.ts
@@ -0,0 +1,211 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+import * as flatbuffers from 'flatbuffers';
+
+import { Attacker, AttackerT } from './attacker';
+import { BookReader, BookReaderT } from './book-reader';
+import { Character, unionToCharacter, unionListToCharacter } from './character';
+import { Rapunzel, RapunzelT } from './rapunzel';
+
+
+export class Movie {
+ bb: flatbuffers.ByteBuffer|null = null;
+ bb_pos = 0;
+__init(i:number, bb:flatbuffers.ByteBuffer):Movie {
+ this.bb_pos = i;
+ this.bb = bb;
+ return this;
+}
+
+static getRootAsMovie(bb:flatbuffers.ByteBuffer, obj?:Movie):Movie {
+ return (obj || new Movie()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
+}
+
+static getSizePrefixedRootAsMovie(bb:flatbuffers.ByteBuffer, obj?:Movie):Movie {
+ bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);
+ return (obj || new Movie()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
+}
+
+static bufferHasIdentifier(bb:flatbuffers.ByteBuffer):boolean {
+ return bb.__has_identifier('MOVI');
+}
+
+mainCharacterType():Character {
+ const offset = this.bb!.__offset(this.bb_pos, 4);
+ return offset ? this.bb!.readUint8(this.bb_pos + offset) : Character.NONE;
+}
+
+mainCharacter<T extends flatbuffers.Table>(obj:any|string):any|string|null {
+ const offset = this.bb!.__offset(this.bb_pos, 6);
+ return offset ? this.bb!.__union_with_string(obj, this.bb_pos + offset) : null;
+}
+
+charactersType(index: number):Character|null {
+ const offset = this.bb!.__offset(this.bb_pos, 8);
+ return offset ? this.bb!.readUint8(this.bb!.__vector(this.bb_pos + offset) + index) : 0;
+}
+
+charactersTypeLength():number {
+ const offset = this.bb!.__offset(this.bb_pos, 8);
+ return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;
+}
+
+charactersTypeArray():Uint8Array|null {
+ const offset = this.bb!.__offset(this.bb_pos, 8);
+ 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;
+}
+
+characters(index: number, obj:any|string):any|string|null {
+ const offset = this.bb!.__offset(this.bb_pos, 10);
+ return offset ? this.bb!.__union_with_string(obj, this.bb!.__vector(this.bb_pos + offset) + index * 4) : null;
+}
+
+charactersLength():number {
+ const offset = this.bb!.__offset(this.bb_pos, 10);
+ return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;
+}
+
+static getFullyQualifiedName():string {
+ return 'Movie';
+}
+
+static startMovie(builder:flatbuffers.Builder) {
+ builder.startObject(4);
+}
+
+static addMainCharacterType(builder:flatbuffers.Builder, mainCharacterType:Character) {
+ builder.addFieldInt8(0, mainCharacterType, Character.NONE);
+}
+
+static addMainCharacter(builder:flatbuffers.Builder, mainCharacterOffset:flatbuffers.Offset) {
+ builder.addFieldOffset(1, mainCharacterOffset, 0);
+}
+
+static addCharactersType(builder:flatbuffers.Builder, charactersTypeOffset:flatbuffers.Offset) {
+ builder.addFieldOffset(2, charactersTypeOffset, 0);
+}
+
+static createCharactersTypeVector(builder:flatbuffers.Builder, data:Character[]):flatbuffers.Offset {
+ builder.startVector(1, data.length, 1);
+ for (let i = data.length - 1; i >= 0; i--) {
+ builder.addInt8(data[i]!);
+ }
+ return builder.endVector();
+}
+
+static startCharactersTypeVector(builder:flatbuffers.Builder, numElems:number) {
+ builder.startVector(1, numElems, 1);
+}
+
+static addCharacters(builder:flatbuffers.Builder, charactersOffset:flatbuffers.Offset) {
+ builder.addFieldOffset(3, charactersOffset, 0);
+}
+
+static createCharactersVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {
+ builder.startVector(4, data.length, 4);
+ for (let i = data.length - 1; i >= 0; i--) {
+ builder.addOffset(data[i]!);
+ }
+ return builder.endVector();
+}
+
+static startCharactersVector(builder:flatbuffers.Builder, numElems:number) {
+ builder.startVector(4, numElems, 4);
+}
+
+static endMovie(builder:flatbuffers.Builder):flatbuffers.Offset {
+ const offset = builder.endObject();
+ return offset;
+}
+
+static finishMovieBuffer(builder:flatbuffers.Builder, offset:flatbuffers.Offset) {
+ builder.finish(offset, 'MOVI');
+}
+
+static finishSizePrefixedMovieBuffer(builder:flatbuffers.Builder, offset:flatbuffers.Offset) {
+ builder.finish(offset, 'MOVI', true);
+}
+
+static createMovie(builder:flatbuffers.Builder, mainCharacterType:Character, mainCharacterOffset:flatbuffers.Offset, charactersTypeOffset:flatbuffers.Offset, charactersOffset:flatbuffers.Offset):flatbuffers.Offset {
+ Movie.startMovie(builder);
+ Movie.addMainCharacterType(builder, mainCharacterType);
+ Movie.addMainCharacter(builder, mainCharacterOffset);
+ Movie.addCharactersType(builder, charactersTypeOffset);
+ Movie.addCharacters(builder, charactersOffset);
+ return Movie.endMovie(builder);
+}
+
+unpack(): MovieT {
+ return new MovieT(
+ this.mainCharacterType(),
+ (() => {
+ let temp = unionToCharacter(this.mainCharacterType(), this.mainCharacter.bind(this));
+ if(temp === null) { return null; }
+ if(typeof temp === 'string') { return temp; }
+ return temp.unpack()
+ })(),
+ this.bb!.createScalarList(this.charactersType.bind(this), this.charactersTypeLength()),
+ (() => {
+ let ret = [];
+ for(let targetEnumIndex = 0; targetEnumIndex < this.charactersTypeLength(); ++targetEnumIndex) {
+ let targetEnum = this.charactersType(targetEnumIndex);
+ if(targetEnum === null || Character[targetEnum!] === 'NONE') { continue; }
+
+ let temp = unionListToCharacter(targetEnum, this.characters.bind(this), targetEnumIndex);
+ if(temp === null) { continue; }
+ if(typeof temp === 'string') { ret.push(temp); continue; }
+ ret.push(temp.unpack());
+ }
+ return ret;
+ })()
+ );
+}
+
+
+unpackTo(_o: MovieT): void {
+ _o.mainCharacterType = this.mainCharacterType();
+ _o.mainCharacter = (() => {
+ let temp = unionToCharacter(this.mainCharacterType(), this.mainCharacter.bind(this));
+ if(temp === null) { return null; }
+ if(typeof temp === 'string') { return temp; }
+ return temp.unpack()
+ })();
+ _o.charactersType = this.bb!.createScalarList(this.charactersType.bind(this), this.charactersTypeLength());
+ _o.characters = (() => {
+ let ret = [];
+ for(let targetEnumIndex = 0; targetEnumIndex < this.charactersTypeLength(); ++targetEnumIndex) {
+ let targetEnum = this.charactersType(targetEnumIndex);
+ if(targetEnum === null || Character[targetEnum!] === 'NONE') { continue; }
+
+ let temp = unionListToCharacter(targetEnum, this.characters.bind(this), targetEnumIndex);
+ if(temp === null) { continue; }
+ if(typeof temp === 'string') { ret.push(temp); continue; }
+ ret.push(temp.unpack());
+ }
+ return ret;
+ })();
+}
+}
+
+export class MovieT {
+constructor(
+ public mainCharacterType: Character = Character.NONE,
+ public mainCharacter: AttackerT|BookReaderT|RapunzelT|string|null = null,
+ public charactersType: (Character)[] = [],
+ public characters: (AttackerT|BookReaderT|RapunzelT|string)[] = []
+){}
+
+
+pack(builder:flatbuffers.Builder): flatbuffers.Offset {
+ const mainCharacter = builder.createObjectOffset(this.mainCharacter);
+ const charactersType = Movie.createCharactersTypeVector(builder, this.charactersType);
+ const characters = Movie.createCharactersVector(builder, builder.createObjectOffsetList(this.characters));
+
+ return Movie.createMovie(builder,
+ this.mainCharacterType,
+ mainCharacter,
+ charactersType,
+ characters
+ );
+}
+}
diff --git a/tests/union_vector/rapunzel.js b/tests/union_vector/rapunzel.js
new file mode 100644
index 0000000..67a5e44
--- /dev/null
+++ b/tests/union_vector/rapunzel.js
@@ -0,0 +1,44 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+export class Rapunzel {
+ constructor() {
+ this.bb = null;
+ this.bb_pos = 0;
+ }
+ __init(i, bb) {
+ this.bb_pos = i;
+ this.bb = bb;
+ return this;
+ }
+ hairLength() {
+ return this.bb.readInt32(this.bb_pos);
+ }
+ mutate_hair_length(value) {
+ this.bb.writeInt32(this.bb_pos + 0, value);
+ return true;
+ }
+ static getFullyQualifiedName() {
+ return 'Rapunzel';
+ }
+ static sizeOf() {
+ return 4;
+ }
+ static createRapunzel(builder, hair_length) {
+ builder.prep(4, 4);
+ builder.writeInt32(hair_length);
+ return builder.offset();
+ }
+ unpack() {
+ return new RapunzelT(this.hairLength());
+ }
+ unpackTo(_o) {
+ _o.hairLength = this.hairLength();
+ }
+}
+export class RapunzelT {
+ constructor(hairLength = 0) {
+ this.hairLength = hairLength;
+ }
+ pack(builder) {
+ return Rapunzel.createRapunzel(builder, this.hairLength);
+ }
+}
diff --git a/tests/union_vector/rapunzel.ts b/tests/union_vector/rapunzel.ts
new file mode 100644
index 0000000..28f6e99
--- /dev/null
+++ b/tests/union_vector/rapunzel.ts
@@ -0,0 +1,63 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+import * as flatbuffers from 'flatbuffers';
+
+
+
+export class Rapunzel {
+ bb: flatbuffers.ByteBuffer|null = null;
+ bb_pos = 0;
+__init(i:number, bb:flatbuffers.ByteBuffer):Rapunzel {
+ this.bb_pos = i;
+ this.bb = bb;
+ return this;
+}
+
+hairLength():number {
+ return this.bb!.readInt32(this.bb_pos);
+}
+
+mutate_hair_length(value:number):boolean {
+ this.bb!.writeInt32(this.bb_pos + 0, value);
+ return true;
+}
+
+static getFullyQualifiedName():string {
+ return 'Rapunzel';
+}
+
+static sizeOf():number {
+ return 4;
+}
+
+static createRapunzel(builder:flatbuffers.Builder, hair_length: number):flatbuffers.Offset {
+ builder.prep(4, 4);
+ builder.writeInt32(hair_length);
+ return builder.offset();
+}
+
+
+unpack(): RapunzelT {
+ return new RapunzelT(
+ this.hairLength()
+ );
+}
+
+
+unpackTo(_o: RapunzelT): void {
+ _o.hairLength = this.hairLength();
+}
+}
+
+export class RapunzelT {
+constructor(
+ public hairLength: number = 0
+){}
+
+
+pack(builder:flatbuffers.Builder): flatbuffers.Offset {
+ return Rapunzel.createRapunzel(builder,
+ this.hairLength
+ );
+}
+}
diff --git a/tests/union_vector/union_vector.fbs b/tests/union_vector/union_vector.fbs
index 495076f..3dd3848 100644
--- a/tests/union_vector/union_vector.fbs
+++ b/tests/union_vector/union_vector.fbs
@@ -22,6 +22,19 @@
Unused: string
}
+struct FallingTub {
+ weight: int;
+}
+
+table HandFan {
+ length: int;
+}
+
+union Gadget {
+ FallingTub,
+ HandFan,
+}
+
table Movie {
main_character: Character;
characters: [Character];
diff --git a/tests/union_vector/union_vector.js b/tests/union_vector/union_vector.js
new file mode 100644
index 0000000..f3a118b
--- /dev/null
+++ b/tests/union_vector/union_vector.js
@@ -0,0 +1,8 @@
+export { Attacker, AttackerT } from './attacker';
+export { BookReader, BookReaderT } from './book-reader';
+export { Character, unionToCharacter, unionListToCharacter } from './character';
+export { FallingTub, FallingTubT } from './falling-tub';
+export { Gadget, unionToGadget, unionListToGadget } from './gadget';
+export { HandFan, HandFanT } from './hand-fan';
+export { Movie, MovieT } from './movie';
+export { Rapunzel, RapunzelT } from './rapunzel';
diff --git a/tests/union_vector/union_vector.ts b/tests/union_vector/union_vector.ts
new file mode 100644
index 0000000..f3a118b
--- /dev/null
+++ b/tests/union_vector/union_vector.ts
@@ -0,0 +1,8 @@
+export { Attacker, AttackerT } from './attacker';
+export { BookReader, BookReaderT } from './book-reader';
+export { Character, unionToCharacter, unionListToCharacter } from './character';
+export { FallingTub, FallingTubT } from './falling-tub';
+export { Gadget, unionToGadget, unionListToGadget } from './gadget';
+export { HandFan, HandFanT } from './hand-fan';
+export { Movie, MovieT } from './movie';
+export { Rapunzel, RapunzelT } from './rapunzel';
diff --git a/tests/union_vector/union_vector_generated.h b/tests/union_vector/union_vector_generated.h
index e6c7971..e08df6a 100644
--- a/tests/union_vector/union_vector_generated.h
+++ b/tests/union_vector/union_vector_generated.h
@@ -14,6 +14,12 @@
struct BookReader;
+struct FallingTub;
+
+struct HandFan;
+struct HandFanBuilder;
+struct HandFanT;
+
struct Movie;
struct MovieBuilder;
struct MovieT;
@@ -24,6 +30,10 @@
bool operator!=(const Rapunzel &lhs, const Rapunzel &rhs);
bool operator==(const BookReader &lhs, const BookReader &rhs);
bool operator!=(const BookReader &lhs, const BookReader &rhs);
+bool operator==(const FallingTub &lhs, const FallingTub &rhs);
+bool operator!=(const FallingTub &lhs, const FallingTub &rhs);
+bool operator==(const HandFanT &lhs, const HandFanT &rhs);
+bool operator!=(const HandFanT &lhs, const HandFanT &rhs);
bool operator==(const MovieT &lhs, const MovieT &rhs);
bool operator!=(const MovieT &lhs, const MovieT &rhs);
@@ -33,9 +43,13 @@
inline const flatbuffers::TypeTable *BookReaderTypeTable();
+inline const flatbuffers::TypeTable *FallingTubTypeTable();
+
+inline const flatbuffers::TypeTable *HandFanTypeTable();
+
inline const flatbuffers::TypeTable *MovieTypeTable();
-enum Character {
+enum Character : uint8_t {
Character_NONE = 0,
Character_MuLan = 1,
Character_Rapunzel = 2,
@@ -194,6 +208,139 @@
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);
+enum Gadget : uint8_t {
+ Gadget_NONE = 0,
+ Gadget_FallingTub = 1,
+ Gadget_HandFan = 2,
+ Gadget_MIN = Gadget_NONE,
+ Gadget_MAX = Gadget_HandFan
+};
+
+inline const Gadget (&EnumValuesGadget())[3] {
+ static const Gadget values[] = {
+ Gadget_NONE,
+ Gadget_FallingTub,
+ Gadget_HandFan
+ };
+ return values;
+}
+
+inline const char * const *EnumNamesGadget() {
+ static const char * const names[4] = {
+ "NONE",
+ "FallingTub",
+ "HandFan",
+ nullptr
+ };
+ return names;
+}
+
+inline const char *EnumNameGadget(Gadget e) {
+ if (flatbuffers::IsOutRange(e, Gadget_NONE, Gadget_HandFan)) return "";
+ const size_t index = static_cast<size_t>(e);
+ return EnumNamesGadget()[index];
+}
+
+template<typename T> struct GadgetTraits {
+ static const Gadget enum_value = Gadget_NONE;
+};
+
+template<> struct GadgetTraits<FallingTub> {
+ static const Gadget enum_value = Gadget_FallingTub;
+};
+
+template<> struct GadgetTraits<HandFan> {
+ static const Gadget enum_value = Gadget_HandFan;
+};
+
+template<typename T> struct GadgetUnionTraits {
+ static const Gadget enum_value = Gadget_NONE;
+};
+
+template<> struct GadgetUnionTraits<FallingTub> {
+ static const Gadget enum_value = Gadget_FallingTub;
+};
+
+template<> struct GadgetUnionTraits<HandFanT> {
+ static const Gadget enum_value = Gadget_HandFan;
+};
+
+struct GadgetUnion {
+ Gadget type;
+ void *value;
+
+ GadgetUnion() : type(Gadget_NONE), value(nullptr) {}
+ GadgetUnion(GadgetUnion&& u) FLATBUFFERS_NOEXCEPT :
+ type(Gadget_NONE), value(nullptr)
+ { std::swap(type, u.type); std::swap(value, u.value); }
+ GadgetUnion(const GadgetUnion &);
+ GadgetUnion &operator=(const GadgetUnion &u)
+ { GadgetUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; }
+ GadgetUnion &operator=(GadgetUnion &&u) FLATBUFFERS_NOEXCEPT
+ { std::swap(type, u.type); std::swap(value, u.value); return *this; }
+ ~GadgetUnion() { Reset(); }
+
+ void Reset();
+
+ template <typename T>
+ void Set(T&& val) {
+ typedef typename std::remove_reference<T>::type RT;
+ Reset();
+ type = GadgetUnionTraits<RT>::enum_value;
+ if (type != Gadget_NONE) {
+ value = new RT(std::forward<T>(val));
+ }
+ }
+
+ static void *UnPack(const void *obj, Gadget type, const flatbuffers::resolver_function_t *resolver);
+ flatbuffers::Offset<void> Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const;
+
+ FallingTub *AsFallingTub() {
+ return type == Gadget_FallingTub ?
+ reinterpret_cast<FallingTub *>(value) : nullptr;
+ }
+ const FallingTub *AsFallingTub() const {
+ return type == Gadget_FallingTub ?
+ reinterpret_cast<const FallingTub *>(value) : nullptr;
+ }
+ HandFanT *AsHandFan() {
+ return type == Gadget_HandFan ?
+ reinterpret_cast<HandFanT *>(value) : nullptr;
+ }
+ const HandFanT *AsHandFan() const {
+ return type == Gadget_HandFan ?
+ reinterpret_cast<const HandFanT *>(value) : nullptr;
+ }
+};
+
+
+inline bool operator==(const GadgetUnion &lhs, const GadgetUnion &rhs) {
+ if (lhs.type != rhs.type) return false;
+ switch (lhs.type) {
+ case Gadget_NONE: {
+ return true;
+ }
+ case Gadget_FallingTub: {
+ return *(reinterpret_cast<const FallingTub *>(lhs.value)) ==
+ *(reinterpret_cast<const FallingTub *>(rhs.value));
+ }
+ case Gadget_HandFan: {
+ return *(reinterpret_cast<const HandFanT *>(lhs.value)) ==
+ *(reinterpret_cast<const HandFanT *>(rhs.value));
+ }
+ default: {
+ return false;
+ }
+ }
+}
+
+inline bool operator!=(const GadgetUnion &lhs, const GadgetUnion &rhs) {
+ return !(lhs == rhs);
+}
+
+bool VerifyGadget(flatbuffers::Verifier &verifier, const void *obj, Gadget type);
+bool VerifyGadgetVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
+
FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) Rapunzel FLATBUFFERS_FINAL_CLASS {
private:
int32_t hair_length_;
@@ -202,7 +349,7 @@
static const flatbuffers::TypeTable *MiniReflectTypeTable() {
return RapunzelTypeTable();
}
- static FLATBUFFERS_CONSTEXPR const char *GetFullyQualifiedName() {
+ static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Rapunzel";
}
Rapunzel()
@@ -238,7 +385,7 @@
static const flatbuffers::TypeTable *MiniReflectTypeTable() {
return BookReaderTypeTable();
}
- static FLATBUFFERS_CONSTEXPR const char *GetFullyQualifiedName() {
+ static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "BookReader";
}
BookReader()
@@ -266,34 +413,57 @@
}
-struct AttackerT : public flatbuffers::NativeTable {
- typedef Attacker TableType;
- static FLATBUFFERS_CONSTEXPR const char *GetFullyQualifiedName() {
- return "AttackerT";
+FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) FallingTub FLATBUFFERS_FINAL_CLASS {
+ private:
+ int32_t weight_;
+
+ public:
+ static const flatbuffers::TypeTable *MiniReflectTypeTable() {
+ return FallingTubTypeTable();
}
- int32_t sword_attack_damage;
- AttackerT()
- : sword_attack_damage(0) {
+ static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
+ return "FallingTub";
+ }
+ FallingTub()
+ : weight_(0) {
+ }
+ FallingTub(int32_t _weight)
+ : weight_(flatbuffers::EndianScalar(_weight)) {
+ }
+ int32_t weight() const {
+ return flatbuffers::EndianScalar(weight_);
+ }
+ void mutate_weight(int32_t _weight) {
+ flatbuffers::WriteScalar(&weight_, _weight);
}
};
+FLATBUFFERS_STRUCT_END(FallingTub, 4);
-inline bool operator==(const AttackerT &lhs, const AttackerT &rhs) {
+inline bool operator==(const FallingTub &lhs, const FallingTub &rhs) {
return
- (lhs.sword_attack_damage == rhs.sword_attack_damage);
+ (lhs.weight() == rhs.weight());
}
-inline bool operator!=(const AttackerT &lhs, const AttackerT &rhs) {
+inline bool operator!=(const FallingTub &lhs, const FallingTub &rhs) {
return !(lhs == rhs);
}
+struct AttackerT : public flatbuffers::NativeTable {
+ typedef Attacker TableType;
+ static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
+ return "AttackerT";
+ }
+ int32_t sword_attack_damage = 0;
+};
+
struct Attacker FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef AttackerT NativeTableType;
typedef AttackerBuilder Builder;
static const flatbuffers::TypeTable *MiniReflectTypeTable() {
return AttackerTypeTable();
}
- static FLATBUFFERS_CONSTEXPR const char *GetFullyQualifiedName() {
+ static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Attacker";
}
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
@@ -302,12 +472,12 @@
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) {
+ bool mutate_sword_attack_damage(int32_t _sword_attack_damage = 0) {
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) &&
+ VerifyField<int32_t>(verifier, VT_SWORD_ATTACK_DAMAGE, 4) &&
verifier.EndTable();
}
AttackerT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
@@ -343,27 +513,78 @@
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;
- static FLATBUFFERS_CONSTEXPR const char *GetFullyQualifiedName() {
- return "MovieT";
+struct HandFanT : public flatbuffers::NativeTable {
+ typedef HandFan TableType;
+ static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
+ return "HandFanT";
}
- CharacterUnion main_character;
- std::vector<CharacterUnion> characters;
- MovieT() {
+ int32_t length = 0;
+};
+
+struct HandFan FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
+ typedef HandFanT NativeTableType;
+ typedef HandFanBuilder Builder;
+ static const flatbuffers::TypeTable *MiniReflectTypeTable() {
+ return HandFanTypeTable();
+ }
+ static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
+ return "HandFan";
+ }
+ enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
+ VT_LENGTH = 4
+ };
+ int32_t length() const {
+ return GetField<int32_t>(VT_LENGTH, 0);
+ }
+ bool mutate_length(int32_t _length = 0) {
+ return SetField<int32_t>(VT_LENGTH, _length, 0);
+ }
+ bool Verify(flatbuffers::Verifier &verifier) const {
+ return VerifyTableStart(verifier) &&
+ VerifyField<int32_t>(verifier, VT_LENGTH, 4) &&
+ verifier.EndTable();
+ }
+ HandFanT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
+ void UnPackTo(HandFanT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
+ static flatbuffers::Offset<HandFan> Pack(flatbuffers::FlatBufferBuilder &_fbb, const HandFanT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
+};
+
+struct HandFanBuilder {
+ typedef HandFan Table;
+ flatbuffers::FlatBufferBuilder &fbb_;
+ flatbuffers::uoffset_t start_;
+ void add_length(int32_t length) {
+ fbb_.AddElement<int32_t>(HandFan::VT_LENGTH, length, 0);
+ }
+ explicit HandFanBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+ : fbb_(_fbb) {
+ start_ = fbb_.StartTable();
+ }
+ flatbuffers::Offset<HandFan> Finish() {
+ const auto end = fbb_.EndTable(start_);
+ auto o = flatbuffers::Offset<HandFan>(end);
+ return o;
}
};
-inline bool operator==(const MovieT &lhs, const MovieT &rhs) {
- return
- (lhs.main_character == rhs.main_character) &&
- (lhs.characters == rhs.characters);
+inline flatbuffers::Offset<HandFan> CreateHandFan(
+ flatbuffers::FlatBufferBuilder &_fbb,
+ int32_t length = 0) {
+ HandFanBuilder builder_(_fbb);
+ builder_.add_length(length);
+ return builder_.Finish();
}
-inline bool operator!=(const MovieT &lhs, const MovieT &rhs) {
- return !(lhs == rhs);
-}
+flatbuffers::Offset<HandFan> CreateHandFan(flatbuffers::FlatBufferBuilder &_fbb, const HandFanT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
+struct MovieT : public flatbuffers::NativeTable {
+ typedef Movie TableType;
+ static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
+ return "MovieT";
+ }
+ CharacterUnion main_character{};
+ std::vector<CharacterUnion> characters{};
+};
struct Movie FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef MovieT NativeTableType;
@@ -371,7 +592,7 @@
static const flatbuffers::TypeTable *MiniReflectTypeTable() {
return MovieTypeTable();
}
- static FLATBUFFERS_CONSTEXPR const char *GetFullyQualifiedName() {
+ static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Movie";
}
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
@@ -421,7 +642,7 @@
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
- VerifyField<uint8_t>(verifier, VT_MAIN_CHARACTER_TYPE) &&
+ VerifyField<uint8_t>(verifier, VT_MAIN_CHARACTER_TYPE, 1) &&
VerifyOffset(verifier, VT_MAIN_CHARACTER) &&
VerifyCharacter(verifier, main_character(), main_character_type()) &&
VerifyOffset(verifier, VT_CHARACTERS_TYPE) &&
@@ -495,8 +716,19 @@
flatbuffers::Offset<Movie> CreateMovie(flatbuffers::FlatBufferBuilder &_fbb, const MovieT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
+
+inline bool operator==(const AttackerT &lhs, const AttackerT &rhs) {
+ return
+ (lhs.sword_attack_damage == rhs.sword_attack_damage);
+}
+
+inline bool operator!=(const AttackerT &lhs, const AttackerT &rhs) {
+ return !(lhs == rhs);
+}
+
+
inline AttackerT *Attacker::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
- flatbuffers::unique_ptr<AttackerT> _o = flatbuffers::unique_ptr<AttackerT>(new AttackerT());
+ auto _o = std::unique_ptr<AttackerT>(new AttackerT());
UnPackTo(_o.get(), _resolver);
return _o.release();
}
@@ -521,8 +753,57 @@
_sword_attack_damage);
}
+
+inline bool operator==(const HandFanT &lhs, const HandFanT &rhs) {
+ return
+ (lhs.length == rhs.length);
+}
+
+inline bool operator!=(const HandFanT &lhs, const HandFanT &rhs) {
+ return !(lhs == rhs);
+}
+
+
+inline HandFanT *HandFan::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
+ auto _o = std::unique_ptr<HandFanT>(new HandFanT());
+ UnPackTo(_o.get(), _resolver);
+ return _o.release();
+}
+
+inline void HandFan::UnPackTo(HandFanT *_o, const flatbuffers::resolver_function_t *_resolver) const {
+ (void)_o;
+ (void)_resolver;
+ { auto _e = length(); _o->length = _e; }
+}
+
+inline flatbuffers::Offset<HandFan> HandFan::Pack(flatbuffers::FlatBufferBuilder &_fbb, const HandFanT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
+ return CreateHandFan(_fbb, _o, _rehasher);
+}
+
+inline flatbuffers::Offset<HandFan> CreateHandFan(flatbuffers::FlatBufferBuilder &_fbb, const HandFanT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
+ (void)_rehasher;
+ (void)_o;
+ struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const HandFanT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
+ auto _length = _o->length;
+ return CreateHandFan(
+ _fbb,
+ _length);
+}
+
+
+inline bool operator==(const MovieT &lhs, const MovieT &rhs) {
+ return
+ (lhs.main_character == rhs.main_character) &&
+ (lhs.characters == rhs.characters);
+}
+
+inline bool operator!=(const MovieT &lhs, const MovieT &rhs) {
+ return !(lhs == rhs);
+}
+
+
inline MovieT *Movie::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
- flatbuffers::unique_ptr<MovieT> _o = flatbuffers::unique_ptr<MovieT>(new MovieT());
+ auto _o = std::unique_ptr<MovieT>(new MovieT());
UnPackTo(_o.get(), _resolver);
return _o.release();
}
@@ -566,13 +847,13 @@
return verifier.VerifyTable(ptr);
}
case Character_Rapunzel: {
- return verifier.Verify<Rapunzel>(static_cast<const uint8_t *>(obj), 0);
+ return verifier.VerifyField<Rapunzel>(static_cast<const uint8_t *>(obj), 0, 4);
}
case Character_Belle: {
- return verifier.Verify<BookReader>(static_cast<const uint8_t *>(obj), 0);
+ return verifier.VerifyField<BookReader>(static_cast<const uint8_t *>(obj), 0, 4);
}
case Character_BookFan: {
- return verifier.Verify<BookReader>(static_cast<const uint8_t *>(obj), 0);
+ return verifier.VerifyField<BookReader>(static_cast<const uint8_t *>(obj), 0, 4);
}
case Character_Other: {
auto ptr = reinterpret_cast<const flatbuffers::String *>(obj);
@@ -599,6 +880,7 @@
}
inline void *CharacterUnion::UnPack(const void *obj, Character type, const flatbuffers::resolver_function_t *resolver) {
+ (void)resolver;
switch (type) {
case Character_MuLan: {
auto ptr = reinterpret_cast<const Attacker *>(obj);
@@ -629,6 +911,7 @@
}
inline flatbuffers::Offset<void> CharacterUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const {
+ (void)_rehasher;
switch (type) {
case Character_MuLan: {
auto ptr = reinterpret_cast<const AttackerT *>(value);
@@ -727,6 +1010,97 @@
type = Character_NONE;
}
+inline bool VerifyGadget(flatbuffers::Verifier &verifier, const void *obj, Gadget type) {
+ switch (type) {
+ case Gadget_NONE: {
+ return true;
+ }
+ case Gadget_FallingTub: {
+ return verifier.VerifyField<FallingTub>(static_cast<const uint8_t *>(obj), 0, 4);
+ }
+ case Gadget_HandFan: {
+ auto ptr = reinterpret_cast<const HandFan *>(obj);
+ return verifier.VerifyTable(ptr);
+ }
+ default: return true;
+ }
+}
+
+inline bool VerifyGadgetVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
+ if (!values || !types) return !values && !types;
+ if (values->size() != types->size()) return false;
+ for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
+ if (!VerifyGadget(
+ verifier, values->Get(i), types->GetEnum<Gadget>(i))) {
+ return false;
+ }
+ }
+ return true;
+}
+
+inline void *GadgetUnion::UnPack(const void *obj, Gadget type, const flatbuffers::resolver_function_t *resolver) {
+ (void)resolver;
+ switch (type) {
+ case Gadget_FallingTub: {
+ auto ptr = reinterpret_cast<const FallingTub *>(obj);
+ return new FallingTub(*ptr);
+ }
+ case Gadget_HandFan: {
+ auto ptr = reinterpret_cast<const HandFan *>(obj);
+ return ptr->UnPack(resolver);
+ }
+ default: return nullptr;
+ }
+}
+
+inline flatbuffers::Offset<void> GadgetUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const {
+ (void)_rehasher;
+ switch (type) {
+ case Gadget_FallingTub: {
+ auto ptr = reinterpret_cast<const FallingTub *>(value);
+ return _fbb.CreateStruct(*ptr).Union();
+ }
+ case Gadget_HandFan: {
+ auto ptr = reinterpret_cast<const HandFanT *>(value);
+ return CreateHandFan(_fbb, ptr, _rehasher).Union();
+ }
+ default: return 0;
+ }
+}
+
+inline GadgetUnion::GadgetUnion(const GadgetUnion &u) : type(u.type), value(nullptr) {
+ switch (type) {
+ case Gadget_FallingTub: {
+ value = new FallingTub(*reinterpret_cast<FallingTub *>(u.value));
+ break;
+ }
+ case Gadget_HandFan: {
+ value = new HandFanT(*reinterpret_cast<HandFanT *>(u.value));
+ break;
+ }
+ default:
+ break;
+ }
+}
+
+inline void GadgetUnion::Reset() {
+ switch (type) {
+ case Gadget_FallingTub: {
+ auto ptr = reinterpret_cast<FallingTub *>(value);
+ delete ptr;
+ break;
+ }
+ case Gadget_HandFan: {
+ auto ptr = reinterpret_cast<HandFanT *>(value);
+ delete ptr;
+ break;
+ }
+ default: break;
+ }
+ value = nullptr;
+ type = Gadget_NONE;
+}
+
inline const flatbuffers::TypeTable *CharacterTypeTable() {
static const flatbuffers::TypeCode type_codes[] = {
{ flatbuffers::ET_SEQUENCE, 0, -1 },
@@ -757,6 +1131,27 @@
return &tt;
}
+inline const flatbuffers::TypeTable *GadgetTypeTable() {
+ static const flatbuffers::TypeCode type_codes[] = {
+ { flatbuffers::ET_SEQUENCE, 0, -1 },
+ { flatbuffers::ET_SEQUENCE, 0, 0 },
+ { flatbuffers::ET_SEQUENCE, 0, 1 }
+ };
+ static const flatbuffers::TypeFunction type_refs[] = {
+ FallingTubTypeTable,
+ HandFanTypeTable
+ };
+ static const char * const names[] = {
+ "NONE",
+ "FallingTub",
+ "HandFan"
+ };
+ static const flatbuffers::TypeTable tt = {
+ flatbuffers::ST_UNION, 3, type_codes, type_refs, nullptr, nullptr, names
+ };
+ return &tt;
+}
+
inline const flatbuffers::TypeTable *AttackerTypeTable() {
static const flatbuffers::TypeCode type_codes[] = {
{ flatbuffers::ET_INT, 0, -1 }
@@ -798,6 +1193,33 @@
return &tt;
}
+inline const flatbuffers::TypeTable *FallingTubTypeTable() {
+ static const flatbuffers::TypeCode type_codes[] = {
+ { flatbuffers::ET_INT, 0, -1 }
+ };
+ static const int64_t values[] = { 0, 4 };
+ static const char * const names[] = {
+ "weight"
+ };
+ static const flatbuffers::TypeTable tt = {
+ flatbuffers::ST_STRUCT, 1, type_codes, nullptr, nullptr, values, names
+ };
+ return &tt;
+}
+
+inline const flatbuffers::TypeTable *HandFanTypeTable() {
+ static const flatbuffers::TypeCode type_codes[] = {
+ { flatbuffers::ET_INT, 0, -1 }
+ };
+ static const char * const names[] = {
+ "length"
+ };
+ static const flatbuffers::TypeTable tt = {
+ flatbuffers::ST_TABLE, 1, type_codes, nullptr, nullptr, nullptr, names
+ };
+ return &tt;
+}
+
inline const flatbuffers::TypeTable *MovieTypeTable() {
static const flatbuffers::TypeCode type_codes[] = {
{ flatbuffers::ET_UTYPE, 0, 0 },
@@ -832,6 +1254,10 @@
return flatbuffers::GetMutableRoot<Movie>(buf);
}
+inline Movie *GetMutableSizePrefixedMovie(void *buf) {
+ return flatbuffers::GetMutableSizePrefixedRoot<Movie>(buf);
+}
+
inline const char *MovieIdentifier() {
return "MOVI";
}
@@ -841,6 +1267,11 @@
buf, MovieIdentifier());
}
+inline bool SizePrefixedMovieBufferHasIdentifier(const void *buf) {
+ return flatbuffers::BufferHasIdentifier(
+ buf, MovieIdentifier(), true);
+}
+
inline bool VerifyMovieBuffer(
flatbuffers::Verifier &verifier) {
return verifier.VerifyBuffer<Movie>(MovieIdentifier());
diff --git a/tests/union_vector/union_vector_generated.js b/tests/union_vector/union_vector_generated.js
deleted file mode 100644
index 9e8b76e..0000000
--- a/tests/union_vector/union_vector_generated.js
+++ /dev/null
@@ -1,522 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-/**
- * @enum {number}
- */
-var Character = {
- NONE: 0,
- MuLan: 1,
- Rapunzel: 2,
- Belle: 3,
- BookFan: 4,
- Other: 5,
- Unused: 6
-};
-
-/**
- * @enum {string}
- */
-var CharacterName = {
- '0': 'NONE',
- '1': 'MuLan',
- '2': 'Rapunzel',
- '3': 'Belle',
- '4': 'BookFan',
- '5': 'Other',
- '6': 'Unused'
-};
-
-/**
- * @constructor
- */
-function Attacker() {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- this.bb = null;
-
- /**
- * @type {number}
- */
- this.bb_pos = 0;
-}
-
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {Attacker}
- */
-Attacker.prototype.__init = function(i, bb) {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @param {Attacker=} obj
- * @returns {Attacker}
- */
-Attacker.getRootAsAttacker = function(bb, obj) {
- return (obj || new Attacker).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @param {Attacker=} obj
- * @returns {Attacker}
- */
-Attacker.getSizePrefixedRootAsAttacker = function(bb, obj) {
- bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);
- return (obj || new Attacker).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @returns {number}
- */
-Attacker.prototype.swordAttackDamage = 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}
- */
-Attacker.prototype.mutate_sword_attack_damage = 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;
-};
-
-/**
- * @returns {string}
- */
-Attacker.getFullyQualifiedName = function() {
- return 'Attacker';
-}
-
-/**
- * @param {flatbuffers.Builder} builder
- */
-Attacker.startAttacker = function(builder) {
- builder.startObject(1);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} swordAttackDamage
- */
-Attacker.addSwordAttackDamage = function(builder, swordAttackDamage) {
- builder.addFieldInt32(0, swordAttackDamage, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @returns {flatbuffers.Offset}
- */
-Attacker.endAttacker = function(builder) {
- var offset = builder.endObject();
- return offset;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} swordAttackDamage
- * @returns {flatbuffers.Offset}
- */
-Attacker.createAttacker = function(builder, swordAttackDamage) {
- Attacker.startAttacker(builder);
- Attacker.addSwordAttackDamage(builder, swordAttackDamage);
- return Attacker.endAttacker(builder);
-}
-
-/**
- * @constructor
- */
-function Rapunzel() {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- this.bb = null;
-
- /**
- * @type {number}
- */
- this.bb_pos = 0;
-}
-
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {Rapunzel}
- */
-Rapunzel.prototype.__init = function(i, bb) {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @returns {number}
- */
-Rapunzel.prototype.hairLength = function() {
- return this.bb.readInt32(this.bb_pos);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-Rapunzel.prototype.mutate_hair_length = function(value) {
- this.bb.writeInt32(this.bb_pos + 0, value);
- return true;
-};
-
-/**
- * @returns {string}
- */
-Rapunzel.getFullyQualifiedName = function() {
- return 'Rapunzel';
-}
-
-/**
- * @returns {number}
- */
-Rapunzel.sizeOf = function() {
- return 4;
-}
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} hair_length
- * @returns {flatbuffers.Offset}
- */
-Rapunzel.createRapunzel = function(builder, hair_length) {
- builder.prep(4, 4);
- builder.writeInt32(hair_length);
- return builder.offset();
-};
-
-/**
- * @constructor
- */
-function BookReader() {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- this.bb = null;
-
- /**
- * @type {number}
- */
- this.bb_pos = 0;
-}
-
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {BookReader}
- */
-BookReader.prototype.__init = function(i, bb) {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @returns {number}
- */
-BookReader.prototype.booksRead = function() {
- return this.bb.readInt32(this.bb_pos);
-};
-
-/**
- * @param {number} value
- * @returns {boolean}
- */
-BookReader.prototype.mutate_books_read = function(value) {
- this.bb.writeInt32(this.bb_pos + 0, value);
- return true;
-};
-
-/**
- * @returns {string}
- */
-BookReader.getFullyQualifiedName = function() {
- return 'BookReader';
-}
-
-/**
- * @returns {number}
- */
-BookReader.sizeOf = function() {
- return 4;
-}
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {number} books_read
- * @returns {flatbuffers.Offset}
- */
-BookReader.createBookReader = function(builder, books_read) {
- builder.prep(4, 4);
- builder.writeInt32(books_read);
- return builder.offset();
-};
-
-/**
- * @constructor
- */
-function Movie() {
- /**
- * @type {flatbuffers.ByteBuffer}
- */
- this.bb = null;
-
- /**
- * @type {number}
- */
- this.bb_pos = 0;
-}
-
-/**
- * @param {number} i
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {Movie}
- */
-Movie.prototype.__init = function(i, bb) {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @param {Movie=} obj
- * @returns {Movie}
- */
-Movie.getRootAsMovie = function(bb, obj) {
- return (obj || new Movie).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @param {Movie=} obj
- * @returns {Movie}
- */
-Movie.getSizePrefixedRootAsMovie = function(bb, obj) {
- bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);
- return (obj || new Movie).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @param {flatbuffers.ByteBuffer} bb
- * @returns {boolean}
- */
-Movie.bufferHasIdentifier = function(bb) {
- return bb.__has_identifier('MOVI');
-};
-
-/**
- * @returns {Character}
- */
-Movie.prototype.mainCharacterType = function() {
- var offset = this.bb.__offset(this.bb_pos, 4);
- return offset ? /** @type {Character} */ (this.bb.readUint8(this.bb_pos + offset)) : Character.NONE;
-};
-
-/**
- * @param {flatbuffers.Table} obj
- * @returns {?flatbuffers.Table}
- */
-Movie.prototype.mainCharacter = function(obj) {
- var offset = this.bb.__offset(this.bb_pos, 6);
- return offset ? this.bb.__union(obj, this.bb_pos + offset) : null;
-};
-
-/**
- * @param {number} index
- * @returns {Character}
- */
-Movie.prototype.charactersType = function(index) {
- var offset = this.bb.__offset(this.bb_pos, 8);
- return offset ? /** @type {Character} */ (this.bb.readUint8(this.bb.__vector(this.bb_pos + offset) + index)) : /** @type {Character} */ (0);
-};
-
-/**
- * @returns {number}
- */
-Movie.prototype.charactersTypeLength = function() {
- var offset = this.bb.__offset(this.bb_pos, 8);
- return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
-};
-
-/**
- * @returns {Uint8Array}
- */
-Movie.prototype.charactersTypeArray = function() {
- var offset = this.bb.__offset(this.bb_pos, 8);
- 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 {number} index
- * @param {flatbuffers.Table=} obj
- * @returns {?flatbuffers.Table}
- */
-Movie.prototype.characters = function(index, obj) {
- var offset = this.bb.__offset(this.bb_pos, 10);
- return offset ? this.bb.__union(obj, this.bb.__vector(this.bb_pos + offset) + index * 4) : null;
-};
-
-/**
- * @returns {number}
- */
-Movie.prototype.charactersLength = function() {
- var offset = this.bb.__offset(this.bb_pos, 10);
- return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
-};
-
-/**
- * @returns {string}
- */
-Movie.getFullyQualifiedName = function() {
- return 'Movie';
-}
-
-/**
- * @param {flatbuffers.Builder} builder
- */
-Movie.startMovie = function(builder) {
- builder.startObject(4);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {Character} mainCharacterType
- */
-Movie.addMainCharacterType = function(builder, mainCharacterType) {
- builder.addFieldInt8(0, mainCharacterType, Character.NONE);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} mainCharacterOffset
- */
-Movie.addMainCharacter = function(builder, mainCharacterOffset) {
- builder.addFieldOffset(1, mainCharacterOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} charactersTypeOffset
- */
-Movie.addCharactersType = function(builder, charactersTypeOffset) {
- builder.addFieldOffset(2, charactersTypeOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {Array.<Character>} data
- * @returns {flatbuffers.Offset}
- */
-Movie.createCharactersTypeVector = 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
- */
-Movie.startCharactersTypeVector = function(builder, numElems) {
- builder.startVector(1, numElems, 1);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} charactersOffset
- */
-Movie.addCharacters = function(builder, charactersOffset) {
- builder.addFieldOffset(3, charactersOffset, 0);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {Array.<flatbuffers.Offset>} data
- * @returns {flatbuffers.Offset}
- */
-Movie.createCharactersVector = 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
- */
-Movie.startCharactersVector = function(builder, numElems) {
- builder.startVector(4, numElems, 4);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @returns {flatbuffers.Offset}
- */
-Movie.endMovie = function(builder) {
- var offset = builder.endObject();
- return offset;
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} offset
- */
-Movie.finishMovieBuffer = function(builder, offset) {
- builder.finish(offset, 'MOVI');
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {flatbuffers.Offset} offset
- */
-Movie.finishSizePrefixedMovieBuffer = function(builder, offset) {
- builder.finish(offset, 'MOVI', true);
-};
-
-/**
- * @param {flatbuffers.Builder} builder
- * @param {Character} mainCharacterType
- * @param {flatbuffers.Offset} mainCharacterOffset
- * @param {flatbuffers.Offset} charactersTypeOffset
- * @param {flatbuffers.Offset} charactersOffset
- * @returns {flatbuffers.Offset}
- */
-Movie.createMovie = function(builder, mainCharacterType, mainCharacterOffset, charactersTypeOffset, charactersOffset) {
- Movie.startMovie(builder);
- Movie.addMainCharacterType(builder, mainCharacterType);
- Movie.addMainCharacter(builder, mainCharacterOffset);
- Movie.addCharactersType(builder, charactersTypeOffset);
- Movie.addCharacters(builder, charactersOffset);
- return Movie.endMovie(builder);
-}
-
-// Exports for Node.js and RequireJS
-this.Character = Character;
-this.CharacterName = CharacterName;
-this.Attacker = Attacker;
-this.Rapunzel = Rapunzel;
-this.BookReader = BookReader;
-this.Movie = Movie;
diff --git a/tests/union_vector/union_vector_generated.ts b/tests/union_vector/union_vector_generated.ts
deleted file mode 100644
index 806c07f..0000000
--- a/tests/union_vector/union_vector_generated.ts
+++ /dev/null
@@ -1,690 +0,0 @@
-// automatically generated by the FlatBuffers compiler, do not modify
-
-import * as flatbuffers from 'flatbuffers';
-/**
- * @enum {number}
- */
-export enum Character{
- NONE= 0,
- MuLan= 1,
- Rapunzel= 2,
- Belle= 3,
- BookFan= 4,
- Other= 5,
- Unused= 6
-};
-
-export function unionToCharacter(
- type: Character,
- accessor: (obj:Attacker|BookReader|Rapunzel|string) => Attacker|BookReader|Rapunzel|string|null
-): Attacker|BookReader|Rapunzel|string|null {
- switch(Character[type]) {
- case 'NONE': return null;
- case 'MuLan': return accessor(new Attacker())! as Attacker;
- case 'Rapunzel': return accessor(new Rapunzel())! as Rapunzel;
- case 'Belle': return accessor(new BookReader())! as BookReader;
- case 'BookFan': return accessor(new BookReader())! as BookReader;
- case 'Other': return accessor('') as string;
- case 'Unused': return accessor('') as string;
- default: return null;
- }
-}
-
-export function unionListToCharacter(
- type: Character,
- accessor: (index: number, obj:Attacker|BookReader|Rapunzel|string) => Attacker|BookReader|Rapunzel|string|null,
- index: number
-): Attacker|BookReader|Rapunzel|string|null {
- switch(Character[type]) {
- case 'NONE': return null;
- case 'MuLan': return accessor(index, new Attacker())! as Attacker;
- case 'Rapunzel': return accessor(index, new Rapunzel())! as Rapunzel;
- case 'Belle': return accessor(index, new BookReader())! as BookReader;
- case 'BookFan': return accessor(index, new BookReader())! as BookReader;
- case 'Other': return accessor(index, '') as string;
- case 'Unused': return accessor(index, '') as string;
- default: return null;
- }
-}
-
-/**
- * @constructor
- */
-export class Attacker {
- bb: flatbuffers.ByteBuffer|null = null;
-
- bb_pos:number = 0;
-/**
- * @param number i
- * @param flatbuffers.ByteBuffer bb
- * @returns Attacker
- */
-__init(i:number, bb:flatbuffers.ByteBuffer):Attacker {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @param flatbuffers.ByteBuffer bb
- * @param Attacker= obj
- * @returns Attacker
- */
-static getRootAsAttacker(bb:flatbuffers.ByteBuffer, obj?:Attacker):Attacker {
- return (obj || new Attacker()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @param flatbuffers.ByteBuffer bb
- * @param Attacker= obj
- * @returns Attacker
- */
-static getSizePrefixedRootAsAttacker(bb:flatbuffers.ByteBuffer, obj?:Attacker):Attacker {
- bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);
- return (obj || new Attacker()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @returns number
- */
-swordAttackDamage():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_sword_attack_damage(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;
-};
-
-/**
- * @returns string
- */
-static getFullyQualifiedName():string {
- return 'Attacker';
-}
-
-/**
- * @param flatbuffers.Builder builder
- */
-static startAttacker(builder:flatbuffers.Builder) {
- builder.startObject(1);
-};
-
-/**
- * @param flatbuffers.Builder builder
- * @param number swordAttackDamage
- */
-static addSwordAttackDamage(builder:flatbuffers.Builder, swordAttackDamage:number) {
- builder.addFieldInt32(0, swordAttackDamage, 0);
-};
-
-/**
- * @param flatbuffers.Builder builder
- * @returns flatbuffers.Offset
- */
-static endAttacker(builder:flatbuffers.Builder):flatbuffers.Offset {
- var offset = builder.endObject();
- return offset;
-};
-
-static createAttacker(builder:flatbuffers.Builder, swordAttackDamage:number):flatbuffers.Offset {
- Attacker.startAttacker(builder);
- Attacker.addSwordAttackDamage(builder, swordAttackDamage);
- return Attacker.endAttacker(builder);
-}
-
-/**
- * @returns AttackerT
- */
-unpack(): AttackerT {
- return new AttackerT(
- this.swordAttackDamage()
- );
-};
-
-/**
- * @param AttackerT _o
- */
-unpackTo(_o: AttackerT): void {
- _o.swordAttackDamage = this.swordAttackDamage();
-};
-}
-
-export class AttackerT {
-/**
- * @constructor
- * @param number swordAttackDamage
- */
-constructor(
- public swordAttackDamage: number = 0
-){};
-
-/**
- * @param flatbuffers.Builder builder
- * @returns flatbuffers.Offset
- */
-pack(builder:flatbuffers.Builder): flatbuffers.Offset {
- return Attacker.createAttacker(builder,
- this.swordAttackDamage
- );
-};
-}
-/**
- * @constructor
- */
-export class Rapunzel {
- bb: flatbuffers.ByteBuffer|null = null;
-
- bb_pos:number = 0;
-/**
- * @param number i
- * @param flatbuffers.ByteBuffer bb
- * @returns Rapunzel
- */
-__init(i:number, bb:flatbuffers.ByteBuffer):Rapunzel {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @returns number
- */
-hairLength():number {
- return this.bb!.readInt32(this.bb_pos);
-};
-
-/**
- * @param number value
- * @returns boolean
- */
-mutate_hair_length(value:number):boolean {
- this.bb!.writeInt32(this.bb_pos + 0, value);
- return true;
-};
-
-/**
- * @returns string
- */
-static getFullyQualifiedName():string {
- return 'Rapunzel';
-}
-
-/**
- * @returns number
- */
-static sizeOf():number {
- return 4;
-}
-
-/**
- * @param flatbuffers.Builder builder
- * @param number hair_length
- * @returns flatbuffers.Offset
- */
-static createRapunzel(builder:flatbuffers.Builder, hair_length: number):flatbuffers.Offset {
- builder.prep(4, 4);
- builder.writeInt32(hair_length);
- return builder.offset();
-};
-
-
-/**
- * @returns RapunzelT
- */
-unpack(): RapunzelT {
- return new RapunzelT(
- this.hairLength()
- );
-};
-
-/**
- * @param RapunzelT _o
- */
-unpackTo(_o: RapunzelT): void {
- _o.hairLength = this.hairLength();
-};
-}
-
-export class RapunzelT {
-/**
- * @constructor
- * @param number hairLength
- */
-constructor(
- public hairLength: number = 0
-){};
-
-/**
- * @param flatbuffers.Builder builder
- * @returns flatbuffers.Offset
- */
-pack(builder:flatbuffers.Builder): flatbuffers.Offset {
- return Rapunzel.createRapunzel(builder,
- this.hairLength
- );
-};
-}
-/**
- * @constructor
- */
-export class BookReader {
- bb: flatbuffers.ByteBuffer|null = null;
-
- bb_pos:number = 0;
-/**
- * @param number i
- * @param flatbuffers.ByteBuffer bb
- * @returns BookReader
- */
-__init(i:number, bb:flatbuffers.ByteBuffer):BookReader {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @returns number
- */
-booksRead():number {
- return this.bb!.readInt32(this.bb_pos);
-};
-
-/**
- * @param number value
- * @returns boolean
- */
-mutate_books_read(value:number):boolean {
- this.bb!.writeInt32(this.bb_pos + 0, value);
- return true;
-};
-
-/**
- * @returns string
- */
-static getFullyQualifiedName():string {
- return 'BookReader';
-}
-
-/**
- * @returns number
- */
-static sizeOf():number {
- return 4;
-}
-
-/**
- * @param flatbuffers.Builder builder
- * @param number books_read
- * @returns flatbuffers.Offset
- */
-static createBookReader(builder:flatbuffers.Builder, books_read: number):flatbuffers.Offset {
- builder.prep(4, 4);
- builder.writeInt32(books_read);
- return builder.offset();
-};
-
-
-/**
- * @returns BookReaderT
- */
-unpack(): BookReaderT {
- return new BookReaderT(
- this.booksRead()
- );
-};
-
-/**
- * @param BookReaderT _o
- */
-unpackTo(_o: BookReaderT): void {
- _o.booksRead = this.booksRead();
-};
-}
-
-export class BookReaderT {
-/**
- * @constructor
- * @param number booksRead
- */
-constructor(
- public booksRead: number = 0
-){};
-
-/**
- * @param flatbuffers.Builder builder
- * @returns flatbuffers.Offset
- */
-pack(builder:flatbuffers.Builder): flatbuffers.Offset {
- return BookReader.createBookReader(builder,
- this.booksRead
- );
-};
-}
-/**
- * @constructor
- */
-export class Movie {
- bb: flatbuffers.ByteBuffer|null = null;
-
- bb_pos:number = 0;
-/**
- * @param number i
- * @param flatbuffers.ByteBuffer bb
- * @returns Movie
- */
-__init(i:number, bb:flatbuffers.ByteBuffer):Movie {
- this.bb_pos = i;
- this.bb = bb;
- return this;
-};
-
-/**
- * @param flatbuffers.ByteBuffer bb
- * @param Movie= obj
- * @returns Movie
- */
-static getRootAsMovie(bb:flatbuffers.ByteBuffer, obj?:Movie):Movie {
- return (obj || new Movie()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @param flatbuffers.ByteBuffer bb
- * @param Movie= obj
- * @returns Movie
- */
-static getSizePrefixedRootAsMovie(bb:flatbuffers.ByteBuffer, obj?:Movie):Movie {
- bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);
- return (obj || new Movie()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
-};
-
-/**
- * @param flatbuffers.ByteBuffer bb
- * @returns boolean
- */
-static bufferHasIdentifier(bb:flatbuffers.ByteBuffer):boolean {
- return bb.__has_identifier('MOVI');
-};
-
-/**
- * @returns Character
- */
-mainCharacterType():Character {
- var offset = this.bb!.__offset(this.bb_pos, 4);
- return offset ? /** */ (this.bb!.readUint8(this.bb_pos + offset)) : Character.NONE;
-};
-
-/**
- * @param flatbuffers.Table obj
- * @returns ?flatbuffers.Table
- */
-mainCharacter<T extends flatbuffers.Table>(obj:T|string):T|string|null {
- var offset = this.bb!.__offset(this.bb_pos, 6);
- return offset ? this.bb!.__union_with_string(obj, this.bb_pos + offset) : null;
-};
-
-/**
- * @param number index
- * @returns Character
- */
-charactersType(index: number):Character|null {
- var offset = this.bb!.__offset(this.bb_pos, 8);
- return offset ? /** */ (this.bb!.readUint8(this.bb!.__vector(this.bb_pos + offset) + index)) : /** */ (0);
-};
-
-/**
- * @returns number
- */
-charactersTypeLength():number {
- var offset = this.bb!.__offset(this.bb_pos, 8);
- return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;
-};
-
-/**
- * @returns Uint8Array
- */
-charactersTypeArray():Uint8Array|null {
- var offset = this.bb!.__offset(this.bb_pos, 8);
- 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 number index
- * @param flatbuffers.Table= obj
- * @returns ?flatbuffers.Table
- */
-characters<T extends flatbuffers.Table>(index: number, obj:T|string):T|string|null {
- var offset = this.bb!.__offset(this.bb_pos, 10);
- return offset ? this.bb!.__union_with_string(obj, this.bb!.__vector(this.bb_pos + offset) + index * 4) : null;
-};
-
-/**
- * @returns number
- */
-charactersLength():number {
- var offset = this.bb!.__offset(this.bb_pos, 10);
- return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;
-};
-
-/**
- * @returns string
- */
-static getFullyQualifiedName():string {
- return 'Movie';
-}
-
-/**
- * @param flatbuffers.Builder builder
- */
-static startMovie(builder:flatbuffers.Builder) {
- builder.startObject(4);
-};
-
-/**
- * @param flatbuffers.Builder builder
- * @param Character mainCharacterType
- */
-static addMainCharacterType(builder:flatbuffers.Builder, mainCharacterType:Character) {
- builder.addFieldInt8(0, mainCharacterType, Character.NONE);
-};
-
-/**
- * @param flatbuffers.Builder builder
- * @param flatbuffers.Offset mainCharacterOffset
- */
-static addMainCharacter(builder:flatbuffers.Builder, mainCharacterOffset:flatbuffers.Offset) {
- builder.addFieldOffset(1, mainCharacterOffset, 0);
-};
-
-/**
- * @param flatbuffers.Builder builder
- * @param flatbuffers.Offset charactersTypeOffset
- */
-static addCharactersType(builder:flatbuffers.Builder, charactersTypeOffset:flatbuffers.Offset) {
- builder.addFieldOffset(2, charactersTypeOffset, 0);
-};
-
-/**
- * @param flatbuffers.Builder builder
- * @param Array.<Character> data
- * @returns flatbuffers.Offset
- */
-static createCharactersTypeVector(builder:flatbuffers.Builder, data:Character[]):flatbuffers.Offset {
- 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 startCharactersTypeVector(builder:flatbuffers.Builder, numElems:number) {
- builder.startVector(1, numElems, 1);
-};
-
-/**
- * @param flatbuffers.Builder builder
- * @param flatbuffers.Offset charactersOffset
- */
-static addCharacters(builder:flatbuffers.Builder, charactersOffset:flatbuffers.Offset) {
- builder.addFieldOffset(3, charactersOffset, 0);
-};
-
-/**
- * @param flatbuffers.Builder builder
- * @param Array.<flatbuffers.Offset> data
- * @returns flatbuffers.Offset
- */
-static createCharactersVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {
- 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 startCharactersVector(builder:flatbuffers.Builder, numElems:number) {
- builder.startVector(4, numElems, 4);
-};
-
-/**
- * @param flatbuffers.Builder builder
- * @returns flatbuffers.Offset
- */
-static endMovie(builder:flatbuffers.Builder):flatbuffers.Offset {
- var offset = builder.endObject();
- return offset;
-};
-
-/**
- * @param flatbuffers.Builder builder
- * @param flatbuffers.Offset offset
- */
-static finishMovieBuffer(builder:flatbuffers.Builder, offset:flatbuffers.Offset) {
- builder.finish(offset, 'MOVI');
-};
-
-/**
- * @param flatbuffers.Builder builder
- * @param flatbuffers.Offset offset
- */
-static finishSizePrefixedMovieBuffer(builder:flatbuffers.Builder, offset:flatbuffers.Offset) {
- builder.finish(offset, 'MOVI', true);
-};
-
-static createMovie(builder:flatbuffers.Builder, mainCharacterType:Character, mainCharacterOffset:flatbuffers.Offset, charactersTypeOffset:flatbuffers.Offset, charactersOffset:flatbuffers.Offset):flatbuffers.Offset {
- Movie.startMovie(builder);
- Movie.addMainCharacterType(builder, mainCharacterType);
- Movie.addMainCharacter(builder, mainCharacterOffset);
- Movie.addCharactersType(builder, charactersTypeOffset);
- Movie.addCharacters(builder, charactersOffset);
- return Movie.endMovie(builder);
-}
-
-/**
- * @returns MovieT
- */
-unpack(): MovieT {
- return new MovieT(
- this.mainCharacterType(),
- (() => {
- let temp = unionToCharacter(this.mainCharacterType(), this.mainCharacter.bind(this));
- if(temp === null) { return null; }
- if(typeof temp === 'string') { return temp; }
- return temp.unpack()
- })(),
- this.bb!.createScalarList(this.charactersType.bind(this), this.charactersTypeLength()),
- (() => {
- let ret = [];
- for(let targetEnumIndex = 0; targetEnumIndex < this.charactersTypeLength(); ++targetEnumIndex) {
- let targetEnum = this.charactersType(targetEnumIndex);
- if(targetEnum === null || Character[targetEnum!] === 'NONE') { continue; }
-
- let temp = unionListToCharacter(targetEnum, this.characters.bind(this), targetEnumIndex);
- if(temp === null) { continue; }
- if(typeof temp === 'string') { ret.push(temp); continue; }
- ret.push(temp.unpack());
- }
- return ret;
- })()
- );
-};
-
-/**
- * @param MovieT _o
- */
-unpackTo(_o: MovieT): void {
- _o.mainCharacterType = this.mainCharacterType();
- _o.mainCharacter = (() => {
- let temp = unionToCharacter(this.mainCharacterType(), this.mainCharacter.bind(this));
- if(temp === null) { return null; }
- if(typeof temp === 'string') { return temp; }
- return temp.unpack()
- })();
- _o.charactersType = this.bb!.createScalarList(this.charactersType.bind(this), this.charactersTypeLength());
- _o.characters = (() => {
- let ret = [];
- for(let targetEnumIndex = 0; targetEnumIndex < this.charactersTypeLength(); ++targetEnumIndex) {
- let targetEnum = this.charactersType(targetEnumIndex);
- if(targetEnum === null || Character[targetEnum!] === 'NONE') { continue; }
-
- let temp = unionListToCharacter(targetEnum, this.characters.bind(this), targetEnumIndex);
- if(temp === null) { continue; }
- if(typeof temp === 'string') { ret.push(temp); continue; }
- ret.push(temp.unpack());
- }
- return ret;
- })();
-};
-}
-
-export class MovieT {
-/**
- * @constructor
- * @param Character mainCharacterType
- * @param AttackerT|BookReaderT|RapunzelT|string|null mainCharacter
- * @param (Character)[] charactersType
- * @param (AttackerT|BookReaderT|RapunzelT|string)[] characters
- */
-constructor(
- public mainCharacterType: Character = Character.NONE,
- public mainCharacter: AttackerT|BookReaderT|RapunzelT|string|null = null,
- public charactersType: (Character)[] = [],
- public characters: (AttackerT|BookReaderT|RapunzelT|string)[] = []
-){};
-
-/**
- * @param flatbuffers.Builder builder
- * @returns flatbuffers.Offset
- */
-pack(builder:flatbuffers.Builder): flatbuffers.Offset {
- const mainCharacter = builder.createObjectOffset(this.mainCharacter);
- const charactersType = Movie.createCharactersTypeVector(builder, this.charactersType);
- const characters = Movie.createCharactersVector(builder, builder.createObjectOffsetList(this.characters));
-
- return Movie.createMovie(builder,
- this.mainCharacterType,
- mainCharacter,
- charactersType,
- characters
- );
-};
-}