diff --git a/.github/labeler.yml b/.github/labeler.yml index dcab0447e8c..a3667ae56db 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -52,7 +52,6 @@ kotlin: lua: - '**/*.lua' - lua/**/* - - src/idl_gen_lua.cpp - src/bfbs_gen_lua.cpp lobster: diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cc2a614fbbd..dcbf6260b00 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -76,6 +76,28 @@ jobs: - name: build run: make -j + build-linux-out-of-source: + name: Build Linux with out-of-source build location + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: make build directory + run: mkdir build + - name: cmake + working-directory: build + run: > + CXX=clang++-12 cmake .. -G "Unix Makefiles" -DFLATBUFFERS_STRICT_MODE=ON + -DFLATBUFFERS_BUILD_CPP17=ON -DFLATBUFFERS_CPP_STD=17 + - name: build + working-directory: build + run: make -j + - name: test + working-directory: build + run: pwd && ./flattests + - name: test C++17 + working-directory: build + run: ./flattests_cpp17 + build-linux-cpp-std: name: Build Linux C++ runs-on: ubuntu-latest @@ -422,20 +444,32 @@ jobs: # gradlew run: gradle jvmMainClasses jvmTest jsTest jsBrowserTest - build-rust: - name: Build Rust + build-rust-linux: + name: Build Rust Linux runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: test working-directory: tests run: bash RustTest.sh + + build-rust-windows: + name: Build Rust Windows + runs-on: windows-2019 + steps: + - uses: actions/checkout@v3 + - name: test + working-directory: tests + run: ./RustTest.bat build-python: name: Build Python runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 + - name: flatc + # FIXME: make test script not rely on flatc + run: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_INSTALL=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF -DFLATBUFFERS_STRICT_MODE=ON . && make -j - name: test working-directory: tests run: bash PythonTest.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c627ed3657..145c62b1099 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ All major or breaking changes will be documented in this file, as well as any new features that should be highlighted. Minor fixes or improvements are not necessarily listed. +## [23.5.26 (May 26 2023)](https://github.com/google/flatbuffers/releases/tag/v23.5.26) + +* Mostly bug fixing for 64-bit support +* Adds support for specifying underling type of unions in C++ and TS/JS (#7954) + ## [23.5.9 (May 9 2023)](https://github.com/google/flatbuffers/releases/tag/v23.5.9) * 64-bit support for C++ (#7935) diff --git a/CMake/Version.cmake b/CMake/Version.cmake index 737d74a8337..f50e31a6119 100644 --- a/CMake/Version.cmake +++ b/CMake/Version.cmake @@ -1,6 +1,6 @@ set(VERSION_MAJOR 23) set(VERSION_MINOR 5) -set(VERSION_PATCH 9) +set(VERSION_PATCH 26) set(VERSION_COMMIT 0) if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git") diff --git a/CMakeLists.txt b/CMakeLists.txt index d3115d8821e..a895a340e33 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -166,7 +166,6 @@ set(FlatBuffers_Compiler_SRCS src/idl_gen_php.cpp src/idl_gen_python.cpp src/idl_gen_lobster.cpp - src/idl_gen_lua.cpp src/idl_gen_rust.cpp src/idl_gen_fbs.cpp src/idl_gen_grpc.cpp @@ -248,7 +247,6 @@ set(FlatBuffers_Tests_CPP17_SRCS ) set(FlatBuffers_Sample_Binary_SRCS - include/flatbuffers/flatbuffers.h samples/sample_binary.cpp ) @@ -492,12 +490,13 @@ endif() function(compile_schema SRC_FBS OPT OUT_GEN_FILE) get_filename_component(SRC_FBS_DIR ${SRC_FBS} PATH) string(REGEX REPLACE "\\.fbs$" "_generated.h" GEN_HEADER ${SRC_FBS}) - add_custom_command(TARGET flatc POST_BUILD - COMMAND "${FLATBUFFERS_FLATC_EXECUTABLE}" + add_custom_command( + OUTPUT ${GEN_HEADER} + COMMAND "${FLATBUFFERS_FLATC_EXECUTABLE}" ${OPT} -o "${SRC_FBS_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/${SRC_FBS}" - BYPRODUCTS ${GEN_HEADER} + DEPENDS flatc COMMENT "flatc generation: `${SRC_FBS}` -> `${GEN_HEADER}`" ) set(${OUT_GEN_FILE} ${GEN_HEADER} PARENT_SCOPE) @@ -510,28 +509,38 @@ endfunction() function(compile_schema_for_samples SRC_FBS OPT) compile_schema("${SRC_FBS}" "${OPT}" GEN_FILE) - target_sources(flatsamplebinary PRIVATE ${GEN_FILE}) - target_sources(flatsampletext PRIVATE ${GEN_FILE}) - target_sources(flatsamplebfbs PRIVATE ${GEN_FILE}) + target_sources(flatsample PRIVATE ${GEN_FILE}) endfunction() if(FLATBUFFERS_BUILD_TESTS) - include_directories(${CMAKE_CURRENT_BINARY_DIR}/tests) add_executable(flattests ${FlatBuffers_Tests_SRCS}) target_link_libraries(flattests PRIVATE $) - target_include_directories(flattests PUBLIC src) + target_include_directories(flattests PUBLIC + # Ideally everything is fully qualified from the root directories + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_BINARY_DIR} + # TODO(derekbailey): update includes to fully qualify src/ and tests/ + src + tests + ${CMAKE_CURRENT_BINARY_DIR}/tests + ) + + # Have tests load data from the source directory, not the build directory. + add_definitions(-DFLATBUFFERS_TEST_PATH_PREFIX=${CMAKE_CURRENT_SOURCE_DIR}/) # The flattest target needs some generated files SET(FLATC_OPT --cpp --gen-mutable --gen-object-api --reflect-names) SET(FLATC_OPT_COMP ${FLATC_OPT};--gen-compare) compile_schema_for_test(tests/alignment_test.fbs "${FLATC_OPT_COMP}") + compile_schema_for_test(tests/arrays_test.fbs "${FLATC_OPT_COMP};--scoped-enums") compile_schema_for_test(tests/native_inline_table_test.fbs "${FLATC_OPT_COMP}") compile_schema_for_test(tests/native_type_test.fbs "${FLATC_OPT}") compile_schema_for_test(tests/key_field/key_field_sample.fbs "${FLATC_OPT_COMP}") compile_schema_for_test(tests/64bit/test_64bit.fbs "${FLATC_OPT_COMP};--bfbs-gen-embed") compile_schema_for_test(tests/64bit/evolution/v1.fbs "${FLATC_OPT_COMP}") compile_schema_for_test(tests/64bit/evolution/v2.fbs "${FLATC_OPT_COMP}") + compile_schema_for_test(tests/union_underlying_type_test.fbs "${FLATC_OPT_COMP}") if(FLATBUFFERS_CODE_SANITIZE) add_fsanitize_to_target(flattests ${FLATBUFFERS_CODE_SANITIZE}) @@ -542,16 +551,24 @@ if(FLATBUFFERS_BUILD_TESTS) add_executable(flatsamplebinary ${FlatBuffers_Sample_Binary_SRCS}) add_executable(flatsampletext ${FlatBuffers_Sample_Text_SRCS}) add_executable(flatsamplebfbs ${FlatBuffers_Sample_BFBS_SRCS}) - - target_link_libraries(flatsamplebinary PRIVATE $) - target_link_libraries(flatsampletext PRIVATE $) - target_link_libraries(flatsamplebfbs PRIVATE $) + # Add a library so there is a single target that the generated samples can + # link too. + add_library(flatsample INTERFACE) + + # Since flatsample has no sources, we have to explicitly set the linker lang. + set_target_properties(flatsample PROPERTIES LINKER_LANGUAGE CXX) + compile_schema_for_samples(samples/monster.fbs "${FLATC_OPT_COMP}") + target_link_libraries(flatsamplebinary PRIVATE $ flatsample) + target_link_libraries(flatsampletext PRIVATE $ flatsample) + target_link_libraries(flatsamplebfbs PRIVATE $ flatsample) + if(FLATBUFFERS_BUILD_CPP17) add_executable(flattests_cpp17 ${FlatBuffers_Tests_CPP17_SRCS}) target_link_libraries(flattests_cpp17 PRIVATE $) + target_include_directories(flattests_cpp17 PUBLIC src tests) target_compile_features(flattests_cpp17 PRIVATE cxx_std_17) # requires cmake 3.8 if(FLATBUFFERS_CODE_SANITIZE) diff --git a/FlatBuffers.podspec b/FlatBuffers.podspec index 181905d2e52..cecb1137e34 100644 --- a/FlatBuffers.podspec +++ b/FlatBuffers.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'FlatBuffers' - s.version = '23.5.9' + s.version = '23.5.26' s.summary = 'FlatBuffers: Memory Efficient Serialization Library' s.description = "FlatBuffers is a cross platform serialization library architected for diff --git a/README.md b/README.md index 1fb2fe0c669..875c73bb9c2 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,47 @@ **FlatBuffers** is a cross platform serialization library architected for maximum memory efficiency. It allows you to directly access serialized data without parsing/unpacking it first, while still having great forwards/backwards compatibility. +## Quick Start + +1. Build the compiler for flatbuffers (`flatc`) + + Use `cmake` to create the build files for your platform and then perform the compliation (Linux example). + + ``` + cmake -G "Unix Makefiles" + make -j + ``` + +2. Define your flatbuffer schema (`.fbs`) + + Write the [schema](https://flatbuffers.dev/flatbuffers_guide_writing_schema.html) to define the data you want to serialize. See [monster.fbs](https://github.com/google/flatbuffers/blob/master/samples/monster.fbs) for an example. + +3. Generate code for your language(s) + + Use the `flatc` compiler to take your schema and generate language-specific code: + + ``` + ./flatc --cpp --rust monster.fbs + ``` + + Which generates `monster_generated.h` and `monster_generated.rs` files. + +4. Serialize data + + Use the generated code, as well as the `FlatBufferBuilder` to construct your serialized buffer. ([`C++` example](https://github.com/google/flatbuffers/blob/master/samples/sample_binary.cpp#L24-L56)) + +5. Transmit/store/save Buffer + + Use your serialized buffer however you want. Send it to someone, save it for later, etc... + +6. Read the data + + Use the generated accessors to read the data from the serialized buffer. + + It doesn't need to be the same language/schema version, FlatBuffers ensures the data is readable across languages and schema versions. See the [`Rust` example](https://github.com/google/flatbuffers/blob/master/samples/sample_binary.rs#L92-L106) reading the data written by `C++`. + +## Documentation + **Go to our [landing page][] to browse our documentation.** ## Supported operating systems @@ -46,7 +87,7 @@ Code generation and runtime libraries for many popular languages. ## Versioning -FlatBuffers does not follow traditional Semver versioning (see [rationale](https://github.com/google/flatbuffers/wiki/Versioning)) but rather uses a format of the date of the release. +FlatBuffers does not follow traditional SemVer versioning (see [rationale](https://github.com/google/flatbuffers/wiki/Versioning)) but rather uses a format of the date of the release. ## Contribution diff --git a/WORKSPACE b/WORKSPACE index 9f70edd44cb..d7a8b2ca75f 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -148,6 +148,7 @@ esbuild_register_toolchains( http_file( name = "bazel_linux_x86_64", downloaded_file_path = "bazel", + executable = True, sha256 = "e89747d63443e225b140d7d37ded952dacea73aaed896bca01ccd745827c6289", urls = [ "https://github.com/bazelbuild/bazel/releases/download/6.1.2/bazel-6.1.2-linux-x86_64", diff --git a/android/app/src/main/cpp/CMakeLists.txt b/android/app/src/main/cpp/CMakeLists.txt index f30dd4a0af6..abb8250bda0 100644 --- a/android/app/src/main/cpp/CMakeLists.txt +++ b/android/app/src/main/cpp/CMakeLists.txt @@ -48,7 +48,6 @@ find_library( # Sets the name of the path variable. target_link_libraries( # Specifies the target library. native-lib flatbuffers - flatbuffers_tests # Links the target library to the log library # included in the NDK. ${log-lib} ) diff --git a/android/app/src/main/cpp/flatbuffers/CMakeLists.txt b/android/app/src/main/cpp/flatbuffers/CMakeLists.txt index ee927153257..144523ee85a 100644 --- a/android/app/src/main/cpp/flatbuffers/CMakeLists.txt +++ b/android/app/src/main/cpp/flatbuffers/CMakeLists.txt @@ -48,26 +48,9 @@ set(FlatBuffers_Library_SRCS ${FLATBUFFERS_SRC}/src/code_generators.cpp ) -set(FlatBuffers_Test_SRCS - ${FLATBUFFERS_SRC}/tests/test.cpp - ${FLATBUFFERS_SRC}/tests/test_assert.h - ${FLATBUFFERS_SRC}/tests/test_builder.h - ${FLATBUFFERS_SRC}/tests/test_assert.cpp - ${FLATBUFFERS_SRC}/tests/test_builder.cpp - ${FLATBUFFERS_SRC}/tests/native_type_test_impl.h - ${FLATBUFFERS_SRC}/tests/native_type_test_impl.cpp -) - add_library( # Sets the name of the library. flatbuffers ${FlatBuffers_Library_SRCS} - ${FlatBuffers_Test_SRCS} ${Generated_SRCS} ) - -add_library( # Sets the name of the library. - flatbuffers_tests - - ${FlatBuffers_Test_SRCS} -) diff --git a/android/app/src/main/java/generated/com/fbs/app/Animal.kt b/android/app/src/main/java/generated/com/fbs/app/Animal.kt index be5a6f0c082..5564e03961e 100644 --- a/android/app/src/main/java/generated/com/fbs/app/Animal.kt +++ b/android/app/src/main/java/generated/com/fbs/app/Animal.kt @@ -57,7 +57,7 @@ class Animal : Table() { return if(o != 0) bb.getShort(o + bb_pos).toUShort() else 0u } companion object { - fun validateVersion() = Constants.FLATBUFFERS_23_5_9() + fun validateVersion() = Constants.FLATBUFFERS_23_5_26() fun getRootAsAnimal(_bb: ByteBuffer): Animal = getRootAsAnimal(_bb, Animal()) fun getRootAsAnimal(_bb: ByteBuffer, obj: Animal): Animal { _bb.order(ByteOrder.LITTLE_ENDIAN) diff --git a/dart/lib/flat_buffers.dart b/dart/lib/flat_buffers.dart index 071f3cc92f8..6f307872e10 100644 --- a/dart/lib/flat_buffers.dart +++ b/dart/lib/flat_buffers.dart @@ -654,7 +654,7 @@ class Builder { var tail = _tail; _setUint32AtTail(tail, values.length); tail -= _sizeofUint32; - for (var value in values) { + for (final value in values) { _setInt8AtTail(tail, value); tail -= _sizeofUint8; } diff --git a/dart/pubspec.yaml b/dart/pubspec.yaml index 08e41059ac8..347712caa42 100644 --- a/dart/pubspec.yaml +++ b/dart/pubspec.yaml @@ -1,5 +1,5 @@ name: flat_buffers -version: 23.5.9 +version: 23.5.26 description: FlatBuffers reading and writing library for Dart. Based on original work by Konstantin Scheglov and Paul Berry of the Dart SDK team. homepage: https://github.com/google/flatbuffers documentation: https://google.github.io/flatbuffers/index.html diff --git a/goldens/csharp/Galaxy.cs b/goldens/csharp/Galaxy.cs index e2faf71467f..7925ce573fd 100644 --- a/goldens/csharp/Galaxy.cs +++ b/goldens/csharp/Galaxy.cs @@ -10,7 +10,7 @@ public struct Galaxy : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static Galaxy GetRootAsGalaxy(ByteBuffer _bb) { return GetRootAsGalaxy(_bb, new Galaxy()); } public static Galaxy GetRootAsGalaxy(ByteBuffer _bb, Galaxy obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p = new Table(_i, _bb); } diff --git a/goldens/csharp/Universe.cs b/goldens/csharp/Universe.cs index 5d8515f91e9..16b5b9c87cd 100644 --- a/goldens/csharp/Universe.cs +++ b/goldens/csharp/Universe.cs @@ -10,7 +10,7 @@ public struct Universe : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static Universe GetRootAsUniverse(ByteBuffer _bb) { return GetRootAsUniverse(_bb, new Universe()); } public static Universe GetRootAsUniverse(ByteBuffer _bb, Universe obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public static bool VerifyUniverse(ByteBuffer _bb) {Google.FlatBuffers.Verifier verifier = new Google.FlatBuffers.Verifier(_bb); return verifier.VerifyBuffer("", false, UniverseVerify.Verify); } diff --git a/goldens/generate_goldens.py b/goldens/generate_goldens.py index f04854aabaf..d521b812dc6 100755 --- a/goldens/generate_goldens.py +++ b/goldens/generate_goldens.py @@ -23,9 +23,8 @@ GenerateJava() GenerateKotlin() GenerateLobster() -# TODO these doesn't respect the output prefix, fix and reenable -# GenerateLua() -# GenerateNim() +GenerateLua() +GenerateNim() GeneratePhp() GeneratePython() GenerateRust() diff --git a/goldens/java/Galaxy.java b/goldens/java/Galaxy.java index 2893b4cd04b..bcf139f3daa 100644 --- a/goldens/java/Galaxy.java +++ b/goldens/java/Galaxy.java @@ -19,7 +19,7 @@ @SuppressWarnings("unused") public final class Galaxy extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static Galaxy getRootAsGalaxy(ByteBuffer _bb) { return getRootAsGalaxy(_bb, new Galaxy()); } public static Galaxy getRootAsGalaxy(ByteBuffer _bb, Galaxy 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); } diff --git a/goldens/java/Universe.java b/goldens/java/Universe.java index 03ebb32652e..400c91a694b 100644 --- a/goldens/java/Universe.java +++ b/goldens/java/Universe.java @@ -19,7 +19,7 @@ @SuppressWarnings("unused") public final class Universe extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static Universe getRootAsUniverse(ByteBuffer _bb) { return getRootAsUniverse(_bb, new Universe()); } public static Universe getRootAsUniverse(ByteBuffer _bb, Universe 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); } diff --git a/goldens/kotlin/Galaxy.kt b/goldens/kotlin/Galaxy.kt index d3e077fec4a..5f2228d8472 100644 --- a/goldens/kotlin/Galaxy.kt +++ b/goldens/kotlin/Galaxy.kt @@ -32,7 +32,7 @@ class Galaxy : Table() { return if(o != 0) bb.getLong(o + bb_pos) else 0L } companion object { - fun validateVersion() = Constants.FLATBUFFERS_23_5_9() + fun validateVersion() = Constants.FLATBUFFERS_23_5_26() fun getRootAsGalaxy(_bb: ByteBuffer): Galaxy = getRootAsGalaxy(_bb, Galaxy()) fun getRootAsGalaxy(_bb: ByteBuffer, obj: Galaxy): Galaxy { _bb.order(ByteOrder.LITTLE_ENDIAN) diff --git a/goldens/kotlin/Universe.kt b/goldens/kotlin/Universe.kt index 8ea42da8c8c..3438171795e 100644 --- a/goldens/kotlin/Universe.kt +++ b/goldens/kotlin/Universe.kt @@ -45,7 +45,7 @@ class Universe : Table() { val o = __offset(6); return if (o != 0) __vector_len(o) else 0 } companion object { - fun validateVersion() = Constants.FLATBUFFERS_23_5_9() + fun validateVersion() = Constants.FLATBUFFERS_23_5_26() fun getRootAsUniverse(_bb: ByteBuffer): Universe = getRootAsUniverse(_bb, Universe()) fun getRootAsUniverse(_bb: ByteBuffer, obj: Universe): Universe { _bb.order(ByteOrder.LITTLE_ENDIAN) diff --git a/goldens/lua/Galaxy.lua b/goldens/lua/Galaxy.lua new file mode 100644 index 00000000000..071a1c80a1e --- /dev/null +++ b/goldens/lua/Galaxy.lua @@ -0,0 +1,48 @@ +--[[ Galaxy + + Automatically generated by the FlatBuffers compiler, do not modify. + Or modify. I'm a message, not a cop. + + flatc version: 23.5.9 + + Declared by : //basic.fbs + Rooting type : Universe (//basic.fbs) + +--]] + +local flatbuffers = require('flatbuffers') + +local Galaxy = {} +local mt = {} + +function Galaxy.New() + local o = {} + setmetatable(o, {__index = mt}) + return o +end + +function mt:Init(buf, pos) + self.view = flatbuffers.view.New(buf, pos) +end + +function mt:NumStars() + local o = self.view:Offset(4) + if o ~= 0 then + return self.view:Get(flatbuffers.N.Int64, self.view.pos + o) + end + return 0 +end + +function Galaxy.Start(builder) + builder:StartObject(1) +end + +function Galaxy.AddNumStars(builder, numStars) + builder:PrependInt64Slot(0, numStars, 0) +end + +function Galaxy.End(builder) + return builder:EndObject() +end + +return Galaxy \ No newline at end of file diff --git a/goldens/lua/Universe.lua b/goldens/lua/Universe.lua new file mode 100644 index 00000000000..d7ef085ebcb --- /dev/null +++ b/goldens/lua/Universe.lua @@ -0,0 +1,88 @@ +--[[ Universe + + Automatically generated by the FlatBuffers compiler, do not modify. + Or modify. I'm a message, not a cop. + + flatc version: 23.5.9 + + Declared by : //basic.fbs + Rooting type : Universe (//basic.fbs) + +--]] + +local __Galaxy = require('Galaxy') +local flatbuffers = require('flatbuffers') + +local Universe = {} +local mt = {} + +function Universe.New() + local o = {} + setmetatable(o, {__index = mt}) + return o +end + +function Universe.GetRootAsUniverse(buf, offset) + if type(buf) == "string" then + buf = flatbuffers.binaryArray.New(buf) + end + + local n = flatbuffers.N.UOffsetT:Unpack(buf, offset) + local o = Universe.New() + o:Init(buf, n + offset) + return o +end + +function mt:Init(buf, pos) + self.view = flatbuffers.view.New(buf, pos) +end + +function mt:Age() + local o = self.view:Offset(4) + if o ~= 0 then + return self.view:Get(flatbuffers.N.Float64, self.view.pos + o) + end + return 0.0 +end + +function mt:Galaxies(j) + local o = self.view:Offset(6) + if o ~= 0 then + local x = self.view:Vector(o) + x = x + ((j-1) * 4) + x = self.view:Indirect(x) + local obj = __Galaxy.New() + obj:Init(self.view.bytes, x) + return obj + end +end + +function mt:GalaxiesLength() + local o = self.view:Offset(6) + if o ~= 0 then + return self.view:VectorLen(o) + end + return 0 +end + +function Universe.Start(builder) + builder:StartObject(2) +end + +function Universe.AddAge(builder, age) + builder:PrependFloat64Slot(0, age, 0.0) +end + +function Universe.AddGalaxies(builder, galaxies) + builder:PrependUOffsetTRelativeSlot(1, galaxies, 0) +end + +function Universe.StartGalaxiesVector(builder, numElems) + return builder:StartVector(4, numElems, 4) +end + +function Universe.End(builder) + return builder:EndObject() +end + +return Universe \ No newline at end of file diff --git a/goldens/nim/Galaxy.nim b/goldens/nim/Galaxy.nim new file mode 100644 index 00000000000..7728c3677ae --- /dev/null +++ b/goldens/nim/Galaxy.nim @@ -0,0 +1,26 @@ +#[ Galaxy + Automatically generated by the FlatBuffers compiler, do not modify. + Or modify. I'm a message, not a cop. + + flatc version: 23.5.9 + + Declared by : //basic.fbs + Rooting type : Universe (//basic.fbs) +]# + +import flatbuffers + +type Galaxy* = object of FlatObj +func numStars*(self: Galaxy): int64 = + let o = self.tab.Offset(4) + if o != 0: + return Get[int64](self.tab, self.tab.Pos + o) + return 0 +func `numStars=`*(self: var Galaxy, n: int64): bool = + return self.tab.MutateSlot(4, n) +proc GalaxyStart*(builder: var Builder) = + builder.StartObject(1) +proc GalaxyAddnumStars*(builder: var Builder, numStars: int64) = + builder.PrependSlot(0, numStars, default(int64)) +proc GalaxyEnd*(builder: var Builder): uoffset = + return builder.EndObject() diff --git a/goldens/nim/Universe.nim b/goldens/nim/Universe.nim new file mode 100644 index 00000000000..3a4e43d2b07 --- /dev/null +++ b/goldens/nim/Universe.nim @@ -0,0 +1,46 @@ +#[ Universe + Automatically generated by the FlatBuffers compiler, do not modify. + Or modify. I'm a message, not a cop. + + flatc version: 23.5.9 + + Declared by : //basic.fbs + Rooting type : Universe (//basic.fbs) +]# + +import Galaxy as Galaxy +import flatbuffers +import std/options + +type Universe* = object of FlatObj +func age*(self: Universe): float64 = + let o = self.tab.Offset(4) + if o != 0: + return Get[float64](self.tab, self.tab.Pos + o) + return 0.0 +func `age=`*(self: var Universe, n: float64): bool = + return self.tab.MutateSlot(4, n) +func galaxiesLength*(self: Universe): int = + let o = self.tab.Offset(6) + if o != 0: + return self.tab.VectorLen(o) +func galaxies*(self: Universe, j: int): Galaxy.Galaxy = + let o = self.tab.Offset(6) + if o != 0: + var x = self.tab.Vector(o) + x += j.uoffset * 4.uoffset + return Galaxy.Galaxy(tab: Vtable(Bytes: self.tab.Bytes, Pos: x)) +func galaxies*(self: Universe): seq[Galaxy.Galaxy] = + let len = self.galaxiesLength + for i in countup(0, len - 1): + result.add(self.galaxies(i)) +proc UniverseStart*(builder: var Builder) = + builder.StartObject(2) +proc UniverseAddage*(builder: var Builder, age: float64) = + builder.PrependSlot(0, age, default(float64)) +proc UniverseAddgalaxies*(builder: var Builder, galaxies: uoffset) = + builder.PrependSlot(1, galaxies, default(uoffset)) +proc UniverseStartgalaxiesVector*(builder: var Builder, numElems: uoffset) = + builder.StartVector(4, numElems, 4) +proc UniverseEnd*(builder: var Builder): uoffset = + return builder.EndObject() diff --git a/goldens/swift/basic_generated.swift b/goldens/swift/basic_generated.swift index 4175dcbdf20..7ea2d68b680 100644 --- a/goldens/swift/basic_generated.swift +++ b/goldens/swift/basic_generated.swift @@ -6,7 +6,7 @@ import FlatBuffers public struct Galaxy: FlatBufferObject, Verifiable { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table @@ -41,7 +41,7 @@ public struct Galaxy: FlatBufferObject, Verifiable { public struct Universe: FlatBufferObject, Verifiable { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table diff --git a/grpc/examples/python/greeter/models/HelloReply.py b/grpc/examples/python/greeter/models/HelloReply.py index bf182fc8518..b1adc8c31a2 100644 --- a/grpc/examples/python/greeter/models/HelloReply.py +++ b/grpc/examples/python/greeter/models/HelloReply.py @@ -40,7 +40,7 @@ def Start(builder): def HelloReplyAddMessage(builder, message): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(message), 0) -def AddMessage(builder: flatbuffers.Builder, message: int): +def AddMessage(builder, message): HelloReplyAddMessage(builder, message) def HelloReplyEnd(builder): diff --git a/grpc/examples/python/greeter/models/HelloRequest.py b/grpc/examples/python/greeter/models/HelloRequest.py index 9df6b22c9b4..db217dd2191 100644 --- a/grpc/examples/python/greeter/models/HelloRequest.py +++ b/grpc/examples/python/greeter/models/HelloRequest.py @@ -40,7 +40,7 @@ def Start(builder): def HelloRequestAddName(builder, name): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) -def AddName(builder: flatbuffers.Builder, name: int): +def AddName(builder, name): HelloRequestAddName(builder, name) def HelloRequestEnd(builder): diff --git a/grpc/examples/swift/Greeter/Sources/Model/greeter_generated.swift b/grpc/examples/swift/Greeter/Sources/Model/greeter_generated.swift index 7c68871123d..26d4c65bbcf 100644 --- a/grpc/examples/swift/Greeter/Sources/Model/greeter_generated.swift +++ b/grpc/examples/swift/Greeter/Sources/Model/greeter_generated.swift @@ -6,7 +6,7 @@ import FlatBuffers public struct models_HelloReply: FlatBufferObject, Verifiable { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table @@ -53,7 +53,7 @@ extension models_HelloReply: Encodable { public struct models_HelloRequest: FlatBufferObject, Verifiable { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table diff --git a/include/flatbuffers/base.h b/include/flatbuffers/base.h index ac8db356a49..5c4cae791cf 100644 --- a/include/flatbuffers/base.h +++ b/include/flatbuffers/base.h @@ -141,7 +141,7 @@ #define FLATBUFFERS_VERSION_MAJOR 23 #define FLATBUFFERS_VERSION_MINOR 5 -#define FLATBUFFERS_VERSION_REVISION 9 +#define FLATBUFFERS_VERSION_REVISION 26 #define FLATBUFFERS_STRING_EXPAND(X) #X #define FLATBUFFERS_STRING(X) FLATBUFFERS_STRING_EXPAND(X) namespace flatbuffers { @@ -279,14 +279,14 @@ namespace flatbuffers { #endif // !FLATBUFFERS_LOCALE_INDEPENDENT // Suppress Undefined Behavior Sanitizer (recoverable only). Usage: -// - __suppress_ubsan__("undefined") -// - __suppress_ubsan__("signed-integer-overflow") +// - FLATBUFFERS_SUPPRESS_UBSAN("undefined") +// - FLATBUFFERS_SUPPRESS_UBSAN("signed-integer-overflow") #if defined(__clang__) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >=7)) - #define __suppress_ubsan__(type) __attribute__((no_sanitize(type))) + #define FLATBUFFERS_SUPPRESS_UBSAN(type) __attribute__((no_sanitize(type))) #elif defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 409) - #define __suppress_ubsan__(type) __attribute__((no_sanitize_undefined)) + #define FLATBUFFERS_SUPPRESS_UBSAN(type) __attribute__((no_sanitize_undefined)) #else - #define __suppress_ubsan__(type) + #define FLATBUFFERS_SUPPRESS_UBSAN(type) #endif // This is constexpr function used for checking compile-time constants. @@ -422,7 +422,7 @@ template T EndianScalar(T t) { template // UBSAN: C++ aliasing type rules, see std::bit_cast<> for details. -__suppress_ubsan__("alignment") +FLATBUFFERS_SUPPRESS_UBSAN("alignment") T ReadScalar(const void *p) { return EndianScalar(*reinterpret_cast(p)); } @@ -436,13 +436,13 @@ T ReadScalar(const void *p) { template // UBSAN: C++ aliasing type rules, see std::bit_cast<> for details. -__suppress_ubsan__("alignment") +FLATBUFFERS_SUPPRESS_UBSAN("alignment") void WriteScalar(void *p, T t) { *reinterpret_cast(p) = EndianScalar(t); } template struct Offset; -template __suppress_ubsan__("alignment") void WriteScalar(void *p, Offset t) { +template FLATBUFFERS_SUPPRESS_UBSAN("alignment") void WriteScalar(void *p, Offset t) { *reinterpret_cast(p) = EndianScalar(t.o); } @@ -453,7 +453,7 @@ template __suppress_ubsan__("alignment") void WriteScalar(void *p, O // Computes how many bytes you'd have to pad to be able to write an // "scalar_size" scalar if the buffer had grown to "buf_size" (downwards in // memory). -__suppress_ubsan__("unsigned-integer-overflow") +FLATBUFFERS_SUPPRESS_UBSAN("unsigned-integer-overflow") inline size_t PaddingBytes(size_t buf_size, size_t scalar_size) { return ((~buf_size) + 1) & (scalar_size - 1); } diff --git a/include/flatbuffers/code_generator.h b/include/flatbuffers/code_generator.h index a88b789cb3e..2971e556eec 100644 --- a/include/flatbuffers/code_generator.h +++ b/include/flatbuffers/code_generator.h @@ -23,6 +23,10 @@ namespace flatbuffers { +struct CodeGenOptions { + std::string output_path; +}; + // A code generator interface for producing converting flatbuffer schema into // code. class CodeGenerator { @@ -44,9 +48,20 @@ class CodeGenerator { virtual Status GenerateCode(const Parser &parser, const std::string &path, const std::string &filename) = 0; + // Generate code from the provided `parser` and place it in the output. + virtual Status GenerateCodeString(const Parser &parser, + const std::string &filename, + std::string &output) { + (void)parser; + (void)filename; + (void)output; + return Status::NOT_IMPLEMENTED; + } + // Generate code from the provided `buffer` of given `length`. The buffer is a // serialized reflection.fbs. - virtual Status GenerateCode(const uint8_t *buffer, int64_t length) = 0; + virtual Status GenerateCode(const uint8_t *buffer, int64_t length, + const CodeGenOptions &options) = 0; virtual Status GenerateMakeRule(const Parser &parser, const std::string &path, const std::string &filename, diff --git a/include/flatbuffers/code_generators.h b/include/flatbuffers/code_generators.h index 727552118f5..fc030d43943 100644 --- a/include/flatbuffers/code_generators.h +++ b/include/flatbuffers/code_generators.h @@ -229,6 +229,10 @@ class TypedFloatConstantGenerator : public FloatConstantGenerator { const std::string neg_inf_number_; }; +std::string JavaCSharpMakeRule(const bool java, const Parser &parser, + const std::string &path, + const std::string &file_name); + } // namespace flatbuffers #endif // FLATBUFFERS_CODE_GENERATORS_H_ diff --git a/include/flatbuffers/flatbuffer_builder.h b/include/flatbuffers/flatbuffer_builder.h index ed932cd9cc5..0a38b4ac311 100644 --- a/include/flatbuffers/flatbuffer_builder.h +++ b/include/flatbuffers/flatbuffer_builder.h @@ -722,9 +722,8 @@ template class FlatBufferBuilderImpl { /// @param[in] len The number of elements to serialize. /// @return Returns a typed `TOffset` into the serialized data indicating /// where the vector is stored. - template class OffsetT = Offset, - template class VectorT = Vector, - int &...ExplicitArgumentBarrier, typename T> + template class OffsetT = Offset, + template class VectorT = Vector> OffsetT> CreateVector(const T *v, size_t len) { // The type of the length field in the vector. typedef typename VectorT::size_type LenT; @@ -793,7 +792,7 @@ template class FlatBufferBuilderImpl { template class VectorT = Vector64, int &...ExplicitArgumentBarrier, typename T> Offset64> CreateVector64(const std::vector &v) { - return CreateVector(data(v), v.size()); + return CreateVector(data(v), v.size()); } // vector may be implemented using a bit-set, so we can't access it as @@ -1302,11 +1301,6 @@ template class FlatBufferBuilderImpl { // This will remain 0 if no 64-bit offset types are added to the buffer. size_t length_of_64_bit_region_; - // When true, 64-bit offsets can still be added to the builder. When false, - // only 32-bit offsets can be added, and attempts to add a 64-bit offset will - // raise an assertion. This is typically a compile-time error in ordering the - // serialization of 64-bit offset fields not at the tail of the buffer. - // Ensure objects are not nested. bool nested; @@ -1417,8 +1411,8 @@ template class FlatBufferBuilderImpl { // Hack to `FlatBufferBuilder` mean `FlatBufferBuilder` or // `FlatBufferBuilder<>`, where the template < > syntax is required. -typedef FlatBufferBuilderImpl FlatBufferBuilder; -typedef FlatBufferBuilderImpl FlatBufferBuilder64; +using FlatBufferBuilder = FlatBufferBuilderImpl; +using FlatBufferBuilder64 = FlatBufferBuilderImpl; // These are external due to GCC not allowing them in the class. // See: https://stackoverflow.com/q/8061456/868247 diff --git a/include/flatbuffers/flatbuffers.h b/include/flatbuffers/flatbuffers.h index 53e48d59045..bc828a31304 100644 --- a/include/flatbuffers/flatbuffers.h +++ b/include/flatbuffers/flatbuffers.h @@ -81,6 +81,17 @@ inline SizeT GetPrefixedSize(const uint8_t *buf) { return ReadScalar(buf); } +// Gets the total length of the buffer given a sized prefixed FlatBuffer. +// +// This includes the size of the prefix as well as the buffer: +// +// [size prefix][flatbuffer] +// |---------length--------| +template +inline SizeT GetSizePrefixedBufferLength(const uint8_t *const buf) { + return ReadScalar(buf) + sizeof(SizeT); +} + // Base class for native objects (FlatBuffer data de-serialized into native // C++ data structures). // Contains no functionality, purely documentative. diff --git a/include/flatbuffers/grpc.h b/include/flatbuffers/grpc.h index 5d15bc51c0b..7472c31d4a9 100644 --- a/include/flatbuffers/grpc.h +++ b/include/flatbuffers/grpc.h @@ -20,7 +20,6 @@ // Helper functionality to glue FlatBuffers and GRPC. #include "flatbuffers/flatbuffers.h" -#include "grpc/byte_buffer_reader.h" #include "grpcpp/support/byte_buffer.h" #include "grpcpp/support/slice.h" diff --git a/include/flatbuffers/idl.h b/include/flatbuffers/idl.h index 76a6755cc95..ad45d3115dc 100644 --- a/include/flatbuffers/idl.h +++ b/include/flatbuffers/idl.h @@ -1151,6 +1151,7 @@ class Parser : public ParserState { bool SupportsOptionalScalars() const; bool SupportsDefaultVectorsAndStrings() const; bool Supports64BitOffsets() const; + bool SupportsUnionUnderlyingType() const; Namespace *UniqueNamespace(Namespace *ns); FLATBUFFERS_CHECKED_ERROR RecurseError(); @@ -1210,137 +1211,17 @@ class Parser : public ParserState { // if it is less than 0, no linefeeds will be generated either. // See idl_gen_text.cpp. // strict_json adds "quotes" around field names if true. -// If the flatbuffer cannot be encoded in JSON (e.g., it contains non-UTF-8 -// byte arrays in String values), returns false. -extern const char *GenerateTextFromTable(const Parser &parser, const void *table, - const std::string &tablename, - std::string *text); -extern const char *GenerateText(const Parser &parser, const void *flatbuffer, - std::string *text); -extern const char *GenerateTextFile(const Parser &parser, - const std::string &path, - const std::string &file_name); - -// Generate Json schema to string -// See idl_gen_json_schema.cpp. -extern bool GenerateJsonSchema(const Parser &parser, std::string *json); - -// Generate binary files from a given FlatBuffer, and a given Parser -// object that has been populated with the corresponding schema. -// See code_generators.cpp. -extern bool GenerateBinary(const Parser &parser, const std::string &path, - const std::string &file_name); - -// Generate a C++ header from the definitions in the Parser object. -// See idl_gen_cpp. -extern bool GenerateCPP(const Parser &parser, const std::string &path, - const std::string &file_name); - -// Generate C# files from the definitions in the Parser object. -// See idl_gen_csharp.cpp. -extern bool GenerateCSharp(const Parser &parser, const std::string &path, - const std::string &file_name); - -extern bool GenerateDart(const Parser &parser, const std::string &path, - const std::string &file_name); - -// Generate Java files from the definitions in the Parser object. -// See idl_gen_java.cpp. -extern bool GenerateJava(const Parser &parser, const std::string &path, - const std::string &file_name); - -// Generate JavaScript or TypeScript code from the definitions in the Parser -// object. See idl_gen_js. -extern bool GenerateTS(const Parser &parser, const std::string &path, - const std::string &file_name); - -// Generate Go files from the definitions in the Parser object. -// See idl_gen_go.cpp. -extern bool GenerateGo(const Parser &parser, const std::string &path, - const std::string &file_name); - -// Generate Php code from the definitions in the Parser object. -// See idl_gen_php. -extern bool GeneratePhp(const Parser &parser, const std::string &path, - const std::string &file_name); - -// Generate Python files from the definitions in the Parser object. -// See idl_gen_python.cpp. -extern bool GeneratePython(const Parser &parser, const std::string &path, - const std::string &file_name); - -// Generate Lobster files from the definitions in the Parser object. -// See idl_gen_lobster.cpp. -extern bool GenerateLobster(const Parser &parser, const std::string &path, - const std::string &file_name); - -// Generate Lua files from the definitions in the Parser object. -// See idl_gen_lua.cpp. -extern bool GenerateLua(const Parser &parser, const std::string &path, - const std::string &file_name); - -// Generate Rust files from the definitions in the Parser object. -// See idl_gen_rust.cpp. -extern bool GenerateRust(const Parser &parser, const std::string &path, - const std::string &file_name); - -// Generate Json schema file -// See idl_gen_json_schema.cpp. -extern bool GenerateJsonSchema(const Parser &parser, const std::string &path, - const std::string &file_name); - -extern bool GenerateKotlin(const Parser &parser, const std::string &path, - const std::string &file_name); - -// Generate Swift classes. -// See idl_gen_swift.cpp -extern bool GenerateSwift(const Parser &parser, const std::string &path, - const std::string &file_name); - -// Generate a schema file from the internal representation, useful after -// parsing a .proto schema. -extern std::string GenerateFBS(const Parser &parser, - const std::string &file_name, bool no_log); -extern bool GenerateFBS(const Parser &parser, const std::string &path, - const std::string &file_name, bool no_log); - -// Generate a make rule for the generated TypeScript code. -// See idl_gen_ts.cpp. -extern std::string TSMakeRule(const Parser &parser, const std::string &path, - const std::string &file_name); - -// Generate a make rule for the generated C++ header. -// See idl_gen_cpp.cpp. -extern std::string CPPMakeRule(const Parser &parser, const std::string &path, +// These functions return nullptr on success, or an error string, +// which may happen if the flatbuffer cannot be encoded in JSON (e.g., +// it contains non-UTF-8 byte arrays in String values). +extern const char *GenTextFromTable(const Parser &parser, const void *table, + const std::string &tablename, + std::string *text); +extern const char *GenText(const Parser &parser, const void *flatbuffer, + std::string *text); +extern const char *GenTextFile(const Parser &parser, const std::string &path, const std::string &file_name); -// Generate a make rule for the generated Dart code -// see idl_gen_dart.cpp -extern std::string DartMakeRule(const Parser &parser, const std::string &path, - const std::string &file_name); - -// Generate a make rule for the generated Rust code. -// See idl_gen_rust.cpp. -extern std::string RustMakeRule(const Parser &parser, const std::string &path, - const std::string &file_name); - -// Generate a make rule for generated Java or C# files. -// See code_generators.cpp. -extern std::string CSharpMakeRule(const Parser &parser, const std::string &path, - const std::string &file_name); -extern std::string JavaMakeRule(const Parser &parser, const std::string &path, - const std::string &file_name); - -// Generate a make rule for the generated text (JSON) files. -// See idl_gen_text.cpp. -extern std::string TextMakeRule(const Parser &parser, const std::string &path, - const std::string &file_names); - -// Generate a make rule for the generated binary files. -// See code_generators.cpp. -extern std::string BinaryMakeRule(const Parser &parser, const std::string &path, - const std::string &file_name); - // Generate GRPC Cpp interfaces. // See idl_gen_grpc.cpp. bool GenerateCppGRPC(const Parser &parser, const std::string &path, @@ -1368,9 +1249,6 @@ extern bool GenerateSwiftGRPC(const Parser &parser, const std::string &path, extern bool GenerateTSGRPC(const Parser &parser, const std::string &path, const std::string &file_name); - -extern bool GenerateRustModuleRootFile(const Parser &parser, - const std::string &path); } // namespace flatbuffers #endif // FLATBUFFERS_IDL_H_ diff --git a/include/flatbuffers/reflection_generated.h b/include/flatbuffers/reflection_generated.h index 6dd697dfb20..96e9315acd6 100644 --- a/include/flatbuffers/reflection_generated.h +++ b/include/flatbuffers/reflection_generated.h @@ -10,7 +10,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); namespace reflection { diff --git a/include/flatbuffers/registry.h b/include/flatbuffers/registry.h index 80c385c36f5..f59aa647d28 100644 --- a/include/flatbuffers/registry.h +++ b/include/flatbuffers/registry.h @@ -52,10 +52,10 @@ class Registry { Parser parser; if (!LoadSchema(ident, &parser)) return false; // Now we're ready to generate text. - auto err = GenerateText(parser, flatbuf, dest); + auto err = GenText(parser, flatbuf, dest); if (err) { - lasterror_ = "unable to generate text for FlatBuffer binary: " + - std::string(err); + lasterror_ = + "unable to generate text for FlatBuffer binary: " + std::string(err); return false; } return true; diff --git a/include/flatbuffers/table.h b/include/flatbuffers/table.h index b370ccb35bb..e92d8ae8e65 100644 --- a/include/flatbuffers/table.h +++ b/include/flatbuffers/table.h @@ -153,7 +153,7 @@ class Table { return verifier.Check(field_offset != 0) && verifier.VerifyOffset(data_, field_offset); } - + bool VerifyOffset64(const Verifier &verifier, voffset_t field) const { return VerifyOffset(verifier, field); } diff --git a/include/flatbuffers/util.h b/include/flatbuffers/util.h index a6bcf34b68c..1ccf3517d30 100644 --- a/include/flatbuffers/util.h +++ b/include/flatbuffers/util.h @@ -257,7 +257,7 @@ inline void strtoval_impl(double *val, const char *str, char **endptr) { } // UBSAN: double to float is safe if numeric_limits::is_iec559 is true. -__suppress_ubsan__("float-cast-overflow") +FLATBUFFERS_SUPPRESS_UBSAN("float-cast-overflow") inline void strtoval_impl(float *val, const char *str, char **endptr) { *val = __strtof_impl(str, endptr); } @@ -623,7 +623,7 @@ inline bool EscapeString(const char *s, size_t length, std::string *_text, // we previously checked for non-UTF-8, so we shouldn't reach // here. // - // 2) We reached here by someone calling GenerateText() + // 2) We reached here by someone calling GenText() // on a previously-serialized flatbuffer. The data might have // non-UTF-8 Strings, or might be corrupt. // diff --git a/include/flatbuffers/vector.h b/include/flatbuffers/vector.h index 7d836362e8b..ae52b9382c2 100644 --- a/include/flatbuffers/vector.h +++ b/include/flatbuffers/vector.h @@ -147,12 +147,10 @@ struct VectorReverseIterator : public std::reverse_iterator { // Vector::data() assumes the vector elements start after the length field. template class Vector { public: - typedef VectorIterator::mutable_return_type, + typedef VectorIterator::mutable_return_type, uint8_t *, SizeT> iterator; - typedef VectorConstIterator::return_type, - SizeT> + typedef VectorConstIterator::return_type, SizeT> const_iterator; typedef VectorReverseIterator reverse_iterator; typedef VectorReverseIterator const_reverse_iterator; @@ -171,8 +169,7 @@ template class Vector { typedef SizeT size_type; typedef typename IndirectHelper::return_type return_type; - typedef typename IndirectHelper::mutable_return_type - mutable_return_type; + typedef typename IndirectHelper::mutable_return_type mutable_return_type; typedef return_type value_type; return_type Get(SizeT i) const { diff --git a/include/flatbuffers/vector_downward.h b/include/flatbuffers/vector_downward.h index fd491e7635b..2b5a92cf171 100644 --- a/include/flatbuffers/vector_downward.h +++ b/include/flatbuffers/vector_downward.h @@ -17,9 +17,8 @@ #ifndef FLATBUFFERS_VECTOR_DOWNWARD_H_ #define FLATBUFFERS_VECTOR_DOWNWARD_H_ -#include - #include +#include #include "flatbuffers/base.h" #include "flatbuffers/default_allocator.h" @@ -167,7 +166,9 @@ template class vector_downward { inline SizeT size() const { return size_; } // The size of the buffer part of the vector that is currently unused. - SizeT unused_buffer_size() const { return static_cast(cur_ - scratch_); } + SizeT unused_buffer_size() const { + return static_cast(cur_ - scratch_); + } // The size of the scratch part of the vector. SizeT scratch_size() const { return static_cast(scratch_ - buf_); } diff --git a/include/flatbuffers/verifier.h b/include/flatbuffers/verifier.h index ddd79446e22..de1146be92e 100644 --- a/include/flatbuffers/verifier.h +++ b/include/flatbuffers/verifier.h @@ -177,8 +177,8 @@ class Verifier FLATBUFFERS_FINAL_CLASS { return true; } - __suppress_ubsan__("unsigned-integer-overflow") bool VerifyTableStart( - const uint8_t *const table) { + FLATBUFFERS_SUPPRESS_UBSAN("unsigned-integer-overflow") + bool VerifyTableStart(const uint8_t *const table) { // Check the vtable offset. const auto tableo = static_cast(table - buf_); if (!Verify(tableo)) return false; @@ -246,7 +246,9 @@ class Verifier FLATBUFFERS_FINAL_CLASS { template bool VerifySizePrefixedBuffer(const char *const identifier) { return Verify(0U) && - Check(ReadScalar(buf_) == size_ - sizeof(SizeT)) && + // Ensure the prefixed size is within the bounds of the provided + // length. + Check(ReadScalar(buf_) + sizeof(SizeT) <= size_) && VerifyBufferFromStart(identifier, sizeof(SizeT)); } diff --git a/java/pom.xml b/java/pom.xml index 43e42bc31e1..eea7d2dc28c 100644 --- a/java/pom.xml +++ b/java/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.flatbuffers flatbuffers-java - 23.5.9 + 23.5.26 bundle FlatBuffers Java API @@ -59,15 +59,91 @@ - maven-compiler-plugin + maven-surefire-plugin - 8 - - MyGame/Example/MonsterStorageGrpc.java - MyGame/OtherNameSpace/TableBT.java - + + **/*Test.java + + + 2.22.2 + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.3.0 + + -Xdoclint:none + -Xdoclint:none + + + + attach-javadocs + + jar + + + + + + org.apache.felix + maven-bundle-plugin + 5.1.2 + true + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.8 + true + + ossrh + https://oss.sonatype.org/ + true + + + + org.apache.maven.plugins + maven-gpg-plugin + 3.0.1 + + + sign-artifacts + verify + + sign + + + + --pinentry-mode + loopback + + + + + + + org.apache.maven.plugins + maven-release-plugin + 2.5.3 + + true + false + release + deploy - 3.8.1 @@ -80,91 +156,39 @@ - maven-surefire-plugin - - - **/*Test.java - - - 2.22.2 - - - org.apache.maven.plugins - maven-source-plugin - 3.2.1 - - - attach-sources - - jar - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.3.0 - - -Xdoclint:none - -Xdoclint:none - - - - attach-javadocs - - jar - - - - - - org.apache.felix - maven-bundle-plugin - 5.1.2 - true - - - org.sonatype.plugins - nexus-staging-maven-plugin - 1.6.8 - true + maven-compiler-plugin - ossrh - https://oss.sonatype.org/ - true + 8 + + MyGame/Example/MonsterStorageGrpc.java + MyGame/OtherNameSpace/TableBT.java + + 3.8.1 + + + + + jdk8 + + 1.8 + + + 8 + 8 + + + - org.apache.maven.plugins - maven-gpg-plugin - 3.0.1 - - - sign-artifacts - verify - - sign - - - - --pinentry-mode - loopback - - - - - - - org.apache.maven.plugins - maven-release-plugin - 2.5.3 + maven-compiler-plugin - true - false - release - deploy + + MyGame/Example/MonsterStorageGrpc.java + MyGame/OtherNameSpace/TableBT.java + + 3.8.1 diff --git a/java/src/main/java/com/google/flatbuffers/Constants.java b/java/src/main/java/com/google/flatbuffers/Constants.java index a44c4607cb5..2374575c268 100644 --- a/java/src/main/java/com/google/flatbuffers/Constants.java +++ b/java/src/main/java/com/google/flatbuffers/Constants.java @@ -46,7 +46,7 @@ public class Constants { Changes to the Java implementation need to be sure to change the version here and in the code generator on every possible incompatible change */ - public static void FLATBUFFERS_23_5_9() {} + public static void FLATBUFFERS_23_5_26() {} } /// @endcond diff --git a/java/src/main/java/com/google/flatbuffers/reflection/Enum.java b/java/src/main/java/com/google/flatbuffers/reflection/Enum.java index 98dcc6847e0..953090e236c 100644 --- a/java/src/main/java/com/google/flatbuffers/reflection/Enum.java +++ b/java/src/main/java/com/google/flatbuffers/reflection/Enum.java @@ -21,7 +21,7 @@ @SuppressWarnings("unused") public final class Enum extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static Enum getRootAsEnum(ByteBuffer _bb) { return getRootAsEnum(_bb, new Enum()); } public static Enum getRootAsEnum(ByteBuffer _bb, Enum 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); } diff --git a/java/src/main/java/com/google/flatbuffers/reflection/EnumVal.java b/java/src/main/java/com/google/flatbuffers/reflection/EnumVal.java index 32ae17bca3d..d65711e13f5 100644 --- a/java/src/main/java/com/google/flatbuffers/reflection/EnumVal.java +++ b/java/src/main/java/com/google/flatbuffers/reflection/EnumVal.java @@ -21,7 +21,7 @@ @SuppressWarnings("unused") public final class EnumVal extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static EnumVal getRootAsEnumVal(ByteBuffer _bb) { return getRootAsEnumVal(_bb, new EnumVal()); } public static EnumVal getRootAsEnumVal(ByteBuffer _bb, EnumVal 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); } diff --git a/java/src/main/java/com/google/flatbuffers/reflection/Field.java b/java/src/main/java/com/google/flatbuffers/reflection/Field.java index a5d3c08e433..45be68e7b4f 100644 --- a/java/src/main/java/com/google/flatbuffers/reflection/Field.java +++ b/java/src/main/java/com/google/flatbuffers/reflection/Field.java @@ -21,7 +21,7 @@ @SuppressWarnings("unused") public final class Field extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static Field getRootAsField(ByteBuffer _bb) { return getRootAsField(_bb, new Field()); } public static Field getRootAsField(ByteBuffer _bb, Field 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); } diff --git a/java/src/main/java/com/google/flatbuffers/reflection/KeyValue.java b/java/src/main/java/com/google/flatbuffers/reflection/KeyValue.java index 9ab6a50eefe..8b22030711d 100644 --- a/java/src/main/java/com/google/flatbuffers/reflection/KeyValue.java +++ b/java/src/main/java/com/google/flatbuffers/reflection/KeyValue.java @@ -21,7 +21,7 @@ @SuppressWarnings("unused") public final class KeyValue extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static KeyValue getRootAsKeyValue(ByteBuffer _bb) { return getRootAsKeyValue(_bb, new KeyValue()); } public static KeyValue getRootAsKeyValue(ByteBuffer _bb, KeyValue 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); } diff --git a/java/src/main/java/com/google/flatbuffers/reflection/Object.java b/java/src/main/java/com/google/flatbuffers/reflection/Object.java index 14ea9c7d8e0..382532c824c 100644 --- a/java/src/main/java/com/google/flatbuffers/reflection/Object.java +++ b/java/src/main/java/com/google/flatbuffers/reflection/Object.java @@ -21,7 +21,7 @@ @SuppressWarnings("unused") public final class Object extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static Object getRootAsObject(ByteBuffer _bb) { return getRootAsObject(_bb, new Object()); } public static Object getRootAsObject(ByteBuffer _bb, Object 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); } diff --git a/java/src/main/java/com/google/flatbuffers/reflection/RPCCall.java b/java/src/main/java/com/google/flatbuffers/reflection/RPCCall.java index d3c34b3a67d..d517bb06c54 100644 --- a/java/src/main/java/com/google/flatbuffers/reflection/RPCCall.java +++ b/java/src/main/java/com/google/flatbuffers/reflection/RPCCall.java @@ -21,7 +21,7 @@ @SuppressWarnings("unused") public final class RPCCall extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static RPCCall getRootAsRPCCall(ByteBuffer _bb) { return getRootAsRPCCall(_bb, new RPCCall()); } public static RPCCall getRootAsRPCCall(ByteBuffer _bb, RPCCall 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); } diff --git a/java/src/main/java/com/google/flatbuffers/reflection/Schema.java b/java/src/main/java/com/google/flatbuffers/reflection/Schema.java index e9e04eaf9d4..98d05fbf780 100644 --- a/java/src/main/java/com/google/flatbuffers/reflection/Schema.java +++ b/java/src/main/java/com/google/flatbuffers/reflection/Schema.java @@ -21,7 +21,7 @@ @SuppressWarnings("unused") public final class Schema extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static Schema getRootAsSchema(ByteBuffer _bb) { return getRootAsSchema(_bb, new Schema()); } public static Schema getRootAsSchema(ByteBuffer _bb, Schema obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); } public static boolean SchemaBufferHasIdentifier(ByteBuffer _bb) { return __has_identifier(_bb, "BFBS"); } diff --git a/java/src/main/java/com/google/flatbuffers/reflection/SchemaFile.java b/java/src/main/java/com/google/flatbuffers/reflection/SchemaFile.java index 59be57b8e2b..d009dc78fa2 100644 --- a/java/src/main/java/com/google/flatbuffers/reflection/SchemaFile.java +++ b/java/src/main/java/com/google/flatbuffers/reflection/SchemaFile.java @@ -26,7 +26,7 @@ */ @SuppressWarnings("unused") public final class SchemaFile extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static SchemaFile getRootAsSchemaFile(ByteBuffer _bb) { return getRootAsSchemaFile(_bb, new SchemaFile()); } public static SchemaFile getRootAsSchemaFile(ByteBuffer _bb, SchemaFile 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); } diff --git a/java/src/main/java/com/google/flatbuffers/reflection/Service.java b/java/src/main/java/com/google/flatbuffers/reflection/Service.java index 4ed60b98c83..42eebc10a80 100644 --- a/java/src/main/java/com/google/flatbuffers/reflection/Service.java +++ b/java/src/main/java/com/google/flatbuffers/reflection/Service.java @@ -21,7 +21,7 @@ @SuppressWarnings("unused") public final class Service extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static Service getRootAsService(ByteBuffer _bb) { return getRootAsService(_bb, new Service()); } public static Service getRootAsService(ByteBuffer _bb, Service 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); } diff --git a/java/src/main/java/com/google/flatbuffers/reflection/Type.java b/java/src/main/java/com/google/flatbuffers/reflection/Type.java index 85c64ae9c77..107a0fde535 100644 --- a/java/src/main/java/com/google/flatbuffers/reflection/Type.java +++ b/java/src/main/java/com/google/flatbuffers/reflection/Type.java @@ -21,7 +21,7 @@ @SuppressWarnings("unused") public final class Type extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static Type getRootAsType(ByteBuffer _bb) { return getRootAsType(_bb, new Type()); } public static Type getRootAsType(ByteBuffer _bb, Type 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); } diff --git a/net/FlatBuffers/FlatBufferConstants.cs b/net/FlatBuffers/FlatBufferConstants.cs index bbbc043418c..51a5d6e8821 100644 --- a/net/FlatBuffers/FlatBufferConstants.cs +++ b/net/FlatBuffers/FlatBufferConstants.cs @@ -32,6 +32,6 @@ the runtime and generated code are modified in sync. Changes to the C# implementation need to be sure to change the version here and in the code generator on every possible incompatible change */ - public static void FLATBUFFERS_23_5_9() {} + public static void FLATBUFFERS_23_5_26() {} } } diff --git a/net/FlatBuffers/Google.FlatBuffers.csproj b/net/FlatBuffers/Google.FlatBuffers.csproj index 67aaea26e29..7d4fab0f8ca 100644 --- a/net/FlatBuffers/Google.FlatBuffers.csproj +++ b/net/FlatBuffers/Google.FlatBuffers.csproj @@ -3,7 +3,7 @@ netstandard2.1;netstandard2.0;net46 A cross-platform memory efficient serialization library - 23.5.9 + 23.5.26 Google LLC https://github.com/google/flatbuffers https://github.com/google/flatbuffers diff --git a/package.json b/package.json index 13b430300dc..c5e304eb3ef 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "flatbuffers", - "version": "23.5.9", + "version": "23.5.26", "description": "Memory Efficient Serialization Library", "files": [ "js/**/*.js", @@ -36,11 +36,11 @@ "homepage": "https://google.github.io/flatbuffers/", "dependencies": {}, "devDependencies": { - "@types/node": "18.15.11", - "@typescript-eslint/eslint-plugin": "^5.57.0", - "@typescript-eslint/parser": "^5.57.0", - "esbuild": "^0.17.14", - "eslint": "^8.37.0", + "@types/node": "18.16.3", + "@typescript-eslint/eslint-plugin": "^5.59.2", + "@typescript-eslint/parser": "^5.59.2", + "esbuild": "^0.17.18", + "eslint": "^8.39.0", "typescript": "5.0.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 45c645b440c..8dfe73dc88d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2,28 +2,28 @@ lockfileVersion: '6.0' devDependencies: '@types/node': - specifier: 18.15.11 - version: 18.15.11 + specifier: 18.16.3 + version: 18.16.3 '@typescript-eslint/eslint-plugin': - specifier: ^5.57.0 - version: 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.3) + specifier: ^5.59.2 + version: 5.59.2(@typescript-eslint/parser@5.59.2)(eslint@8.39.0)(typescript@5.0.4) '@typescript-eslint/parser': - specifier: ^5.57.0 - version: 5.57.0(eslint@8.37.0)(typescript@5.0.3) + specifier: ^5.59.2 + version: 5.59.2(eslint@8.39.0)(typescript@5.0.4) esbuild: - specifier: ^0.17.14 - version: 0.17.14 + specifier: ^0.17.18 + version: 0.17.18 eslint: - specifier: ^8.37.0 - version: 8.37.0 + specifier: ^8.39.0 + version: 8.39.0 typescript: - specifier: 5.0.3 - version: 5.0.3 + specifier: 5.0.4 + version: 5.0.4 packages: - /@esbuild/android-arm64@0.17.14: - resolution: {integrity: sha512-eLOpPO1RvtsP71afiFTvS7tVFShJBCT0txiv/xjFBo5a7R7Gjw7X0IgIaFoLKhqXYAXhahoXm7qAmRXhY4guJg==} + /@esbuild/android-arm64@0.17.18: + resolution: {integrity: sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -31,8 +31,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.17.14: - resolution: {integrity: sha512-0CnlwnjDU8cks0yJLXfkaU/uoLyRf9VZJs4p1PskBr2AlAHeEsFEwJEo0of/Z3g+ilw5mpyDwThlxzNEIxOE4g==} + /@esbuild/android-arm@0.17.18: + resolution: {integrity: sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -40,8 +40,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.17.14: - resolution: {integrity: sha512-nrfQYWBfLGfSGLvRVlt6xi63B5IbfHm3tZCdu/82zuFPQ7zez4XjmRtF/wIRYbJQ/DsZrxJdEvYFE67avYXyng==} + /@esbuild/android-x64@0.17.18: + resolution: {integrity: sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -49,8 +49,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.17.14: - resolution: {integrity: sha512-eoSjEuDsU1ROwgBH/c+fZzuSyJUVXQTOIN9xuLs9dE/9HbV/A5IqdXHU1p2OfIMwBwOYJ9SFVGGldxeRCUJFyw==} + /@esbuild/darwin-arm64@0.17.18: + resolution: {integrity: sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -58,8 +58,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.17.14: - resolution: {integrity: sha512-zN0U8RWfrDttdFNkHqFYZtOH8hdi22z0pFm0aIJPsNC4QQZv7je8DWCX5iA4Zx6tRhS0CCc0XC2m7wKsbWEo5g==} + /@esbuild/darwin-x64@0.17.18: + resolution: {integrity: sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -67,8 +67,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.17.14: - resolution: {integrity: sha512-z0VcD4ibeZWVQCW1O7szaLxGsx54gcCnajEJMdYoYjLiq4g1jrP2lMq6pk71dbS5+7op/L2Aod+erw+EUr28/A==} + /@esbuild/freebsd-arm64@0.17.18: + resolution: {integrity: sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -76,8 +76,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.17.14: - resolution: {integrity: sha512-hd9mPcxfTgJlolrPlcXkQk9BMwNBvNBsVaUe5eNUqXut6weDQH8whcNaKNF2RO8NbpT6GY8rHOK2A9y++s+ehw==} + /@esbuild/freebsd-x64@0.17.18: + resolution: {integrity: sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -85,8 +85,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.17.14: - resolution: {integrity: sha512-FhAMNYOq3Iblcj9i+K0l1Fp/MHt+zBeRu/Qkf0LtrcFu3T45jcwB6A1iMsemQ42vR3GBhjNZJZTaCe3VFPbn9g==} + /@esbuild/linux-arm64@0.17.18: + resolution: {integrity: sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -94,8 +94,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.17.14: - resolution: {integrity: sha512-BNTl+wSJ1omsH8s3TkQmIIIQHwvwJrU9u1ggb9XU2KTVM4TmthRIVyxSp2qxROJHhZuW/r8fht46/QE8hU8Qvg==} + /@esbuild/linux-arm@0.17.18: + resolution: {integrity: sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -103,8 +103,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.17.14: - resolution: {integrity: sha512-91OK/lQ5y2v7AsmnFT+0EyxdPTNhov3y2CWMdizyMfxSxRqHazXdzgBKtlmkU2KYIc+9ZK3Vwp2KyXogEATYxQ==} + /@esbuild/linux-ia32@0.17.18: + resolution: {integrity: sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -112,8 +112,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.17.14: - resolution: {integrity: sha512-vp15H+5NR6hubNgMluqqKza85HcGJgq7t6rMH7O3Y6ApiOWPkvW2AJfNojUQimfTp6OUrACUXfR4hmpcENXoMQ==} + /@esbuild/linux-loong64@0.17.18: + resolution: {integrity: sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -121,8 +121,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.17.14: - resolution: {integrity: sha512-90TOdFV7N+fgi6c2+GO9ochEkmm9kBAKnuD5e08GQMgMINOdOFHuYLPQ91RYVrnWwQ5683sJKuLi9l4SsbJ7Hg==} + /@esbuild/linux-mips64el@0.17.18: + resolution: {integrity: sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -130,8 +130,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.17.14: - resolution: {integrity: sha512-NnBGeoqKkTugpBOBZZoktQQ1Yqb7aHKmHxsw43NddPB2YWLAlpb7THZIzsRsTr0Xw3nqiPxbA1H31ZMOG+VVPQ==} + /@esbuild/linux-ppc64@0.17.18: + resolution: {integrity: sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -139,8 +139,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.17.14: - resolution: {integrity: sha512-0qdlKScLXA8MGVy21JUKvMzCYWovctuP8KKqhtE5A6IVPq4onxXhSuhwDd2g5sRCzNDlDjitc5sX31BzDoL5Fw==} + /@esbuild/linux-riscv64@0.17.18: + resolution: {integrity: sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -148,8 +148,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.17.14: - resolution: {integrity: sha512-Hdm2Jo1yaaOro4v3+6/zJk6ygCqIZuSDJHdHaf8nVH/tfOuoEX5Riv03Ka15LmQBYJObUTNS1UdyoMk0WUn9Ww==} + /@esbuild/linux-s390x@0.17.18: + resolution: {integrity: sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -157,8 +157,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.17.14: - resolution: {integrity: sha512-8KHF17OstlK4DuzeF/KmSgzrTWQrkWj5boluiiq7kvJCiQVzUrmSkaBvcLB2UgHpKENO2i6BthPkmUhNDaJsVw==} + /@esbuild/linux-x64@0.17.18: + resolution: {integrity: sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -166,8 +166,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.17.14: - resolution: {integrity: sha512-nVwpqvb3yyXztxIT2+VsxJhB5GCgzPdk1n0HHSnchRAcxqKO6ghXwHhJnr0j/B+5FSyEqSxF4q03rbA2fKXtUQ==} + /@esbuild/netbsd-x64@0.17.18: + resolution: {integrity: sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -175,8 +175,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.17.14: - resolution: {integrity: sha512-1RZ7uQQ9zcy/GSAJL1xPdN7NDdOOtNEGiJalg/MOzeakZeTrgH/DoCkbq7TaPDiPhWqnDF+4bnydxRqQD7il6g==} + /@esbuild/openbsd-x64@0.17.18: + resolution: {integrity: sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -184,8 +184,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.17.14: - resolution: {integrity: sha512-nqMjDsFwv7vp7msrwWRysnM38Sd44PKmW8EzV01YzDBTcTWUpczQg6mGao9VLicXSgW/iookNK6AxeogNVNDZA==} + /@esbuild/sunos-x64@0.17.18: + resolution: {integrity: sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -193,8 +193,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.17.14: - resolution: {integrity: sha512-xrD0mccTKRBBIotrITV7WVQAwNJ5+1va6L0H9zN92v2yEdjfAN7864cUaZwJS7JPEs53bDTzKFbfqVlG2HhyKQ==} + /@esbuild/win32-arm64@0.17.18: + resolution: {integrity: sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -202,8 +202,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.17.14: - resolution: {integrity: sha512-nXpkz9bbJrLLyUTYtRotSS3t5b+FOuljg8LgLdINWFs3FfqZMtbnBCZFUmBzQPyxqU87F8Av+3Nco/M3hEcu1w==} + /@esbuild/win32-ia32@0.17.18: + resolution: {integrity: sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -211,8 +211,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.17.14: - resolution: {integrity: sha512-gPQmsi2DKTaEgG14hc3CHXHp62k8g6qr0Pas+I4lUxRMugGSATh/Bi8Dgusoz9IQ0IfdrvLpco6kujEIBoaogA==} + /@esbuild/win32-x64@0.17.18: + resolution: {integrity: sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -220,18 +220,18 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.37.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.39.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.37.0 + eslint: 8.39.0 eslint-visitor-keys: 3.4.0 dev: true - /@eslint-community/regexpp@4.5.0: - resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==} + /@eslint-community/regexpp@4.5.1: + resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true @@ -252,8 +252,8 @@ packages: - supports-color dev: true - /@eslint/js@8.37.0: - resolution: {integrity: sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==} + /@eslint/js@8.39.0: + resolution: {integrity: sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -302,16 +302,16 @@ packages: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true - /@types/node@18.15.11: - resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} + /@types/node@18.16.3: + resolution: {integrity: sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==} dev: true /@types/semver@7.3.13: resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} dev: true - /@typescript-eslint/eslint-plugin@5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.3): - resolution: {integrity: sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==} + /@typescript-eslint/eslint-plugin@5.59.2(@typescript-eslint/parser@5.59.2)(eslint@8.39.0)(typescript@5.0.4): + resolution: {integrity: sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -321,25 +321,25 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.5.0 - '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.3) - '@typescript-eslint/scope-manager': 5.57.0 - '@typescript-eslint/type-utils': 5.57.0(eslint@8.37.0)(typescript@5.0.3) - '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.3) + '@eslint-community/regexpp': 4.5.1 + '@typescript-eslint/parser': 5.59.2(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/scope-manager': 5.59.2 + '@typescript-eslint/type-utils': 5.59.2(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.59.2(eslint@8.39.0)(typescript@5.0.4) debug: 4.3.4 - eslint: 8.37.0 + eslint: 8.39.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 - semver: 7.3.8 - tsutils: 3.21.0(typescript@5.0.3) - typescript: 5.0.3 + semver: 7.5.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.57.0(eslint@8.37.0)(typescript@5.0.3): - resolution: {integrity: sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==} + /@typescript-eslint/parser@5.59.2(eslint@8.39.0)(typescript@5.0.4): + resolution: {integrity: sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -348,26 +348,26 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.57.0 - '@typescript-eslint/types': 5.57.0 - '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.3) + '@typescript-eslint/scope-manager': 5.59.2 + '@typescript-eslint/types': 5.59.2 + '@typescript-eslint/typescript-estree': 5.59.2(typescript@5.0.4) debug: 4.3.4 - eslint: 8.37.0 - typescript: 5.0.3 + eslint: 8.39.0 + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@5.57.0: - resolution: {integrity: sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==} + /@typescript-eslint/scope-manager@5.59.2: + resolution: {integrity: sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.57.0 - '@typescript-eslint/visitor-keys': 5.57.0 + '@typescript-eslint/types': 5.59.2 + '@typescript-eslint/visitor-keys': 5.59.2 dev: true - /@typescript-eslint/type-utils@5.57.0(eslint@8.37.0)(typescript@5.0.3): - resolution: {integrity: sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==} + /@typescript-eslint/type-utils@5.59.2(eslint@8.39.0)(typescript@5.0.4): + resolution: {integrity: sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -376,23 +376,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.3) - '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/typescript-estree': 5.59.2(typescript@5.0.4) + '@typescript-eslint/utils': 5.59.2(eslint@8.39.0)(typescript@5.0.4) debug: 4.3.4 - eslint: 8.37.0 - tsutils: 3.21.0(typescript@5.0.3) - typescript: 5.0.3 + eslint: 8.39.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.57.0: - resolution: {integrity: sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==} + /@typescript-eslint/types@5.59.2: + resolution: {integrity: sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.57.0(typescript@5.0.3): - resolution: {integrity: sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==} + /@typescript-eslint/typescript-estree@5.59.2(typescript@5.0.4): + resolution: {integrity: sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -400,43 +400,43 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.57.0 - '@typescript-eslint/visitor-keys': 5.57.0 + '@typescript-eslint/types': 5.59.2 + '@typescript-eslint/visitor-keys': 5.59.2 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.8 - tsutils: 3.21.0(typescript@5.0.3) - typescript: 5.0.3 + semver: 7.5.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.57.0(eslint@8.37.0)(typescript@5.0.3): - resolution: {integrity: sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==} + /@typescript-eslint/utils@5.59.2(eslint@8.39.0)(typescript@5.0.4): + resolution: {integrity: sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.37.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0) '@types/json-schema': 7.0.11 '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.57.0 - '@typescript-eslint/types': 5.57.0 - '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.3) - eslint: 8.37.0 + '@typescript-eslint/scope-manager': 5.59.2 + '@typescript-eslint/types': 5.59.2 + '@typescript-eslint/typescript-estree': 5.59.2(typescript@5.0.4) + eslint: 8.39.0 eslint-scope: 5.1.1 - semver: 7.3.8 + semver: 7.5.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@5.57.0: - resolution: {integrity: sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==} + /@typescript-eslint/visitor-keys@5.59.2: + resolution: {integrity: sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.57.0 + '@typescript-eslint/types': 5.59.2 eslint-visitor-keys: 3.4.0 dev: true @@ -569,34 +569,34 @@ packages: esutils: 2.0.3 dev: true - /esbuild@0.17.14: - resolution: {integrity: sha512-vOO5XhmVj/1XQR9NQ1UPq6qvMYL7QFJU57J5fKBKBKxp17uDt5PgxFDb4A2nEiXhr1qQs4x0F5+66hVVw4ruNw==} + /esbuild@0.17.18: + resolution: {integrity: sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.14 - '@esbuild/android-arm64': 0.17.14 - '@esbuild/android-x64': 0.17.14 - '@esbuild/darwin-arm64': 0.17.14 - '@esbuild/darwin-x64': 0.17.14 - '@esbuild/freebsd-arm64': 0.17.14 - '@esbuild/freebsd-x64': 0.17.14 - '@esbuild/linux-arm': 0.17.14 - '@esbuild/linux-arm64': 0.17.14 - '@esbuild/linux-ia32': 0.17.14 - '@esbuild/linux-loong64': 0.17.14 - '@esbuild/linux-mips64el': 0.17.14 - '@esbuild/linux-ppc64': 0.17.14 - '@esbuild/linux-riscv64': 0.17.14 - '@esbuild/linux-s390x': 0.17.14 - '@esbuild/linux-x64': 0.17.14 - '@esbuild/netbsd-x64': 0.17.14 - '@esbuild/openbsd-x64': 0.17.14 - '@esbuild/sunos-x64': 0.17.14 - '@esbuild/win32-arm64': 0.17.14 - '@esbuild/win32-ia32': 0.17.14 - '@esbuild/win32-x64': 0.17.14 + '@esbuild/android-arm': 0.17.18 + '@esbuild/android-arm64': 0.17.18 + '@esbuild/android-x64': 0.17.18 + '@esbuild/darwin-arm64': 0.17.18 + '@esbuild/darwin-x64': 0.17.18 + '@esbuild/freebsd-arm64': 0.17.18 + '@esbuild/freebsd-x64': 0.17.18 + '@esbuild/linux-arm': 0.17.18 + '@esbuild/linux-arm64': 0.17.18 + '@esbuild/linux-ia32': 0.17.18 + '@esbuild/linux-loong64': 0.17.18 + '@esbuild/linux-mips64el': 0.17.18 + '@esbuild/linux-ppc64': 0.17.18 + '@esbuild/linux-riscv64': 0.17.18 + '@esbuild/linux-s390x': 0.17.18 + '@esbuild/linux-x64': 0.17.18 + '@esbuild/netbsd-x64': 0.17.18 + '@esbuild/openbsd-x64': 0.17.18 + '@esbuild/sunos-x64': 0.17.18 + '@esbuild/win32-arm64': 0.17.18 + '@esbuild/win32-ia32': 0.17.18 + '@esbuild/win32-x64': 0.17.18 dev: true /escape-string-regexp@4.0.0: @@ -612,8 +612,8 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope@7.1.1: - resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + /eslint-scope@7.2.0: + resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 @@ -625,15 +625,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.37.0: - resolution: {integrity: sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==} + /eslint@8.39.0: + resolution: {integrity: sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.37.0) - '@eslint-community/regexpp': 4.5.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0) + '@eslint-community/regexpp': 4.5.1 '@eslint/eslintrc': 2.0.2 - '@eslint/js': 8.37.0 + '@eslint/js': 8.39.0 '@humanwhocodes/config-array': 0.11.8 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -643,7 +643,7 @@ packages: debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.1.1 + eslint-scope: 7.2.0 eslint-visitor-keys: 3.4.0 espree: 9.5.1 esquery: 1.5.0 @@ -1064,8 +1064,8 @@ packages: queue-microtask: 1.2.3 dev: true - /semver@7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} + /semver@7.5.0: + resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} engines: {node: '>=10'} hasBin: true dependencies: @@ -1123,14 +1123,14 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tsutils@3.21.0(typescript@5.0.3): + /tsutils@3.21.0(typescript@5.0.4): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.0.3 + typescript: 5.0.4 dev: true /type-check@0.4.0: @@ -1145,8 +1145,8 @@ packages: engines: {node: '>=10'} dev: true - /typescript@5.0.3: - resolution: {integrity: sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==} + /typescript@5.0.4: + resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} engines: {node: '>=12.20'} hasBin: true dev: true diff --git a/python/flatbuffers/_version.py b/python/flatbuffers/_version.py index 181fd067575..3993733224a 100644 --- a/python/flatbuffers/_version.py +++ b/python/flatbuffers/_version.py @@ -14,4 +14,4 @@ # Placeholder, to be updated during the release process # by the setup.py -__version__ = u"23.5.9" +__version__ = u"23.5.26" diff --git a/python/flatbuffers/reflection/Enum.py b/python/flatbuffers/reflection/Enum.py index fd4c410a10f..2d484c0b10f 100644 --- a/python/flatbuffers/reflection/Enum.py +++ b/python/flatbuffers/reflection/Enum.py @@ -42,7 +42,7 @@ def Values(self, j): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from .reflection.EnumVal import EnumVal + from reflection.EnumVal import EnumVal obj = EnumVal() obj.Init(self._tab.Bytes, x) return obj @@ -72,7 +72,7 @@ def UnderlyingType(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10)) if o != 0: x = self._tab.Indirect(o + self._tab.Pos) - from .reflection.Type import Type + from reflection.Type import Type obj = Type() obj.Init(self._tab.Bytes, x) return obj @@ -85,7 +85,7 @@ def Attributes(self, j): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from .reflection.KeyValue import KeyValue + from reflection.KeyValue import KeyValue obj = KeyValue() obj.Init(self._tab.Bytes, x) return obj @@ -140,13 +140,13 @@ def Start(builder): def EnumAddName(builder, name): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) -def AddName(builder: flatbuffers.Builder, name: int): +def AddName(builder, name): EnumAddName(builder, name) def EnumAddValues(builder, values): builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(values), 0) -def AddValues(builder: flatbuffers.Builder, values: int): +def AddValues(builder, values): EnumAddValues(builder, values) def EnumStartValuesVector(builder, numElems): @@ -158,19 +158,19 @@ def StartValuesVector(builder, numElems: int) -> int: def EnumAddIsUnion(builder, isUnion): builder.PrependBoolSlot(2, isUnion, 0) -def AddIsUnion(builder: flatbuffers.Builder, isUnion: bool): +def AddIsUnion(builder, isUnion): EnumAddIsUnion(builder, isUnion) def EnumAddUnderlyingType(builder, underlyingType): builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(underlyingType), 0) -def AddUnderlyingType(builder: flatbuffers.Builder, underlyingType: int): +def AddUnderlyingType(builder, underlyingType): EnumAddUnderlyingType(builder, underlyingType) def EnumAddAttributes(builder, attributes): builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(attributes), 0) -def AddAttributes(builder: flatbuffers.Builder, attributes: int): +def AddAttributes(builder, attributes): EnumAddAttributes(builder, attributes) def EnumStartAttributesVector(builder, numElems): @@ -182,7 +182,7 @@ def StartAttributesVector(builder, numElems: int) -> int: def EnumAddDocumentation(builder, documentation): builder.PrependUOffsetTRelativeSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(documentation), 0) -def AddDocumentation(builder: flatbuffers.Builder, documentation: int): +def AddDocumentation(builder, documentation): EnumAddDocumentation(builder, documentation) def EnumStartDocumentationVector(builder, numElems): @@ -194,7 +194,7 @@ def StartDocumentationVector(builder, numElems: int) -> int: def EnumAddDeclarationFile(builder, declarationFile): builder.PrependUOffsetTRelativeSlot(6, flatbuffers.number_types.UOffsetTFlags.py_type(declarationFile), 0) -def AddDeclarationFile(builder: flatbuffers.Builder, declarationFile: int): +def AddDeclarationFile(builder, declarationFile): EnumAddDeclarationFile(builder, declarationFile) def EnumEnd(builder): diff --git a/python/flatbuffers/reflection/EnumVal.py b/python/flatbuffers/reflection/EnumVal.py index 207dd843669..3da936b4ac8 100644 --- a/python/flatbuffers/reflection/EnumVal.py +++ b/python/flatbuffers/reflection/EnumVal.py @@ -47,7 +47,7 @@ def UnionType(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10)) if o != 0: x = self._tab.Indirect(o + self._tab.Pos) - from .reflection.Type import Type + from reflection.Type import Type obj = Type() obj.Init(self._tab.Bytes, x) return obj @@ -80,7 +80,7 @@ def Attributes(self, j): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from .reflection.KeyValue import KeyValue + from reflection.KeyValue import KeyValue obj = KeyValue() obj.Init(self._tab.Bytes, x) return obj @@ -107,25 +107,25 @@ def Start(builder): def EnumValAddName(builder, name): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) -def AddName(builder: flatbuffers.Builder, name: int): +def AddName(builder, name): EnumValAddName(builder, name) def EnumValAddValue(builder, value): builder.PrependInt64Slot(1, value, 0) -def AddValue(builder: flatbuffers.Builder, value: int): +def AddValue(builder, value): EnumValAddValue(builder, value) def EnumValAddUnionType(builder, unionType): builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(unionType), 0) -def AddUnionType(builder: flatbuffers.Builder, unionType: int): +def AddUnionType(builder, unionType): EnumValAddUnionType(builder, unionType) def EnumValAddDocumentation(builder, documentation): builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(documentation), 0) -def AddDocumentation(builder: flatbuffers.Builder, documentation: int): +def AddDocumentation(builder, documentation): EnumValAddDocumentation(builder, documentation) def EnumValStartDocumentationVector(builder, numElems): @@ -137,7 +137,7 @@ def StartDocumentationVector(builder, numElems: int) -> int: def EnumValAddAttributes(builder, attributes): builder.PrependUOffsetTRelativeSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(attributes), 0) -def AddAttributes(builder: flatbuffers.Builder, attributes: int): +def AddAttributes(builder, attributes): EnumValAddAttributes(builder, attributes) def EnumValStartAttributesVector(builder, numElems): diff --git a/python/flatbuffers/reflection/Field.py b/python/flatbuffers/reflection/Field.py index 9e29e74820b..eb70891ace1 100644 --- a/python/flatbuffers/reflection/Field.py +++ b/python/flatbuffers/reflection/Field.py @@ -40,7 +40,7 @@ def Type(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6)) if o != 0: x = self._tab.Indirect(o + self._tab.Pos) - from .reflection.Type import Type + from reflection.Type import Type obj = Type() obj.Init(self._tab.Bytes, x) return obj @@ -102,7 +102,7 @@ def Attributes(self, j): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from .reflection.KeyValue import KeyValue + from reflection.KeyValue import KeyValue obj = KeyValue() obj.Init(self._tab.Bytes, x) return obj @@ -172,61 +172,61 @@ def Start(builder): def FieldAddName(builder, name): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) -def AddName(builder: flatbuffers.Builder, name: int): +def AddName(builder, name): FieldAddName(builder, name) def FieldAddType(builder, type): builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(type), 0) -def AddType(builder: flatbuffers.Builder, type: int): +def AddType(builder, type): FieldAddType(builder, type) def FieldAddId(builder, id): builder.PrependUint16Slot(2, id, 0) -def AddId(builder: flatbuffers.Builder, id: int): +def AddId(builder, id): FieldAddId(builder, id) def FieldAddOffset(builder, offset): builder.PrependUint16Slot(3, offset, 0) -def AddOffset(builder: flatbuffers.Builder, offset: int): +def AddOffset(builder, offset): FieldAddOffset(builder, offset) def FieldAddDefaultInteger(builder, defaultInteger): builder.PrependInt64Slot(4, defaultInteger, 0) -def AddDefaultInteger(builder: flatbuffers.Builder, defaultInteger: int): +def AddDefaultInteger(builder, defaultInteger): FieldAddDefaultInteger(builder, defaultInteger) def FieldAddDefaultReal(builder, defaultReal): builder.PrependFloat64Slot(5, defaultReal, 0.0) -def AddDefaultReal(builder: flatbuffers.Builder, defaultReal: float): +def AddDefaultReal(builder, defaultReal): FieldAddDefaultReal(builder, defaultReal) def FieldAddDeprecated(builder, deprecated): builder.PrependBoolSlot(6, deprecated, 0) -def AddDeprecated(builder: flatbuffers.Builder, deprecated: bool): +def AddDeprecated(builder, deprecated): FieldAddDeprecated(builder, deprecated) def FieldAddRequired(builder, required): builder.PrependBoolSlot(7, required, 0) -def AddRequired(builder: flatbuffers.Builder, required: bool): +def AddRequired(builder, required): FieldAddRequired(builder, required) def FieldAddKey(builder, key): builder.PrependBoolSlot(8, key, 0) -def AddKey(builder: flatbuffers.Builder, key: bool): +def AddKey(builder, key): FieldAddKey(builder, key) def FieldAddAttributes(builder, attributes): builder.PrependUOffsetTRelativeSlot(9, flatbuffers.number_types.UOffsetTFlags.py_type(attributes), 0) -def AddAttributes(builder: flatbuffers.Builder, attributes: int): +def AddAttributes(builder, attributes): FieldAddAttributes(builder, attributes) def FieldStartAttributesVector(builder, numElems): @@ -238,7 +238,7 @@ def StartAttributesVector(builder, numElems: int) -> int: def FieldAddDocumentation(builder, documentation): builder.PrependUOffsetTRelativeSlot(10, flatbuffers.number_types.UOffsetTFlags.py_type(documentation), 0) -def AddDocumentation(builder: flatbuffers.Builder, documentation: int): +def AddDocumentation(builder, documentation): FieldAddDocumentation(builder, documentation) def FieldStartDocumentationVector(builder, numElems): @@ -250,19 +250,19 @@ def StartDocumentationVector(builder, numElems: int) -> int: def FieldAddOptional(builder, optional): builder.PrependBoolSlot(11, optional, 0) -def AddOptional(builder: flatbuffers.Builder, optional: bool): +def AddOptional(builder, optional): FieldAddOptional(builder, optional) def FieldAddPadding(builder, padding): builder.PrependUint16Slot(12, padding, 0) -def AddPadding(builder: flatbuffers.Builder, padding: int): +def AddPadding(builder, padding): FieldAddPadding(builder, padding) def FieldAddOffset64(builder, offset64): builder.PrependBoolSlot(13, offset64, 0) -def AddOffset64(builder: flatbuffers.Builder, offset64: bool): +def AddOffset64(builder, offset64): FieldAddOffset64(builder, offset64) def FieldEnd(builder): diff --git a/python/flatbuffers/reflection/KeyValue.py b/python/flatbuffers/reflection/KeyValue.py index fb9014c978f..585f99aadfb 100644 --- a/python/flatbuffers/reflection/KeyValue.py +++ b/python/flatbuffers/reflection/KeyValue.py @@ -51,13 +51,13 @@ def Start(builder): def KeyValueAddKey(builder, key): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(key), 0) -def AddKey(builder: flatbuffers.Builder, key: int): +def AddKey(builder, key): KeyValueAddKey(builder, key) def KeyValueAddValue(builder, value): builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(value), 0) -def AddValue(builder: flatbuffers.Builder, value: int): +def AddValue(builder, value): KeyValueAddValue(builder, value) def KeyValueEnd(builder): diff --git a/python/flatbuffers/reflection/Object.py b/python/flatbuffers/reflection/Object.py index 139e062785c..33b05733650 100644 --- a/python/flatbuffers/reflection/Object.py +++ b/python/flatbuffers/reflection/Object.py @@ -42,7 +42,7 @@ def Fields(self, j): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from .reflection.Field import Field + from reflection.Field import Field obj = Field() obj.Init(self._tab.Bytes, x) return obj @@ -88,7 +88,7 @@ def Attributes(self, j): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from .reflection.KeyValue import KeyValue + from reflection.KeyValue import KeyValue obj = KeyValue() obj.Init(self._tab.Bytes, x) return obj @@ -143,13 +143,13 @@ def Start(builder): def ObjectAddName(builder, name): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) -def AddName(builder: flatbuffers.Builder, name: int): +def AddName(builder, name): ObjectAddName(builder, name) def ObjectAddFields(builder, fields): builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(fields), 0) -def AddFields(builder: flatbuffers.Builder, fields: int): +def AddFields(builder, fields): ObjectAddFields(builder, fields) def ObjectStartFieldsVector(builder, numElems): @@ -161,25 +161,25 @@ def StartFieldsVector(builder, numElems: int) -> int: def ObjectAddIsStruct(builder, isStruct): builder.PrependBoolSlot(2, isStruct, 0) -def AddIsStruct(builder: flatbuffers.Builder, isStruct: bool): +def AddIsStruct(builder, isStruct): ObjectAddIsStruct(builder, isStruct) def ObjectAddMinalign(builder, minalign): builder.PrependInt32Slot(3, minalign, 0) -def AddMinalign(builder: flatbuffers.Builder, minalign: int): +def AddMinalign(builder, minalign): ObjectAddMinalign(builder, minalign) def ObjectAddBytesize(builder, bytesize): builder.PrependInt32Slot(4, bytesize, 0) -def AddBytesize(builder: flatbuffers.Builder, bytesize: int): +def AddBytesize(builder, bytesize): ObjectAddBytesize(builder, bytesize) def ObjectAddAttributes(builder, attributes): builder.PrependUOffsetTRelativeSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(attributes), 0) -def AddAttributes(builder: flatbuffers.Builder, attributes: int): +def AddAttributes(builder, attributes): ObjectAddAttributes(builder, attributes) def ObjectStartAttributesVector(builder, numElems): @@ -191,7 +191,7 @@ def StartAttributesVector(builder, numElems: int) -> int: def ObjectAddDocumentation(builder, documentation): builder.PrependUOffsetTRelativeSlot(6, flatbuffers.number_types.UOffsetTFlags.py_type(documentation), 0) -def AddDocumentation(builder: flatbuffers.Builder, documentation: int): +def AddDocumentation(builder, documentation): ObjectAddDocumentation(builder, documentation) def ObjectStartDocumentationVector(builder, numElems): @@ -203,7 +203,7 @@ def StartDocumentationVector(builder, numElems: int) -> int: def ObjectAddDeclarationFile(builder, declarationFile): builder.PrependUOffsetTRelativeSlot(7, flatbuffers.number_types.UOffsetTFlags.py_type(declarationFile), 0) -def AddDeclarationFile(builder: flatbuffers.Builder, declarationFile: int): +def AddDeclarationFile(builder, declarationFile): ObjectAddDeclarationFile(builder, declarationFile) def ObjectEnd(builder): diff --git a/python/flatbuffers/reflection/RPCCall.py b/python/flatbuffers/reflection/RPCCall.py index f78edec0823..3fd7ff8465f 100644 --- a/python/flatbuffers/reflection/RPCCall.py +++ b/python/flatbuffers/reflection/RPCCall.py @@ -40,7 +40,7 @@ def Request(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6)) if o != 0: x = self._tab.Indirect(o + self._tab.Pos) - from .reflection.Object import Object + from reflection.Object import Object obj = Object() obj.Init(self._tab.Bytes, x) return obj @@ -51,7 +51,7 @@ def Response(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8)) if o != 0: x = self._tab.Indirect(o + self._tab.Pos) - from .reflection.Object import Object + from reflection.Object import Object obj = Object() obj.Init(self._tab.Bytes, x) return obj @@ -64,7 +64,7 @@ def Attributes(self, j): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from .reflection.KeyValue import KeyValue + from reflection.KeyValue import KeyValue obj = KeyValue() obj.Init(self._tab.Bytes, x) return obj @@ -111,25 +111,25 @@ def Start(builder): def RPCCallAddName(builder, name): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) -def AddName(builder: flatbuffers.Builder, name: int): +def AddName(builder, name): RPCCallAddName(builder, name) def RPCCallAddRequest(builder, request): builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(request), 0) -def AddRequest(builder: flatbuffers.Builder, request: int): +def AddRequest(builder, request): RPCCallAddRequest(builder, request) def RPCCallAddResponse(builder, response): builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(response), 0) -def AddResponse(builder: flatbuffers.Builder, response: int): +def AddResponse(builder, response): RPCCallAddResponse(builder, response) def RPCCallAddAttributes(builder, attributes): builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(attributes), 0) -def AddAttributes(builder: flatbuffers.Builder, attributes: int): +def AddAttributes(builder, attributes): RPCCallAddAttributes(builder, attributes) def RPCCallStartAttributesVector(builder, numElems): @@ -141,7 +141,7 @@ def StartAttributesVector(builder, numElems: int) -> int: def RPCCallAddDocumentation(builder, documentation): builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(documentation), 0) -def AddDocumentation(builder: flatbuffers.Builder, documentation: int): +def AddDocumentation(builder, documentation): RPCCallAddDocumentation(builder, documentation) def RPCCallStartDocumentationVector(builder, numElems): diff --git a/python/flatbuffers/reflection/Schema.py b/python/flatbuffers/reflection/Schema.py index 06df1a041ce..61ebb196e5e 100644 --- a/python/flatbuffers/reflection/Schema.py +++ b/python/flatbuffers/reflection/Schema.py @@ -35,7 +35,7 @@ def Objects(self, j): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from .reflection.Object import Object + from reflection.Object import Object obj = Object() obj.Init(self._tab.Bytes, x) return obj @@ -60,7 +60,7 @@ def Enums(self, j): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from .reflection.Enum import Enum + from reflection.Enum import Enum obj = Enum() obj.Init(self._tab.Bytes, x) return obj @@ -97,7 +97,7 @@ def RootTable(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(12)) if o != 0: x = self._tab.Indirect(o + self._tab.Pos) - from .reflection.Object import Object + from reflection.Object import Object obj = Object() obj.Init(self._tab.Bytes, x) return obj @@ -110,7 +110,7 @@ def Services(self, j): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from .reflection.Service import Service + from reflection.Service import Service obj = Service() obj.Init(self._tab.Bytes, x) return obj @@ -144,7 +144,7 @@ def FbsFiles(self, j): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from .reflection.SchemaFile import SchemaFile + from reflection.SchemaFile import SchemaFile obj = SchemaFile() obj.Init(self._tab.Bytes, x) return obj @@ -171,7 +171,7 @@ def Start(builder): def SchemaAddObjects(builder, objects): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(objects), 0) -def AddObjects(builder: flatbuffers.Builder, objects: int): +def AddObjects(builder, objects): SchemaAddObjects(builder, objects) def SchemaStartObjectsVector(builder, numElems): @@ -183,7 +183,7 @@ def StartObjectsVector(builder, numElems: int) -> int: def SchemaAddEnums(builder, enums): builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(enums), 0) -def AddEnums(builder: flatbuffers.Builder, enums: int): +def AddEnums(builder, enums): SchemaAddEnums(builder, enums) def SchemaStartEnumsVector(builder, numElems): @@ -195,25 +195,25 @@ def StartEnumsVector(builder, numElems: int) -> int: def SchemaAddFileIdent(builder, fileIdent): builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(fileIdent), 0) -def AddFileIdent(builder: flatbuffers.Builder, fileIdent: int): +def AddFileIdent(builder, fileIdent): SchemaAddFileIdent(builder, fileIdent) def SchemaAddFileExt(builder, fileExt): builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(fileExt), 0) -def AddFileExt(builder: flatbuffers.Builder, fileExt: int): +def AddFileExt(builder, fileExt): SchemaAddFileExt(builder, fileExt) def SchemaAddRootTable(builder, rootTable): builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(rootTable), 0) -def AddRootTable(builder: flatbuffers.Builder, rootTable: int): +def AddRootTable(builder, rootTable): SchemaAddRootTable(builder, rootTable) def SchemaAddServices(builder, services): builder.PrependUOffsetTRelativeSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(services), 0) -def AddServices(builder: flatbuffers.Builder, services: int): +def AddServices(builder, services): SchemaAddServices(builder, services) def SchemaStartServicesVector(builder, numElems): @@ -225,13 +225,13 @@ def StartServicesVector(builder, numElems: int) -> int: def SchemaAddAdvancedFeatures(builder, advancedFeatures): builder.PrependUint64Slot(6, advancedFeatures, 0) -def AddAdvancedFeatures(builder: flatbuffers.Builder, advancedFeatures: int): +def AddAdvancedFeatures(builder, advancedFeatures): SchemaAddAdvancedFeatures(builder, advancedFeatures) def SchemaAddFbsFiles(builder, fbsFiles): builder.PrependUOffsetTRelativeSlot(7, flatbuffers.number_types.UOffsetTFlags.py_type(fbsFiles), 0) -def AddFbsFiles(builder: flatbuffers.Builder, fbsFiles: int): +def AddFbsFiles(builder, fbsFiles): SchemaAddFbsFiles(builder, fbsFiles) def SchemaStartFbsFilesVector(builder, numElems): diff --git a/python/flatbuffers/reflection/SchemaFile.py b/python/flatbuffers/reflection/SchemaFile.py index 009e7f2f01c..a81bcd5dbf9 100644 --- a/python/flatbuffers/reflection/SchemaFile.py +++ b/python/flatbuffers/reflection/SchemaFile.py @@ -69,13 +69,13 @@ def Start(builder): def SchemaFileAddFilename(builder, filename): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(filename), 0) -def AddFilename(builder: flatbuffers.Builder, filename: int): +def AddFilename(builder, filename): SchemaFileAddFilename(builder, filename) def SchemaFileAddIncludedFilenames(builder, includedFilenames): builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(includedFilenames), 0) -def AddIncludedFilenames(builder: flatbuffers.Builder, includedFilenames: int): +def AddIncludedFilenames(builder, includedFilenames): SchemaFileAddIncludedFilenames(builder, includedFilenames) def SchemaFileStartIncludedFilenamesVector(builder, numElems): diff --git a/python/flatbuffers/reflection/Service.py b/python/flatbuffers/reflection/Service.py index eb8db7ef8d3..e69e531f551 100644 --- a/python/flatbuffers/reflection/Service.py +++ b/python/flatbuffers/reflection/Service.py @@ -42,7 +42,7 @@ def Calls(self, j): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from .reflection.RPCCall import RPCCall + from reflection.RPCCall import RPCCall obj = RPCCall() obj.Init(self._tab.Bytes, x) return obj @@ -67,7 +67,7 @@ def Attributes(self, j): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from .reflection.KeyValue import KeyValue + from reflection.KeyValue import KeyValue obj = KeyValue() obj.Init(self._tab.Bytes, x) return obj @@ -122,13 +122,13 @@ def Start(builder): def ServiceAddName(builder, name): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) -def AddName(builder: flatbuffers.Builder, name: int): +def AddName(builder, name): ServiceAddName(builder, name) def ServiceAddCalls(builder, calls): builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(calls), 0) -def AddCalls(builder: flatbuffers.Builder, calls: int): +def AddCalls(builder, calls): ServiceAddCalls(builder, calls) def ServiceStartCallsVector(builder, numElems): @@ -140,7 +140,7 @@ def StartCallsVector(builder, numElems: int) -> int: def ServiceAddAttributes(builder, attributes): builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(attributes), 0) -def AddAttributes(builder: flatbuffers.Builder, attributes: int): +def AddAttributes(builder, attributes): ServiceAddAttributes(builder, attributes) def ServiceStartAttributesVector(builder, numElems): @@ -152,7 +152,7 @@ def StartAttributesVector(builder, numElems: int) -> int: def ServiceAddDocumentation(builder, documentation): builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(documentation), 0) -def AddDocumentation(builder: flatbuffers.Builder, documentation: int): +def AddDocumentation(builder, documentation): ServiceAddDocumentation(builder, documentation) def ServiceStartDocumentationVector(builder, numElems): @@ -164,7 +164,7 @@ def StartDocumentationVector(builder, numElems: int) -> int: def ServiceAddDeclarationFile(builder, declarationFile): builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(declarationFile), 0) -def AddDeclarationFile(builder: flatbuffers.Builder, declarationFile: int): +def AddDeclarationFile(builder, declarationFile): ServiceAddDeclarationFile(builder, declarationFile) def ServiceEnd(builder): diff --git a/python/flatbuffers/reflection/Type.py b/python/flatbuffers/reflection/Type.py index 76c08c48acb..49c78a3d9a7 100644 --- a/python/flatbuffers/reflection/Type.py +++ b/python/flatbuffers/reflection/Type.py @@ -81,37 +81,37 @@ def Start(builder): def TypeAddBaseType(builder, baseType): builder.PrependInt8Slot(0, baseType, 0) -def AddBaseType(builder: flatbuffers.Builder, baseType: int): +def AddBaseType(builder, baseType): TypeAddBaseType(builder, baseType) def TypeAddElement(builder, element): builder.PrependInt8Slot(1, element, 0) -def AddElement(builder: flatbuffers.Builder, element: int): +def AddElement(builder, element): TypeAddElement(builder, element) def TypeAddIndex(builder, index): builder.PrependInt32Slot(2, index, -1) -def AddIndex(builder: flatbuffers.Builder, index: int): +def AddIndex(builder, index): TypeAddIndex(builder, index) def TypeAddFixedLength(builder, fixedLength): builder.PrependUint16Slot(3, fixedLength, 0) -def AddFixedLength(builder: flatbuffers.Builder, fixedLength: int): +def AddFixedLength(builder, fixedLength): TypeAddFixedLength(builder, fixedLength) def TypeAddBaseSize(builder, baseSize): builder.PrependUint32Slot(4, baseSize, 4) -def AddBaseSize(builder: flatbuffers.Builder, baseSize: int): +def AddBaseSize(builder, baseSize): TypeAddBaseSize(builder, baseSize) def TypeAddElementSize(builder, elementSize): builder.PrependUint32Slot(5, elementSize, 0) -def AddElementSize(builder: flatbuffers.Builder, elementSize: int): +def AddElementSize(builder, elementSize): TypeAddElementSize(builder, elementSize) def TypeEnd(builder): diff --git a/python/setup.py b/python/setup.py index 29b8cfe3c93..9f14512397d 100644 --- a/python/setup.py +++ b/python/setup.py @@ -16,7 +16,7 @@ setup( name='flatbuffers', - version='23.5.9', + version='23.5.26', license='Apache 2.0', license_files='../LICENSE', author='Derek Bailey', diff --git a/rust/flatbuffers/Cargo.toml b/rust/flatbuffers/Cargo.toml index 1735d67a13e..d56292ee3e0 100644 --- a/rust/flatbuffers/Cargo.toml +++ b/rust/flatbuffers/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "flatbuffers" -version = "23.5.9" +version = "23.5.26" edition = "2018" authors = ["Robert Winslow ", "FlatBuffers Maintainers"] license = "Apache-2.0" diff --git a/samples/monster_generated.h b/samples/monster_generated.h index f528a1f1209..b1ea1c4f1f2 100644 --- a/samples/monster_generated.h +++ b/samples/monster_generated.h @@ -10,7 +10,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); namespace MyGame { diff --git a/samples/monster_generated.swift b/samples/monster_generated.swift index 3def1e6d31d..1790dde5ac6 100644 --- a/samples/monster_generated.swift +++ b/samples/monster_generated.swift @@ -36,7 +36,7 @@ public enum MyGame_Sample_Equipment: UInt8, UnionEnum { public struct MyGame_Sample_Vec3: NativeStruct, Verifiable, FlatbuffersInitializable { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } private var _x: Float32 private var _y: Float32 @@ -72,7 +72,7 @@ public struct MyGame_Sample_Vec3: NativeStruct, Verifiable, FlatbuffersInitializ public struct MyGame_Sample_Vec3_Mutable: FlatBufferObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Struct @@ -88,7 +88,7 @@ public struct MyGame_Sample_Vec3_Mutable: FlatBufferObject { public struct MyGame_Sample_Monster: FlatBufferObject, Verifiable { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table @@ -200,7 +200,7 @@ public struct MyGame_Sample_Monster: FlatBufferObject, Verifiable { public struct MyGame_Sample_Weapon: FlatBufferObject, Verifiable { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table diff --git a/samples/sample_bfbs.cpp b/samples/sample_bfbs.cpp index c0017bea320..1178b0efc4a 100644 --- a/samples/sample_bfbs.cpp +++ b/samples/sample_bfbs.cpp @@ -59,13 +59,13 @@ int main(int /*argc*/, const char * /*argv*/[]) { // to ensure it is correct, we now generate text back from the binary, // and compare the two: std::string jsongen1; - if (GenerateText(parser1, parser1.builder_.GetBufferPointer(), &jsongen1)) { + if (GenText(parser1, parser1.builder_.GetBufferPointer(), &jsongen1)) { printf("Couldn't serialize parsed data to JSON!\n"); return 1; } std::string jsongen2; - if (GenerateText(parser2, parser2.builder_.GetBufferPointer(), &jsongen2)) { + if (GenText(parser2, parser2.builder_.GetBufferPointer(), &jsongen2)) { printf("Couldn't serialize parsed data to JSON!\n"); return 1; } diff --git a/samples/sample_text.cpp b/samples/sample_text.cpp index 8580b523d3e..fb42563b07e 100644 --- a/samples/sample_text.cpp +++ b/samples/sample_text.cpp @@ -45,7 +45,7 @@ int main(int /*argc*/, const char * /*argv*/[]) { // to ensure it is correct, we now generate text back from the binary, // and compare the two: std::string jsongen; - if (GenerateText(parser, parser.builder_.GetBufferPointer(), &jsongen)) { + if (GenText(parser, parser.builder_.GetBufferPointer(), &jsongen)) { printf("Couldn't serialize parsed data to JSON!\n"); return 1; } diff --git a/scripts/generate_code.py b/scripts/generate_code.py index 57af85ca56e..772cdf4744c 100755 --- a/scripts/generate_code.py +++ b/scripts/generate_code.py @@ -339,6 +339,12 @@ def glob(path, pattern): schema="arrays_test.fbs", ) +flatc( + RUST_OPTS, + prefix="rust_namer_test", + schema="rust_namer_test.fbs", +) + flatc( BASE_OPTS + PYTHON_OPTS, schema="arrays_test.fbs", diff --git a/src/BUILD.bazel b/src/BUILD.bazel index 9971892e975..1084e76b09c 100644 --- a/src/BUILD.bazel +++ b/src/BUILD.bazel @@ -125,8 +125,6 @@ cc_library( "idl_gen_kotlin.h", "idl_gen_lobster.cpp", "idl_gen_lobster.h", - "idl_gen_lua.cpp", - "idl_gen_lua.h", "idl_gen_php.cpp", "idl_gen_php.h", "idl_gen_python.cpp", diff --git a/src/bfbs_gen.h b/src/bfbs_gen.h index ed20dc8965e..c1beb0247ed 100644 --- a/src/bfbs_gen.h +++ b/src/bfbs_gen.h @@ -101,15 +101,15 @@ class BaseBfbsGenerator : public CodeGenerator { virtual ~BaseBfbsGenerator() {} BaseBfbsGenerator() : schema_(nullptr) {} - virtual Status GenerateFromSchema( - const reflection::Schema *schema) = 0; + virtual Status GenerateFromSchema(const reflection::Schema *schema, + const CodeGenOptions &options) = 0; virtual uint64_t SupportedAdvancedFeatures() const = 0; // Override of the Generator::GenerateCode method that does the initial // deserialization and verification steps. - Status GenerateCode(const uint8_t *buffer, - int64_t length) FLATBUFFERS_OVERRIDE { + Status GenerateCode(const uint8_t *buffer, int64_t length, + const CodeGenOptions &options) FLATBUFFERS_OVERRIDE { flatbuffers::Verifier verifier(buffer, static_cast(length)); if (!reflection::VerifySchemaBuffer(verifier)) { return FAILED_VERIFICATION; @@ -124,7 +124,7 @@ class BaseBfbsGenerator : public CodeGenerator { return FAILED_VERIFICATION; } - Status status = GenerateFromSchema(schema_); + Status status = GenerateFromSchema(schema_, options); schema_ = nullptr; return status; } diff --git a/src/bfbs_gen_lua.cpp b/src/bfbs_gen_lua.cpp index 8823d912b17..185e859620a 100644 --- a/src/bfbs_gen_lua.cpp +++ b/src/bfbs_gen_lua.cpp @@ -28,6 +28,7 @@ #include "bfbs_namer.h" // The intermediate representation schema. +#include "flatbuffers/code_generator.h" #include "flatbuffers/reflection.h" #include "flatbuffers/reflection_generated.h" @@ -78,7 +79,10 @@ class LuaBfbsGenerator : public BaseBfbsGenerator { flatc_version_(flatc_version), namer_(LuaDefaultConfig(), LuaKeywords()) {} - Status GenerateFromSchema(const r::Schema *schema) FLATBUFFERS_OVERRIDE { + Status GenerateFromSchema(const r::Schema *schema, + const CodeGenOptions &options) + FLATBUFFERS_OVERRIDE { + options_ = options; if (!GenerateEnums(schema->enums())) { return ERROR; } if (!GenerateObjects(schema->objects(), schema->root_table())) { return ERROR; @@ -88,10 +92,9 @@ class LuaBfbsGenerator : public BaseBfbsGenerator { using BaseBfbsGenerator::GenerateCode; - Status GenerateCode(const Parser &parser, const std::string &path, - const std::string &filename) FLATBUFFERS_OVERRIDE { - if (!GenerateLua(parser, path, filename)) { return ERROR; } - return OK; + Status GenerateCode(const Parser &, const std::string &, + const std::string &) override { + return Status::NOT_IMPLEMENTED; } Status GenerateMakeRule(const Parser &parser, const std::string &path, @@ -653,12 +656,15 @@ class LuaBfbsGenerator : public BaseBfbsGenerator { // TODO(derekbailey): figure out a save file without depending on util.h EnsureDirExists(path); - const std::string file_name = path + "/" + namer_.File(name); + const std::string file_name = + options_.output_path + path + "/" + namer_.File(name); SaveFile(file_name.c_str(), code, false); } std::unordered_set keywords_; std::map requires_; + CodeGenOptions options_; + const r::Object *current_obj_; const r::Enum *current_enum_; const std::string flatc_version_; diff --git a/src/bfbs_gen_nim.cpp b/src/bfbs_gen_nim.cpp index 45bd3c33d41..a8f4ee0c740 100644 --- a/src/bfbs_gen_nim.cpp +++ b/src/bfbs_gen_nim.cpp @@ -28,6 +28,7 @@ #include "bfbs_namer.h" // The intermediate representation schema. +#include "flatbuffers/code_generator.h" #include "flatbuffers/reflection.h" #include "flatbuffers/reflection_generated.h" @@ -95,7 +96,10 @@ class NimBfbsGenerator : public BaseBfbsGenerator { flatc_version_(flatc_version), namer_(NimDefaultConfig(), NimKeywords()) {} - Status GenerateFromSchema(const r::Schema *schema) FLATBUFFERS_OVERRIDE { + Status GenerateFromSchema(const r::Schema *schema, + const CodeGenOptions &options) + FLATBUFFERS_OVERRIDE { + options_ = options; ForAllEnums(schema->enums(), [&](const r::Enum *enum_def) { StartCodeBlock(enum_def); GenerateEnum(enum_def); @@ -671,12 +675,15 @@ class NimBfbsGenerator : public BaseBfbsGenerator { // TODO(derekbailey): figure out a save file without depending on util.h EnsureDirExists(path); - const std::string file_name = path + "/" + namer_.File(name); + const std::string file_name = + options_.output_path + path + "/" + namer_.File(name); SaveFile(file_name.c_str(), code, false); } std::unordered_set keywords_; std::map imports_; + CodeGenOptions options_; + const r::Object *current_obj_; const r::Enum *current_enum_; const std::string flatc_version_; diff --git a/src/code_generators.cpp b/src/code_generators.cpp index c5efb222b1c..6a542103ab3 100644 --- a/src/code_generators.cpp +++ b/src/code_generators.cpp @@ -30,9 +30,7 @@ namespace flatbuffers { -namespace { - -static std::string JavaCSharpMakeRule(const bool java, const Parser &parser, +std::string JavaCSharpMakeRule(const bool java, const Parser &parser, const std::string &path, const std::string &file_name) { const std::string file_extension = java ? ".java" : ".cs"; @@ -64,18 +62,6 @@ static std::string JavaCSharpMakeRule(const bool java, const Parser &parser, return make_rule; } - -static std::string BinaryFileName(const Parser &parser, const std::string &path, - const std::string &file_name) { - auto ext = parser.file_extension_.length() ? parser.file_extension_ : "bin"; - return path + file_name + "." + ext; -} - -} // namespace - - - - void CodeWriter::operator+=(std::string text) { if (!ignore_ident_ && !text.empty()) AppendIdent(stream_); @@ -346,48 +332,6 @@ std::string SimpleFloatConstantGenerator::NaN(float v) const { return this->NaN(static_cast(v)); } - -std::string JavaMakeRule(const Parser &parser, const std::string &path, - const std::string &file_name) { - return JavaCSharpMakeRule(true, parser, path, file_name); -} -std::string CSharpMakeRule(const Parser &parser, const std::string &path, - const std::string &file_name) { - return JavaCSharpMakeRule(false, parser, path, file_name); -} - -bool GenerateBinary(const Parser &parser, const std::string &path, - const std::string &file_name) { - if (parser.opts.use_flexbuffers) { - auto data_vec = parser.flex_builder_.GetBuffer(); - auto data_ptr = reinterpret_cast(data(data_vec)); - return !parser.flex_builder_.GetSize() || - flatbuffers::SaveFile( - BinaryFileName(parser, path, file_name).c_str(), data_ptr, - parser.flex_builder_.GetSize(), true); - } - return !parser.builder_.GetSize() || - flatbuffers::SaveFile( - BinaryFileName(parser, path, file_name).c_str(), - reinterpret_cast(parser.builder_.GetBufferPointer()), - parser.builder_.GetSize(), true); -} - -std::string BinaryMakeRule(const Parser &parser, const std::string &path, - const std::string &file_name) { - if (!parser.builder_.GetSize()) return ""; - std::string filebase = - flatbuffers::StripPath(flatbuffers::StripExtension(file_name)); - std::string make_rule = - BinaryFileName(parser, path, filebase) + ": " + file_name; - auto included_files = - parser.GetIncludedFilesRecursive(parser.root_struct_def_->file); - for (auto it = included_files.begin(); it != included_files.end(); ++it) { - make_rule += " " + *it; - } - return make_rule; -} - } // namespace flatbuffers #if defined(_MSC_VER) diff --git a/src/file_name_saving_file_manager.cpp b/src/file_name_saving_file_manager.cpp index fc4a4aa1ec7..b43c7b6eb09 100644 --- a/src/file_name_saving_file_manager.cpp +++ b/src/file_name_saving_file_manager.cpp @@ -37,8 +37,8 @@ class FileNameSavingFileManager : public FileManager { } bool Loadfile(const std::string &absolute_file_name, std::string *content) { - (void) absolute_file_name; - (void) content; + (void)absolute_file_name; + (void)content; return false; } diff --git a/src/flatc.cpp b/src/flatc.cpp index a1501712e59..202c3d644a5 100644 --- a/src/flatc.cpp +++ b/src/flatc.cpp @@ -866,8 +866,11 @@ std::unique_ptr FlatCompiler::GenerateCode(const FlatCOptions &options, // Prefer bfbs generators if present. if (code_generator->SupportsBfbsGeneration()) { - const CodeGenerator::Status status = - code_generator->GenerateCode(bfbs_buffer, bfbs_length); + CodeGenOptions code_gen_options; + code_gen_options.output_path = options.output_path; + + const CodeGenerator::Status status = code_generator->GenerateCode( + bfbs_buffer, bfbs_length, code_gen_options); if (status != CodeGenerator::Status::OK) { Error("Unable to generate " + code_generator->LanguageName() + " for " + filebase + code_generator->status_detail + @@ -968,7 +971,7 @@ int FlatCompiler::Compile(const FlatCOptions &options) { return 0; } - if (options.generators.empty()) { + if (options.generators.empty() && options.conform_to_schema.empty()) { Error("No generator registered"); return -1; } diff --git a/src/idl_gen_binary.cpp b/src/idl_gen_binary.cpp index feb4e2f55e7..7ed0a99ca6e 100644 --- a/src/idl_gen_binary.cpp +++ b/src/idl_gen_binary.cpp @@ -31,9 +31,46 @@ #include "flatbuffers/util.h" namespace flatbuffers { - namespace { +static std::string BinaryFileName(const Parser &parser, const std::string &path, + const std::string &file_name) { + auto ext = parser.file_extension_.length() ? parser.file_extension_ : "bin"; + return path + file_name + "." + ext; +} + +static bool GenerateBinary(const Parser &parser, const std::string &path, + const std::string &file_name) { + if (parser.opts.use_flexbuffers) { + auto data_vec = parser.flex_builder_.GetBuffer(); + auto data_ptr = reinterpret_cast(data(data_vec)); + return !parser.flex_builder_.GetSize() || + flatbuffers::SaveFile( + BinaryFileName(parser, path, file_name).c_str(), data_ptr, + parser.flex_builder_.GetSize(), true); + } + return !parser.builder_.GetSize() || + flatbuffers::SaveFile( + BinaryFileName(parser, path, file_name).c_str(), + reinterpret_cast(parser.builder_.GetBufferPointer()), + parser.builder_.GetSize(), true); +} + +static std::string BinaryMakeRule(const Parser &parser, const std::string &path, + const std::string &file_name) { + if (!parser.builder_.GetSize()) return ""; + std::string filebase = + flatbuffers::StripPath(flatbuffers::StripExtension(file_name)); + std::string make_rule = + BinaryFileName(parser, path, filebase) + ": " + file_name; + auto included_files = + parser.GetIncludedFilesRecursive(parser.root_struct_def_->file); + for (auto it = included_files.begin(); it != included_files.end(); ++it) { + make_rule += " " + *it; + } + return make_rule; +} + class BinaryCodeGenerator : public CodeGenerator { public: Status GenerateCode(const Parser &parser, const std::string &path, @@ -44,9 +81,8 @@ class BinaryCodeGenerator : public CodeGenerator { // Generate code from the provided `buffer` of given `length`. The buffer is a // serialized reflection.fbs. - Status GenerateCode(const uint8_t *buffer, int64_t length) override { - (void)buffer; - (void)length; + Status GenerateCode(const uint8_t *, int64_t, + const CodeGenOptions &) override { return Status::NOT_IMPLEMENTED; } diff --git a/src/idl_gen_cpp.cpp b/src/idl_gen_cpp.cpp index b5199062a5b..b602724f92c 100644 --- a/src/idl_gen_cpp.cpp +++ b/src/idl_gen_cpp.cpp @@ -377,10 +377,8 @@ class CppGenerator : public BaseGenerator { code_ += "#pragma clang system_header\n\n"; } - code_ += "#include \"flatbuffers/flatbuffers.h\""; - code_ += ""; - GenFlatbuffersVersionCheck(); - code_ += ""; + code_ += "#include "; + code_ += "#include "; SetNameSpace(struct_def.defined_namespace); auto name = Name(struct_def); @@ -779,7 +777,12 @@ class CppGenerator : public BaseGenerator { if (type.enum_def) return WrapInNameSpace(*type.enum_def); if (type.base_type == BASE_TYPE_BOOL) return "bool"; } - return StringOf(type.base_type); + // Get real underlying type for union type + auto base_type = type.base_type; + if (type.base_type == BASE_TYPE_UTYPE && type.enum_def != nullptr) { + base_type = type.enum_def->underlying_type.base_type; + } + return StringOf(base_type); } // Return a C++ pointer type, specialized to the actual struct/table types, @@ -1048,7 +1051,7 @@ class CppGenerator : public BaseGenerator { std::string UnionVectorVerifySignature(const EnumDef &enum_def) { const std::string name = Name(enum_def); - const std::string &type = opts_.scoped_enums ? name : "uint8_t"; + const std::string &type = opts_.scoped_enums ? name : GenTypeBasic(enum_def.underlying_type, false); return "bool Verify" + name + "Vector" + "(::flatbuffers::Verifier &verifier, " + "const ::flatbuffers::Vector<::flatbuffers::Offset> " @@ -3496,12 +3499,13 @@ class CppGenerator : public BaseGenerator { } case BASE_TYPE_UTYPE: { value = StripUnionType(value); + auto underlying_type = GenTypeBasic(vector_type, false); const std::string &type = opts_.scoped_enums ? Name(*field.value.type.enum_def) - : "uint8_t"; + : underlying_type; auto enum_value = "__va->_" + value + "[i].type"; if (!opts_.scoped_enums) - enum_value = "static_cast(" + enum_value + ")"; + enum_value = "static_cast<" + underlying_type + ">(" + enum_value + ")"; code += "_fbb.CreateVector<" + type + ">(" + value + ".size(), [](size_t i, _VectorArgs *__va) { return " + @@ -4066,8 +4070,8 @@ class CppGenerator : public BaseGenerator { } // namespace cpp -bool GenerateCPP(const Parser &parser, const std::string &path, - const std::string &file_name) { +static bool GenerateCPP(const Parser &parser, const std::string &path, + const std::string &file_name) { cpp::IDLOptionsCpp opts(parser.opts); // The '--cpp_std' argument could be extended (like ASAN): // Example: "flatc --cpp_std c++17:option1:option2". @@ -4105,8 +4109,8 @@ bool GenerateCPP(const Parser &parser, const std::string &path, return generator.generate(); } -std::string CPPMakeRule(const Parser &parser, const std::string &path, - const std::string &file_name) { +static std::string CPPMakeRule(const Parser &parser, const std::string &path, + const std::string &file_name) { const auto filebase = StripPath(StripExtension(file_name)); cpp::CppGenerator geneartor(parser, path, file_name, parser.opts); const auto included_files = parser.GetIncludedFilesRecursive(file_name); @@ -4130,9 +4134,8 @@ class CppCodeGenerator : public CodeGenerator { // Generate code from the provided `buffer` of given `length`. The buffer is a // serialized reflection.fbs. - Status GenerateCode(const uint8_t *buffer, int64_t length) override { - (void)buffer; - (void)length; + Status GenerateCode(const uint8_t *, int64_t, + const CodeGenOptions &) override { return Status::NOT_IMPLEMENTED; } diff --git a/src/idl_gen_csharp.cpp b/src/idl_gen_csharp.cpp index 0dbcd4b927f..369460d7308 100644 --- a/src/idl_gen_csharp.cpp +++ b/src/idl_gen_csharp.cpp @@ -625,7 +625,8 @@ class CSharpGenerator : public BaseGenerator { } // Get the value of a table verification function start - void GetStartOfTableVerifier(const StructDef &struct_def, std::string *code_ptr) { + void GetStartOfTableVerifier(const StructDef &struct_def, + std::string *code_ptr) { std::string &code = *code_ptr; code += "\n"; code += "static public class " + struct_def.name + "Verify\n"; @@ -645,17 +646,18 @@ class CSharpGenerator : public BaseGenerator { } std::string GetNestedFlatBufferName(const FieldDef &field) { - std::string name; + std::string name; if (field.nested_flatbuffer) { name = NamespacedName(*field.nested_flatbuffer); } else { name = ""; } - return name ; + return name; } // Generate the code to call the appropriate Verify function(s) for a field. - void GenVerifyCall(CodeWriter &code_, const FieldDef &field, const char *prefix) { + void GenVerifyCall(CodeWriter &code_, const FieldDef &field, + const char *prefix) { code_.SetValue("PRE", prefix); code_.SetValue("NAME", ConvertCase(field.name, Case::kUpperCamel)); code_.SetValue("REQUIRED", field.IsRequired() ? "Required" : ""); @@ -663,14 +665,16 @@ class CSharpGenerator : public BaseGenerator { code_.SetValue("TYPE", GenTypeGet(field.value.type)); code_.SetValue("INLINESIZE", NumToString(InlineSize(field.value.type))); code_.SetValue("OFFSET", NumToString(field.value.offset)); - + if (IsScalar(field.value.type.base_type) || IsStruct(field.value.type)) { code_.SetValue("ALIGN", NumToString(InlineAlignment(field.value.type))); code_ += - "{{PRE}} && verifier.VerifyField(tablePos, " - "{{OFFSET}} /*{{NAME}}*/, {{INLINESIZE}} /*{{TYPE}}*/, {{ALIGN}}, {{REQUIRED_FLAG}})"; + "{{PRE}} && verifier.VerifyField(tablePos, " + "{{OFFSET}} /*{{NAME}}*/, {{INLINESIZE}} /*{{TYPE}}*/, {{ALIGN}}, " + "{{REQUIRED_FLAG}})"; } else { - // TODO - probably code below should go to this 'else' - code_ += "{{PRE}}VerifyOffset{{REQUIRED}}(verifier, {{OFFSET}})\\"; + // TODO - probably code below should go to this 'else' - code_ += + // "{{PRE}}VerifyOffset{{REQUIRED}}(verifier, {{OFFSET}})\\"; } switch (field.value.type.base_type) { @@ -679,37 +683,47 @@ class CSharpGenerator : public BaseGenerator { code_.SetValue("ENUM_NAME1", field.value.type.enum_def->name); code_.SetValue("ENUM_NAME", union_name); code_.SetValue("SUFFIX", UnionTypeFieldSuffix()); - // Caution: This construction assumes, that UNION type id element has been created just before union data and - // its offset precedes union. Such assumption is common in flatbuffer implementation - code_.SetValue("TYPE_ID_OFFSET", NumToString(field.value.offset - sizeof(voffset_t))); - code_ += "{{PRE}} && verifier.VerifyUnion(tablePos, {{TYPE_ID_OFFSET}}, " - "{{OFFSET}} /*{{NAME}}*/, {{ENUM_NAME}}Verify.Verify, {{REQUIRED_FLAG}})"; + // Caution: This construction assumes, that UNION type id element has + // been created just before union data and its offset precedes union. + // Such assumption is common in flatbuffer implementation + code_.SetValue("TYPE_ID_OFFSET", + NumToString(field.value.offset - sizeof(voffset_t))); + code_ += + "{{PRE}} && verifier.VerifyUnion(tablePos, " + "{{TYPE_ID_OFFSET}}, " + "{{OFFSET}} /*{{NAME}}*/, {{ENUM_NAME}}Verify.Verify, " + "{{REQUIRED_FLAG}})"; break; } case BASE_TYPE_STRUCT: { if (!field.value.type.struct_def->fixed) { - code_ += "{{PRE}} && verifier.VerifyTable(tablePos, " - "{{OFFSET}} /*{{NAME}}*/, {{TYPE}}Verify.Verify, {{REQUIRED_FLAG}})"; + code_ += + "{{PRE}} && verifier.VerifyTable(tablePos, " + "{{OFFSET}} /*{{NAME}}*/, {{TYPE}}Verify.Verify, " + "{{REQUIRED_FLAG}})"; } break; } case BASE_TYPE_STRING: { - code_ += "{{PRE}} && verifier.VerifyString(tablePos, " - "{{OFFSET}} /*{{NAME}}*/, {{REQUIRED_FLAG}})"; + code_ += + "{{PRE}} && verifier.VerifyString(tablePos, " + "{{OFFSET}} /*{{NAME}}*/, {{REQUIRED_FLAG}})"; break; } case BASE_TYPE_VECTOR: { - switch (field.value.type.element) { case BASE_TYPE_STRING: { - code_ += "{{PRE}} && verifier.VerifyVectorOfStrings(tablePos, " - "{{OFFSET}} /*{{NAME}}*/, {{REQUIRED_FLAG}})"; + code_ += + "{{PRE}} && verifier.VerifyVectorOfStrings(tablePos, " + "{{OFFSET}} /*{{NAME}}*/, {{REQUIRED_FLAG}})"; break; } case BASE_TYPE_STRUCT: { if (!field.value.type.struct_def->fixed) { - code_ += "{{PRE}} && verifier.VerifyVectorOfTables(tablePos, " - "{{OFFSET}} /*{{NAME}}*/, {{TYPE}}Verify.Verify, {{REQUIRED_FLAG}})"; + code_ += + "{{PRE}} && verifier.VerifyVectorOfTables(tablePos, " + "{{OFFSET}} /*{{NAME}}*/, {{TYPE}}Verify.Verify, " + "{{REQUIRED_FLAG}})"; } else { code_.SetValue( "VECTOR_ELEM_INLINESIZE", @@ -733,16 +747,22 @@ class CSharpGenerator : public BaseGenerator { if (!nfn.empty()) { code_.SetValue("CPP_NAME", nfn); // FIXME: file_identifier. - code_ += "{{PRE}} && verifier.VerifyNestedBuffer(tablePos, " - "{{OFFSET}} /*{{NAME}}*/, {{CPP_NAME}}Verify.Verify, {{REQUIRED_FLAG}})"; + code_ += + "{{PRE}} && verifier.VerifyNestedBuffer(tablePos, " + "{{OFFSET}} /*{{NAME}}*/, {{CPP_NAME}}Verify.Verify, " + "{{REQUIRED_FLAG}})"; } else if (field.flexbuffer) { - code_ += "{{PRE}} && verifier.VerifyNestedBuffer(tablePos, " - "{{OFFSET}} /*{{NAME}}*/, null, {{REQUIRED_FLAG}})"; + code_ += + "{{PRE}} && verifier.VerifyNestedBuffer(tablePos, " + "{{OFFSET}} /*{{NAME}}*/, null, {{REQUIRED_FLAG}})"; } else { - code_.SetValue("VECTOR_ELEM_INLINESIZE", NumToString(InlineSize(field.value.type.VectorType()))); + code_.SetValue( + "VECTOR_ELEM_INLINESIZE", + NumToString(InlineSize(field.value.type.VectorType()))); code_ += - "{{PRE}} && verifier.VerifyVectorOfData(tablePos, " - "{{OFFSET}} /*{{NAME}}*/, {{VECTOR_ELEM_INLINESIZE}} /*{{TYPE}}*/, {{REQUIRED_FLAG}})"; + "{{PRE}} && verifier.VerifyVectorOfData(tablePos, " + "{{OFFSET}} /*{{NAME}}*/, {{VECTOR_ELEM_INLINESIZE}} " + "/*{{TYPE}}*/, {{REQUIRED_FLAG}})"; } break; } @@ -758,7 +778,7 @@ class CSharpGenerator : public BaseGenerator { // Generate table constructors, conditioned on its members' types. void GenTableVerifier(const StructDef &struct_def, std::string *code_ptr) { CodeWriter code_; - + GetStartOfTableVerifier(struct_def, code_ptr); // Generate struct fields accessors @@ -771,7 +791,7 @@ class CSharpGenerator : public BaseGenerator { } *code_ptr += code_.ToString(); - + GetEndOfTableVerifier(code_ptr); } @@ -787,7 +807,7 @@ class CSharpGenerator : public BaseGenerator { // verification - instead structure size is verified using VerifyField } else { // Create table verification function - GenTableVerifier(struct_def, code_ptr); + GenTableVerifier(struct_def, code_ptr); } } @@ -826,7 +846,7 @@ class CSharpGenerator : public BaseGenerator { // Force compile time error if not using the same version runtime. code += " public static void ValidateVersion() {"; code += " FlatBufferConstants."; - code += "FLATBUFFERS_23_5_9(); "; + code += "FLATBUFFERS_23_5_26(); "; code += "}\n"; // Generate a special accessor for the table that when used as the root @@ -1602,8 +1622,7 @@ class CSharpGenerator : public BaseGenerator { if (union_type.enum_def) { const auto &enum_def = *union_type.enum_def; - auto ret = - "\n\nstatic public class " + enum_def.name + "Verify\n"; + auto ret = "\n\nstatic public class " + enum_def.name + "Verify\n"; ret += "{\n"; ret += " static public bool Verify(Google.FlatBuffers.Verifier verifier, " @@ -1615,25 +1634,26 @@ class CSharpGenerator : public BaseGenerator { ret += " switch((" + enum_def.name + ")typeId)\n"; ret += " {\n"; - for (auto it = enum_def.Vals().begin(); it != enum_def.Vals().end(); ++it) { + for (auto it = enum_def.Vals().begin(); it != enum_def.Vals().end(); + ++it) { const auto &ev = **it; if (ev.IsZero()) { continue; } ret += " case " + Name(enum_def) + "." + Name(ev) + ":\n"; if (IsString(ev.union_type)) { - ret += - " result = verifier.VerifyUnionString(tablePos);\n"; + ret += " result = verifier.VerifyUnionString(tablePos);\n"; ret += " break;"; } else if (ev.union_type.base_type == BASE_TYPE_STRUCT) { - if (! ev.union_type.struct_def->fixed) { + if (!ev.union_type.struct_def->fixed) { auto type = GenTypeGet(ev.union_type); - ret += " result = " + type + "Verify.Verify(verifier, tablePos);\n"; + ret += " result = " + type + + "Verify.Verify(verifier, tablePos);\n"; } else { ret += " result = verifier.VerifyUnionData(tablePos, " + - NumToString(InlineSize(ev.union_type)) + ", " + - NumToString(InlineAlignment(ev.union_type)) + - ");\n";; + NumToString(InlineSize(ev.union_type)) + ", " + + NumToString(InlineAlignment(ev.union_type)) + ");\n"; + ; } ret += " break;"; } else { @@ -1676,7 +1696,7 @@ class CSharpGenerator : public BaseGenerator { // Type code += " public " + enum_def.name + " Type { get; set; }\n"; // Value - code += " public object " + class_member + " { get; set; }\n"; + code += " public object " + class_member + " { get; set; }\n"; code += "\n"; // Constructor code += " public " + union_name + "() {\n"; @@ -1736,7 +1756,7 @@ class CSharpGenerator : public BaseGenerator { code += "}\n\n"; code += GenUnionVerify(enum_def.underlying_type); - + // JsonConverter if (opts.cs_gen_json_serializer) { if (enum_def.attributes.Lookup("private")) { @@ -1773,7 +1793,7 @@ class CSharpGenerator : public BaseGenerator { " _o, " "Newtonsoft.Json.JsonSerializer serializer) {\n"; code += " if (_o == null) return;\n"; - code += " serializer.Serialize(writer, _o." + class_member + ");\n"; + code += " serializer.Serialize(writer, _o." + class_member + ");\n"; code += " }\n"; code += " public override object ReadJson(Newtonsoft.Json.JsonReader " @@ -2498,8 +2518,8 @@ class CSharpGenerator : public BaseGenerator { }; } // namespace csharp -bool GenerateCSharp(const Parser &parser, const std::string &path, - const std::string &file_name) { +static bool GenerateCSharp(const Parser &parser, const std::string &path, + const std::string &file_name) { csharp::CSharpGenerator generator(parser, path, file_name); return generator.generate(); } @@ -2514,16 +2534,15 @@ class CSharpCodeGenerator : public CodeGenerator { return Status::OK; } - Status GenerateCode(const uint8_t *buffer, int64_t length) override { - (void)buffer; - (void)length; + Status GenerateCode(const uint8_t *, int64_t, + const CodeGenOptions &) override { return Status::NOT_IMPLEMENTED; } Status GenerateMakeRule(const Parser &parser, const std::string &path, const std::string &filename, std::string &output) override { - output = CSharpMakeRule(parser, path, filename); + output = JavaCSharpMakeRule(false, parser, path, filename); return Status::OK; } diff --git a/src/idl_gen_dart.cpp b/src/idl_gen_dart.cpp index 299409bac2d..a4df1f4dfcb 100644 --- a/src/idl_gen_dart.cpp +++ b/src/idl_gen_dart.cpp @@ -90,8 +90,8 @@ class DartGenerator : public BaseGenerator { template void import_generator(const std::vector &definitions, - const std::string &included, - std::set &imports) { + const std::string &included, + std::set &imports) { for (const auto &item : definitions) { if (item->file == included) { std::string component = namer_.Namespace(*item->defined_namespace); @@ -760,9 +760,7 @@ class DartGenerator : public BaseGenerator { std::string getDefaultValue(const Value &value) const { if (!value.constant.empty() && value.constant != "0") { - if (IsBool(value.type.base_type)) { - return "true"; - } + if (IsBool(value.type.base_type)) { return "true"; } if (IsScalar(value.type.base_type)) { if (StringIsFlatbufferNan(value.constant)) { return "double.nan"; @@ -1124,14 +1122,14 @@ class DartGenerator : public BaseGenerator { }; } // namespace dart -bool GenerateDart(const Parser &parser, const std::string &path, - const std::string &file_name) { +static bool GenerateDart(const Parser &parser, const std::string &path, + const std::string &file_name) { dart::DartGenerator generator(parser, path, file_name); return generator.generate(); } -std::string DartMakeRule(const Parser &parser, const std::string &path, - const std::string &file_name) { +static std::string DartMakeRule(const Parser &parser, const std::string &path, + const std::string &file_name) { auto filebase = flatbuffers::StripPath(flatbuffers::StripExtension(file_name)); dart::DartGenerator generator(parser, path, file_name); @@ -1154,9 +1152,8 @@ class DartCodeGenerator : public CodeGenerator { return Status::OK; } - Status GenerateCode(const uint8_t *buffer, int64_t length) override { - (void)buffer; - (void)length; + Status GenerateCode(const uint8_t *, int64_t, + const CodeGenOptions &) override { return Status::NOT_IMPLEMENTED; } diff --git a/src/idl_gen_fbs.cpp b/src/idl_gen_fbs.cpp index f71c21f97d9..f9844854d44 100644 --- a/src/idl_gen_fbs.cpp +++ b/src/idl_gen_fbs.cpp @@ -28,6 +28,7 @@ #include "flatbuffers/util.h" namespace flatbuffers { +namespace { static std::string GenType(const Type &type, bool underlying = false) { switch (type.base_type) { @@ -252,8 +253,9 @@ static void GenNameSpace(const Namespace &name_space, std::string *_schema, } // Generate a flatbuffer schema from the Parser's internal representation. -std::string GenerateFBS(const Parser &parser, const std::string &file_name, - bool no_log = false) { +static std::string GenerateFBS(const Parser &parser, + const std::string &file_name, + bool no_log = false) { // Proto namespaces may clash with table names, escape the ones that were // generated from a table: for (auto it = parser.namespaces_.begin(); it != parser.namespaces_.end(); @@ -374,8 +376,8 @@ std::string GenerateFBS(const Parser &parser, const std::string &file_name, return schema; } -bool GenerateFBS(const Parser &parser, const std::string &path, - const std::string &file_name, bool no_log = false) { +static bool GenerateFBS(const Parser &parser, const std::string &path, + const std::string &file_name, bool no_log = false) { const std::string fbs = GenerateFBS(parser, file_name, no_log); if (fbs.empty()) { return false; } // TODO: Use LogCompilerWarn @@ -387,8 +389,6 @@ bool GenerateFBS(const Parser &parser, const std::string &path, return SaveFile((path + file_name + ".fbs").c_str(), fbs, false); } -namespace { - class FBSCodeGenerator : public CodeGenerator { public: explicit FBSCodeGenerator(const bool no_log) : no_log_(no_log) {} @@ -399,11 +399,16 @@ class FBSCodeGenerator : public CodeGenerator { return Status::OK; } + Status GenerateCodeString(const Parser &parser, const std::string &filename, + std::string &output) override { + output = GenerateFBS(parser, filename, no_log_); + return Status::OK; + } + // Generate code from the provided `buffer` of given `length`. The buffer is a // serialized reflection.fbs. - Status GenerateCode(const uint8_t *buffer, int64_t length) override { - (void)buffer; - (void)length; + Status GenerateCode(const uint8_t *, int64_t, + const CodeGenOptions &) override { return Status::NOT_IMPLEMENTED; } diff --git a/src/idl_gen_go.cpp b/src/idl_gen_go.cpp index 0f2882b7584..e1e84a0e585 100644 --- a/src/idl_gen_go.cpp +++ b/src/idl_gen_go.cpp @@ -1606,8 +1606,8 @@ class GoGenerator : public BaseGenerator { }; } // namespace go -bool GenerateGo(const Parser &parser, const std::string &path, - const std::string &file_name) { +static bool GenerateGo(const Parser &parser, const std::string &path, + const std::string &file_name) { go::GoGenerator generator(parser, path, file_name, parser.opts.go_namespace); return generator.generate(); } @@ -1622,9 +1622,8 @@ class GoCodeGenerator : public CodeGenerator { return Status::OK; } - Status GenerateCode(const uint8_t *buffer, int64_t length) override { - (void)buffer; - (void)length; + Status GenerateCode(const uint8_t *, int64_t, + const CodeGenOptions &) override { return Status::NOT_IMPLEMENTED; } diff --git a/src/idl_gen_java.cpp b/src/idl_gen_java.cpp index 34895ee9dcd..252c60f6d9e 100644 --- a/src/idl_gen_java.cpp +++ b/src/idl_gen_java.cpp @@ -69,9 +69,10 @@ static std::set JavaKeywords() { }; } -static const TypedFloatConstantGenerator JavaFloatGen("Double.", "Float.", "NaN", - "POSITIVE_INFINITY", - "NEGATIVE_INFINITY"); +static const TypedFloatConstantGenerator JavaFloatGen("Double.", "Float.", + "NaN", + "POSITIVE_INFINITY", + "NEGATIVE_INFINITY"); static const CommentConfig comment_config = { "/**", @@ -79,7 +80,7 @@ static const CommentConfig comment_config = { " */", }; -} // namespace +} // namespace class JavaGenerator : public BaseGenerator { struct FieldArrayLength { @@ -89,16 +90,15 @@ class JavaGenerator : public BaseGenerator { public: JavaGenerator(const Parser &parser, const std::string &path, - const std::string &file_name, - const std::string &package_prefix) + const std::string &file_name, const std::string &package_prefix) : BaseGenerator(parser, path, file_name, "", ".", "java"), - cur_name_space_(nullptr), + cur_name_space_(nullptr), namer_(WithFlagOptions(JavaDefaultConfig(), parser.opts, path), JavaKeywords()) { if (!package_prefix.empty()) { std::istringstream iss(package_prefix); std::string component; - while(std::getline(iss, component, '.')) { + while (std::getline(iss, component, '.')) { package_prefix_ns_.components.push_back(component); } package_prefix_ = package_prefix_ns_.GetFullyQualifiedName("") + "."; @@ -184,10 +184,8 @@ class JavaGenerator : public BaseGenerator { code = "// " + std::string(FlatBuffersGeneratedWarning()) + "\n\n"; Namespace combined_ns = package_prefix_ns_; - std::copy( - ns.components.begin(), - ns.components.end(), - std::back_inserter(combined_ns.components)); + std::copy(ns.components.begin(), ns.components.end(), + std::back_inserter(combined_ns.components)); const std::string namespace_name = FullNamespace(".", combined_ns); if (!namespace_name.empty()) { @@ -368,9 +366,9 @@ class JavaGenerator : public BaseGenerator { FLATBUFFERS_ASSERT(value.type.enum_def); auto &enum_def = *value.type.enum_def; auto enum_val = enum_def.FindByValue(value.constant); - return - enum_val ? Prefixed(namer_.NamespacedEnumVariant(enum_def, *enum_val)) - : value.constant; + return enum_val + ? Prefixed(namer_.NamespacedEnumVariant(enum_def, *enum_val)) + : value.constant; } std::string GenDefaultValue(const FieldDef &field) const { @@ -703,7 +701,7 @@ class JavaGenerator : public BaseGenerator { // Force compile time error if not using the same version runtime. code += " public static void ValidateVersion() {"; code += " Constants."; - code += "FLATBUFFERS_23_5_9(); "; + code += "FLATBUFFERS_23_5_26(); "; code += "}\n"; // Generate a special accessor for the table that when used as the root @@ -1653,9 +1651,9 @@ class JavaGenerator : public BaseGenerator { break; case BASE_TYPE_UNION: array_type = "int"; - element_type = - Prefixed(namer_.NamespacedType(*field.value.type.enum_def)) - + "Union"; + element_type = Prefixed(namer_.NamespacedType( + *field.value.type.enum_def)) + + "Union"; to_array = element_type + ".pack(builder, _o." + namer_.Method("get", property_name) + "()[_j])"; break; @@ -2007,8 +2005,7 @@ class JavaGenerator : public BaseGenerator { case BASE_TYPE_UNION: { if (wrap_in_namespace) { - type_name = - Prefixed(namer_.NamespacedType(*type.enum_def)) + "Union"; + type_name = Prefixed(namer_.NamespacedType(*type.enum_def)) + "Union"; } else { type_name = namer_.Type(*type.enum_def) + "Union"; } @@ -2042,15 +2039,13 @@ class JavaGenerator : public BaseGenerator { type_name.replace(type_name.length() - type_name_length, type_name_length, new_type_name); } else if (type.element == BASE_TYPE_UNION) { - type_name = - Prefixed(namer_.NamespacedType(*type.enum_def)) + "Union"; + type_name = Prefixed(namer_.NamespacedType(*type.enum_def)) + "Union"; } break; } case BASE_TYPE_UNION: { - type_name = - Prefixed(namer_.NamespacedType(*type.enum_def)) + "Union"; + type_name = Prefixed(namer_.NamespacedType(*type.enum_def)) + "Union"; break; } default: break; @@ -2192,12 +2187,11 @@ class JavaGenerator : public BaseGenerator { std::string package_prefix_; Namespace package_prefix_ns_; - }; } // namespace java -bool GenerateJava(const Parser &parser, const std::string &path, - const std::string &file_name) { +static bool GenerateJava(const Parser &parser, const std::string &path, + const std::string &file_name) { java::JavaGenerator generator(parser, path, file_name, parser.opts.java_package_prefix); return generator.generate(); @@ -2213,16 +2207,15 @@ class JavaCodeGenerator : public CodeGenerator { return Status::OK; } - Status GenerateCode(const uint8_t *buffer, int64_t length) override { - (void)buffer; - (void)length; + Status GenerateCode(const uint8_t *, int64_t, + const CodeGenOptions &) override { return Status::NOT_IMPLEMENTED; } Status GenerateMakeRule(const Parser &parser, const std::string &path, const std::string &filename, std::string &output) override { - output = JavaMakeRule(parser, path, filename); + output = JavaCSharpMakeRule(true, parser, path, filename); return Status::OK; } diff --git a/src/idl_gen_json_schema.cpp b/src/idl_gen_json_schema.cpp index 3849da856a2..ed891ab2e26 100644 --- a/src/idl_gen_json_schema.cpp +++ b/src/idl_gen_json_schema.cpp @@ -30,8 +30,7 @@ namespace jsons { namespace { -template -static std::string GenFullName(const T *enum_def) { +template static std::string GenFullName(const T *enum_def) { std::string full_name; const auto &name_spaces = enum_def->defined_namespace->components; for (auto ns = name_spaces.cbegin(); ns != name_spaces.cend(); ++ns) { @@ -41,8 +40,7 @@ static std::string GenFullName(const T *enum_def) { return full_name; } -template -static std::string GenTypeRef(const T *enum_def) { +template static std::string GenTypeRef(const T *enum_def) { return "\"$ref\" : \"#/definitions/" + GenFullName(enum_def) + "\""; } @@ -144,7 +142,7 @@ static std::string GenType(const Type &type) { } } -} // namespace +} // namespace class JsonSchemaGenerator : public BaseGenerator { private: @@ -319,20 +317,13 @@ class JsonSchemaGenerator : public BaseGenerator { }; } // namespace jsons -bool GenerateJsonSchema(const Parser &parser, const std::string &path, - const std::string &file_name) { +static bool GenerateJsonSchema(const Parser &parser, const std::string &path, + const std::string &file_name) { jsons::JsonSchemaGenerator generator(parser, path, file_name); if (!generator.generate()) { return false; } return generator.save(); } -bool GenerateJsonSchema(const Parser &parser, std::string *json) { - jsons::JsonSchemaGenerator generator(parser, "", ""); - if (!generator.generate()) { return false; } - *json = generator.getJson(); - return true; -} - namespace { class JsonSchemaCodeGenerator : public CodeGenerator { @@ -343,9 +334,8 @@ class JsonSchemaCodeGenerator : public CodeGenerator { return Status::OK; } - Status GenerateCode(const uint8_t *buffer, int64_t length) override { - (void)buffer; - (void)length; + Status GenerateCode(const uint8_t *, int64_t, + const CodeGenOptions &) override { return Status::NOT_IMPLEMENTED; } diff --git a/src/idl_gen_kotlin.cpp b/src/idl_gen_kotlin.cpp index eeaca94854c..ecea21edc9b 100644 --- a/src/idl_gen_kotlin.cpp +++ b/src/idl_gen_kotlin.cpp @@ -70,7 +70,7 @@ static Namer::Config KotlinDefaultConfig() { /*filename_suffix=*/"", /*filename_extension=*/".kt" }; } -} // namespace +} // namespace class KotlinGenerator : public BaseGenerator { public: @@ -524,7 +524,7 @@ class KotlinGenerator : public BaseGenerator { // runtime. GenerateFunOneLine( writer, "validateVersion", "", "", - [&]() { writer += "Constants.FLATBUFFERS_23_5_9()"; }, + [&]() { writer += "Constants.FLATBUFFERS_23_5_26()"; }, options.gen_jvmstatic); GenerateGetRootAsAccessors(namer_.Type(struct_def), writer, options); @@ -1593,8 +1593,8 @@ class KotlinGenerator : public BaseGenerator { }; } // namespace kotlin -bool GenerateKotlin(const Parser &parser, const std::string &path, - const std::string &file_name) { +static bool GenerateKotlin(const Parser &parser, const std::string &path, + const std::string &file_name) { kotlin::KotlinGenerator generator(parser, path, file_name); return generator.generate(); } @@ -1609,9 +1609,8 @@ class KotlinCodeGenerator : public CodeGenerator { return Status::OK; } - Status GenerateCode(const uint8_t *buffer, int64_t length) override { - (void)buffer; - (void)length; + Status GenerateCode(const uint8_t *, int64_t, + const CodeGenOptions &) override { return Status::NOT_IMPLEMENTED; } diff --git a/src/idl_gen_lobster.cpp b/src/idl_gen_lobster.cpp index a8b0a6f7a5e..37c95e96005 100644 --- a/src/idl_gen_lobster.cpp +++ b/src/idl_gen_lobster.cpp @@ -63,8 +63,10 @@ class LobsterGenerator : public BaseGenerator { std::string GenTypeName(const Type &type) { auto bits = NumToString(SizeOf(type.base_type) * 8); if (IsInteger(type.base_type)) { - if (IsUnsigned(type.base_type)) return "uint" + bits; - else return "int" + bits; + if (IsUnsigned(type.base_type)) + return "uint" + bits; + else + return "int" + bits; } if (IsFloat(type.base_type)) return "float" + bits; if (IsString(type)) return "string"; @@ -120,16 +122,17 @@ class LobsterGenerator : public BaseGenerator { auto defval = field.IsOptional() ? "0" : field.value.constant; acc = "buf_.flatbuffers_field_" + GenTypeName(field.value.type) + "(pos_, " + offsets + ", " + defval + ")"; - if (IsBool(field.value.type.base_type)) - acc = "bool(" + acc + ")"; + if (IsBool(field.value.type.base_type)) acc = "bool(" + acc + ")"; } if (field.value.type.enum_def) acc = NormalizedName(*field.value.type.enum_def) + "(" + acc + ")"; if (field.IsOptional()) { acc += ", buf_.flatbuffers_field_present(pos_, " + offsets + ")"; - code += def + "() -> " + LobsterType(field.value.type) + ", bool:\n return " + acc + "\n"; + code += def + "() -> " + LobsterType(field.value.type) + + ", bool:\n return " + acc + "\n"; } else { - code += def + "() -> " + LobsterType(field.value.type) + ":\n return " + acc + "\n"; + code += def + "() -> " + LobsterType(field.value.type) + + ":\n return " + acc + "\n"; } return; } @@ -150,7 +153,8 @@ class LobsterGenerator : public BaseGenerator { } case BASE_TYPE_STRING: code += def + - "() -> string:\n return buf_.flatbuffers_field_string(pos_, " + + "() -> string:\n return " + "buf_.flatbuffers_field_string(pos_, " + offsets + ")\n"; break; case BASE_TYPE_VECTOR: { @@ -161,7 +165,9 @@ class LobsterGenerator : public BaseGenerator { if (!(vectortype.struct_def->fixed)) { start = "buf_.flatbuffers_indirect(" + start + ")"; } - code += def + "(i:int) -> " + NamespacedName(*field.value.type.struct_def) + ":\n return "; + code += def + "(i:int) -> " + + NamespacedName(*field.value.type.struct_def) + + ":\n return "; code += NamespacedName(*field.value.type.struct_def) + " { buf_, " + start + " }\n"; } else { @@ -169,7 +175,8 @@ class LobsterGenerator : public BaseGenerator { code += def + "(i:int) -> string:\n return "; code += "buf_.flatbuffers_string"; } else { - code += def + "(i:int) -> " + LobsterType(vectortype) + ":\n return "; + code += def + "(i:int) -> " + LobsterType(vectortype) + + ":\n return "; code += "buf_.read_" + GenTypeName(vectortype) + "_le"; } code += "(buf_.flatbuffers_field_vector(pos_, " + offsets + @@ -398,8 +405,8 @@ class LobsterGenerator : public BaseGenerator { } // namespace lobster -bool GenerateLobster(const Parser &parser, const std::string &path, - const std::string &file_name) { +static bool GenerateLobster(const Parser &parser, const std::string &path, + const std::string &file_name) { lobster::LobsterGenerator generator(parser, path, file_name); return generator.generate(); } @@ -414,9 +421,8 @@ class LobsterCodeGenerator : public CodeGenerator { return Status::OK; } - Status GenerateCode(const uint8_t *buffer, int64_t length) override { - (void)buffer; - (void)length; + Status GenerateCode(const uint8_t *, int64_t, + const CodeGenOptions &) override { return Status::NOT_IMPLEMENTED; } diff --git a/src/idl_gen_lua.cpp b/src/idl_gen_lua.cpp deleted file mode 100644 index 551a4b26f8a..00000000000 --- a/src/idl_gen_lua.cpp +++ /dev/null @@ -1,806 +0,0 @@ -/* - * Copyright 2014 Google Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// independent from idl_parser, since this code is not needed for most clients - -#include "idl_gen_lua.h" - -#include -#include - -#include "flatbuffers/code_generators.h" -#include "flatbuffers/flatbuffers.h" -#include "flatbuffers/idl.h" -#include "flatbuffers/util.h" - -namespace flatbuffers { -namespace lua { - -// Hardcode spaces per indentation. -const CommentConfig def_comment = { nullptr, "--", nullptr }; -const char *Indent = " "; -const char *Comment = "-- "; -const char *End = "end\n"; -const char *EndFunc = "end\n"; -const char *SelfData = "self.view"; -const char *SelfDataPos = "self.view.pos"; -const char *SelfDataBytes = "self.view.bytes"; - -class LuaGenerator : public BaseGenerator { - public: - LuaGenerator(const Parser &parser, const std::string &path, - const std::string &file_name) - : BaseGenerator(parser, path, file_name, "" /* not used */, - "" /* not used */, "lua") { - static const char *const keywords[] = { - "and", "break", "do", "else", "elseif", "end", "false", "for", - "function", "goto", "if", "in", "local", "nil", "not", "or", - "repeat", "return", "then", "true", "until", "while" - }; - keywords_.insert(std::begin(keywords), std::end(keywords)); - } - - // Most field accessors need to retrieve and test the field offset first, - // this is the prefix code for that. - std::string OffsetPrefix(const FieldDef &field) { - return std::string(Indent) + "local o = " + SelfData + ":Offset(" + - NumToString(field.value.offset) + ")\n" + Indent + - "if o ~= 0 then\n"; - } - - // Begin a class declaration. - void BeginClass(const StructDef &struct_def, std::string *code_ptr) { - std::string &code = *code_ptr; - code += "local " + NormalizedName(struct_def) + " = {} -- the module\n"; - code += "local " + NormalizedMetaName(struct_def) + - " = {} -- the class metatable\n"; - code += "\n"; - } - - // Begin enum code with a class declaration. - void BeginEnum(const std::string &class_name, std::string *code_ptr) { - std::string &code = *code_ptr; - code += "local " + class_name + " = {\n"; - } - - std::string EscapeKeyword(const std::string &name) const { - return keywords_.find(name) == keywords_.end() ? name : "_" + name; - } - - std::string NormalizedName(const Definition &definition) const { - return EscapeKeyword(definition.name); - } - - std::string NormalizedName(const EnumVal &ev) const { - return EscapeKeyword(ev.name); - } - - std::string NormalizedMetaName(const Definition &definition) const { - return EscapeKeyword(definition.name) + "_mt"; - } - - // A single enum member. - void EnumMember(const EnumDef &enum_def, const EnumVal &ev, - std::string *code_ptr) { - std::string &code = *code_ptr; - code += std::string(Indent) + NormalizedName(ev) + " = " + - enum_def.ToString(ev) + ",\n"; - } - - // End enum code. - void EndEnum(std::string *code_ptr) { - std::string &code = *code_ptr; - code += "}\n"; - } - - void GenerateNewObjectPrototype(const StructDef &struct_def, - std::string *code_ptr) { - std::string &code = *code_ptr; - - code += "function " + NormalizedName(struct_def) + ".New()\n"; - code += std::string(Indent) + "local o = {}\n"; - code += std::string(Indent) + - "setmetatable(o, {__index = " + NormalizedMetaName(struct_def) + - "})\n"; - code += std::string(Indent) + "return o\n"; - code += EndFunc; - } - - // Initialize a new struct or table from existing data. - void NewRootTypeFromBuffer(const StructDef &struct_def, - std::string *code_ptr) { - std::string &code = *code_ptr; - - code += "function " + NormalizedName(struct_def) + ".GetRootAs" + - NormalizedName(struct_def) + "(buf, offset)\n"; - code += std::string(Indent) + "if type(buf) == \"string\" then\n"; - code += std::string(Indent) + Indent + - "buf = flatbuffers.binaryArray.New(buf)\n"; - code += std::string(Indent) + "end\n"; - code += std::string(Indent) + - "local n = flatbuffers.N.UOffsetT:Unpack(buf, offset)\n"; - code += std::string(Indent) + "local o = " + NormalizedName(struct_def) + - ".New()\n"; - code += std::string(Indent) + "o:Init(buf, n + offset)\n"; - code += std::string(Indent) + "return o\n"; - code += EndFunc; - } - - // Initialize an existing object with other data, to avoid an allocation. - void InitializeExisting(const StructDef &struct_def, std::string *code_ptr) { - std::string &code = *code_ptr; - - GenReceiver(struct_def, code_ptr); - code += "Init(buf, pos)\n"; - code += - std::string(Indent) + SelfData + " = flatbuffers.view.New(buf, pos)\n"; - code += EndFunc; - } - - // Get the length of a vector. - void GetVectorLen(const StructDef &struct_def, const FieldDef &field, - std::string *code_ptr) { - std::string &code = *code_ptr; - - GenReceiver(struct_def, code_ptr); - code += - ConvertCase(NormalizedName(field), Case::kUpperCamel) + "Length()\n"; - code += OffsetPrefix(field); - code += - std::string(Indent) + Indent + "return " + SelfData + ":VectorLen(o)\n"; - code += std::string(Indent) + End; - code += std::string(Indent) + "return 0\n"; - code += EndFunc; - } - - // Get the value of a struct's scalar. - void GetScalarFieldOfStruct(const StructDef &struct_def, - const FieldDef &field, std::string *code_ptr) { - std::string &code = *code_ptr; - std::string getter = GenGetter(field.value.type); - GenReceiver(struct_def, code_ptr); - code += ConvertCase(NormalizedName(field), Case::kUpperCamel); - code += "()\n"; - code += std::string(Indent) + "return " + getter; - code += std::string(SelfDataPos) + " + " + NumToString(field.value.offset) + - ")\n"; - code += EndFunc; - } - - // Get the value of a table's scalar. - void GetScalarFieldOfTable(const StructDef &struct_def, const FieldDef &field, - std::string *code_ptr) { - std::string &code = *code_ptr; - std::string getter = GenGetter(field.value.type); - GenReceiver(struct_def, code_ptr); - code += ConvertCase(NormalizedName(field), Case::kUpperCamel); - code += "()\n"; - code += OffsetPrefix(field); - getter += std::string("o + ") + SelfDataPos + ")"; - auto is_bool = field.value.type.base_type == BASE_TYPE_BOOL; - if (is_bool) { getter = "(" + getter + " ~= 0)"; } - code += std::string(Indent) + Indent + "return " + getter + "\n"; - code += std::string(Indent) + End; - std::string default_value; - if (is_bool) { - default_value = field.value.constant == "0" ? "false" : "true"; - } else { - default_value = field.value.constant; - } - code += std::string(Indent) + "return " + default_value + "\n"; - code += EndFunc; - } - - // Get a struct by initializing an existing struct. - // Specific to Struct. - void GetStructFieldOfStruct(const StructDef &struct_def, - const FieldDef &field, std::string *code_ptr) { - std::string &code = *code_ptr; - GenReceiver(struct_def, code_ptr); - code += ConvertCase(NormalizedName(field), Case::kUpperCamel); - code += "(obj)\n"; - code += std::string(Indent) + "obj:Init(" + SelfDataBytes + ", " + - SelfDataPos + " + "; - code += NumToString(field.value.offset) + ")\n"; - code += std::string(Indent) + "return obj\n"; - code += EndFunc; - } - - // Get a struct by initializing an existing struct. - // Specific to Table. - void GetStructFieldOfTable(const StructDef &struct_def, const FieldDef &field, - std::string *code_ptr) { - std::string &code = *code_ptr; - GenReceiver(struct_def, code_ptr); - code += ConvertCase(NormalizedName(field), Case::kUpperCamel); - code += "()\n"; - code += OffsetPrefix(field); - if (field.value.type.struct_def->fixed) { - code += - std::string(Indent) + Indent + "local x = o + " + SelfDataPos + "\n"; - } else { - code += std::string(Indent) + Indent + "local x = " + SelfData + - ":Indirect(o + " + SelfDataPos + ")\n"; - } - code += std::string(Indent) + Indent + "local obj = require('" + - TypeNameWithNamespace(field) + "').New()\n"; - code += - std::string(Indent) + Indent + "obj:Init(" + SelfDataBytes + ", x)\n"; - code += std::string(Indent) + Indent + "return obj\n"; - code += std::string(Indent) + End; - code += EndFunc; - } - - // Get the value of a string. - void GetStringField(const StructDef &struct_def, const FieldDef &field, - std::string *code_ptr) { - std::string &code = *code_ptr; - GenReceiver(struct_def, code_ptr); - code += ConvertCase(NormalizedName(field), Case::kUpperCamel); - code += "()\n"; - code += OffsetPrefix(field); - code += - std::string(Indent) + Indent + "return " + GenGetter(field.value.type); - code += std::string("o + ") + SelfDataPos + ")\n"; - code += std::string(Indent) + End; - code += EndFunc; - } - - // Get the value of a union from an object. - void GetUnionField(const StructDef &struct_def, const FieldDef &field, - std::string *code_ptr) { - std::string &code = *code_ptr; - GenReceiver(struct_def, code_ptr); - code += ConvertCase(NormalizedName(field), Case::kUpperCamel) + "()\n"; - code += OffsetPrefix(field); - - // TODO(rw): this works and is not the good way to it: - // bool is_native_table = TypeName(field) == "*flatbuffers.Table"; - // if (is_native_table) { - // code += std::string(Indent) + Indent + "from flatbuffers.table import - // Table\n"; - //} else { - // code += std::string(Indent) + Indent + - // code += "from ." + TypeName(field) + " import " + TypeName(field) + - // "\n"; - //} - code += - std::string(Indent) + Indent + - "local obj = " - "flatbuffers.view.New(require('flatbuffers.binaryarray').New(0), 0)\n"; - code += std::string(Indent) + Indent + GenGetter(field.value.type) + - "obj, o)\n"; - code += std::string(Indent) + Indent + "return obj\n"; - code += std::string(Indent) + End; - code += EndFunc; - } - - // Get the value of a vector's struct member. - void GetMemberOfVectorOfStruct(const StructDef &struct_def, - const FieldDef &field, std::string *code_ptr) { - std::string &code = *code_ptr; - auto vectortype = field.value.type.VectorType(); - - GenReceiver(struct_def, code_ptr); - code += ConvertCase(NormalizedName(field), Case::kUpperCamel); - code += "(j)\n"; - code += OffsetPrefix(field); - code += - std::string(Indent) + Indent + "local x = " + SelfData + ":Vector(o)\n"; - code += std::string(Indent) + Indent + "x = x + ((j-1) * "; - code += NumToString(InlineSize(vectortype)) + ")\n"; - if (!(vectortype.struct_def->fixed)) { - code += - std::string(Indent) + Indent + "x = " + SelfData + ":Indirect(x)\n"; - } - code += std::string(Indent) + Indent + "local obj = require('" + - TypeNameWithNamespace(field) + "').New()\n"; - code += - std::string(Indent) + Indent + "obj:Init(" + SelfDataBytes + ", x)\n"; - code += std::string(Indent) + Indent + "return obj\n"; - code += std::string(Indent) + End; - code += EndFunc; - } - - // Get the value of a vector's non-struct member. Uses a named return - // argument to conveniently set the zero value for the result. - void GetMemberOfVectorOfNonStruct(const StructDef &struct_def, - const FieldDef &field, - std::string *code_ptr) { - std::string &code = *code_ptr; - auto vectortype = field.value.type.VectorType(); - - GenReceiver(struct_def, code_ptr); - code += ConvertCase(NormalizedName(field), Case::kUpperCamel); - code += "(j)\n"; - code += OffsetPrefix(field); - code += - std::string(Indent) + Indent + "local a = " + SelfData + ":Vector(o)\n"; - code += std::string(Indent) + Indent; - code += "return " + GenGetter(field.value.type); - code += "a + ((j-1) * "; - code += NumToString(InlineSize(vectortype)) + "))\n"; - code += std::string(Indent) + End; - if (IsString(vectortype)) { - code += std::string(Indent) + "return ''\n"; - } else { - code += std::string(Indent) + "return 0\n"; - } - code += EndFunc; - } - - // Access a byte/ubyte vector as a string - void AccessByteVectorAsString(const StructDef &struct_def, - const FieldDef &field, std::string *code_ptr) { - std::string &code = *code_ptr; - GenReceiver(struct_def, code_ptr); - code += ConvertCase(NormalizedName(field), Case::kUpperCamel); - code += "AsString(start, stop)\n"; - code += std::string(Indent) + "return " + SelfData + ":VectorAsString(" + - NumToString(field.value.offset) + ", start, stop)\n"; - code += EndFunc; - } - - // Begin the creator function signature. - void BeginBuilderArgs(const StructDef &struct_def, std::string *code_ptr) { - std::string &code = *code_ptr; - - code += "function " + NormalizedName(struct_def) + ".Create" + - NormalizedName(struct_def); - code += "(builder"; - } - - // Recursively generate arguments for a constructor, to deal with nested - // structs. - void StructBuilderArgs(const StructDef &struct_def, const char *nameprefix, - std::string *code_ptr) { - for (auto it = struct_def.fields.vec.begin(); - it != struct_def.fields.vec.end(); ++it) { - auto &field = **it; - if (IsStruct(field.value.type)) { - // Generate arguments for a struct inside a struct. To ensure names - // don't clash, and to make it obvious these arguments are constructing - // a nested struct, prefix the name with the field name. - StructBuilderArgs(*field.value.type.struct_def, - (nameprefix + (NormalizedName(field) + "_")).c_str(), - code_ptr); - } else { - std::string &code = *code_ptr; - code += std::string(", ") + nameprefix; - code += ConvertCase(NormalizedName(field), Case::kLowerCamel); - } - } - } - - // End the creator function signature. - void EndBuilderArgs(std::string *code_ptr) { - std::string &code = *code_ptr; - code += ")\n"; - } - - // Recursively generate struct construction statements and instert manual - // padding. - void StructBuilderBody(const StructDef &struct_def, const char *nameprefix, - std::string *code_ptr) { - std::string &code = *code_ptr; - code += std::string(Indent) + "builder:Prep(" + - NumToString(struct_def.minalign) + ", "; - code += NumToString(struct_def.bytesize) + ")\n"; - for (auto it = struct_def.fields.vec.rbegin(); - it != struct_def.fields.vec.rend(); ++it) { - auto &field = **it; - if (field.padding) - code += std::string(Indent) + "builder:Pad(" + - NumToString(field.padding) + ")\n"; - if (IsStruct(field.value.type)) { - StructBuilderBody(*field.value.type.struct_def, - (nameprefix + (NormalizedName(field) + "_")).c_str(), - code_ptr); - } else { - code += - std::string(Indent) + "builder:Prepend" + GenMethod(field) + "("; - code += nameprefix + - ConvertCase(NormalizedName(field), Case::kLowerCamel) + ")\n"; - } - } - } - - void EndBuilderBody(std::string *code_ptr) { - std::string &code = *code_ptr; - code += std::string(Indent) + "return builder:Offset()\n"; - code += EndFunc; - } - - // Get the value of a table's starting offset. - void GetStartOfTable(const StructDef &struct_def, std::string *code_ptr) { - std::string &code = *code_ptr; - code += "function " + NormalizedName(struct_def) + ".Start"; - code += "(builder) "; - code += "builder:StartObject("; - code += NumToString(struct_def.fields.vec.size()); - code += ") end\n"; - } - - // Set the value of a table's field. - void BuildFieldOfTable(const StructDef &struct_def, const FieldDef &field, - const size_t offset, std::string *code_ptr) { - std::string &code = *code_ptr; - code += "function " + NormalizedName(struct_def) + ".Add" + - ConvertCase(NormalizedName(field), Case::kUpperCamel); - code += "(builder, "; - code += ConvertCase(NormalizedName(field), Case::kLowerCamel); - code += ") "; - code += "builder:Prepend"; - code += GenMethod(field) + "Slot("; - code += NumToString(offset) + ", "; - // todo: i don't need to cast in Lua, but am I missing something? - // if (!IsScalar(field.value.type.base_type) && (!struct_def.fixed)) { - // code += "flatbuffers.N.UOffsetTFlags.py_type"; - // code += "("; - // code += ConvertCase(NormalizedName(field), Case::kLowerCamel) + ")"; - // } else { - code += ConvertCase(NormalizedName(field), Case::kLowerCamel); - // } - code += ", " + field.value.constant; - code += ") end\n"; - } - - // Set the value of one of the members of a table's vector. - void BuildVectorOfTable(const StructDef &struct_def, const FieldDef &field, - std::string *code_ptr) { - std::string &code = *code_ptr; - code += "function " + NormalizedName(struct_def) + ".Start"; - code += ConvertCase(NormalizedName(field), Case::kUpperCamel); - code += "Vector(builder, numElems) return builder:StartVector("; - auto vector_type = field.value.type.VectorType(); - auto alignment = InlineAlignment(vector_type); - auto elem_size = InlineSize(vector_type); - code += NumToString(elem_size); - code += ", numElems, " + NumToString(alignment); - code += ") end\n"; - } - - // Get the offset of the end of a table. - void GetEndOffsetOnTable(const StructDef &struct_def, std::string *code_ptr) { - std::string &code = *code_ptr; - code += "function " + NormalizedName(struct_def) + ".End"; - code += "(builder) "; - code += "return builder:EndObject() end\n"; - } - - // Generate the receiver for function signatures. - void GenReceiver(const StructDef &struct_def, std::string *code_ptr) { - std::string &code = *code_ptr; - code += "function " + NormalizedMetaName(struct_def) + ":"; - } - - // Generate a struct field, conditioned on its child type(s). - void GenStructAccessor(const StructDef &struct_def, const FieldDef &field, - std::string *code_ptr) { - GenComment(field.doc_comment, code_ptr, &def_comment); - if (IsScalar(field.value.type.base_type)) { - if (struct_def.fixed) { - GetScalarFieldOfStruct(struct_def, field, code_ptr); - } else { - GetScalarFieldOfTable(struct_def, field, code_ptr); - } - } else { - switch (field.value.type.base_type) { - case BASE_TYPE_STRUCT: - if (struct_def.fixed) { - GetStructFieldOfStruct(struct_def, field, code_ptr); - } else { - GetStructFieldOfTable(struct_def, field, code_ptr); - } - break; - case BASE_TYPE_STRING: - GetStringField(struct_def, field, code_ptr); - break; - case BASE_TYPE_VECTOR: { - auto vectortype = field.value.type.VectorType(); - if (vectortype.base_type == BASE_TYPE_STRUCT) { - GetMemberOfVectorOfStruct(struct_def, field, code_ptr); - } else { - GetMemberOfVectorOfNonStruct(struct_def, field, code_ptr); - if (vectortype.base_type == BASE_TYPE_CHAR || - vectortype.base_type == BASE_TYPE_UCHAR) { - AccessByteVectorAsString(struct_def, field, code_ptr); - } - } - break; - } - case BASE_TYPE_UNION: GetUnionField(struct_def, field, code_ptr); break; - default: FLATBUFFERS_ASSERT(0); - } - } - if (IsVector(field.value.type)) { - GetVectorLen(struct_def, field, code_ptr); - } - } - - // Generate table constructors, conditioned on its members' types. - void GenTableBuilders(const StructDef &struct_def, std::string *code_ptr) { - GetStartOfTable(struct_def, code_ptr); - - for (auto it = struct_def.fields.vec.begin(); - it != struct_def.fields.vec.end(); ++it) { - auto &field = **it; - if (field.deprecated) continue; - - auto offset = it - struct_def.fields.vec.begin(); - BuildFieldOfTable(struct_def, field, offset, code_ptr); - if (IsVector(field.value.type)) { - BuildVectorOfTable(struct_def, field, code_ptr); - } - } - - GetEndOffsetOnTable(struct_def, code_ptr); - } - - // Generate struct or table methods. - void GenStruct(const StructDef &struct_def, std::string *code_ptr) { - if (struct_def.generated) return; - - GenComment(struct_def.doc_comment, code_ptr, &def_comment); - BeginClass(struct_def, code_ptr); - - GenerateNewObjectPrototype(struct_def, code_ptr); - - if (!struct_def.fixed) { - // Generate a special accessor for the table that has been declared as - // the root type. - NewRootTypeFromBuffer(struct_def, code_ptr); - } - - // Generate the Init method that sets the field in a pre-existing - // accessor object. This is to allow object reuse. - InitializeExisting(struct_def, code_ptr); - for (auto it = struct_def.fields.vec.begin(); - it != struct_def.fields.vec.end(); ++it) { - auto &field = **it; - if (field.deprecated) continue; - - GenStructAccessor(struct_def, field, code_ptr); - } - - if (struct_def.fixed) { - // create a struct constructor function - GenStructBuilder(struct_def, code_ptr); - } else { - // Create a set of functions that allow table construction. - GenTableBuilders(struct_def, code_ptr); - } - } - - // Generate enum declarations. - void GenEnum(const EnumDef &enum_def, std::string *code_ptr) { - if (enum_def.generated) return; - - GenComment(enum_def.doc_comment, code_ptr, &def_comment); - BeginEnum(NormalizedName(enum_def), code_ptr); - for (auto it = enum_def.Vals().begin(); it != enum_def.Vals().end(); ++it) { - auto &ev = **it; - GenComment(ev.doc_comment, code_ptr, &def_comment, Indent); - EnumMember(enum_def, ev, code_ptr); - } - EndEnum(code_ptr); - } - - // Returns the function name that is able to read a value of the given type. - std::string GenGetter(const Type &type) { - switch (type.base_type) { - case BASE_TYPE_STRING: return std::string(SelfData) + ":String("; - case BASE_TYPE_UNION: return std::string(SelfData) + ":Union("; - case BASE_TYPE_VECTOR: return GenGetter(type.VectorType()); - default: - return std::string(SelfData) + ":Get(flatbuffers.N." + - ConvertCase(GenTypeGet(type), Case::kUpperCamel) + ", "; - } - } - - // Returns the method name for use with add/put calls. - std::string GenMethod(const FieldDef &field) { - return IsScalar(field.value.type.base_type) - ? ConvertCase(GenTypeBasic(field.value.type), Case::kUpperCamel) - : (IsStruct(field.value.type) ? "Struct" : "UOffsetTRelative"); - } - - std::string GenTypeBasic(const Type &type) { - // clang-format off - static const char *ctypename[] = { - #define FLATBUFFERS_TD(ENUM, IDLTYPE, \ - CTYPE, JTYPE, GTYPE, NTYPE, PTYPE, ...) \ - #PTYPE, - FLATBUFFERS_GEN_TYPES(FLATBUFFERS_TD) - #undef FLATBUFFERS_TD - }; - // clang-format on - return ctypename[type.base_type]; - } - - std::string GenTypePointer(const Type &type) { - switch (type.base_type) { - case BASE_TYPE_STRING: return "string"; - case BASE_TYPE_VECTOR: return GenTypeGet(type.VectorType()); - case BASE_TYPE_STRUCT: return type.struct_def->name; - case BASE_TYPE_UNION: - // fall through - default: return "*flatbuffers.Table"; - } - } - - std::string GenTypeGet(const Type &type) { - return IsScalar(type.base_type) ? GenTypeBasic(type) : GenTypePointer(type); - } - - std::string GetNamespace(const Type &type) { - return type.struct_def->defined_namespace->GetFullyQualifiedName( - type.struct_def->name); - } - - std::string TypeName(const FieldDef &field) { - return GenTypeGet(field.value.type); - } - - std::string TypeNameWithNamespace(const FieldDef &field) { - return GetNamespace(field.value.type); - } - - // Create a struct with a builder and the struct's arguments. - void GenStructBuilder(const StructDef &struct_def, std::string *code_ptr) { - BeginBuilderArgs(struct_def, code_ptr); - StructBuilderArgs(struct_def, "", code_ptr); - EndBuilderArgs(code_ptr); - - StructBuilderBody(struct_def, "", code_ptr); - EndBuilderBody(code_ptr); - } - - bool generate() { - if (!generateEnums()) return false; - if (!generateStructs()) return false; - return true; - } - - private: - bool generateEnums() { - for (auto it = parser_.enums_.vec.begin(); it != parser_.enums_.vec.end(); - ++it) { - auto &enum_def = **it; - std::string enumcode; - GenEnum(enum_def, &enumcode); - if (!SaveType(enum_def, enumcode, false)) return false; - } - return true; - } - - bool generateStructs() { - for (auto it = parser_.structs_.vec.begin(); - it != parser_.structs_.vec.end(); ++it) { - auto &struct_def = **it; - std::string declcode; - GenStruct(struct_def, &declcode); - if (!SaveType(struct_def, declcode, true)) return false; - } - return true; - } - - // Begin by declaring namespace and imports. - void BeginFile(const std::string &name_space_name, const bool needs_imports, - std::string *code_ptr) { - std::string &code = *code_ptr; - code += std::string(Comment) + FlatBuffersGeneratedWarning() + "\n\n"; - code += std::string(Comment) + "namespace: " + name_space_name + "\n\n"; - if (needs_imports) { - code += "local flatbuffers = require('flatbuffers')\n\n"; - } - } - - // Save out the generated code for a Lua Table type. - bool SaveType(const Definition &def, const std::string &classcode, - bool needs_imports) { - if (!classcode.length()) return true; - - std::string namespace_dir = path_; - auto &namespaces = def.defined_namespace->components; - for (auto it = namespaces.begin(); it != namespaces.end(); ++it) { - if (it != namespaces.begin()) namespace_dir += kPathSeparator; - namespace_dir += *it; - // std::string init_py_filename = namespace_dir + "/__init__.py"; - // SaveFile(init_py_filename.c_str(), "", false); - } - - std::string code = ""; - BeginFile(LastNamespacePart(*def.defined_namespace), needs_imports, &code); - code += classcode; - code += "\n"; - code += - "return " + NormalizedName(def) + " " + Comment + "return the module"; - std::string filename = - NamespaceDir(*def.defined_namespace) + NormalizedName(def) + ".lua"; - return SaveFile(filename.c_str(), code, false); - } - - private: - std::unordered_set keywords_; -}; - -} // namespace lua - -bool GenerateLua(const Parser &parser, const std::string &path, - const std::string &file_name) { - lua::LuaGenerator generator(parser, path, file_name); - return generator.generate(); -} - -namespace { - -class LuaCodeGenerator : public CodeGenerator { - public: - Status GenerateCode(const Parser &parser, const std::string &path, - const std::string &filename) override { - if (!GenerateLua(parser, path, filename)) { return Status::ERROR; } - return Status::OK; - } - - Status GenerateCode(const uint8_t *buffer, int64_t length) override { - (void)buffer; - (void)length; - return Status::NOT_IMPLEMENTED; - } - - Status GenerateMakeRule(const Parser &parser, const std::string &path, - const std::string &filename, - std::string &output) override { - (void)parser; - (void)path; - (void)filename; - (void)output; - return Status::NOT_IMPLEMENTED; - } - - Status GenerateGrpcCode(const Parser &parser, const std::string &path, - const std::string &filename) override { - (void)parser; - (void)path; - (void)filename; - return Status::NOT_IMPLEMENTED; - } - - Status GenerateRootFile(const Parser &parser, - const std::string &path) override { - (void)parser; - (void)path; - return Status::NOT_IMPLEMENTED; - } - - bool IsSchemaOnly() const override { return true; } - - bool SupportsBfbsGeneration() const override { return true; } - - bool SupportsRootFileGeneration() const override { return false; } - - IDLOptions::Language Language() const override { return IDLOptions::kLua; } - - std::string LanguageName() const override { return "Lua"; } -}; -} // namespace - -std::unique_ptr NewLuaCodeGenerator() { - return std::unique_ptr(new LuaCodeGenerator()); -} - -} // namespace flatbuffers diff --git a/src/idl_gen_lua.h b/src/idl_gen_lua.h deleted file mode 100644 index 43974a8c33a..00000000000 --- a/src/idl_gen_lua.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2023 Google Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef FLATBUFFERS_IDL_GEN_LUA_H_ -#define FLATBUFFERS_IDL_GEN_LUA_H_ - -#include "flatbuffers/code_generator.h" - -namespace flatbuffers { - -// Constructs a new Lua code generator. -std::unique_ptr NewLuaCodeGenerator(); - -} // namespace flatbuffers - -#endif // FLATBUFFERS_IDL_GEN_LUA_H_ diff --git a/src/idl_gen_php.cpp b/src/idl_gen_php.cpp index 222cc3d63ae..1a6b9ec5c06 100644 --- a/src/idl_gen_php.cpp +++ b/src/idl_gen_php.cpp @@ -939,8 +939,8 @@ class PhpGenerator : public BaseGenerator { }; } // namespace php -bool GeneratePhp(const Parser &parser, const std::string &path, - const std::string &file_name) { +static bool GeneratePhp(const Parser &parser, const std::string &path, + const std::string &file_name) { php::PhpGenerator generator(parser, path, file_name); return generator.generate(); } @@ -955,9 +955,8 @@ class PhpCodeGenerator : public CodeGenerator { return Status::OK; } - Status GenerateCode(const uint8_t *buffer, int64_t length) override { - (void)buffer; - (void)length; + Status GenerateCode(const uint8_t *, int64_t, + const CodeGenOptions &) override { return Status::NOT_IMPLEMENTED; } diff --git a/src/idl_gen_python.cpp b/src/idl_gen_python.cpp index 83d589cad87..ff535d15746 100644 --- a/src/idl_gen_python.cpp +++ b/src/idl_gen_python.cpp @@ -74,7 +74,7 @@ static Namer::Config PythonDefaultConfig() { static const CommentConfig def_comment = { nullptr, "#", nullptr }; static const std::string Indent = " "; -} // namespace +} // namespace class PythonGenerator : public BaseGenerator { public: @@ -149,10 +149,11 @@ class PythonGenerator : public BaseGenerator { if (!parser_.opts.python_no_type_prefix_suffix) { // Add an alias with the old name code += Indent + "@classmethod\n"; - code += Indent + "def GetRootAs" + struct_type + "(cls, buf, offset=0):\n"; code += - Indent + Indent + - "\"\"\"This method is deprecated. Please switch to GetRootAs.\"\"\"\n"; + Indent + "def GetRootAs" + struct_type + "(cls, buf, offset=0):\n"; + code += Indent + Indent + + "\"\"\"This method is deprecated. Please switch to " + "GetRootAs.\"\"\"\n"; code += Indent + Indent + "return cls.GetRootAs(buf, offset)\n"; } } @@ -179,16 +180,15 @@ class PythonGenerator : public BaseGenerator { GenReceiver(struct_def, code_ptr); code += namer_.Method(field) + "Length(self)"; - if (parser_.opts.python_typing) { - code += " -> int"; - } + if (parser_.opts.python_typing) { code += " -> int"; } code += ":"; - if(!IsArray(field.value.type)){ - code += OffsetPrefix(field,false); + if (!IsArray(field.value.type)) { + code += OffsetPrefix(field, false); code += GenIndents(3) + "return self._tab.VectorLen(o)"; code += GenIndents(2) + "return 0\n\n"; - }else{ - code += GenIndents(2) + "return "+NumToString(field.value.type.fixed_length)+"\n\n"; + } else { + code += GenIndents(2) + "return " + + NumToString(field.value.type.fixed_length) + "\n\n"; } } @@ -199,17 +199,15 @@ class PythonGenerator : public BaseGenerator { GenReceiver(struct_def, code_ptr); code += namer_.Method(field) + "IsNone(self)"; - if (parser_.opts.python_typing) { - code += " -> bool"; - } + if (parser_.opts.python_typing) { code += " -> bool"; } code += ":"; - if(!IsArray(field.value.type)){ + if (!IsArray(field.value.type)) { code += GenIndents(2) + "o = flatbuffers.number_types.UOffsetTFlags.py_type" + "(self._tab.Offset(" + NumToString(field.value.offset) + "))"; code += GenIndents(2) + "return o == 0"; } else { - //assume that we always have an array as memory is preassigned + // assume that we always have an array as memory is preassigned code += GenIndents(2) + "return False"; } code += "\n\n"; @@ -277,7 +275,7 @@ class PythonGenerator : public BaseGenerator { code += namer_.Method(field); const ImportMapEntry import_entry = { - "." + GenPackageReference(field.value.type), TypeName(field) + GenPackageReference(field.value.type), TypeName(field) }; if (parser_.opts.python_typing) { @@ -290,7 +288,8 @@ class PythonGenerator : public BaseGenerator { code += "(self, i):"; } - if (parser_.opts.include_dependence_headers && !parser_.opts.python_typing) { + if (parser_.opts.include_dependence_headers && + !parser_.opts.python_typing) { code += GenIndents(2); code += "from " + import_entry.first + " import " + import_entry.second + "\n"; @@ -317,8 +316,9 @@ class PythonGenerator : public BaseGenerator { code += NumToString(field.value.offset) + " + i * "; code += NumToString(InlineSize(field.value.type.VectorType())); code += ")) for i in range("; - code += "self."+namer_.Method(field)+"Length()" + ")]"; - code += GenIndents(2) +"elif j >= 0 and j < self."+namer_.Method(field)+"Length():"; + code += "self." + namer_.Method(field) + "Length()" + ")]"; + code += GenIndents(2) + "elif j >= 0 and j < self." + namer_.Method(field) + + "Length():"; code += GenIndents(3) + "return " + GenGetter(field.value.type); code += "self._tab.Pos + flatbuffers.number_types.UOffsetTFlags.py_type("; code += NumToString(field.value.offset) + " + j * "; @@ -337,7 +337,7 @@ class PythonGenerator : public BaseGenerator { code += namer_.Method(field) + "(self)"; const ImportMapEntry import_entry = { - "." + GenPackageReference(field.value.type), TypeName(field) + GenPackageReference(field.value.type), TypeName(field) }; if (parser_.opts.python_typing) { @@ -355,7 +355,8 @@ class PythonGenerator : public BaseGenerator { code += "x = self._tab.Indirect(o + self._tab.Pos)\n"; } - if (parser_.opts.include_dependence_headers && !parser_.opts.python_typing) { + if (parser_.opts.include_dependence_headers && + !parser_.opts.python_typing) { code += Indent + Indent + Indent; code += "from " + import_entry.first + " import " + import_entry.second + "\n"; @@ -445,7 +446,7 @@ class PythonGenerator : public BaseGenerator { GenReceiver(struct_def, code_ptr); code += namer_.Method(field); const ImportMapEntry import_entry = { - "." + GenPackageReference(field.value.type), TypeName(field) + GenPackageReference(field.value.type), TypeName(field) }; if (parser_.opts.python_typing) { @@ -464,7 +465,8 @@ class PythonGenerator : public BaseGenerator { if (!(vectortype.struct_def->fixed)) { code += Indent + Indent + Indent + "x = self._tab.Indirect(x)\n"; } - if (parser_.opts.include_dependence_headers && !parser_.opts.python_typing) { + if (parser_.opts.include_dependence_headers && + !parser_.opts.python_typing) { code += Indent + Indent + Indent; code += "from " + import_entry.first + " import " + import_entry.second + "\n"; @@ -519,7 +521,7 @@ class PythonGenerator : public BaseGenerator { GenReceiver(struct_def, code_ptr); code += namer_.Method(field) + "AsNumpy(self):"; - if(!IsArray(field.value.type)){ + if (!IsArray(field.value.type)) { code += OffsetPrefix(field, false); code += GenIndents(3); @@ -533,11 +535,13 @@ class PythonGenerator : public BaseGenerator { } else { code += GenIndents(2) + "return 0\n"; } - }else{ + } else { code += GenIndents(2) + "return "; code += "self._tab.GetArrayAsNumpy(flatbuffers.number_types."; code += namer_.Method(GenTypeGet(field.value.type.VectorType())); - code += "Flags, self._tab.Pos + "+NumToString(field.value.offset)+", "+NumToString("self."+namer_.Method(field)+"Length()")+")\n"; + code += "Flags, self._tab.Pos + " + NumToString(field.value.offset) + + ", " + NumToString("self." + namer_.Method(field) + "Length()") + + ")\n"; } code += "\n"; } @@ -564,11 +568,9 @@ class PythonGenerator : public BaseGenerator { const std::string unqualified_name = nested->constant; std::string qualified_name = NestedFlatbufferType(unqualified_name); - if (qualified_name.empty()) { - qualified_name = nested->constant; - } + if (qualified_name.empty()) { qualified_name = nested->constant; } - const ImportMapEntry import_entry = { "." + qualified_name, + const ImportMapEntry import_entry = { qualified_name, unqualified_name }; auto &code = *code_ptr; @@ -704,7 +706,9 @@ class PythonGenerator : public BaseGenerator { const auto struct_type = namer_.Type(struct_def); // Generate method with struct name. - const auto name = parser_.opts.python_no_type_prefix_suffix ? "Start" : struct_type + "Start"; + const auto name = parser_.opts.python_no_type_prefix_suffix + ? "Start" + : struct_type + "Start"; code += "def " + name; if (parser_.opts.python_typing) { @@ -736,12 +740,14 @@ class PythonGenerator : public BaseGenerator { const std::string field_method = namer_.Method(field); const std::string field_ty = GenFieldTy(field); - const auto name = parser_.opts.python_no_type_prefix_suffix ? "Add" + field_method : namer_.Type(struct_def) + "Add" + field_method; + const auto name = parser_.opts.python_no_type_prefix_suffix + ? "Add" + field_method + : namer_.Type(struct_def) + "Add" + field_method; // Generate method with struct name. code += "def " + name; if (parser_.opts.python_typing) { - code += "(builder: flatbuffers.Builder, " + field_var + ": " + field_ty; + code += "(builder: flatbuffers.Builder, " + field_var + ": " + field_ty; } else { code += "(builder, " + field_var; } @@ -767,9 +773,14 @@ class PythonGenerator : public BaseGenerator { if (!parser_.opts.one_file && !parser_.opts.python_no_type_prefix_suffix) { // Generate method without struct name. - code += "def Add" + field_method + "(builder: flatbuffers.Builder, " + field_var + ": " + field_ty + "):\n"; - code += - Indent + namer_.Type(struct_def) + "Add" + field_method; + code += "def Add" + field_method; + if (parser_.opts.python_typing) { + code += "(builder: flatbuffers.Builder, " + field_var + ": " + field_ty; + } else { + code += "(builder, " + field_var; + } + code += "):\n"; + code += Indent + namer_.Type(struct_def) + "Add" + field_method; code += "(builder, "; code += field_var; code += ")\n\n"; @@ -784,7 +795,9 @@ class PythonGenerator : public BaseGenerator { const std::string field_method = namer_.Method(field); // Generate method with struct name. - const auto name = parser_.opts.python_no_type_prefix_suffix ? "Start" + field_method : struct_type + "Start" + field_method; + const auto name = parser_.opts.python_no_type_prefix_suffix + ? "Start" + field_method + : struct_type + "Start" + field_method; code += "def " + name; if (parser_.opts.python_typing) { code += "Vector(builder, numElems: int) -> int:\n"; @@ -802,7 +815,8 @@ class PythonGenerator : public BaseGenerator { if (!parser_.opts.one_file && !parser_.opts.python_no_type_prefix_suffix) { // Generate method without struct name. - code += "def Start" + field_method + "Vector(builder, numElems: int) -> int:\n"; + code += "def Start" + field_method + + "Vector(builder, numElems: int) -> int:\n"; code += Indent + "return " + struct_type + "Start"; code += field_method + "Vector(builder, numElems)\n\n"; } @@ -849,7 +863,9 @@ class PythonGenerator : public BaseGenerator { std::string *code_ptr) const { auto &code = *code_ptr; - const auto name = parser_.opts.python_no_type_prefix_suffix ? "End" : namer_.Type(struct_def) + "End"; + const auto name = parser_.opts.python_no_type_prefix_suffix + ? "End" + : namer_.Type(struct_def) + "End"; // Generate method with struct name. if (parser_.opts.python_typing) { code += "def " + name + "(builder: flatbuffers.Builder) -> int:\n"; @@ -921,7 +937,9 @@ class PythonGenerator : public BaseGenerator { } break; } - case BASE_TYPE_UNION: GetUnionField(struct_def, field, code_ptr, imports); break; + case BASE_TYPE_UNION: + GetUnionField(struct_def, field, code_ptr, imports); + break; default: FLATBUFFERS_ASSERT(0); } } @@ -1255,14 +1273,15 @@ class PythonGenerator : public BaseGenerator { } void InitializeFromPackedBuf(const StructDef &struct_def, - std::string *code_ptr) const { + std::string *code_ptr) const { auto &code = *code_ptr; const auto struct_var = namer_.Variable(struct_def); const auto struct_type = namer_.Type(struct_def); code += GenIndents(1) + "@classmethod"; code += GenIndents(1) + "def InitFromPackedBuf(cls, buf, pos=0):"; - code += GenIndents(2) + "n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, pos)"; + code += GenIndents(2) + + "n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, pos)"; code += GenIndents(2) + "return cls.InitFromBuf(buf, pos+n)"; code += "\n"; } @@ -1281,20 +1300,21 @@ class PythonGenerator : public BaseGenerator { code += "\n"; } - void GenCompareOperator(const StructDef &struct_def, + void GenCompareOperator(const StructDef &struct_def, std::string *code_ptr) const { auto &code = *code_ptr; code += GenIndents(1) + "def __eq__(self, other):"; code += GenIndents(2) + "return type(self) == type(other)"; for (auto it = struct_def.fields.vec.begin(); - it != struct_def.fields.vec.end(); ++it) { - auto &field = **it; - if (field.deprecated) continue; + it != struct_def.fields.vec.end(); ++it) { + auto &field = **it; + if (field.deprecated) continue; - // Wrties the comparison statement for this field. - const auto field_field = namer_.Field(field); - code += " and \\" + GenIndents(3) + "self." + field_field + " == " + "other." + field_field; - } + // Wrties the comparison statement for this field. + const auto field_field = namer_.Field(field); + code += " and \\" + GenIndents(3) + "self." + field_field + + " == " + "other." + field_field; + } code += "\n"; } @@ -1317,8 +1337,9 @@ class PythonGenerator : public BaseGenerator { code += field_type + "()"; } code += ") is not None:"; - code += GenIndents(3) + "self." + field_field + " = " + namer_.ObjectType(field_type) + - + ".InitFromObj(" + struct_var + "." + field_method + "("; + code += GenIndents(3) + "self." + field_field + " = " + + namer_.ObjectType(field_type) + +".InitFromObj(" + struct_var + + "." + field_method + "("; // A struct's accessor requires a struct buf instance. if (struct_def.fixed && field.value.type.base_type == BASE_TYPE_STRUCT) { code += field_type + "()"; @@ -1368,8 +1389,9 @@ class PythonGenerator : public BaseGenerator { "(i) is None:"; code += GenIndents(5) + "self." + field_field + ".append(None)"; code += GenIndents(4) + "else:"; - code += GenIndents(5) + one_instance + " = " + namer_.ObjectType(field_type) + - ".InitFromObj(" + struct_var + "." + field_method + "(i))"; + code += GenIndents(5) + one_instance + " = " + + namer_.ObjectType(field_type) + ".InitFromObj(" + struct_var + "." + + field_method + "(i))"; code += GenIndents(5) + "self." + field_field + ".append(" + one_instance + ")"; } @@ -1399,8 +1421,9 @@ class PythonGenerator : public BaseGenerator { "(i) is None:"; code += GenIndents(5) + "self." + field_field + ".append(None)"; code += GenIndents(4) + "else:"; - code += GenIndents(5) + one_instance + " = " + namer_.ObjectType(field_type) + - ".InitFromObj(" + struct_var + "." + field_method + "(i))"; + code += GenIndents(5) + one_instance + " = " + + namer_.ObjectType(field_type) + ".InitFromObj(" + struct_var + "." + + field_method + "(i))"; code += GenIndents(5) + "self." + field_field + ".append(" + one_instance + ")"; } @@ -1780,9 +1803,7 @@ class PythonGenerator : public BaseGenerator { InitializeFromObjForObject(struct_def, &code); - if (parser_.opts.gen_compare) { - GenCompareOperator(struct_def, &code); - } + if (parser_.opts.gen_compare) { GenCompareOperator(struct_def, &code); } GenUnPack(struct_def, &code); @@ -1891,17 +1912,11 @@ class PythonGenerator : public BaseGenerator { std::string GenFieldTy(const FieldDef &field) const { if (IsScalar(field.value.type.base_type) || IsArray(field.value.type)) { const std::string ty = GenTypeBasic(field.value.type); - if (ty.find("int") != std::string::npos) { - return "int"; - } + if (ty.find("int") != std::string::npos) { return "int"; } - if (ty.find("float") != std::string::npos) { - return "float"; - } + if (ty.find("float") != std::string::npos) { return "float"; } - if (ty == "bool") { - return "bool"; - } + if (ty == "bool") { return "bool"; } return "Any"; } else { @@ -2052,13 +2067,9 @@ class PythonGenerator : public BaseGenerator { } if (parser_.opts.one_file) { - if (!declcode.empty()) { - *one_file_code += declcode + "\n\n"; - } + if (!declcode.empty()) { *one_file_code += declcode + "\n\n"; } - for (auto import_str: imports) { - one_file_imports.insert(import_str); - } + for (auto import_str : imports) { one_file_imports.insert(import_str); } } else { const std::string mod = namer_.File(struct_def, SkipFile::SuffixAndExtension); @@ -2135,8 +2146,8 @@ class PythonGenerator : public BaseGenerator { } // namespace python -bool GeneratePython(const Parser &parser, const std::string &path, - const std::string &file_name) { +static bool GeneratePython(const Parser &parser, const std::string &path, + const std::string &file_name) { python::PythonGenerator generator(parser, path, file_name); return generator.generate(); } @@ -2151,9 +2162,8 @@ class PythonCodeGenerator : public CodeGenerator { return Status::OK; } - Status GenerateCode(const uint8_t *buffer, int64_t length) override { - (void)buffer; - (void)length; + Status GenerateCode(const uint8_t *, int64_t, + const CodeGenOptions &) override { return Status::NOT_IMPLEMENTED; } diff --git a/src/idl_gen_rust.cpp b/src/idl_gen_rust.cpp index ac6097faae4..95fa39bdd6b 100644 --- a/src/idl_gen_rust.cpp +++ b/src/idl_gen_rust.cpp @@ -277,10 +277,10 @@ static bool IsBitFlagsEnum(const EnumDef &enum_def) { static bool IsOptionalToBuilder(const FieldDef &field) { return field.IsOptional() || !IsScalar(field.value.type.base_type); } -} // namespace +} // namespace -bool GenerateRustModuleRootFile(const Parser &parser, - const std::string &output_dir) { +static bool GenerateRustModuleRootFile(const Parser &parser, + const std::string &output_dir) { if (!parser.opts.rust_module_root_file) { // Don't generate a root file when generating one file. This isn't an error // so return true. @@ -708,7 +708,7 @@ class RustGenerator : public BaseGenerator { // and an enum array of values void GenEnum(const EnumDef &enum_def) { const bool is_private = parser_.opts.no_leak_private_annotations && - (enum_def.attributes.Lookup("private") != nullptr); + (enum_def.attributes.Lookup("private") != nullptr); code_.SetValue("ACCESS_TYPE", is_private ? "pub(crate)" : "pub"); code_.SetValue("ENUM_TY", namer_.Type(enum_def)); code_.SetValue("BASE_TYPE", GetEnumTypeForDecl(enum_def.underlying_type)); @@ -842,15 +842,21 @@ class RustGenerator : public BaseGenerator { code_ += " type Inner = Self;"; code_ += " #[inline]"; code_ += " unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {"; - code_ += " let b = flatbuffers::read_scalar_at::<{{BASE_TYPE}}>(buf, loc);"; + code_ += + " let b = flatbuffers::read_scalar_at::<{{BASE_TYPE}}>(buf, loc);"; if (IsBitFlagsEnum(enum_def)) { // Safety: - // This is safe because we know bitflags is implemented with a repr transparent uint of the correct size. - // from_bits_unchecked will be replaced by an equivalent but safe from_bits_retain in bitflags 2.0 + // This is safe because we know bitflags is implemented with a repr + // transparent uint of the correct size. from_bits_unchecked will be + // replaced by an equivalent but safe from_bits_retain in bitflags 2.0 // https://github.com/bitflags/bitflags/issues/262 code_ += " // Safety:"; - code_ += " // This is safe because we know bitflags is implemented with a repr transparent uint of the correct size."; - code_ += " // from_bits_unchecked will be replaced by an equivalent but safe from_bits_retain in bitflags 2.0"; + code_ += + " // This is safe because we know bitflags is implemented with a " + "repr transparent uint of the correct size."; + code_ += + " // from_bits_unchecked will be replaced by an equivalent but " + "safe from_bits_retain in bitflags 2.0"; code_ += " // https://github.com/bitflags/bitflags/issues/262"; code_ += " Self::from_bits_unchecked(b)"; } else { @@ -863,7 +869,9 @@ class RustGenerator : public BaseGenerator { code_ += " type Output = {{ENUM_TY}};"; code_ += " #[inline]"; code_ += " unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {"; - code_ += " flatbuffers::emplace_scalar::<{{BASE_TYPE}}>(dst, {{INTO_BASE}});"; + code_ += + " flatbuffers::emplace_scalar::<{{BASE_TYPE}}>(dst, " + "{{INTO_BASE}});"; code_ += " }"; code_ += "}"; code_ += ""; @@ -879,12 +887,17 @@ class RustGenerator : public BaseGenerator { code_ += " let b = {{BASE_TYPE}}::from_le(v);"; if (IsBitFlagsEnum(enum_def)) { // Safety: - // This is safe because we know bitflags is implemented with a repr transparent uint of the correct size. - // from_bits_unchecked will be replaced by an equivalent but safe from_bits_retain in bitflags 2.0 + // This is safe because we know bitflags is implemented with a repr + // transparent uint of the correct size. from_bits_unchecked will be + // replaced by an equivalent but safe from_bits_retain in bitflags 2.0 // https://github.com/bitflags/bitflags/issues/262 code_ += " // Safety:"; - code_ += " // This is safe because we know bitflags is implemented with a repr transparent uint of the correct size."; - code_ += " // from_bits_unchecked will be replaced by an equivalent but safe from_bits_retain in bitflags 2.0"; + code_ += + " // This is safe because we know bitflags is implemented with a " + "repr transparent uint of the correct size."; + code_ += + " // from_bits_unchecked will be replaced by an equivalent but " + "safe from_bits_retain in bitflags 2.0"; code_ += " // https://github.com/bitflags/bitflags/issues/262"; code_ += " unsafe { Self::from_bits_unchecked(b) }"; } else { @@ -1458,7 +1471,8 @@ class RustGenerator : public BaseGenerator { case ftVectorOfBool: case ftVectorOfFloat: { const auto typname = GetTypeBasic(type.VectorType()); - return WrapOption("flatbuffers::Vector<" + lifetime + ", " + typname + ">"); + return WrapOption("flatbuffers::Vector<" + lifetime + ", " + typname + + ">"); } case ftVectorOfEnumKey: { const auto typname = WrapInNameSpace(*type.enum_def); @@ -1467,7 +1481,8 @@ class RustGenerator : public BaseGenerator { } case ftVectorOfStruct: { const auto typname = WrapInNameSpace(*type.struct_def); - return WrapOption("flatbuffers::Vector<" + lifetime + ", " + typname + ">"); + return WrapOption("flatbuffers::Vector<" + lifetime + ", " + typname + + ">"); } case ftVectorOfTable: { const auto typname = WrapInNameSpace(*type.struct_def); @@ -1585,8 +1600,9 @@ class RustGenerator : public BaseGenerator { : "None"; const std::string unwrap = field.IsOptional() ? "" : ".unwrap()"; - return "unsafe { self._tab.get::<" + typname + ">({{STRUCT_TY}}::" + vt_offset + - ", " + default_value + ")" + unwrap + "}"; + return "unsafe { self._tab.get::<" + typname + + ">({{STRUCT_TY}}::" + vt_offset + ", " + default_value + ")" + + unwrap + "}"; } // Generates a fully-qualified name getter for use with --gen-name-strings @@ -1646,8 +1662,8 @@ class RustGenerator : public BaseGenerator { // Generate an accessor struct, builder struct, and create function for a // table. void GenTable(const StructDef &struct_def) { - - const bool is_private = parser_.opts.no_leak_private_annotations && + const bool is_private = + parser_.opts.no_leak_private_annotations && (struct_def.attributes.Lookup("private") != nullptr); code_.SetValue("ACCESS_TYPE", is_private ? "pub(crate)" : "pub"); code_.SetValue("STRUCT_TY", namer_.Type(struct_def)); @@ -1933,13 +1949,17 @@ class RustGenerator : public BaseGenerator { code_ += " // Safety:"; code_ += " // Created from a valid Table for this object"; code_ += " // Which contains a valid union in this slot"; - code_ += " Some(unsafe { {{U_ELEMENT_TABLE_TYPE}}::init_from_table(u) })"; + code_ += + " Some(unsafe { " + "{{U_ELEMENT_TABLE_TYPE}}::init_from_table(u) })"; } else { - code_ +=" self.{{FIELD}}().map(|t| {"; + code_ += " self.{{FIELD}}().map(|t| {"; code_ += " // Safety:"; code_ += " // Created from a valid Table for this object"; code_ += " // Which contains a valid union in this slot"; - code_ += " unsafe { {{U_ELEMENT_TABLE_TYPE}}::init_from_table(t) }"; + code_ += + " unsafe { {{U_ELEMENT_TABLE_TYPE}}::init_from_table(t) " + "}"; code_ += " })"; } code_ += " } else {"; @@ -2264,7 +2284,8 @@ class RustGenerator : public BaseGenerator { case ftUnionValue: { code_.SetValue("ENUM_METHOD", namer_.Method(*field.value.type.enum_def)); - code_.SetValue("DISCRIMINANT", namer_.LegacyRustUnionTypeMethod(field)); + code_.SetValue("DISCRIMINANT", + namer_.LegacyRustUnionTypeMethod(field)); code_ += " let {{DISCRIMINANT}} = " "self.{{FIELD}}.{{ENUM_METHOD}}_type();"; @@ -2312,10 +2333,10 @@ class RustGenerator : public BaseGenerator { // TODO(cneo): create_vector* should be more generic to avoid // allocations. - MapNativeTableField( - field, - "let w: Vec<_> = x.iter().map(|s| _fbb.create_string(s)).collect();" - "_fbb.create_vector(&w)"); + MapNativeTableField(field, + "let w: Vec<_> = x.iter().map(|s| " + "_fbb.create_string(s)).collect();" + "_fbb.create_vector(&w)"); return; } case ftVectorOfTable: { @@ -2601,7 +2622,8 @@ class RustGenerator : public BaseGenerator { } // Generate an accessor struct with constructor for a flatbuffers struct. void GenStruct(const StructDef &struct_def) { - const bool is_private = parser_.opts.no_leak_private_annotations && + const bool is_private = + parser_.opts.no_leak_private_annotations && (struct_def.attributes.Lookup("private") != nullptr); code_.SetValue("ACCESS_TYPE", is_private ? "pub(crate)" : "pub"); // Generates manual padding and alignment. @@ -2665,7 +2687,9 @@ class RustGenerator : public BaseGenerator { code_ += " type Output = {{STRUCT_TY}};"; code_ += " #[inline]"; code_ += " unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {"; - code_ += " let src = ::core::slice::from_raw_parts(self as *const {{STRUCT_TY}} as *const u8, Self::size());"; + code_ += + " let src = ::core::slice::from_raw_parts(self as *const " + "{{STRUCT_TY}} as *const u8, Self::size());"; code_ += " dst.copy_from_slice(src);"; code_ += " }"; code_ += "}"; @@ -2759,7 +2783,9 @@ class RustGenerator : public BaseGenerator { code_ += " // Safety:"; code_ += " // Created from a valid Table for this object"; code_ += " // Which contains a valid array in this slot"; - code_ += " unsafe { flatbuffers::Array::follow(&self.0, {{FIELD_OFFSET}}) }"; + code_ += + " unsafe { flatbuffers::Array::follow(&self.0, {{FIELD_OFFSET}}) " + "}"; } else { code_ += "pub fn {{FIELD}}(&self) -> {{FIELD_TYPE}} {"; code_ += @@ -2772,7 +2798,9 @@ class RustGenerator : public BaseGenerator { code_ += " core::ptr::copy_nonoverlapping("; code_ += " self.0[{{FIELD_OFFSET}}..].as_ptr(),"; code_ += " mem.as_mut_ptr() as *mut u8,"; - code_ += " core::mem::size_of::<<{{FIELD_TYPE}} as EndianScalar>::Scalar>(),"; + code_ += + " core::mem::size_of::<<{{FIELD_TYPE}} as " + "EndianScalar>::Scalar>(),"; code_ += " );"; code_ += " mem.assume_init()"; code_ += " })"; @@ -2827,7 +2855,9 @@ class RustGenerator : public BaseGenerator { code_ += " core::ptr::copy_nonoverlapping("; code_ += " &x_le as *const _ as *const u8,"; code_ += " self.0[{{FIELD_OFFSET}}..].as_mut_ptr(),"; - code_ += " core::mem::size_of::<<{{FIELD_TYPE}} as EndianScalar>::Scalar>(),"; + code_ += + " core::mem::size_of::<<{{FIELD_TYPE}} as " + "EndianScalar>::Scalar>(),"; code_ += " );"; code_ += " }"; } @@ -2989,14 +3019,14 @@ class RustGenerator : public BaseGenerator { } // namespace rust -bool GenerateRust(const Parser &parser, const std::string &path, - const std::string &file_name) { +static bool GenerateRust(const Parser &parser, const std::string &path, + const std::string &file_name) { rust::RustGenerator generator(parser, path, file_name); return generator.generate(); } -std::string RustMakeRule(const Parser &parser, const std::string &path, - const std::string &file_name) { +static std::string RustMakeRule(const Parser &parser, const std::string &path, + const std::string &file_name) { std::string filebase = flatbuffers::StripPath(flatbuffers::StripExtension(file_name)); rust::RustGenerator generator(parser, path, file_name); @@ -3020,9 +3050,8 @@ class RustCodeGenerator : public CodeGenerator { return Status::OK; } - Status GenerateCode(const uint8_t *buffer, int64_t length) override { - (void)buffer; - (void)length; + Status GenerateCode(const uint8_t *, int64_t, + const CodeGenOptions &) override { return Status::NOT_IMPLEMENTED; } diff --git a/src/idl_gen_swift.cpp b/src/idl_gen_swift.cpp index 695f5a0d753..17f3bf5fa49 100644 --- a/src/idl_gen_swift.cpp +++ b/src/idl_gen_swift.cpp @@ -148,7 +148,7 @@ static std::string GenArrayMainBody(const std::string &optional) { optional + " { "; } -} // namespace +} // namespace class SwiftGenerator : public BaseGenerator { private: @@ -261,8 +261,7 @@ class SwiftGenerator : public BaseGenerator { code_ += "private var _{{FIELDVAR}}: " + valueType; const auto accessing_value = IsEnum(field.value.type) ? ".value" : ""; const auto base_value = - IsStruct(field.value.type) ? (type + "()") - : SwiftConstant(field); + IsStruct(field.value.type) ? (type + "()") : SwiftConstant(field); main_constructor.push_back("_" + field_var + " = " + field_var + accessing_value); @@ -720,8 +719,7 @@ class SwiftGenerator : public BaseGenerator { if (IsBool(field.value.type.base_type)) { std::string default_value = - field.IsOptional() ? "nil" - : SwiftConstant(field); + field.IsOptional() ? "nil" : SwiftConstant(field); code_.SetValue("CONSTANT", default_value); code_.SetValue("VALUETYPE", "Bool"); code_ += GenReaderMainBody(optional) + "\\"; @@ -984,8 +982,9 @@ class SwiftGenerator : public BaseGenerator { } else if (IsEnum(type) && !field.IsOptional()) { code_.SetValue("CONSTANT", GenEnumDefaultValue(field)); code_ += "if {{FIELDVAR}} != {{CONSTANT}} {"; - } else if (IsFloat(type.base_type) && StringIsFlatbufferNan(field.value.constant)) { - code_ += "if !{{FIELDVAR}}.isNaN {"; + } else if (IsFloat(type.base_type) && + StringIsFlatbufferNan(field.value.constant)) { + code_ += "if !{{FIELDVAR}}.isNaN {"; } else if (IsScalar(type.base_type) && !IsEnum(type) && !IsBool(type.base_type) && !field.IsOptional()) { code_ += "if {{FIELDVAR}} != {{CONSTANT}} {"; @@ -1158,8 +1157,9 @@ class SwiftGenerator : public BaseGenerator { void GenEnum(const EnumDef &enum_def) { if (enum_def.generated) return; - const bool is_private_access = parser_.opts.swift_implementation_only || - enum_def.attributes.Lookup("private") != nullptr; + const bool is_private_access = + parser_.opts.swift_implementation_only || + enum_def.attributes.Lookup("private") != nullptr; code_.SetValue("ENUM_TYPE", enum_def.is_union ? "UnionEnum" : "Enum, Verifiable"); code_.SetValue("ACCESS_TYPE", is_private_access ? "internal" : "public"); @@ -1579,7 +1579,8 @@ class SwiftGenerator : public BaseGenerator { if (IsBool(field.value.type.base_type)) { code_ += "{{ACCESS_TYPE}} var {{FIELDVAR}}: Bool" + nullable; if (!field.IsOptional()) - base_constructor.push_back(field_var + " = " + SwiftConstant(field)); + base_constructor.push_back(field_var + " = " + + SwiftConstant(field)); } } } @@ -1827,22 +1828,24 @@ class SwiftGenerator : public BaseGenerator { } } - std::string SwiftConstant(const FieldDef& field) { + std::string SwiftConstant(const FieldDef &field) { const auto default_value = - StringIsFlatbufferNan(field.value.constant) ? ".nan" : - StringIsFlatbufferPositiveInfinity(field.value.constant) ? ".infinity" : - StringIsFlatbufferNegativeInfinity(field.value.constant) ? "-.infinity" : - IsBool(field.value.type.base_type) ? ("0" == field.value.constant ? "false" : "true") : - field.value.constant; + StringIsFlatbufferNan(field.value.constant) ? ".nan" + : StringIsFlatbufferPositiveInfinity(field.value.constant) ? ".infinity" + : StringIsFlatbufferNegativeInfinity(field.value.constant) + ? "-.infinity" + : IsBool(field.value.type.base_type) + ? ("0" == field.value.constant ? "false" : "true") + : field.value.constant; return default_value; - } + } std::string GenEnumConstructor(const std::string &at) { return "{{VALUETYPE}}(rawValue: " + GenReader("BASEVALUE", at) + ") "; } std::string ValidateFunc() { - return "static func validateVersion() { FlatBuffersVersion_23_5_9() }"; + return "static func validateVersion() { FlatBuffersVersion_23_5_26() }"; } std::string GenType(const Type &type, @@ -1899,8 +1902,9 @@ class SwiftGenerator : public BaseGenerator { IdlNamer namer_; }; } // namespace swift -bool GenerateSwift(const Parser &parser, const std::string &path, - const std::string &file_name) { + +static bool GenerateSwift(const Parser &parser, const std::string &path, + const std::string &file_name) { swift::SwiftGenerator generator(parser, path, file_name); return generator.generate(); } @@ -1915,9 +1919,8 @@ class SwiftCodeGenerator : public CodeGenerator { return Status::OK; } - Status GenerateCode(const uint8_t *buffer, int64_t length) override { - (void)buffer; - (void)length; + Status GenerateCode(const uint8_t *, int64_t, + const CodeGenOptions &) override { return Status::NOT_IMPLEMENTED; } diff --git a/src/idl_gen_text.cpp b/src/idl_gen_text.cpp index 59f68444133..a34667c4b68 100644 --- a/src/idl_gen_text.cpp +++ b/src/idl_gen_text.cpp @@ -30,8 +30,12 @@ namespace flatbuffers { struct PrintScalarTag {}; struct PrintPointerTag {}; -template struct PrintTag { typedef PrintScalarTag type; }; -template<> struct PrintTag { typedef PrintPointerTag type; }; +template struct PrintTag { + typedef PrintScalarTag type; +}; +template<> struct PrintTag { + typedef PrintPointerTag type; +}; struct JsonPrinter { // If indentation is less than 0, that indicates we don't want any newlines @@ -104,7 +108,7 @@ struct JsonPrinter { // "[]". template const char *PrintContainer(PrintScalarTag, const Container &c, SizeT size, - const Type &type, int indent, const uint8_t *) { + const Type &type, int indent, const uint8_t *) { const auto elem_indent = indent + Indent(); text += '['; AddNewLine(); @@ -126,7 +130,8 @@ struct JsonPrinter { // "[]". template const char *PrintContainer(PrintPointerTag, const Container &c, SizeT size, - const Type &type, int indent, const uint8_t *prev_val) { + const Type &type, int indent, + const uint8_t *prev_val) { const auto is_struct = IsStruct(type); const auto elem_indent = indent + Indent(); text += '['; @@ -152,7 +157,7 @@ struct JsonPrinter { template const char *PrintVector(const void *val, const Type &type, int indent, - const uint8_t *prev_val) { + const uint8_t *prev_val) { typedef Vector Container; typedef typename PrintTag::type tag; auto &vec = *reinterpret_cast(val); @@ -163,8 +168,8 @@ struct JsonPrinter { // Print an array a sequence of JSON values, comma separated, wrapped in "[]". template const char *PrintArray(const void *val, uint16_t size, const Type &type, - - int indent) { + + int indent) { typedef Array Container; typedef typename PrintTag::type tag; auto &arr = *reinterpret_cast(val); @@ -172,7 +177,7 @@ struct JsonPrinter { } const char *PrintOffset(const void *val, const Type &type, int indent, - const uint8_t *prev_val, soffset_t vector_index) { + const uint8_t *prev_val, soffset_t vector_index) { switch (type.base_type) { case BASE_TYPE_UNION: { // If this assert hits, you have an corrupt buffer, a union type field @@ -196,8 +201,8 @@ struct JsonPrinter { indent); case BASE_TYPE_STRING: { auto s = reinterpret_cast(val); - bool ok = EscapeString(s->c_str(), s->size(), &text, opts.allow_non_utf8, - opts.natural_utf8); + bool ok = EscapeString(s->c_str(), s->size(), &text, + opts.allow_non_utf8, opts.natural_utf8); return ok ? nullptr : "string contains non-utf8 bytes"; } case BASE_TYPE_VECTOR: { @@ -235,9 +240,7 @@ struct JsonPrinter { // clang-format on return nullptr; } - default: - FLATBUFFERS_ASSERT(0); - return "unknown type"; + default: FLATBUFFERS_ASSERT(0); return "unknown type"; } } @@ -265,15 +268,14 @@ struct JsonPrinter { text += "null"; } } else { - PrintScalar( - table->GetField(fd.value.offset, GetFieldDefault(fd)), - fd.value.type, indent); + PrintScalar(table->GetField(fd.value.offset, GetFieldDefault(fd)), + fd.value.type, indent); } } // Generate text for non-scalar field. const char *GenFieldOffset(const FieldDef &fd, const Table *table, bool fixed, - int indent, const uint8_t *prev_val) { + int indent, const uint8_t *prev_val) { const void *val = nullptr; if (fixed) { // The only non-scalar fields in structs are structs or arrays. @@ -372,7 +374,8 @@ struct JsonPrinter { }; static const char *GenerateTextImpl(const Parser &parser, const Table *table, - const StructDef &struct_def, std::string *_text) { + const StructDef &struct_def, + std::string *_text) { JsonPrinter printer(parser, *_text); auto err = printer.GenStruct(struct_def, table, 0); if (err) return err; @@ -381,8 +384,8 @@ static const char *GenerateTextImpl(const Parser &parser, const Table *table, } // Generate a text representation of a flatbuffer in JSON format. -const char *GenerateTextFromTable(const Parser &parser, const void *table, - const std::string &table_name, std::string *_text) { +const char *GenTextFromTable(const Parser &parser, const void *table, + const std::string &table_name, std::string *_text) { auto struct_def = parser.LookupStruct(table_name); if (struct_def == nullptr) { return "unknown struct"; } auto root = static_cast(table); @@ -390,8 +393,8 @@ const char *GenerateTextFromTable(const Parser &parser, const void *table, } // Generate a text representation of a flatbuffer in JSON format. -const char *GenerateText(const Parser &parser, const void *flatbuffer, - std::string *_text) { +const char *GenText(const Parser &parser, const void *flatbuffer, + std::string *_text) { FLATBUFFERS_ASSERT(parser.root_struct_def_); // call SetRootType() auto root = parser.opts.size_prefixed ? GetSizePrefixedRoot(flatbuffer) : GetRoot
(flatbuffer); @@ -403,7 +406,7 @@ static std::string TextFileName(const std::string &path, return path + file_name + ".json"; } -const char *GenerateTextFile(const Parser &parser, const std::string &path, +const char *GenTextFile(const Parser &parser, const std::string &path, const std::string &file_name) { if (parser.opts.use_flexbuffers) { std::string json; @@ -415,7 +418,7 @@ const char *GenerateTextFile(const Parser &parser, const std::string &path, } if (!parser.builder_.GetSize() || !parser.root_struct_def_) return nullptr; std::string text; - auto err = GenerateText(parser, parser.builder_.GetBufferPointer(), &text); + auto err = GenText(parser, parser.builder_.GetBufferPointer(), &text); if (err) return err; return flatbuffers::SaveFile(TextFileName(path, file_name).c_str(), text, false) @@ -423,8 +426,8 @@ const char *GenerateTextFile(const Parser &parser, const std::string &path, : "SaveFile failed"; } -std::string TextMakeRule(const Parser &parser, const std::string &path, - const std::string &file_name) { +static std::string TextMakeRule(const Parser &parser, const std::string &path, + const std::string &file_name) { if (!parser.builder_.GetSize() || !parser.root_struct_def_) return ""; std::string filebase = flatbuffers::StripPath(flatbuffers::StripExtension(file_name)); @@ -443,7 +446,7 @@ class TextCodeGenerator : public CodeGenerator { public: Status GenerateCode(const Parser &parser, const std::string &path, const std::string &filename) override { - auto err = GenerateTextFile(parser, path, filename); + auto err = GenTextFile(parser, path, filename); if (err) { status_detail = " (" + std::string(err) + ")"; return Status::ERROR; @@ -453,9 +456,8 @@ class TextCodeGenerator : public CodeGenerator { // Generate code from the provided `buffer` of given `length`. The buffer is a // serialized reflection.fbs. - Status GenerateCode(const uint8_t *buffer, int64_t length) override { - (void)buffer; - (void)length; + Status GenerateCode(const uint8_t *, int64_t, + const CodeGenOptions &) override { return Status::NOT_IMPLEMENTED; } diff --git a/src/idl_gen_ts.cpp b/src/idl_gen_ts.cpp index ca072f1c41c..acd2a4febec 100644 --- a/src/idl_gen_ts.cpp +++ b/src/idl_gen_ts.cpp @@ -408,7 +408,7 @@ class TsGenerator : public BaseGenerator { switch (type.base_type) { case BASE_TYPE_BOOL: case BASE_TYPE_CHAR: return "Int8"; - case BASE_TYPE_UTYPE: + case BASE_TYPE_UTYPE: return GenType(GetUnionUnderlyingType(type)); case BASE_TYPE_UCHAR: return "Uint8"; case BASE_TYPE_SHORT: return "Int16"; case BASE_TYPE_USHORT: return "Uint16"; @@ -477,10 +477,9 @@ class TsGenerator : public BaseGenerator { EnumVal *val = value.type.enum_def->FindByValue(value.constant); if (val == nullptr) val = const_cast(value.type.enum_def->MinValue()); - return AddImport(imports, *value.type.enum_def, - *value.type.enum_def) - .name + - "." + namer_.Variant(*val); + return AddImport(imports, *value.type.enum_def, *value.type.enum_def) + .name + + "." + namer_.Variant(*val); } } } @@ -563,11 +562,26 @@ class TsGenerator : public BaseGenerator { } } + static Type GetUnionUnderlyingType(const Type &type) + { + if (type.enum_def != nullptr && + type.enum_def->underlying_type.base_type != type.base_type) { + return type.enum_def->underlying_type; + } else { + return Type(BASE_TYPE_UCHAR); + } + } + + static Type GetUnderlyingVectorType(const Type &vector_type) + { + return (vector_type.base_type == BASE_TYPE_UTYPE) ? GetUnionUnderlyingType(vector_type) : vector_type; + } + // Returns the method name for use with add/put calls. std::string GenWriteMethod(const Type &type) { // Forward to signed versions since unsigned versions don't exist switch (type.base_type) { - case BASE_TYPE_UTYPE: + case BASE_TYPE_UTYPE: return GenWriteMethod(GetUnionUnderlyingType(type)); case BASE_TYPE_UCHAR: return GenWriteMethod(Type(BASE_TYPE_CHAR)); case BASE_TYPE_USHORT: return GenWriteMethod(Type(BASE_TYPE_SHORT)); case BASE_TYPE_UINT: return GenWriteMethod(Type(BASE_TYPE_INT)); @@ -850,8 +864,8 @@ class TsGenerator : public BaseGenerator { } if (enum_def.is_union) { - symbols_expression += ", unionTo" + name; - symbols_expression += ", unionListTo" + name; + symbols_expression += (", " + namer_.Function("unionTo" + name)); + symbols_expression += (", " + namer_.Function("unionListTo" + name)); } return symbols_expression; @@ -1764,7 +1778,8 @@ class TsGenerator : public BaseGenerator { auto vectortype = field.value.type.VectorType(); auto vectortypename = GenTypeName(imports, struct_def, vectortype, false); - auto inline_size = InlineSize(vectortype); + auto type = GetUnderlyingVectorType(vectortype); + auto inline_size = InlineSize(type); auto index = GenBBAccess() + ".__vector(this.bb_pos + offset) + index" + MaybeScale(inline_size); @@ -1995,8 +2010,9 @@ class TsGenerator : public BaseGenerator { if (IsVector(field.value.type)) { auto vector_type = field.value.type.VectorType(); - auto alignment = InlineAlignment(vector_type); - auto elem_size = InlineSize(vector_type); + auto type = GetUnderlyingVectorType(vector_type); + auto alignment = InlineAlignment(type); + auto elem_size = InlineSize(type); // Generate a method to create a vector from a JavaScript array if (!IsStruct(vector_type)) { @@ -2161,14 +2177,14 @@ class TsGenerator : public BaseGenerator { }; // namespace ts } // namespace ts -bool GenerateTS(const Parser &parser, const std::string &path, - const std::string &file_name) { +static bool GenerateTS(const Parser &parser, const std::string &path, + const std::string &file_name) { ts::TsGenerator generator(parser, path, file_name); return generator.generate(); } -std::string TSMakeRule(const Parser &parser, const std::string &path, - const std::string &file_name) { +static std::string TSMakeRule(const Parser &parser, const std::string &path, + const std::string &file_name) { std::string filebase = flatbuffers::StripPath(flatbuffers::StripExtension(file_name)); ts::TsGenerator generator(parser, path, file_name); @@ -2192,9 +2208,8 @@ class TsCodeGenerator : public CodeGenerator { return Status::OK; } - Status GenerateCode(const uint8_t *buffer, int64_t length) override { - (void)buffer; - (void)length; + Status GenerateCode(const uint8_t *, int64_t, + const CodeGenOptions &) override { return Status::NOT_IMPLEMENTED; } diff --git a/src/idl_namer.h b/src/idl_namer.h index 7f89433da65..337ac920b57 100644 --- a/src/idl_namer.h +++ b/src/idl_namer.h @@ -146,7 +146,8 @@ class IdlNamer : public Namer { std::string LegacyRustUnionTypeMethod(const FieldDef &d) { // assert d is a union - return Method(d.name + "_type"); + // d should convert case but not escape keywords due to historical reasons + return ConvertCase(d.name, config_.fields, Case::kLowerCamel) + "_type"; } private: diff --git a/src/idl_parser.cpp b/src/idl_parser.cpp index 055277b2e5a..2b401cf0c0b 100644 --- a/src/idl_parser.cpp +++ b/src/idl_parser.cpp @@ -947,8 +947,12 @@ CheckedError Parser::ParseField(StructDef &struct_def) { if (type.base_type == BASE_TYPE_UNION) { // For union fields, add a second auto-generated field to hold the type, // with a special suffix. - ECHECK(AddField(struct_def, name + UnionTypeFieldSuffix(), - type.enum_def->underlying_type, &typefield)); + + // To ensure compatibility with many codes that rely on the BASE_TYPE_UTYPE value to identify union type fields. + Type union_type(type.enum_def->underlying_type); + union_type.base_type = BASE_TYPE_UTYPE; + ECHECK(AddField(struct_def, name + UnionTypeFieldSuffix(),union_type, &typefield)); + } else if (IsVector(type) && type.element == BASE_TYPE_UNION) { advanced_features_ |= reflection::AdvancedUnionFeatures; // Only cpp, js and ts supports the union vector feature so far. @@ -2368,8 +2372,12 @@ template void EnumDef::ChangeEnumValue(EnumVal *ev, T new_value) { } namespace EnumHelper { -template struct EnumValType { typedef int64_t type; }; -template<> struct EnumValType { typedef uint64_t type; }; +template struct EnumValType { + typedef int64_t type; +}; +template<> struct EnumValType { + typedef uint64_t type; +}; } // namespace EnumHelper struct EnumValBuilder { @@ -2478,23 +2486,39 @@ CheckedError Parser::ParseEnum(const bool is_union, EnumDef **dest, &GetPooledString(RelativeToRootPath(opts.project_root, filename)); } enum_def->doc_comment = enum_comment; - if (!is_union && !opts.proto_mode) { + if (!opts.proto_mode) { // Give specialized error message, since this type spec used to // be optional in the first FlatBuffers release. + bool explicit_underlying_type = false; if (!Is(':')) { - return Error( - "must specify the underlying integer type for this" - " enum (e.g. \': short\', which was the default)."); + // Enum is forced to have an explicit underlying type in declaration. + if (!is_union) { + return Error( + "must specify the underlying integer type for this" + " enum (e.g. \': short\', which was the default)."); + } } else { + // Union underlying type is only supported for cpp + if (is_union && !SupportsUnionUnderlyingType()) { + return Error( + "Underlying type for union is not yet supported in at least one of " + "the specified programming languages."); + } NEXT(); + explicit_underlying_type = true; } - // Specify the integer type underlying this enum. - ECHECK(ParseType(enum_def->underlying_type)); - if (!IsInteger(enum_def->underlying_type.base_type) || - IsBool(enum_def->underlying_type.base_type)) - return Error("underlying enum type must be integral"); - // Make this type refer back to the enum it was derived from. - enum_def->underlying_type.enum_def = enum_def; + + if (explicit_underlying_type) { + // Specify the integer type underlying this enum. + ECHECK(ParseType(enum_def->underlying_type)); + if (!IsInteger(enum_def->underlying_type.base_type) || IsBool(enum_def->underlying_type.base_type)) { + return Error("underlying " + std::string(is_union ? "union" : "enum") + "type must be integral"); + } + + // Make this type refer back to the enum it was derived from. + enum_def->underlying_type.enum_def = enum_def; + } + } ECHECK(ParseMetaData(&enum_def->attributes)); const auto underlying_type = enum_def->underlying_type.base_type; @@ -2693,6 +2717,10 @@ bool Parser::Supports64BitOffsets() const { ~(IDLOptions::kCpp | IDLOptions::kJson | IDLOptions::kBinary)) == 0; } +bool Parser::SupportsUnionUnderlyingType() const { + return (opts.lang_to_generate & ~(IDLOptions::kCpp | IDLOptions::kTs)) == 0; +} + Namespace *Parser::UniqueNamespace(Namespace *ns) { for (auto it = namespaces_.begin(); it != namespaces_.end(); ++it) { if (ns->components == (*it)->components) { @@ -4424,6 +4452,10 @@ std::string Parser::ConformTo(const Parser &base) { return "values differ for enum: " + enum_val.name; } } + // Check underlying type changes + if (enum_def_base->underlying_type.base_type != enum_def.underlying_type.base_type) { + return "underlying type differ for " + std::string(enum_def.is_union ? "union: " : "enum: ") + qualified_name; + } } return ""; } diff --git a/src/reflection.cpp b/src/reflection.cpp index 0d0814ef622..f064c1c6bdf 100644 --- a/src/reflection.cpp +++ b/src/reflection.cpp @@ -24,17 +24,18 @@ namespace flatbuffers { namespace { -static void CopyInline(FlatBufferBuilder &fbb, const reflection::Field &fielddef, - const Table &table, size_t align, size_t size) { +static void CopyInline(FlatBufferBuilder &fbb, + const reflection::Field &fielddef, const Table &table, + size_t align, size_t size) { fbb.Align(align); fbb.PushBytes(table.GetStruct(fielddef.offset()), size); fbb.TrackField(fielddef.offset(), fbb.GetSize()); } static bool VerifyStruct(flatbuffers::Verifier &v, - const flatbuffers::Table &parent_table, - voffset_t field_offset, const reflection::Object &obj, - bool required) { + const flatbuffers::Table &parent_table, + voffset_t field_offset, const reflection::Object &obj, + bool required) { auto offset = parent_table.GetOptionalFieldOffset(field_offset); if (required && !offset) { return false; } @@ -44,9 +45,10 @@ static bool VerifyStruct(flatbuffers::Verifier &v, } static bool VerifyVectorOfStructs(flatbuffers::Verifier &v, - const flatbuffers::Table &parent_table, - voffset_t field_offset, - const reflection::Object &obj, bool required) { + const flatbuffers::Table &parent_table, + voffset_t field_offset, + const reflection::Object &obj, + bool required) { auto p = parent_table.GetPointer(field_offset); if (required && !p) { return false; } @@ -54,13 +56,15 @@ static bool VerifyVectorOfStructs(flatbuffers::Verifier &v, } // forward declare to resolve cyclic deps between VerifyObject and VerifyVector -static bool VerifyObject(flatbuffers::Verifier &v, const reflection::Schema &schema, - const reflection::Object &obj, - const flatbuffers::Table *table, bool required); - -static bool VerifyUnion(flatbuffers::Verifier &v, const reflection::Schema &schema, - uint8_t utype, const uint8_t *elem, - const reflection::Field &union_field) { +static bool VerifyObject(flatbuffers::Verifier &v, + const reflection::Schema &schema, + const reflection::Object &obj, + const flatbuffers::Table *table, bool required); + +static bool VerifyUnion(flatbuffers::Verifier &v, + const reflection::Schema &schema, uint8_t utype, + const uint8_t *elem, + const reflection::Field &union_field) { if (!utype) return true; // Not present. auto fb_enum = schema.enums()->Get(union_field.type()->index()); if (utype >= fb_enum->values()->size()) return false; @@ -83,9 +87,10 @@ static bool VerifyUnion(flatbuffers::Verifier &v, const reflection::Schema &sche } } -static bool VerifyVector(flatbuffers::Verifier &v, const reflection::Schema &schema, - const flatbuffers::Table &table, - const reflection::Field &vec_field) { +static bool VerifyVector(flatbuffers::Verifier &v, + const reflection::Schema &schema, + const flatbuffers::Table &table, + const reflection::Field &vec_field) { FLATBUFFERS_ASSERT(vec_field.type()->base_type() == reflection::Vector); if (!table.VerifyField(v, vec_field.offset(), sizeof(uoffset_t))) return false; @@ -161,9 +166,10 @@ static bool VerifyVector(flatbuffers::Verifier &v, const reflection::Schema &sch } } -static bool VerifyObject(flatbuffers::Verifier &v, const reflection::Schema &schema, - const reflection::Object &obj, - const flatbuffers::Table *table, bool required) { +static bool VerifyObject(flatbuffers::Verifier &v, + const reflection::Schema &schema, + const reflection::Object &obj, + const flatbuffers::Table *table, bool required) { if (!table) return !required; if (!table->VerifyTableStart(v)) return false; for (uoffset_t i = 0; i < obj.fields()->size(); i++) { @@ -251,8 +257,7 @@ static bool VerifyObject(flatbuffers::Verifier &v, const reflection::Schema &sch return true; } - -} // namespace +} // namespace int64_t GetAnyValueI(reflection::BaseType type, const uint8_t *data) { // clang-format off @@ -618,9 +623,6 @@ const uint8_t *AddFlatBuffer(std::vector &flatbuf, return flatbuf.data() + insertion_point + root_offset; } - - - Offset CopyTable(FlatBufferBuilder &fbb, const reflection::Schema &schema, const reflection::Object &objectdef, @@ -691,7 +693,7 @@ Offset CopyTable(FlatBufferBuilder &fbb, FLATBUFFERS_FALLTHROUGH(); // fall thru default: { // Scalars and structs. auto element_size = GetTypeSize(element_base_type); - auto element_alignment = element_size; // For primitive elements + auto element_alignment = element_size; // For primitive elements if (elemobjectdef && elemobjectdef->is_struct()) element_size = elemobjectdef->bytesize(); fbb.StartVector(vec->size(), element_size, element_alignment); @@ -746,7 +748,6 @@ Offset CopyTable(FlatBufferBuilder &fbb, } } - bool Verify(const reflection::Schema &schema, const reflection::Object &root, const uint8_t *const buf, const size_t length, const uoffset_t max_depth, const uoffset_t max_tables) { diff --git a/src/util.cpp b/src/util.cpp index 38d8536c090..b201246fd7a 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -90,13 +90,12 @@ static std::string ToCamelCase(const std::string &input, bool is_upper) { std::string s; for (size_t i = 0; i < input.length(); i++) { if (!i && input[i] == '_') { - s += input[i]; - // we ignore leading underscore but make following - // alphabet char upper. - if (i + 1 < input.length() && is_alpha(input[i + 1])) - s += CharToUpper(input[++i]); - } - else if (!i) + s += input[i]; + // we ignore leading underscore but make following + // alphabet char upper. + if (i + 1 < input.length() && is_alpha(input[i + 1])) + s += CharToUpper(input[++i]); + } else if (!i) s += is_upper ? CharToUpper(input[i]) : CharToLower(input[i]); else if (input[i] == '_' && i + 1 < input.length()) s += CharToUpper(input[++i]); @@ -116,7 +115,10 @@ static std::string ToSnakeCase(const std::string &input, bool screaming) { } else if (!islower(input[i])) { // Prevent duplicate underscores for Upper_Snake_Case strings // and UPPERCASE strings. - if (islower(input[i - 1]) || (isdigit(input[i-1]) && !isdigit(input[i]))) { s += '_'; } + if (islower(input[i - 1]) || + (isdigit(input[i - 1]) && !isdigit(input[i]))) { + s += '_'; + } s += screaming ? CharToUpper(input[i]) : CharToLower(input[i]); } else { s += screaming ? CharToUpper(input[i]) : input[i]; @@ -126,7 +128,7 @@ static std::string ToSnakeCase(const std::string &input, bool screaming) { } std::string ToAll(const std::string &input, - std::function transform) { + std::function transform) { std::string s; for (size_t i = 0; i < input.length(); i++) { s += transform(input[i]); } return s; @@ -142,7 +144,10 @@ std::string CamelToSnake(const std::string &input) { } else if (!islower(input[i])) { // Prevent duplicate underscores for Upper_Snake_Case strings // and UPPERCASE strings. - if (islower(input[i - 1]) || (isdigit(input[i-1]) && !isdigit(input[i]))) { s += '_'; } + if (islower(input[i - 1]) || + (isdigit(input[i - 1]) && !isdigit(input[i]))) { + s += '_'; + } s += CharToLower(input[i]); } else { s += input[i]; @@ -184,7 +189,6 @@ std::string ToDasher(const std::string &input) { return s; } - // Converts foo_bar_123baz_456 to foo_bar123_baz456 std::string SnakeToSnake2(const std::string &s) { if (s.length() <= 1) return s; @@ -206,8 +210,7 @@ std::string SnakeToSnake2(const std::string &s) { return result; } -} // namespace - +} // namespace bool LoadFile(const char *name, bool binary, std::string *buf) { FLATBUFFERS_ASSERT(g_load_file_function); diff --git a/swift/Sources/FlatBuffers/Constants.swift b/swift/Sources/FlatBuffers/Constants.swift index 7bbebc17aa3..272c572e4a1 100644 --- a/swift/Sources/FlatBuffers/Constants.swift +++ b/swift/Sources/FlatBuffers/Constants.swift @@ -119,4 +119,4 @@ extension UInt64: Scalar, Verifiable { public typealias NumericValue = UInt64 } -public func FlatBuffersVersion_23_5_9() {} +public func FlatBuffersVersion_23_5_26() {} diff --git a/tests/.gitignore b/tests/.gitignore new file mode 100644 index 00000000000..25d3361959e --- /dev/null +++ b/tests/.gitignore @@ -0,0 +1,2 @@ +# Generated files shouldn't be checked in for tests. +**_generated.h \ No newline at end of file diff --git a/tests/64bit/evolution/v1_generated.h b/tests/64bit/evolution/v1_generated.h index 7cec2c28769..2fc923f3f70 100644 --- a/tests/64bit/evolution/v1_generated.h +++ b/tests/64bit/evolution/v1_generated.h @@ -10,7 +10,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); namespace v1 { diff --git a/tests/64bit/evolution/v2_generated.h b/tests/64bit/evolution/v2_generated.h index d316d48a6b2..0b6a302fe7b 100644 --- a/tests/64bit/evolution/v2_generated.h +++ b/tests/64bit/evolution/v2_generated.h @@ -10,7 +10,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); namespace v2 { diff --git a/tests/64bit/offset64_test.cpp b/tests/64bit/offset64_test.cpp index 8e91fbea5b6..736a37d8ffd 100644 --- a/tests/64bit/offset64_test.cpp +++ b/tests/64bit/offset64_test.cpp @@ -7,14 +7,14 @@ #include #include -#include "evolution/v1_generated.h" -#include "evolution/v2_generated.h" #include "flatbuffers/base.h" #include "flatbuffers/buffer.h" #include "flatbuffers/flatbuffer_builder.h" #include "flatbuffers/flatbuffers.h" -#include "test_64bit_generated.h" -#include "test_assert.h" +#include "tests/64bit/evolution/v1_generated.h" +#include "tests/64bit/evolution/v2_generated.h" +#include "tests/64bit/test_64bit_generated.h" +#include "tests/test_assert.h" namespace flatbuffers { namespace tests { @@ -23,7 +23,8 @@ void Offset64Test() { FlatBufferBuilder64 builder; const size_t far_vector_size = 1LL << 2; - const size_t big_vector_size = 1LL << 31; + // Make a large number if wanting to test a real large buffer. + const size_t big_vector_size = 1LL << 2; { // First create the vectors that will be copied to the buffer. @@ -61,9 +62,6 @@ void Offset64Test() { // Finish the buffer. builder.Finish(root_table_offset); - // Ensure the buffer is big. - TEST_ASSERT(builder.GetSize() > FLATBUFFERS_MAX_BUFFER_SIZE); - Verifier::Options options; // Allow the verifier to verify 64-bit buffers. options.max_size = FLATBUFFERS_MAX_64_BUFFER_SIZE; @@ -268,15 +266,12 @@ void Offset64Evolution() { FlatBufferBuilder64 builder; std::vector giant_data; - giant_data.resize(1LL << 31); + giant_data.resize(1LL << 3); giant_data[2] = 42; builder.Finish( v2::CreateRootTableDirect(builder, 1234, &data, &giant_data)); - // Ensure the buffer is bigger than the 32-bit size limit for V1. - TEST_ASSERT(builder.GetSize() > FLATBUFFERS_MAX_BUFFER_SIZE); - // Use each version to get a view at the root table. auto v1_root = v1::GetRootTable(builder.GetBufferPointer()); auto v2_root = v2::GetRootTable(builder.GetBufferPointer()); diff --git a/tests/64bit/test_64bit_bfbs_generated.h b/tests/64bit/test_64bit_bfbs_generated.h index 999ce188088..9afa58a3e31 100644 --- a/tests/64bit/test_64bit_bfbs_generated.h +++ b/tests/64bit/test_64bit_bfbs_generated.h @@ -4,15 +4,8 @@ #ifndef FLATBUFFERS_GENERATED_TEST64BIT_BFBS_H_ #define FLATBUFFERS_GENERATED_TEST64BIT_BFBS_H_ -#include "flatbuffers/flatbuffers.h" - -// Ensure the included flatbuffers.h is the same version as when this file was -// generated, otherwise it may not be compatible. -static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && - FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, - "Non-compatible flatbuffers version included"); - +#include +#include struct RootTableBinarySchema { static const uint8_t *data() { // Buffer containing the binary schema. diff --git a/tests/64bit/test_64bit_generated.h b/tests/64bit/test_64bit_generated.h index 92e1b5544d4..5650ad577ae 100644 --- a/tests/64bit/test_64bit_generated.h +++ b/tests/64bit/test_64bit_generated.h @@ -10,7 +10,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); // For access to the binary schema that produced this file. diff --git a/tests/Abc.nim b/tests/Abc.nim index c516b93ba68..dbfa1aed454 100644 --- a/tests/Abc.nim +++ b/tests/Abc.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : ]# diff --git a/tests/BUILD.bazel b/tests/BUILD.bazel index 923890f602b..f306f7ec82f 100644 --- a/tests/BUILD.bazel +++ b/tests/BUILD.bazel @@ -65,13 +65,13 @@ cc_test( "test_assert.h", "test_builder.cpp", "test_builder.h", + "union_underlying_type_test_generated.h", "union_vector/union_vector_generated.h", "util_test.cpp", "util_test.h", ], copts = [ "-DFLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE", - "-DBAZEL_TEST_DATA_PATH", ], data = [ ":alignment_test.fbs", diff --git a/tests/DictionaryLookup/LongFloatEntry.java b/tests/DictionaryLookup/LongFloatEntry.java index 1ecb20fafe8..10b18f673fd 100644 --- a/tests/DictionaryLookup/LongFloatEntry.java +++ b/tests/DictionaryLookup/LongFloatEntry.java @@ -21,7 +21,7 @@ @SuppressWarnings("unused") public final class LongFloatEntry extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static LongFloatEntry getRootAsLongFloatEntry(ByteBuffer _bb) { return getRootAsLongFloatEntry(_bb, new LongFloatEntry()); } public static LongFloatEntry getRootAsLongFloatEntry(ByteBuffer _bb, LongFloatEntry 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); } diff --git a/tests/DictionaryLookup/LongFloatEntry.kt b/tests/DictionaryLookup/LongFloatEntry.kt index c42a59676a9..adc802f3329 100644 --- a/tests/DictionaryLookup/LongFloatEntry.kt +++ b/tests/DictionaryLookup/LongFloatEntry.kt @@ -44,7 +44,7 @@ class LongFloatEntry : Table() { return (val_1 - val_2).sign } companion object { - fun validateVersion() = Constants.FLATBUFFERS_23_5_9() + fun validateVersion() = Constants.FLATBUFFERS_23_5_26() fun getRootAsLongFloatEntry(_bb: ByteBuffer): LongFloatEntry = getRootAsLongFloatEntry(_bb, LongFloatEntry()) fun getRootAsLongFloatEntry(_bb: ByteBuffer, obj: LongFloatEntry): LongFloatEntry { _bb.order(ByteOrder.LITTLE_ENDIAN) diff --git a/tests/DictionaryLookup/LongFloatMap.java b/tests/DictionaryLookup/LongFloatMap.java index 39dc2f49a20..280acdd3d3e 100644 --- a/tests/DictionaryLookup/LongFloatMap.java +++ b/tests/DictionaryLookup/LongFloatMap.java @@ -21,7 +21,7 @@ @SuppressWarnings("unused") public final class LongFloatMap extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static LongFloatMap getRootAsLongFloatMap(ByteBuffer _bb) { return getRootAsLongFloatMap(_bb, new LongFloatMap()); } public static LongFloatMap getRootAsLongFloatMap(ByteBuffer _bb, LongFloatMap 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); } diff --git a/tests/DictionaryLookup/LongFloatMap.kt b/tests/DictionaryLookup/LongFloatMap.kt index dec96185802..690504b1081 100644 --- a/tests/DictionaryLookup/LongFloatMap.kt +++ b/tests/DictionaryLookup/LongFloatMap.kt @@ -58,7 +58,7 @@ class LongFloatMap : Table() { } } companion object { - fun validateVersion() = Constants.FLATBUFFERS_23_5_9() + fun validateVersion() = Constants.FLATBUFFERS_23_5_26() fun getRootAsLongFloatMap(_bb: ByteBuffer): LongFloatMap = getRootAsLongFloatMap(_bb, LongFloatMap()) fun getRootAsLongFloatMap(_bb: ByteBuffer, obj: LongFloatMap): LongFloatMap { _bb.order(ByteOrder.LITTLE_ENDIAN) diff --git a/tests/KeywordTest/KeywordsInTable.cs b/tests/KeywordTest/KeywordsInTable.cs index 0f43041b426..42e3287548f 100644 --- a/tests/KeywordTest/KeywordsInTable.cs +++ b/tests/KeywordTest/KeywordsInTable.cs @@ -13,7 +13,7 @@ public struct KeywordsInTable : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static KeywordsInTable GetRootAsKeywordsInTable(ByteBuffer _bb) { return GetRootAsKeywordsInTable(_bb, new KeywordsInTable()); } public static KeywordsInTable GetRootAsKeywordsInTable(ByteBuffer _bb, KeywordsInTable obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p = new Table(_i, _bb); } diff --git a/tests/KeywordTest/Table2.cs b/tests/KeywordTest/Table2.cs index dc2e14b8758..8561f9a2f9a 100644 --- a/tests/KeywordTest/Table2.cs +++ b/tests/KeywordTest/Table2.cs @@ -13,7 +13,7 @@ public struct Table2 : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static Table2 GetRootAsTable2(ByteBuffer _bb) { return GetRootAsTable2(_bb, new Table2()); } public static Table2 GetRootAsTable2(ByteBuffer _bb, Table2 obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p = new Table(_i, _bb); } diff --git a/tests/MoreDefaults.nim b/tests/MoreDefaults.nim index 630ba9fcdf8..0bd309c272e 100644 --- a/tests/MoreDefaults.nim +++ b/tests/MoreDefaults.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : ]# diff --git a/tests/MyGame/Example/Ability.lua b/tests/MyGame/Example/Ability.lua index db0d09f2524..d7fc542f1ac 100644 --- a/tests/MyGame/Example/Ability.lua +++ b/tests/MyGame/Example/Ability.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //monster_test.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/MyGame/Example/Ability.nim b/tests/MyGame/Example/Ability.nim index 9c7abebcc7a..1eebaa879c9 100644 --- a/tests/MyGame/Example/Ability.nim +++ b/tests/MyGame/Example/Ability.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/MyGame/Example/Any.lua b/tests/MyGame/Example/Any.lua index 9df80056bdd..ce4a9299888 100644 --- a/tests/MyGame/Example/Any.lua +++ b/tests/MyGame/Example/Any.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //monster_test.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/MyGame/Example/Any.nim b/tests/MyGame/Example/Any.nim index 343927653ce..c4c0b8d3d4f 100644 --- a/tests/MyGame/Example/Any.nim +++ b/tests/MyGame/Example/Any.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/MyGame/Example/AnyAmbiguousAliases.lua b/tests/MyGame/Example/AnyAmbiguousAliases.lua index 4a836ccb0a8..1aa588c7631 100644 --- a/tests/MyGame/Example/AnyAmbiguousAliases.lua +++ b/tests/MyGame/Example/AnyAmbiguousAliases.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //monster_test.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/MyGame/Example/AnyAmbiguousAliases.nim b/tests/MyGame/Example/AnyAmbiguousAliases.nim index 6ba5fe8f10b..8de0ebdcd1f 100644 --- a/tests/MyGame/Example/AnyAmbiguousAliases.nim +++ b/tests/MyGame/Example/AnyAmbiguousAliases.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/MyGame/Example/AnyUniqueAliases.lua b/tests/MyGame/Example/AnyUniqueAliases.lua index 54821e8ee23..21b7d63e8aa 100644 --- a/tests/MyGame/Example/AnyUniqueAliases.lua +++ b/tests/MyGame/Example/AnyUniqueAliases.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //monster_test.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/MyGame/Example/AnyUniqueAliases.nim b/tests/MyGame/Example/AnyUniqueAliases.nim index cdf1324c060..d18c80b7c89 100644 --- a/tests/MyGame/Example/AnyUniqueAliases.nim +++ b/tests/MyGame/Example/AnyUniqueAliases.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/MyGame/Example/ArrayStruct.py b/tests/MyGame/Example/ArrayStruct.py index be85ec89673..a839c09f9c1 100644 --- a/tests/MyGame/Example/ArrayStruct.py +++ b/tests/MyGame/Example/ArrayStruct.py @@ -5,7 +5,7 @@ import flatbuffers from flatbuffers.compat import import_numpy from typing import Any -from .MyGame.Example.NestedStruct import NestedStruct +from MyGame.Example.NestedStruct import NestedStruct np = import_numpy() class ArrayStruct(object): diff --git a/tests/MyGame/Example/ArrayTable.cs b/tests/MyGame/Example/ArrayTable.cs index 8b6d275d192..d688e401e1c 100644 --- a/tests/MyGame/Example/ArrayTable.cs +++ b/tests/MyGame/Example/ArrayTable.cs @@ -13,7 +13,7 @@ public struct ArrayTable : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static ArrayTable GetRootAsArrayTable(ByteBuffer _bb) { return GetRootAsArrayTable(_bb, new ArrayTable()); } public static ArrayTable GetRootAsArrayTable(ByteBuffer _bb, ArrayTable obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public static bool ArrayTableBufferHasIdentifier(ByteBuffer _bb) { return Table.__has_identifier(_bb, "ARRT"); } diff --git a/tests/MyGame/Example/ArrayTable.java b/tests/MyGame/Example/ArrayTable.java index ef88e73b270..5185db12e5b 100644 --- a/tests/MyGame/Example/ArrayTable.java +++ b/tests/MyGame/Example/ArrayTable.java @@ -21,7 +21,7 @@ @SuppressWarnings("unused") public final class ArrayTable extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static ArrayTable getRootAsArrayTable(ByteBuffer _bb) { return getRootAsArrayTable(_bb, new ArrayTable()); } public static ArrayTable getRootAsArrayTable(ByteBuffer _bb, ArrayTable obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); } public static boolean ArrayTableBufferHasIdentifier(ByteBuffer _bb) { return __has_identifier(_bb, "ARRT"); } diff --git a/tests/MyGame/Example/ArrayTable.py b/tests/MyGame/Example/ArrayTable.py index 90fbb4a4650..7d314dfd517 100644 --- a/tests/MyGame/Example/ArrayTable.py +++ b/tests/MyGame/Example/ArrayTable.py @@ -5,7 +5,7 @@ import flatbuffers from flatbuffers.compat import import_numpy from typing import Any -from .MyGame.Example.ArrayStruct import ArrayStruct +from MyGame.Example.ArrayStruct import ArrayStruct from typing import Optional np = import_numpy() diff --git a/tests/MyGame/Example/Color.lua b/tests/MyGame/Example/Color.lua index 6bca6b7532e..d4d59e01ed0 100644 --- a/tests/MyGame/Example/Color.lua +++ b/tests/MyGame/Example/Color.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //monster_test.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/MyGame/Example/Color.nim b/tests/MyGame/Example/Color.nim index e624876c57b..90956ca178f 100644 --- a/tests/MyGame/Example/Color.nim +++ b/tests/MyGame/Example/Color.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/MyGame/Example/LongEnum.lua b/tests/MyGame/Example/LongEnum.lua index 4259a5f6407..3864c706431 100644 --- a/tests/MyGame/Example/LongEnum.lua +++ b/tests/MyGame/Example/LongEnum.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //monster_test.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/MyGame/Example/LongEnum.nim b/tests/MyGame/Example/LongEnum.nim index 1d249233c44..5a63921ed31 100644 --- a/tests/MyGame/Example/LongEnum.nim +++ b/tests/MyGame/Example/LongEnum.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/MyGame/Example/Monster.cs b/tests/MyGame/Example/Monster.cs index e6bf8150d6f..fb4c9e744a7 100644 --- a/tests/MyGame/Example/Monster.cs +++ b/tests/MyGame/Example/Monster.cs @@ -14,7 +14,7 @@ public struct Monster : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static Monster GetRootAsMonster(ByteBuffer _bb) { return GetRootAsMonster(_bb, new Monster()); } public static Monster GetRootAsMonster(ByteBuffer _bb, Monster obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public static bool MonsterBufferHasIdentifier(ByteBuffer _bb) { return Table.__has_identifier(_bb, "MONS"); } diff --git a/tests/MyGame/Example/Monster.java b/tests/MyGame/Example/Monster.java index 92029f74d2e..f049dea83b2 100644 --- a/tests/MyGame/Example/Monster.java +++ b/tests/MyGame/Example/Monster.java @@ -24,7 +24,7 @@ */ @SuppressWarnings("unused") public final class Monster extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static Monster getRootAsMonster(ByteBuffer _bb) { return getRootAsMonster(_bb, new Monster()); } public static Monster getRootAsMonster(ByteBuffer _bb, Monster obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); } public static boolean MonsterBufferHasIdentifier(ByteBuffer _bb) { return __has_identifier(_bb, "MONS"); } diff --git a/tests/MyGame/Example/Monster.kt b/tests/MyGame/Example/Monster.kt index 73f24ff4e5a..dec2848d46c 100644 --- a/tests/MyGame/Example/Monster.kt +++ b/tests/MyGame/Example/Monster.kt @@ -1002,7 +1002,7 @@ class Monster : Table() { return compareStrings(__offset(10, o1, _bb), __offset(10, o2, _bb), _bb) } companion object { - fun validateVersion() = Constants.FLATBUFFERS_23_5_9() + fun validateVersion() = Constants.FLATBUFFERS_23_5_26() fun getRootAsMonster(_bb: ByteBuffer): Monster = getRootAsMonster(_bb, Monster()) fun getRootAsMonster(_bb: ByteBuffer, obj: Monster): Monster { _bb.order(ByteOrder.LITTLE_ENDIAN) diff --git a/tests/MyGame/Example/Monster.lua b/tests/MyGame/Example/Monster.lua index cbe55b2bdc7..774adac6a8e 100644 --- a/tests/MyGame/Example/Monster.lua +++ b/tests/MyGame/Example/Monster.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //monster_test.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/MyGame/Example/Monster.nim b/tests/MyGame/Example/Monster.nim index aaef2ec5c94..04f043cbd1c 100644 --- a/tests/MyGame/Example/Monster.nim +++ b/tests/MyGame/Example/Monster.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/MyGame/Example/Monster.py b/tests/MyGame/Example/Monster.py index f216f84f7bc..1503011fc29 100644 --- a/tests/MyGame/Example/Monster.py +++ b/tests/MyGame/Example/Monster.py @@ -34,7 +34,7 @@ def Pos(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4)) if o != 0: x = o + self._tab.Pos - from .MyGame.Example.Vec3 import Vec3 + from MyGame.Example.Vec3 import Vec3 obj = Vec3() obj.Init(self._tab.Bytes, x) return obj @@ -118,7 +118,7 @@ def Test4(self, j): if o != 0: x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 - from .MyGame.Example.Test import Test + from MyGame.Example.Test import Test obj = Test() obj.Init(self._tab.Bytes, x) return obj @@ -165,7 +165,7 @@ def Testarrayoftables(self, j): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from .MyGame.Example.Monster import Monster + from MyGame.Example.Monster import Monster obj = Monster() obj.Init(self._tab.Bytes, x) return obj @@ -188,7 +188,7 @@ def Enemy(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(28)) if o != 0: x = self._tab.Indirect(o + self._tab.Pos) - from .MyGame.Example.Monster import Monster + from MyGame.Example.Monster import Monster obj = Monster() obj.Init(self._tab.Bytes, x) return obj @@ -213,7 +213,7 @@ def TestnestedflatbufferAsNumpy(self): def TestnestedflatbufferNestedRoot(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(30)) if o != 0: - from .MyGame.Example.Monster import Monster + from MyGame.Example.Monster import Monster return Monster.GetRootAs(self._tab.Bytes, self._tab.Vector(o)) return 0 @@ -234,7 +234,7 @@ def Testempty(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(32)) if o != 0: x = self._tab.Indirect(o + self._tab.Pos) - from .MyGame.Example.Stat import Stat + from MyGame.Example.Stat import Stat obj = Stat() obj.Init(self._tab.Bytes, x) return obj @@ -377,7 +377,7 @@ def Testarrayofsortedstruct(self, j): if o != 0: x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 8 - from .MyGame.Example.Ability import Ability + from MyGame.Example.Ability import Ability obj = Ability() obj.Init(self._tab.Bytes, x) return obj @@ -428,7 +428,7 @@ def Test5(self, j): if o != 0: x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 - from .MyGame.Example.Test import Test + from MyGame.Example.Test import Test obj = Test() obj.Init(self._tab.Bytes, x) return obj @@ -505,7 +505,7 @@ def ParentNamespaceTest(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(72)) if o != 0: x = self._tab.Indirect(o + self._tab.Pos) - from .MyGame.InParentNamespace import InParentNamespace + from MyGame.InParentNamespace import InParentNamespace obj = InParentNamespace() obj.Init(self._tab.Bytes, x) return obj @@ -518,7 +518,7 @@ def VectorOfReferrables(self, j): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from .MyGame.Example.Referrable import Referrable + from MyGame.Example.Referrable import Referrable obj = Referrable() obj.Init(self._tab.Bytes, x) return obj @@ -577,7 +577,7 @@ def VectorOfStrongReferrables(self, j): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from .MyGame.Example.Referrable import Referrable + from MyGame.Example.Referrable import Referrable obj = Referrable() obj.Init(self._tab.Bytes, x) return obj @@ -750,7 +750,7 @@ def TestrequirednestedflatbufferAsNumpy(self): def TestrequirednestedflatbufferNestedRoot(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(102)) if o != 0: - from .MyGame.Example.Monster import Monster + from MyGame.Example.Monster import Monster return Monster.GetRootAs(self._tab.Bytes, self._tab.Vector(o)) return 0 @@ -773,7 +773,7 @@ def ScalarKeySortedTables(self, j): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from .MyGame.Example.Stat import Stat + from MyGame.Example.Stat import Stat obj = Stat() obj.Init(self._tab.Bytes, x) return obj @@ -796,7 +796,7 @@ def NativeInline(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(106)) if o != 0: x = o + self._tab.Pos - from .MyGame.Example.Test import Test + from MyGame.Example.Test import Test obj = Test() obj.Init(self._tab.Bytes, x) return obj @@ -881,31 +881,31 @@ def Start(builder): def MonsterAddPos(builder, pos): builder.PrependStructSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(pos), 0) -def AddPos(builder: flatbuffers.Builder, pos: Any): +def AddPos(builder, pos): MonsterAddPos(builder, pos) def MonsterAddMana(builder, mana): builder.PrependInt16Slot(1, mana, 150) -def AddMana(builder: flatbuffers.Builder, mana: int): +def AddMana(builder, mana): MonsterAddMana(builder, mana) def MonsterAddHp(builder, hp): builder.PrependInt16Slot(2, hp, 100) -def AddHp(builder: flatbuffers.Builder, hp: int): +def AddHp(builder, hp): MonsterAddHp(builder, hp) def MonsterAddName(builder, name): builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) -def AddName(builder: flatbuffers.Builder, name: int): +def AddName(builder, name): MonsterAddName(builder, name) def MonsterAddInventory(builder, inventory): builder.PrependUOffsetTRelativeSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(inventory), 0) -def AddInventory(builder: flatbuffers.Builder, inventory: int): +def AddInventory(builder, inventory): MonsterAddInventory(builder, inventory) def MonsterStartInventoryVector(builder, numElems): @@ -917,25 +917,25 @@ def StartInventoryVector(builder, numElems: int) -> int: def MonsterAddColor(builder, color): builder.PrependUint8Slot(6, color, 8) -def AddColor(builder: flatbuffers.Builder, color: int): +def AddColor(builder, color): MonsterAddColor(builder, color) def MonsterAddTestType(builder, testType): builder.PrependUint8Slot(7, testType, 0) -def AddTestType(builder: flatbuffers.Builder, testType: int): +def AddTestType(builder, testType): MonsterAddTestType(builder, testType) def MonsterAddTest(builder, test): builder.PrependUOffsetTRelativeSlot(8, flatbuffers.number_types.UOffsetTFlags.py_type(test), 0) -def AddTest(builder: flatbuffers.Builder, test: int): +def AddTest(builder, test): MonsterAddTest(builder, test) def MonsterAddTest4(builder, test4): builder.PrependUOffsetTRelativeSlot(9, flatbuffers.number_types.UOffsetTFlags.py_type(test4), 0) -def AddTest4(builder: flatbuffers.Builder, test4: int): +def AddTest4(builder, test4): MonsterAddTest4(builder, test4) def MonsterStartTest4Vector(builder, numElems): @@ -947,7 +947,7 @@ def StartTest4Vector(builder, numElems: int) -> int: def MonsterAddTestarrayofstring(builder, testarrayofstring): builder.PrependUOffsetTRelativeSlot(10, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofstring), 0) -def AddTestarrayofstring(builder: flatbuffers.Builder, testarrayofstring: int): +def AddTestarrayofstring(builder, testarrayofstring): MonsterAddTestarrayofstring(builder, testarrayofstring) def MonsterStartTestarrayofstringVector(builder, numElems): @@ -959,7 +959,7 @@ def StartTestarrayofstringVector(builder, numElems: int) -> int: def MonsterAddTestarrayoftables(builder, testarrayoftables): builder.PrependUOffsetTRelativeSlot(11, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayoftables), 0) -def AddTestarrayoftables(builder: flatbuffers.Builder, testarrayoftables: int): +def AddTestarrayoftables(builder, testarrayoftables): MonsterAddTestarrayoftables(builder, testarrayoftables) def MonsterStartTestarrayoftablesVector(builder, numElems): @@ -971,13 +971,13 @@ def StartTestarrayoftablesVector(builder, numElems: int) -> int: def MonsterAddEnemy(builder, enemy): builder.PrependUOffsetTRelativeSlot(12, flatbuffers.number_types.UOffsetTFlags.py_type(enemy), 0) -def AddEnemy(builder: flatbuffers.Builder, enemy: int): +def AddEnemy(builder, enemy): MonsterAddEnemy(builder, enemy) def MonsterAddTestnestedflatbuffer(builder, testnestedflatbuffer): builder.PrependUOffsetTRelativeSlot(13, flatbuffers.number_types.UOffsetTFlags.py_type(testnestedflatbuffer), 0) -def AddTestnestedflatbuffer(builder: flatbuffers.Builder, testnestedflatbuffer: int): +def AddTestnestedflatbuffer(builder, testnestedflatbuffer): MonsterAddTestnestedflatbuffer(builder, testnestedflatbuffer) def MonsterStartTestnestedflatbufferVector(builder, numElems): @@ -996,67 +996,67 @@ def MakeTestnestedflatbufferVectorFromBytes(builder, bytes): def MonsterAddTestempty(builder, testempty): builder.PrependUOffsetTRelativeSlot(14, flatbuffers.number_types.UOffsetTFlags.py_type(testempty), 0) -def AddTestempty(builder: flatbuffers.Builder, testempty: int): +def AddTestempty(builder, testempty): MonsterAddTestempty(builder, testempty) def MonsterAddTestbool(builder, testbool): builder.PrependBoolSlot(15, testbool, 0) -def AddTestbool(builder: flatbuffers.Builder, testbool: bool): +def AddTestbool(builder, testbool): MonsterAddTestbool(builder, testbool) def MonsterAddTesthashs32Fnv1(builder, testhashs32Fnv1): builder.PrependInt32Slot(16, testhashs32Fnv1, 0) -def AddTesthashs32Fnv1(builder: flatbuffers.Builder, testhashs32Fnv1: int): +def AddTesthashs32Fnv1(builder, testhashs32Fnv1): MonsterAddTesthashs32Fnv1(builder, testhashs32Fnv1) def MonsterAddTesthashu32Fnv1(builder, testhashu32Fnv1): builder.PrependUint32Slot(17, testhashu32Fnv1, 0) -def AddTesthashu32Fnv1(builder: flatbuffers.Builder, testhashu32Fnv1: int): +def AddTesthashu32Fnv1(builder, testhashu32Fnv1): MonsterAddTesthashu32Fnv1(builder, testhashu32Fnv1) def MonsterAddTesthashs64Fnv1(builder, testhashs64Fnv1): builder.PrependInt64Slot(18, testhashs64Fnv1, 0) -def AddTesthashs64Fnv1(builder: flatbuffers.Builder, testhashs64Fnv1: int): +def AddTesthashs64Fnv1(builder, testhashs64Fnv1): MonsterAddTesthashs64Fnv1(builder, testhashs64Fnv1) def MonsterAddTesthashu64Fnv1(builder, testhashu64Fnv1): builder.PrependUint64Slot(19, testhashu64Fnv1, 0) -def AddTesthashu64Fnv1(builder: flatbuffers.Builder, testhashu64Fnv1: int): +def AddTesthashu64Fnv1(builder, testhashu64Fnv1): MonsterAddTesthashu64Fnv1(builder, testhashu64Fnv1) def MonsterAddTesthashs32Fnv1a(builder, testhashs32Fnv1a): builder.PrependInt32Slot(20, testhashs32Fnv1a, 0) -def AddTesthashs32Fnv1a(builder: flatbuffers.Builder, testhashs32Fnv1a: int): +def AddTesthashs32Fnv1a(builder, testhashs32Fnv1a): MonsterAddTesthashs32Fnv1a(builder, testhashs32Fnv1a) def MonsterAddTesthashu32Fnv1a(builder, testhashu32Fnv1a): builder.PrependUint32Slot(21, testhashu32Fnv1a, 0) -def AddTesthashu32Fnv1a(builder: flatbuffers.Builder, testhashu32Fnv1a: int): +def AddTesthashu32Fnv1a(builder, testhashu32Fnv1a): MonsterAddTesthashu32Fnv1a(builder, testhashu32Fnv1a) def MonsterAddTesthashs64Fnv1a(builder, testhashs64Fnv1a): builder.PrependInt64Slot(22, testhashs64Fnv1a, 0) -def AddTesthashs64Fnv1a(builder: flatbuffers.Builder, testhashs64Fnv1a: int): +def AddTesthashs64Fnv1a(builder, testhashs64Fnv1a): MonsterAddTesthashs64Fnv1a(builder, testhashs64Fnv1a) def MonsterAddTesthashu64Fnv1a(builder, testhashu64Fnv1a): builder.PrependUint64Slot(23, testhashu64Fnv1a, 0) -def AddTesthashu64Fnv1a(builder: flatbuffers.Builder, testhashu64Fnv1a: int): +def AddTesthashu64Fnv1a(builder, testhashu64Fnv1a): MonsterAddTesthashu64Fnv1a(builder, testhashu64Fnv1a) def MonsterAddTestarrayofbools(builder, testarrayofbools): builder.PrependUOffsetTRelativeSlot(24, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofbools), 0) -def AddTestarrayofbools(builder: flatbuffers.Builder, testarrayofbools: int): +def AddTestarrayofbools(builder, testarrayofbools): MonsterAddTestarrayofbools(builder, testarrayofbools) def MonsterStartTestarrayofboolsVector(builder, numElems): @@ -1068,25 +1068,25 @@ def StartTestarrayofboolsVector(builder, numElems: int) -> int: def MonsterAddTestf(builder, testf): builder.PrependFloat32Slot(25, testf, 3.14159) -def AddTestf(builder: flatbuffers.Builder, testf: float): +def AddTestf(builder, testf): MonsterAddTestf(builder, testf) def MonsterAddTestf2(builder, testf2): builder.PrependFloat32Slot(26, testf2, 3.0) -def AddTestf2(builder: flatbuffers.Builder, testf2: float): +def AddTestf2(builder, testf2): MonsterAddTestf2(builder, testf2) def MonsterAddTestf3(builder, testf3): builder.PrependFloat32Slot(27, testf3, 0.0) -def AddTestf3(builder: flatbuffers.Builder, testf3: float): +def AddTestf3(builder, testf3): MonsterAddTestf3(builder, testf3) def MonsterAddTestarrayofstring2(builder, testarrayofstring2): builder.PrependUOffsetTRelativeSlot(28, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofstring2), 0) -def AddTestarrayofstring2(builder: flatbuffers.Builder, testarrayofstring2: int): +def AddTestarrayofstring2(builder, testarrayofstring2): MonsterAddTestarrayofstring2(builder, testarrayofstring2) def MonsterStartTestarrayofstring2Vector(builder, numElems): @@ -1098,7 +1098,7 @@ def StartTestarrayofstring2Vector(builder, numElems: int) -> int: def MonsterAddTestarrayofsortedstruct(builder, testarrayofsortedstruct): builder.PrependUOffsetTRelativeSlot(29, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofsortedstruct), 0) -def AddTestarrayofsortedstruct(builder: flatbuffers.Builder, testarrayofsortedstruct: int): +def AddTestarrayofsortedstruct(builder, testarrayofsortedstruct): MonsterAddTestarrayofsortedstruct(builder, testarrayofsortedstruct) def MonsterStartTestarrayofsortedstructVector(builder, numElems): @@ -1110,7 +1110,7 @@ def StartTestarrayofsortedstructVector(builder, numElems: int) -> int: def MonsterAddFlex(builder, flex): builder.PrependUOffsetTRelativeSlot(30, flatbuffers.number_types.UOffsetTFlags.py_type(flex), 0) -def AddFlex(builder: flatbuffers.Builder, flex: int): +def AddFlex(builder, flex): MonsterAddFlex(builder, flex) def MonsterStartFlexVector(builder, numElems): @@ -1122,7 +1122,7 @@ def StartFlexVector(builder, numElems: int) -> int: def MonsterAddTest5(builder, test5): builder.PrependUOffsetTRelativeSlot(31, flatbuffers.number_types.UOffsetTFlags.py_type(test5), 0) -def AddTest5(builder: flatbuffers.Builder, test5: int): +def AddTest5(builder, test5): MonsterAddTest5(builder, test5) def MonsterStartTest5Vector(builder, numElems): @@ -1134,7 +1134,7 @@ def StartTest5Vector(builder, numElems: int) -> int: def MonsterAddVectorOfLongs(builder, vectorOfLongs): builder.PrependUOffsetTRelativeSlot(32, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfLongs), 0) -def AddVectorOfLongs(builder: flatbuffers.Builder, vectorOfLongs: int): +def AddVectorOfLongs(builder, vectorOfLongs): MonsterAddVectorOfLongs(builder, vectorOfLongs) def MonsterStartVectorOfLongsVector(builder, numElems): @@ -1146,7 +1146,7 @@ def StartVectorOfLongsVector(builder, numElems: int) -> int: def MonsterAddVectorOfDoubles(builder, vectorOfDoubles): builder.PrependUOffsetTRelativeSlot(33, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfDoubles), 0) -def AddVectorOfDoubles(builder: flatbuffers.Builder, vectorOfDoubles: int): +def AddVectorOfDoubles(builder, vectorOfDoubles): MonsterAddVectorOfDoubles(builder, vectorOfDoubles) def MonsterStartVectorOfDoublesVector(builder, numElems): @@ -1158,13 +1158,13 @@ def StartVectorOfDoublesVector(builder, numElems: int) -> int: def MonsterAddParentNamespaceTest(builder, parentNamespaceTest): builder.PrependUOffsetTRelativeSlot(34, flatbuffers.number_types.UOffsetTFlags.py_type(parentNamespaceTest), 0) -def AddParentNamespaceTest(builder: flatbuffers.Builder, parentNamespaceTest: int): +def AddParentNamespaceTest(builder, parentNamespaceTest): MonsterAddParentNamespaceTest(builder, parentNamespaceTest) def MonsterAddVectorOfReferrables(builder, vectorOfReferrables): builder.PrependUOffsetTRelativeSlot(35, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfReferrables), 0) -def AddVectorOfReferrables(builder: flatbuffers.Builder, vectorOfReferrables: int): +def AddVectorOfReferrables(builder, vectorOfReferrables): MonsterAddVectorOfReferrables(builder, vectorOfReferrables) def MonsterStartVectorOfReferrablesVector(builder, numElems): @@ -1176,13 +1176,13 @@ def StartVectorOfReferrablesVector(builder, numElems: int) -> int: def MonsterAddSingleWeakReference(builder, singleWeakReference): builder.PrependUint64Slot(36, singleWeakReference, 0) -def AddSingleWeakReference(builder: flatbuffers.Builder, singleWeakReference: int): +def AddSingleWeakReference(builder, singleWeakReference): MonsterAddSingleWeakReference(builder, singleWeakReference) def MonsterAddVectorOfWeakReferences(builder, vectorOfWeakReferences): builder.PrependUOffsetTRelativeSlot(37, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfWeakReferences), 0) -def AddVectorOfWeakReferences(builder: flatbuffers.Builder, vectorOfWeakReferences: int): +def AddVectorOfWeakReferences(builder, vectorOfWeakReferences): MonsterAddVectorOfWeakReferences(builder, vectorOfWeakReferences) def MonsterStartVectorOfWeakReferencesVector(builder, numElems): @@ -1194,7 +1194,7 @@ def StartVectorOfWeakReferencesVector(builder, numElems: int) -> int: def MonsterAddVectorOfStrongReferrables(builder, vectorOfStrongReferrables): builder.PrependUOffsetTRelativeSlot(38, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfStrongReferrables), 0) -def AddVectorOfStrongReferrables(builder: flatbuffers.Builder, vectorOfStrongReferrables: int): +def AddVectorOfStrongReferrables(builder, vectorOfStrongReferrables): MonsterAddVectorOfStrongReferrables(builder, vectorOfStrongReferrables) def MonsterStartVectorOfStrongReferrablesVector(builder, numElems): @@ -1206,13 +1206,13 @@ def StartVectorOfStrongReferrablesVector(builder, numElems: int) -> int: def MonsterAddCoOwningReference(builder, coOwningReference): builder.PrependUint64Slot(39, coOwningReference, 0) -def AddCoOwningReference(builder: flatbuffers.Builder, coOwningReference: int): +def AddCoOwningReference(builder, coOwningReference): MonsterAddCoOwningReference(builder, coOwningReference) def MonsterAddVectorOfCoOwningReferences(builder, vectorOfCoOwningReferences): builder.PrependUOffsetTRelativeSlot(40, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfCoOwningReferences), 0) -def AddVectorOfCoOwningReferences(builder: flatbuffers.Builder, vectorOfCoOwningReferences: int): +def AddVectorOfCoOwningReferences(builder, vectorOfCoOwningReferences): MonsterAddVectorOfCoOwningReferences(builder, vectorOfCoOwningReferences) def MonsterStartVectorOfCoOwningReferencesVector(builder, numElems): @@ -1224,13 +1224,13 @@ def StartVectorOfCoOwningReferencesVector(builder, numElems: int) -> int: def MonsterAddNonOwningReference(builder, nonOwningReference): builder.PrependUint64Slot(41, nonOwningReference, 0) -def AddNonOwningReference(builder: flatbuffers.Builder, nonOwningReference: int): +def AddNonOwningReference(builder, nonOwningReference): MonsterAddNonOwningReference(builder, nonOwningReference) def MonsterAddVectorOfNonOwningReferences(builder, vectorOfNonOwningReferences): builder.PrependUOffsetTRelativeSlot(42, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfNonOwningReferences), 0) -def AddVectorOfNonOwningReferences(builder: flatbuffers.Builder, vectorOfNonOwningReferences: int): +def AddVectorOfNonOwningReferences(builder, vectorOfNonOwningReferences): MonsterAddVectorOfNonOwningReferences(builder, vectorOfNonOwningReferences) def MonsterStartVectorOfNonOwningReferencesVector(builder, numElems): @@ -1242,31 +1242,31 @@ def StartVectorOfNonOwningReferencesVector(builder, numElems: int) -> int: def MonsterAddAnyUniqueType(builder, anyUniqueType): builder.PrependUint8Slot(43, anyUniqueType, 0) -def AddAnyUniqueType(builder: flatbuffers.Builder, anyUniqueType: int): +def AddAnyUniqueType(builder, anyUniqueType): MonsterAddAnyUniqueType(builder, anyUniqueType) def MonsterAddAnyUnique(builder, anyUnique): builder.PrependUOffsetTRelativeSlot(44, flatbuffers.number_types.UOffsetTFlags.py_type(anyUnique), 0) -def AddAnyUnique(builder: flatbuffers.Builder, anyUnique: int): +def AddAnyUnique(builder, anyUnique): MonsterAddAnyUnique(builder, anyUnique) def MonsterAddAnyAmbiguousType(builder, anyAmbiguousType): builder.PrependUint8Slot(45, anyAmbiguousType, 0) -def AddAnyAmbiguousType(builder: flatbuffers.Builder, anyAmbiguousType: int): +def AddAnyAmbiguousType(builder, anyAmbiguousType): MonsterAddAnyAmbiguousType(builder, anyAmbiguousType) def MonsterAddAnyAmbiguous(builder, anyAmbiguous): builder.PrependUOffsetTRelativeSlot(46, flatbuffers.number_types.UOffsetTFlags.py_type(anyAmbiguous), 0) -def AddAnyAmbiguous(builder: flatbuffers.Builder, anyAmbiguous: int): +def AddAnyAmbiguous(builder, anyAmbiguous): MonsterAddAnyAmbiguous(builder, anyAmbiguous) def MonsterAddVectorOfEnums(builder, vectorOfEnums): builder.PrependUOffsetTRelativeSlot(47, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfEnums), 0) -def AddVectorOfEnums(builder: flatbuffers.Builder, vectorOfEnums: int): +def AddVectorOfEnums(builder, vectorOfEnums): MonsterAddVectorOfEnums(builder, vectorOfEnums) def MonsterStartVectorOfEnumsVector(builder, numElems): @@ -1278,13 +1278,13 @@ def StartVectorOfEnumsVector(builder, numElems: int) -> int: def MonsterAddSignedEnum(builder, signedEnum): builder.PrependInt8Slot(48, signedEnum, -1) -def AddSignedEnum(builder: flatbuffers.Builder, signedEnum: int): +def AddSignedEnum(builder, signedEnum): MonsterAddSignedEnum(builder, signedEnum) def MonsterAddTestrequirednestedflatbuffer(builder, testrequirednestedflatbuffer): builder.PrependUOffsetTRelativeSlot(49, flatbuffers.number_types.UOffsetTFlags.py_type(testrequirednestedflatbuffer), 0) -def AddTestrequirednestedflatbuffer(builder: flatbuffers.Builder, testrequirednestedflatbuffer: int): +def AddTestrequirednestedflatbuffer(builder, testrequirednestedflatbuffer): MonsterAddTestrequirednestedflatbuffer(builder, testrequirednestedflatbuffer) def MonsterStartTestrequirednestedflatbufferVector(builder, numElems): @@ -1303,7 +1303,7 @@ def MakeTestrequirednestedflatbufferVectorFromBytes(builder, bytes): def MonsterAddScalarKeySortedTables(builder, scalarKeySortedTables): builder.PrependUOffsetTRelativeSlot(50, flatbuffers.number_types.UOffsetTFlags.py_type(scalarKeySortedTables), 0) -def AddScalarKeySortedTables(builder: flatbuffers.Builder, scalarKeySortedTables: int): +def AddScalarKeySortedTables(builder, scalarKeySortedTables): MonsterAddScalarKeySortedTables(builder, scalarKeySortedTables) def MonsterStartScalarKeySortedTablesVector(builder, numElems): @@ -1315,67 +1315,67 @@ def StartScalarKeySortedTablesVector(builder, numElems: int) -> int: def MonsterAddNativeInline(builder, nativeInline): builder.PrependStructSlot(51, flatbuffers.number_types.UOffsetTFlags.py_type(nativeInline), 0) -def AddNativeInline(builder: flatbuffers.Builder, nativeInline: Any): +def AddNativeInline(builder, nativeInline): MonsterAddNativeInline(builder, nativeInline) def MonsterAddLongEnumNonEnumDefault(builder, longEnumNonEnumDefault): builder.PrependUint64Slot(52, longEnumNonEnumDefault, 0) -def AddLongEnumNonEnumDefault(builder: flatbuffers.Builder, longEnumNonEnumDefault: int): +def AddLongEnumNonEnumDefault(builder, longEnumNonEnumDefault): MonsterAddLongEnumNonEnumDefault(builder, longEnumNonEnumDefault) def MonsterAddLongEnumNormalDefault(builder, longEnumNormalDefault): builder.PrependUint64Slot(53, longEnumNormalDefault, 2) -def AddLongEnumNormalDefault(builder: flatbuffers.Builder, longEnumNormalDefault: int): +def AddLongEnumNormalDefault(builder, longEnumNormalDefault): MonsterAddLongEnumNormalDefault(builder, longEnumNormalDefault) def MonsterAddNanDefault(builder, nanDefault): builder.PrependFloat32Slot(54, nanDefault, float('nan')) -def AddNanDefault(builder: flatbuffers.Builder, nanDefault: float): +def AddNanDefault(builder, nanDefault): MonsterAddNanDefault(builder, nanDefault) def MonsterAddInfDefault(builder, infDefault): builder.PrependFloat32Slot(55, infDefault, float('inf')) -def AddInfDefault(builder: flatbuffers.Builder, infDefault: float): +def AddInfDefault(builder, infDefault): MonsterAddInfDefault(builder, infDefault) def MonsterAddPositiveInfDefault(builder, positiveInfDefault): builder.PrependFloat32Slot(56, positiveInfDefault, float('inf')) -def AddPositiveInfDefault(builder: flatbuffers.Builder, positiveInfDefault: float): +def AddPositiveInfDefault(builder, positiveInfDefault): MonsterAddPositiveInfDefault(builder, positiveInfDefault) def MonsterAddInfinityDefault(builder, infinityDefault): builder.PrependFloat32Slot(57, infinityDefault, float('inf')) -def AddInfinityDefault(builder: flatbuffers.Builder, infinityDefault: float): +def AddInfinityDefault(builder, infinityDefault): MonsterAddInfinityDefault(builder, infinityDefault) def MonsterAddPositiveInfinityDefault(builder, positiveInfinityDefault): builder.PrependFloat32Slot(58, positiveInfinityDefault, float('inf')) -def AddPositiveInfinityDefault(builder: flatbuffers.Builder, positiveInfinityDefault: float): +def AddPositiveInfinityDefault(builder, positiveInfinityDefault): MonsterAddPositiveInfinityDefault(builder, positiveInfinityDefault) def MonsterAddNegativeInfDefault(builder, negativeInfDefault): builder.PrependFloat32Slot(59, negativeInfDefault, float('-inf')) -def AddNegativeInfDefault(builder: flatbuffers.Builder, negativeInfDefault: float): +def AddNegativeInfDefault(builder, negativeInfDefault): MonsterAddNegativeInfDefault(builder, negativeInfDefault) def MonsterAddNegativeInfinityDefault(builder, negativeInfinityDefault): builder.PrependFloat32Slot(60, negativeInfinityDefault, float('-inf')) -def AddNegativeInfinityDefault(builder: flatbuffers.Builder, negativeInfinityDefault: float): +def AddNegativeInfinityDefault(builder, negativeInfinityDefault): MonsterAddNegativeInfinityDefault(builder, negativeInfinityDefault) def MonsterAddDoubleInfDefault(builder, doubleInfDefault): builder.PrependFloat64Slot(61, doubleInfDefault, float('inf')) -def AddDoubleInfDefault(builder: flatbuffers.Builder, doubleInfDefault: float): +def AddDoubleInfDefault(builder, doubleInfDefault): MonsterAddDoubleInfDefault(builder, doubleInfDefault) def MonsterEnd(builder): diff --git a/tests/MyGame/Example/NestedUnion/Vec3.py b/tests/MyGame/Example/NestedUnion/Vec3.py index 11feab1196e..d0f8676f46e 100644 --- a/tests/MyGame/Example/NestedUnion/Vec3.py +++ b/tests/MyGame/Example/NestedUnion/Vec3.py @@ -5,7 +5,7 @@ import flatbuffers from flatbuffers.compat import import_numpy from typing import Any -from .MyGame.Example.NestedUnion.Test import Test +from MyGame.Example.NestedUnion.Test import Test from typing import Optional np = import_numpy() diff --git a/tests/MyGame/Example/Race.lua b/tests/MyGame/Example/Race.lua index 0bdb319b846..798b2792582 100644 --- a/tests/MyGame/Example/Race.lua +++ b/tests/MyGame/Example/Race.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //monster_test.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/MyGame/Example/Race.nim b/tests/MyGame/Example/Race.nim index 764116ddda3..3ff5ae5de49 100644 --- a/tests/MyGame/Example/Race.nim +++ b/tests/MyGame/Example/Race.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/MyGame/Example/Referrable.cs b/tests/MyGame/Example/Referrable.cs index d2cb1fbb21b..0749f9cd009 100644 --- a/tests/MyGame/Example/Referrable.cs +++ b/tests/MyGame/Example/Referrable.cs @@ -13,7 +13,7 @@ public struct Referrable : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static Referrable GetRootAsReferrable(ByteBuffer _bb) { return GetRootAsReferrable(_bb, new Referrable()); } public static Referrable GetRootAsReferrable(ByteBuffer _bb, Referrable obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p = new Table(_i, _bb); } diff --git a/tests/MyGame/Example/Referrable.java b/tests/MyGame/Example/Referrable.java index a8215588303..db614f93f8d 100644 --- a/tests/MyGame/Example/Referrable.java +++ b/tests/MyGame/Example/Referrable.java @@ -21,7 +21,7 @@ @SuppressWarnings("unused") public final class Referrable extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static Referrable getRootAsReferrable(ByteBuffer _bb) { return getRootAsReferrable(_bb, new Referrable()); } public static Referrable getRootAsReferrable(ByteBuffer _bb, Referrable 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); } diff --git a/tests/MyGame/Example/Referrable.kt b/tests/MyGame/Example/Referrable.kt index c122943a145..59d53a5e7c1 100644 --- a/tests/MyGame/Example/Referrable.kt +++ b/tests/MyGame/Example/Referrable.kt @@ -48,7 +48,7 @@ class Referrable : Table() { return (val_1 - val_2).sign } companion object { - fun validateVersion() = Constants.FLATBUFFERS_23_5_9() + fun validateVersion() = Constants.FLATBUFFERS_23_5_26() fun getRootAsReferrable(_bb: ByteBuffer): Referrable = getRootAsReferrable(_bb, Referrable()) fun getRootAsReferrable(_bb: ByteBuffer, obj: Referrable): Referrable { _bb.order(ByteOrder.LITTLE_ENDIAN) diff --git a/tests/MyGame/Example/Referrable.lua b/tests/MyGame/Example/Referrable.lua index ef56b0f3ecb..be8fa90fe96 100644 --- a/tests/MyGame/Example/Referrable.lua +++ b/tests/MyGame/Example/Referrable.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //monster_test.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/MyGame/Example/Referrable.nim b/tests/MyGame/Example/Referrable.nim index 677e050975f..3c5d82046d7 100644 --- a/tests/MyGame/Example/Referrable.nim +++ b/tests/MyGame/Example/Referrable.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/MyGame/Example/Referrable.py b/tests/MyGame/Example/Referrable.py index 203c93412c4..9cc5f5724d3 100644 --- a/tests/MyGame/Example/Referrable.py +++ b/tests/MyGame/Example/Referrable.py @@ -44,7 +44,7 @@ def Start(builder): def ReferrableAddId(builder, id): builder.PrependUint64Slot(0, id, 0) -def AddId(builder: flatbuffers.Builder, id: int): +def AddId(builder, id): ReferrableAddId(builder, id) def ReferrableEnd(builder): diff --git a/tests/MyGame/Example/Stat.cs b/tests/MyGame/Example/Stat.cs index 9f3171c7d60..8c04f1469e9 100644 --- a/tests/MyGame/Example/Stat.cs +++ b/tests/MyGame/Example/Stat.cs @@ -13,7 +13,7 @@ public struct Stat : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static Stat GetRootAsStat(ByteBuffer _bb) { return GetRootAsStat(_bb, new Stat()); } public static Stat GetRootAsStat(ByteBuffer _bb, Stat obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p = new Table(_i, _bb); } diff --git a/tests/MyGame/Example/Stat.java b/tests/MyGame/Example/Stat.java index 6608d4f3ea7..6472e83b36f 100644 --- a/tests/MyGame/Example/Stat.java +++ b/tests/MyGame/Example/Stat.java @@ -21,7 +21,7 @@ @SuppressWarnings("unused") public final class Stat extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static Stat getRootAsStat(ByteBuffer _bb) { return getRootAsStat(_bb, new Stat()); } public static Stat getRootAsStat(ByteBuffer _bb, Stat obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); } public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); } diff --git a/tests/MyGame/Example/Stat.kt b/tests/MyGame/Example/Stat.kt index 4b5a3ceed6c..756220c831c 100644 --- a/tests/MyGame/Example/Stat.kt +++ b/tests/MyGame/Example/Stat.kt @@ -73,7 +73,7 @@ class Stat : Table() { return (val_1 - val_2).sign } companion object { - fun validateVersion() = Constants.FLATBUFFERS_23_5_9() + fun validateVersion() = Constants.FLATBUFFERS_23_5_26() fun getRootAsStat(_bb: ByteBuffer): Stat = getRootAsStat(_bb, Stat()) fun getRootAsStat(_bb: ByteBuffer, obj: Stat): Stat { _bb.order(ByteOrder.LITTLE_ENDIAN) diff --git a/tests/MyGame/Example/Stat.lua b/tests/MyGame/Example/Stat.lua index 2779e1f5b05..23475223fc1 100644 --- a/tests/MyGame/Example/Stat.lua +++ b/tests/MyGame/Example/Stat.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //monster_test.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/MyGame/Example/Stat.nim b/tests/MyGame/Example/Stat.nim index 0661e10a29f..e52699c84b2 100644 --- a/tests/MyGame/Example/Stat.nim +++ b/tests/MyGame/Example/Stat.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/MyGame/Example/Stat.py b/tests/MyGame/Example/Stat.py index 4f175574eb0..ec6b9d9a227 100644 --- a/tests/MyGame/Example/Stat.py +++ b/tests/MyGame/Example/Stat.py @@ -58,19 +58,19 @@ def Start(builder): def StatAddId(builder, id): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(id), 0) -def AddId(builder: flatbuffers.Builder, id: int): +def AddId(builder, id): StatAddId(builder, id) def StatAddVal(builder, val): builder.PrependInt64Slot(1, val, 0) -def AddVal(builder: flatbuffers.Builder, val: int): +def AddVal(builder, val): StatAddVal(builder, val) def StatAddCount(builder, count): builder.PrependUint16Slot(2, count, 0) -def AddCount(builder: flatbuffers.Builder, count: int): +def AddCount(builder, count): StatAddCount(builder, count) def StatEnd(builder): diff --git a/tests/MyGame/Example/StructOfStructs.lua b/tests/MyGame/Example/StructOfStructs.lua index aac41a0bcfd..f34d651693e 100644 --- a/tests/MyGame/Example/StructOfStructs.lua +++ b/tests/MyGame/Example/StructOfStructs.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //monster_test.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/MyGame/Example/StructOfStructs.nim b/tests/MyGame/Example/StructOfStructs.nim index 12710a31761..a2a6071f1e2 100644 --- a/tests/MyGame/Example/StructOfStructs.nim +++ b/tests/MyGame/Example/StructOfStructs.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/MyGame/Example/StructOfStructsOfStructs.lua b/tests/MyGame/Example/StructOfStructsOfStructs.lua index 02dd0271ec6..ea72dcc2f46 100644 --- a/tests/MyGame/Example/StructOfStructsOfStructs.lua +++ b/tests/MyGame/Example/StructOfStructsOfStructs.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //monster_test.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/MyGame/Example/StructOfStructsOfStructs.nim b/tests/MyGame/Example/StructOfStructsOfStructs.nim index 70612986323..e091411f3c5 100644 --- a/tests/MyGame/Example/StructOfStructsOfStructs.nim +++ b/tests/MyGame/Example/StructOfStructsOfStructs.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/MyGame/Example/Test.lua b/tests/MyGame/Example/Test.lua index 85fe0bfafa5..1786a1b3609 100644 --- a/tests/MyGame/Example/Test.lua +++ b/tests/MyGame/Example/Test.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //monster_test.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/MyGame/Example/Test.nim b/tests/MyGame/Example/Test.nim index 5f382e3c490..8f100457cb5 100644 --- a/tests/MyGame/Example/Test.nim +++ b/tests/MyGame/Example/Test.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/MyGame/Example/TestSimpleTableWithEnum.cs b/tests/MyGame/Example/TestSimpleTableWithEnum.cs index 69e7358d8b6..c7bc4d983f0 100644 --- a/tests/MyGame/Example/TestSimpleTableWithEnum.cs +++ b/tests/MyGame/Example/TestSimpleTableWithEnum.cs @@ -13,7 +13,7 @@ internal partial struct TestSimpleTableWithEnum : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static TestSimpleTableWithEnum GetRootAsTestSimpleTableWithEnum(ByteBuffer _bb) { return GetRootAsTestSimpleTableWithEnum(_bb, new TestSimpleTableWithEnum()); } public static TestSimpleTableWithEnum GetRootAsTestSimpleTableWithEnum(ByteBuffer _bb, TestSimpleTableWithEnum obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p = new Table(_i, _bb); } diff --git a/tests/MyGame/Example/TestSimpleTableWithEnum.java b/tests/MyGame/Example/TestSimpleTableWithEnum.java index cffa777d65b..1ad3c7c336e 100644 --- a/tests/MyGame/Example/TestSimpleTableWithEnum.java +++ b/tests/MyGame/Example/TestSimpleTableWithEnum.java @@ -21,7 +21,7 @@ @SuppressWarnings("unused") final class TestSimpleTableWithEnum extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static TestSimpleTableWithEnum getRootAsTestSimpleTableWithEnum(ByteBuffer _bb) { return getRootAsTestSimpleTableWithEnum(_bb, new TestSimpleTableWithEnum()); } public static TestSimpleTableWithEnum getRootAsTestSimpleTableWithEnum(ByteBuffer _bb, TestSimpleTableWithEnum obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); } public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); } diff --git a/tests/MyGame/Example/TestSimpleTableWithEnum.kt b/tests/MyGame/Example/TestSimpleTableWithEnum.kt index 01223adcb2f..a21a46051b0 100644 --- a/tests/MyGame/Example/TestSimpleTableWithEnum.kt +++ b/tests/MyGame/Example/TestSimpleTableWithEnum.kt @@ -43,7 +43,7 @@ class TestSimpleTableWithEnum : Table() { } } companion object { - fun validateVersion() = Constants.FLATBUFFERS_23_5_9() + fun validateVersion() = Constants.FLATBUFFERS_23_5_26() fun getRootAsTestSimpleTableWithEnum(_bb: ByteBuffer): TestSimpleTableWithEnum = getRootAsTestSimpleTableWithEnum(_bb, TestSimpleTableWithEnum()) fun getRootAsTestSimpleTableWithEnum(_bb: ByteBuffer, obj: TestSimpleTableWithEnum): TestSimpleTableWithEnum { _bb.order(ByteOrder.LITTLE_ENDIAN) diff --git a/tests/MyGame/Example/TestSimpleTableWithEnum.lua b/tests/MyGame/Example/TestSimpleTableWithEnum.lua index 55575937fa4..ed208f01080 100644 --- a/tests/MyGame/Example/TestSimpleTableWithEnum.lua +++ b/tests/MyGame/Example/TestSimpleTableWithEnum.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //monster_test.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/MyGame/Example/TestSimpleTableWithEnum.nim b/tests/MyGame/Example/TestSimpleTableWithEnum.nim index c6c49e64a0f..dad59fc0115 100644 --- a/tests/MyGame/Example/TestSimpleTableWithEnum.nim +++ b/tests/MyGame/Example/TestSimpleTableWithEnum.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/MyGame/Example/TestSimpleTableWithEnum.py b/tests/MyGame/Example/TestSimpleTableWithEnum.py index 856442c8e48..520d257fd7f 100644 --- a/tests/MyGame/Example/TestSimpleTableWithEnum.py +++ b/tests/MyGame/Example/TestSimpleTableWithEnum.py @@ -44,7 +44,7 @@ def Start(builder): def TestSimpleTableWithEnumAddColor(builder, color): builder.PrependUint8Slot(0, color, 2) -def AddColor(builder: flatbuffers.Builder, color: int): +def AddColor(builder, color): TestSimpleTableWithEnumAddColor(builder, color) def TestSimpleTableWithEnumEnd(builder): diff --git a/tests/MyGame/Example/TypeAliases.cs b/tests/MyGame/Example/TypeAliases.cs index badac13bb67..abc4dea7d35 100644 --- a/tests/MyGame/Example/TypeAliases.cs +++ b/tests/MyGame/Example/TypeAliases.cs @@ -13,7 +13,7 @@ public struct TypeAliases : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static TypeAliases GetRootAsTypeAliases(ByteBuffer _bb) { return GetRootAsTypeAliases(_bb, new TypeAliases()); } public static TypeAliases GetRootAsTypeAliases(ByteBuffer _bb, TypeAliases obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p = new Table(_i, _bb); } diff --git a/tests/MyGame/Example/TypeAliases.java b/tests/MyGame/Example/TypeAliases.java index 2e5f22b1bd6..c56875cd835 100644 --- a/tests/MyGame/Example/TypeAliases.java +++ b/tests/MyGame/Example/TypeAliases.java @@ -21,7 +21,7 @@ @SuppressWarnings("unused") public final class TypeAliases extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static TypeAliases getRootAsTypeAliases(ByteBuffer _bb) { return getRootAsTypeAliases(_bb, new TypeAliases()); } public static TypeAliases getRootAsTypeAliases(ByteBuffer _bb, TypeAliases 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); } diff --git a/tests/MyGame/Example/TypeAliases.kt b/tests/MyGame/Example/TypeAliases.kt index 975a69c15af..4ae5f3d7aa2 100644 --- a/tests/MyGame/Example/TypeAliases.kt +++ b/tests/MyGame/Example/TypeAliases.kt @@ -215,7 +215,7 @@ class TypeAliases : Table() { } } companion object { - fun validateVersion() = Constants.FLATBUFFERS_23_5_9() + fun validateVersion() = Constants.FLATBUFFERS_23_5_26() fun getRootAsTypeAliases(_bb: ByteBuffer): TypeAliases = getRootAsTypeAliases(_bb, TypeAliases()) fun getRootAsTypeAliases(_bb: ByteBuffer, obj: TypeAliases): TypeAliases { _bb.order(ByteOrder.LITTLE_ENDIAN) diff --git a/tests/MyGame/Example/TypeAliases.lua b/tests/MyGame/Example/TypeAliases.lua index 6bcc7a38850..c647d7b9481 100644 --- a/tests/MyGame/Example/TypeAliases.lua +++ b/tests/MyGame/Example/TypeAliases.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //monster_test.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/MyGame/Example/TypeAliases.nim b/tests/MyGame/Example/TypeAliases.nim index 56b4b5203b5..c596405cd82 100644 --- a/tests/MyGame/Example/TypeAliases.nim +++ b/tests/MyGame/Example/TypeAliases.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/MyGame/Example/TypeAliases.py b/tests/MyGame/Example/TypeAliases.py index 27c6c4f9335..00f90ed5b9c 100644 --- a/tests/MyGame/Example/TypeAliases.py +++ b/tests/MyGame/Example/TypeAliases.py @@ -161,67 +161,67 @@ def Start(builder): def TypeAliasesAddI8(builder, i8): builder.PrependInt8Slot(0, i8, 0) -def AddI8(builder: flatbuffers.Builder, i8: int): +def AddI8(builder, i8): TypeAliasesAddI8(builder, i8) def TypeAliasesAddU8(builder, u8): builder.PrependUint8Slot(1, u8, 0) -def AddU8(builder: flatbuffers.Builder, u8: int): +def AddU8(builder, u8): TypeAliasesAddU8(builder, u8) def TypeAliasesAddI16(builder, i16): builder.PrependInt16Slot(2, i16, 0) -def AddI16(builder: flatbuffers.Builder, i16: int): +def AddI16(builder, i16): TypeAliasesAddI16(builder, i16) def TypeAliasesAddU16(builder, u16): builder.PrependUint16Slot(3, u16, 0) -def AddU16(builder: flatbuffers.Builder, u16: int): +def AddU16(builder, u16): TypeAliasesAddU16(builder, u16) def TypeAliasesAddI32(builder, i32): builder.PrependInt32Slot(4, i32, 0) -def AddI32(builder: flatbuffers.Builder, i32: int): +def AddI32(builder, i32): TypeAliasesAddI32(builder, i32) def TypeAliasesAddU32(builder, u32): builder.PrependUint32Slot(5, u32, 0) -def AddU32(builder: flatbuffers.Builder, u32: int): +def AddU32(builder, u32): TypeAliasesAddU32(builder, u32) def TypeAliasesAddI64(builder, i64): builder.PrependInt64Slot(6, i64, 0) -def AddI64(builder: flatbuffers.Builder, i64: int): +def AddI64(builder, i64): TypeAliasesAddI64(builder, i64) def TypeAliasesAddU64(builder, u64): builder.PrependUint64Slot(7, u64, 0) -def AddU64(builder: flatbuffers.Builder, u64: int): +def AddU64(builder, u64): TypeAliasesAddU64(builder, u64) def TypeAliasesAddF32(builder, f32): builder.PrependFloat32Slot(8, f32, 0.0) -def AddF32(builder: flatbuffers.Builder, f32: float): +def AddF32(builder, f32): TypeAliasesAddF32(builder, f32) def TypeAliasesAddF64(builder, f64): builder.PrependFloat64Slot(9, f64, 0.0) -def AddF64(builder: flatbuffers.Builder, f64: float): +def AddF64(builder, f64): TypeAliasesAddF64(builder, f64) def TypeAliasesAddV8(builder, v8): builder.PrependUOffsetTRelativeSlot(10, flatbuffers.number_types.UOffsetTFlags.py_type(v8), 0) -def AddV8(builder: flatbuffers.Builder, v8: int): +def AddV8(builder, v8): TypeAliasesAddV8(builder, v8) def TypeAliasesStartV8Vector(builder, numElems): @@ -233,7 +233,7 @@ def StartV8Vector(builder, numElems: int) -> int: def TypeAliasesAddVf64(builder, vf64): builder.PrependUOffsetTRelativeSlot(11, flatbuffers.number_types.UOffsetTFlags.py_type(vf64), 0) -def AddVf64(builder: flatbuffers.Builder, vf64: int): +def AddVf64(builder, vf64): TypeAliasesAddVf64(builder, vf64) def TypeAliasesStartVf64Vector(builder, numElems): diff --git a/tests/MyGame/Example/Vec3.lua b/tests/MyGame/Example/Vec3.lua index 385ad2c406b..941078c1c23 100644 --- a/tests/MyGame/Example/Vec3.lua +++ b/tests/MyGame/Example/Vec3.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //monster_test.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/MyGame/Example/Vec3.nim b/tests/MyGame/Example/Vec3.nim index 3c086038363..74330dc4895 100644 --- a/tests/MyGame/Example/Vec3.nim +++ b/tests/MyGame/Example/Vec3.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/MyGame/Example2/Monster.cs b/tests/MyGame/Example2/Monster.cs index d5a1e016346..833a76b7a33 100644 --- a/tests/MyGame/Example2/Monster.cs +++ b/tests/MyGame/Example2/Monster.cs @@ -13,7 +13,7 @@ public struct Monster : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static Monster GetRootAsMonster(ByteBuffer _bb) { return GetRootAsMonster(_bb, new Monster()); } public static Monster GetRootAsMonster(ByteBuffer _bb, Monster obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p = new Table(_i, _bb); } diff --git a/tests/MyGame/Example2/Monster.java b/tests/MyGame/Example2/Monster.java index 51b1b8bec76..7488a26f3e4 100644 --- a/tests/MyGame/Example2/Monster.java +++ b/tests/MyGame/Example2/Monster.java @@ -21,7 +21,7 @@ @SuppressWarnings("unused") public final class Monster extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static Monster getRootAsMonster(ByteBuffer _bb) { return getRootAsMonster(_bb, new Monster()); } public static Monster getRootAsMonster(ByteBuffer _bb, Monster obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); } public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); } diff --git a/tests/MyGame/Example2/Monster.kt b/tests/MyGame/Example2/Monster.kt index efc62b60a15..9f8a4ca0248 100644 --- a/tests/MyGame/Example2/Monster.kt +++ b/tests/MyGame/Example2/Monster.kt @@ -29,7 +29,7 @@ class Monster : Table() { return this } companion object { - fun validateVersion() = Constants.FLATBUFFERS_23_5_9() + fun validateVersion() = Constants.FLATBUFFERS_23_5_26() fun getRootAsMonster(_bb: ByteBuffer): Monster = getRootAsMonster(_bb, Monster()) fun getRootAsMonster(_bb: ByteBuffer, obj: Monster): Monster { _bb.order(ByteOrder.LITTLE_ENDIAN) diff --git a/tests/MyGame/Example2/Monster.lua b/tests/MyGame/Example2/Monster.lua index accb0d781b9..4cf966cee41 100644 --- a/tests/MyGame/Example2/Monster.lua +++ b/tests/MyGame/Example2/Monster.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //monster_test.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/MyGame/Example2/Monster.nim b/tests/MyGame/Example2/Monster.nim index 7ed2d3954a6..b976a748878 100644 --- a/tests/MyGame/Example2/Monster.nim +++ b/tests/MyGame/Example2/Monster.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/MyGame/InParentNamespace.cs b/tests/MyGame/InParentNamespace.cs index 9b03918b0ec..83077ee74d2 100644 --- a/tests/MyGame/InParentNamespace.cs +++ b/tests/MyGame/InParentNamespace.cs @@ -13,7 +13,7 @@ public struct InParentNamespace : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static InParentNamespace GetRootAsInParentNamespace(ByteBuffer _bb) { return GetRootAsInParentNamespace(_bb, new InParentNamespace()); } public static InParentNamespace GetRootAsInParentNamespace(ByteBuffer _bb, InParentNamespace obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p = new Table(_i, _bb); } diff --git a/tests/MyGame/InParentNamespace.java b/tests/MyGame/InParentNamespace.java index da801e5eddb..61749df963e 100644 --- a/tests/MyGame/InParentNamespace.java +++ b/tests/MyGame/InParentNamespace.java @@ -21,7 +21,7 @@ @SuppressWarnings("unused") public final class InParentNamespace extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static InParentNamespace getRootAsInParentNamespace(ByteBuffer _bb) { return getRootAsInParentNamespace(_bb, new InParentNamespace()); } public static InParentNamespace getRootAsInParentNamespace(ByteBuffer _bb, InParentNamespace 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); } diff --git a/tests/MyGame/InParentNamespace.kt b/tests/MyGame/InParentNamespace.kt index 69e1ba0b100..8ba2ee31c67 100644 --- a/tests/MyGame/InParentNamespace.kt +++ b/tests/MyGame/InParentNamespace.kt @@ -29,7 +29,7 @@ class InParentNamespace : Table() { return this } companion object { - fun validateVersion() = Constants.FLATBUFFERS_23_5_9() + fun validateVersion() = Constants.FLATBUFFERS_23_5_26() fun getRootAsInParentNamespace(_bb: ByteBuffer): InParentNamespace = getRootAsInParentNamespace(_bb, InParentNamespace()) fun getRootAsInParentNamespace(_bb: ByteBuffer, obj: InParentNamespace): InParentNamespace { _bb.order(ByteOrder.LITTLE_ENDIAN) diff --git a/tests/MyGame/InParentNamespace.lua b/tests/MyGame/InParentNamespace.lua index 1c3e2b81ef2..619de51c127 100644 --- a/tests/MyGame/InParentNamespace.lua +++ b/tests/MyGame/InParentNamespace.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //monster_test.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/MyGame/InParentNamespace.nim b/tests/MyGame/InParentNamespace.nim index 8f7e3972a56..6554d2c1bea 100644 --- a/tests/MyGame/InParentNamespace.nim +++ b/tests/MyGame/InParentNamespace.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/MyGame/MonsterExtra.cs b/tests/MyGame/MonsterExtra.cs index 92b4e3e7f43..63a689a31cf 100644 --- a/tests/MyGame/MonsterExtra.cs +++ b/tests/MyGame/MonsterExtra.cs @@ -13,7 +13,7 @@ public struct MonsterExtra : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static MonsterExtra GetRootAsMonsterExtra(ByteBuffer _bb) { return GetRootAsMonsterExtra(_bb, new MonsterExtra()); } public static MonsterExtra GetRootAsMonsterExtra(ByteBuffer _bb, MonsterExtra obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public static bool MonsterExtraBufferHasIdentifier(ByteBuffer _bb) { return Table.__has_identifier(_bb, "MONE"); } diff --git a/tests/MyGame/MonsterExtra.java b/tests/MyGame/MonsterExtra.java index f575002a5a7..a518e1466ea 100644 --- a/tests/MyGame/MonsterExtra.java +++ b/tests/MyGame/MonsterExtra.java @@ -21,7 +21,7 @@ @SuppressWarnings("unused") public final class MonsterExtra extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static MonsterExtra getRootAsMonsterExtra(ByteBuffer _bb) { return getRootAsMonsterExtra(_bb, new MonsterExtra()); } public static MonsterExtra getRootAsMonsterExtra(ByteBuffer _bb, MonsterExtra obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); } public static boolean MonsterExtraBufferHasIdentifier(ByteBuffer _bb) { return __has_identifier(_bb, "MONE"); } diff --git a/tests/MyGame/MonsterExtra.kt b/tests/MyGame/MonsterExtra.kt index 172944b0745..bcc1d10694a 100644 --- a/tests/MyGame/MonsterExtra.kt +++ b/tests/MyGame/MonsterExtra.kt @@ -187,7 +187,7 @@ class MonsterExtra : Table() { } } companion object { - fun validateVersion() = Constants.FLATBUFFERS_23_5_9() + fun validateVersion() = Constants.FLATBUFFERS_23_5_26() fun getRootAsMonsterExtra(_bb: ByteBuffer): MonsterExtra = getRootAsMonsterExtra(_bb, MonsterExtra()) fun getRootAsMonsterExtra(_bb: ByteBuffer, obj: MonsterExtra): MonsterExtra { _bb.order(ByteOrder.LITTLE_ENDIAN) diff --git a/tests/MyGame/OtherNameSpace/FromInclude.lua b/tests/MyGame/OtherNameSpace/FromInclude.lua index 00fc19df814..3a49948a381 100644 --- a/tests/MyGame/OtherNameSpace/FromInclude.lua +++ b/tests/MyGame/OtherNameSpace/FromInclude.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //include_test/sub/include_test2.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/MyGame/OtherNameSpace/FromInclude.nim b/tests/MyGame/OtherNameSpace/FromInclude.nim index 83cac1a24c7..7daf7228649 100644 --- a/tests/MyGame/OtherNameSpace/FromInclude.nim +++ b/tests/MyGame/OtherNameSpace/FromInclude.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/MyGame/OtherNameSpace/TableB.lua b/tests/MyGame/OtherNameSpace/TableB.lua index 0cac73ba3ac..22cd508906f 100644 --- a/tests/MyGame/OtherNameSpace/TableB.lua +++ b/tests/MyGame/OtherNameSpace/TableB.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //include_test/sub/include_test2.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/MyGame/OtherNameSpace/TableB.nim b/tests/MyGame/OtherNameSpace/TableB.nim index a4aad4fb6de..e597325dfa4 100644 --- a/tests/MyGame/OtherNameSpace/TableB.nim +++ b/tests/MyGame/OtherNameSpace/TableB.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/MyGame/OtherNameSpace/Unused.lua b/tests/MyGame/OtherNameSpace/Unused.lua index ba0774e6b9a..0ed6d7b1efa 100644 --- a/tests/MyGame/OtherNameSpace/Unused.lua +++ b/tests/MyGame/OtherNameSpace/Unused.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //include_test/sub/include_test2.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/MyGame/OtherNameSpace/Unused.nim b/tests/MyGame/OtherNameSpace/Unused.nim index 1ccfb1d8679..973ddc15612 100644 --- a/tests/MyGame/OtherNameSpace/Unused.nim +++ b/tests/MyGame/OtherNameSpace/Unused.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/Property.nim b/tests/Property.nim index 991bafb7e79..e6bac7f70a0 100644 --- a/tests/Property.nim +++ b/tests/Property.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : ]# diff --git a/tests/PythonTest.sh b/tests/PythonTest.sh index 925bd95ebbe..fc64e9f5a1e 100755 --- a/tests/PythonTest.sh +++ b/tests/PythonTest.sh @@ -1,4 +1,4 @@ -#!/bin/bash -eu +#!/bin/bash # # Copyright 2014 Google Inc. All rights reserved. # @@ -14,10 +14,12 @@ # See the License for the specific language governing permissions and # limitations under the License. +set -eu + pushd "$(dirname $0)" >/dev/null test_dir="$(pwd)" gen_code_path=${test_dir} -runtime_library_dir=${test_dir}/../../python +runtime_library_dir=${test_dir}/../python # Emit Python code for the example schema in the test dir: ${test_dir}/../flatc -p -o ${gen_code_path} -I include_test monster_test.fbs --gen-object-api diff --git a/tests/RustTest.bat b/tests/RustTest.bat index 236cd9d7f5b..56f43f2d033 100644 --- a/tests/RustTest.bat +++ b/tests/RustTest.bat @@ -15,16 +15,19 @@ rem limitations under the License. rem Compile then run the Rust test. -cd rust_usage_test +cd rust_serialize_test +cargo run -- --quiet || exit /b 1 + +cd ../rust_no_std_compilation_test +rustup install nightly +rustup component add rust-src --toolchain nightly +rustup target add thumbv7m-none-eabi +cargo +nightly build || exit /b 1 + +cd ../rust_usage_test cargo test -- --quiet || exit /b 1 cargo run --bin=flatbuffers_alloc_check || exit /b 1 cargo run --bin=flexbuffers_alloc_check || exit /b 1 cargo run --bin=monster_example || exit /b 1 cd .. -cd rust_no_std_compilation_test -rustup install nightly -rustup component add rust-src --toolchain nightly -rustup target add thumbv7m-none-eabi -cargo build || exit /b 1 -cd .. diff --git a/tests/TableA.lua b/tests/TableA.lua index 8d7cbab3546..6c761d059d2 100644 --- a/tests/TableA.lua +++ b/tests/TableA.lua @@ -3,7 +3,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : //include_test/include_test1.fbs Rooting type : MyGame.Example.Monster (//monster_test.fbs) diff --git a/tests/TableA.nim b/tests/TableA.nim index ab85519000a..0bf7e760293 100644 --- a/tests/TableA.nim +++ b/tests/TableA.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : MyGame.Example.Monster () diff --git a/tests/TestMutatingBool.nim b/tests/TestMutatingBool.nim index b39e257ef0e..8573580f887 100644 --- a/tests/TestMutatingBool.nim +++ b/tests/TestMutatingBool.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : ]# diff --git a/tests/alignment_test.cpp b/tests/alignment_test.cpp index 1026fc3397c..9fbf6d8ebfd 100644 --- a/tests/alignment_test.cpp +++ b/tests/alignment_test.cpp @@ -1,7 +1,7 @@ #include "alignment_test.h" -#include "flatbuffers/flatbuffer_builder.h" #include "alignment_test_generated.h" +#include "flatbuffers/flatbuffer_builder.h" #include "test_assert.h" namespace flatbuffers { @@ -16,7 +16,7 @@ void AlignmentTest() { BadAlignmentSmall *small; Offset> small_offset = builder.CreateUninitializedVectorOfStructs(9, &small); - (void)small; // We do not have to write data to trigger the test failure + (void)small; // We do not have to write data to trigger the test failure Offset root = CreateBadAlignmentRoot(builder, outer_large, small_offset); diff --git a/tests/alignment_test_generated.h b/tests/alignment_test_generated.h deleted file mode 100644 index 59333aeedc5..00000000000 --- a/tests/alignment_test_generated.h +++ /dev/null @@ -1,497 +0,0 @@ -// automatically generated by the FlatBuffers compiler, do not modify - - -#ifndef FLATBUFFERS_GENERATED_ALIGNMENTTEST_H_ -#define FLATBUFFERS_GENERATED_ALIGNMENTTEST_H_ - -#include "flatbuffers/flatbuffers.h" - -// Ensure the included flatbuffers.h is the same version as when this file was -// generated, otherwise it may not be compatible. -static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && - FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, - "Non-compatible flatbuffers version included"); - -struct BadAlignmentSmall; - -struct BadAlignmentLarge; - -struct OuterLarge; -struct OuterLargeBuilder; -struct OuterLargeT; - -struct BadAlignmentRoot; -struct BadAlignmentRootBuilder; -struct BadAlignmentRootT; - -bool operator==(const BadAlignmentSmall &lhs, const BadAlignmentSmall &rhs); -bool operator!=(const BadAlignmentSmall &lhs, const BadAlignmentSmall &rhs); -bool operator==(const BadAlignmentLarge &lhs, const BadAlignmentLarge &rhs); -bool operator!=(const BadAlignmentLarge &lhs, const BadAlignmentLarge &rhs); -bool operator==(const OuterLargeT &lhs, const OuterLargeT &rhs); -bool operator!=(const OuterLargeT &lhs, const OuterLargeT &rhs); -bool operator==(const BadAlignmentRootT &lhs, const BadAlignmentRootT &rhs); -bool operator!=(const BadAlignmentRootT &lhs, const BadAlignmentRootT &rhs); - -inline const ::flatbuffers::TypeTable *BadAlignmentSmallTypeTable(); - -inline const ::flatbuffers::TypeTable *BadAlignmentLargeTypeTable(); - -inline const ::flatbuffers::TypeTable *OuterLargeTypeTable(); - -inline const ::flatbuffers::TypeTable *BadAlignmentRootTypeTable(); - -FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) BadAlignmentSmall FLATBUFFERS_FINAL_CLASS { - private: - uint32_t var_0_; - uint32_t var_1_; - uint32_t var_2_; - - public: - static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { - return BadAlignmentSmallTypeTable(); - } - BadAlignmentSmall() - : var_0_(0), - var_1_(0), - var_2_(0) { - } - BadAlignmentSmall(uint32_t _var_0, uint32_t _var_1, uint32_t _var_2) - : var_0_(::flatbuffers::EndianScalar(_var_0)), - var_1_(::flatbuffers::EndianScalar(_var_1)), - var_2_(::flatbuffers::EndianScalar(_var_2)) { - } - uint32_t var_0() const { - return ::flatbuffers::EndianScalar(var_0_); - } - void mutate_var_0(uint32_t _var_0) { - ::flatbuffers::WriteScalar(&var_0_, _var_0); - } - uint32_t var_1() const { - return ::flatbuffers::EndianScalar(var_1_); - } - void mutate_var_1(uint32_t _var_1) { - ::flatbuffers::WriteScalar(&var_1_, _var_1); - } - uint32_t var_2() const { - return ::flatbuffers::EndianScalar(var_2_); - } - void mutate_var_2(uint32_t _var_2) { - ::flatbuffers::WriteScalar(&var_2_, _var_2); - } -}; -FLATBUFFERS_STRUCT_END(BadAlignmentSmall, 12); - -inline bool operator==(const BadAlignmentSmall &lhs, const BadAlignmentSmall &rhs) { - return - (lhs.var_0() == rhs.var_0()) && - (lhs.var_1() == rhs.var_1()) && - (lhs.var_2() == rhs.var_2()); -} - -inline bool operator!=(const BadAlignmentSmall &lhs, const BadAlignmentSmall &rhs) { - return !(lhs == rhs); -} - - -FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(8) BadAlignmentLarge FLATBUFFERS_FINAL_CLASS { - private: - uint64_t var_0_; - - public: - static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { - return BadAlignmentLargeTypeTable(); - } - BadAlignmentLarge() - : var_0_(0) { - } - BadAlignmentLarge(uint64_t _var_0) - : var_0_(::flatbuffers::EndianScalar(_var_0)) { - } - uint64_t var_0() const { - return ::flatbuffers::EndianScalar(var_0_); - } - void mutate_var_0(uint64_t _var_0) { - ::flatbuffers::WriteScalar(&var_0_, _var_0); - } -}; -FLATBUFFERS_STRUCT_END(BadAlignmentLarge, 8); - -inline bool operator==(const BadAlignmentLarge &lhs, const BadAlignmentLarge &rhs) { - return - (lhs.var_0() == rhs.var_0()); -} - -inline bool operator!=(const BadAlignmentLarge &lhs, const BadAlignmentLarge &rhs) { - return !(lhs == rhs); -} - - -struct OuterLargeT : public ::flatbuffers::NativeTable { - typedef OuterLarge TableType; - std::unique_ptr large{}; - OuterLargeT() = default; - OuterLargeT(const OuterLargeT &o); - OuterLargeT(OuterLargeT&&) FLATBUFFERS_NOEXCEPT = default; - OuterLargeT &operator=(OuterLargeT o) FLATBUFFERS_NOEXCEPT; -}; - -struct OuterLarge FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { - typedef OuterLargeT NativeTableType; - typedef OuterLargeBuilder Builder; - static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { - return OuterLargeTypeTable(); - } - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_LARGE = 4 - }; - const BadAlignmentLarge *large() const { - return GetStruct(VT_LARGE); - } - BadAlignmentLarge *mutable_large() { - return GetStruct(VT_LARGE); - } - bool Verify(::flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_LARGE, 8) && - verifier.EndTable(); - } - OuterLargeT *UnPack(const ::flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(OuterLargeT *_o, const ::flatbuffers::resolver_function_t *_resolver = nullptr) const; - static ::flatbuffers::Offset Pack(::flatbuffers::FlatBufferBuilder &_fbb, const OuterLargeT* _o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct OuterLargeBuilder { - typedef OuterLarge Table; - ::flatbuffers::FlatBufferBuilder &fbb_; - ::flatbuffers::uoffset_t start_; - void add_large(const BadAlignmentLarge *large) { - fbb_.AddStruct(OuterLarge::VT_LARGE, large); - } - explicit OuterLargeBuilder(::flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - ::flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = ::flatbuffers::Offset(end); - return o; - } -}; - -inline ::flatbuffers::Offset CreateOuterLarge( - ::flatbuffers::FlatBufferBuilder &_fbb, - const BadAlignmentLarge *large = nullptr) { - OuterLargeBuilder builder_(_fbb); - builder_.add_large(large); - return builder_.Finish(); -} - -::flatbuffers::Offset CreateOuterLarge(::flatbuffers::FlatBufferBuilder &_fbb, const OuterLargeT *_o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct BadAlignmentRootT : public ::flatbuffers::NativeTable { - typedef BadAlignmentRoot TableType; - std::unique_ptr large{}; - std::vector small{}; - BadAlignmentRootT() = default; - BadAlignmentRootT(const BadAlignmentRootT &o); - BadAlignmentRootT(BadAlignmentRootT&&) FLATBUFFERS_NOEXCEPT = default; - BadAlignmentRootT &operator=(BadAlignmentRootT o) FLATBUFFERS_NOEXCEPT; -}; - -struct BadAlignmentRoot FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { - typedef BadAlignmentRootT NativeTableType; - typedef BadAlignmentRootBuilder Builder; - static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { - return BadAlignmentRootTypeTable(); - } - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_LARGE = 4, - VT_SMALL = 6 - }; - const OuterLarge *large() const { - return GetPointer(VT_LARGE); - } - OuterLarge *mutable_large() { - return GetPointer(VT_LARGE); - } - const ::flatbuffers::Vector *small() const { - return GetPointer *>(VT_SMALL); - } - ::flatbuffers::Vector *mutable_small() { - return GetPointer<::flatbuffers::Vector *>(VT_SMALL); - } - bool Verify(::flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyOffset(verifier, VT_LARGE) && - verifier.VerifyTable(large()) && - VerifyOffset(verifier, VT_SMALL) && - verifier.VerifyVector(small()) && - verifier.EndTable(); - } - BadAlignmentRootT *UnPack(const ::flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(BadAlignmentRootT *_o, const ::flatbuffers::resolver_function_t *_resolver = nullptr) const; - static ::flatbuffers::Offset Pack(::flatbuffers::FlatBufferBuilder &_fbb, const BadAlignmentRootT* _o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct BadAlignmentRootBuilder { - typedef BadAlignmentRoot Table; - ::flatbuffers::FlatBufferBuilder &fbb_; - ::flatbuffers::uoffset_t start_; - void add_large(::flatbuffers::Offset large) { - fbb_.AddOffset(BadAlignmentRoot::VT_LARGE, large); - } - void add_small(::flatbuffers::Offset<::flatbuffers::Vector> small) { - fbb_.AddOffset(BadAlignmentRoot::VT_SMALL, small); - } - explicit BadAlignmentRootBuilder(::flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - ::flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = ::flatbuffers::Offset(end); - return o; - } -}; - -inline ::flatbuffers::Offset CreateBadAlignmentRoot( - ::flatbuffers::FlatBufferBuilder &_fbb, - ::flatbuffers::Offset large = 0, - ::flatbuffers::Offset<::flatbuffers::Vector> small = 0) { - BadAlignmentRootBuilder builder_(_fbb); - builder_.add_small(small); - builder_.add_large(large); - return builder_.Finish(); -} - -inline ::flatbuffers::Offset CreateBadAlignmentRootDirect( - ::flatbuffers::FlatBufferBuilder &_fbb, - ::flatbuffers::Offset large = 0, - const std::vector *small = nullptr) { - auto small__ = small ? _fbb.CreateVectorOfStructs(*small) : 0; - return CreateBadAlignmentRoot( - _fbb, - large, - small__); -} - -::flatbuffers::Offset CreateBadAlignmentRoot(::flatbuffers::FlatBufferBuilder &_fbb, const BadAlignmentRootT *_o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr); - - -inline bool operator==(const OuterLargeT &lhs, const OuterLargeT &rhs) { - return - ((lhs.large == rhs.large) || (lhs.large && rhs.large && *lhs.large == *rhs.large)); -} - -inline bool operator!=(const OuterLargeT &lhs, const OuterLargeT &rhs) { - return !(lhs == rhs); -} - - -inline OuterLargeT::OuterLargeT(const OuterLargeT &o) - : large((o.large) ? new BadAlignmentLarge(*o.large) : nullptr) { -} - -inline OuterLargeT &OuterLargeT::operator=(OuterLargeT o) FLATBUFFERS_NOEXCEPT { - std::swap(large, o.large); - return *this; -} - -inline OuterLargeT *OuterLarge::UnPack(const ::flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::unique_ptr(new OuterLargeT()); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void OuterLarge::UnPackTo(OuterLargeT *_o, const ::flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = large(); if (_e) _o->large = std::unique_ptr(new BadAlignmentLarge(*_e)); } -} - -inline ::flatbuffers::Offset OuterLarge::Pack(::flatbuffers::FlatBufferBuilder &_fbb, const OuterLargeT* _o, const ::flatbuffers::rehasher_function_t *_rehasher) { - return CreateOuterLarge(_fbb, _o, _rehasher); -} - -inline ::flatbuffers::Offset CreateOuterLarge(::flatbuffers::FlatBufferBuilder &_fbb, const OuterLargeT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const OuterLargeT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _large = _o->large ? _o->large.get() : nullptr; - return CreateOuterLarge( - _fbb, - _large); -} - - -inline bool operator==(const BadAlignmentRootT &lhs, const BadAlignmentRootT &rhs) { - return - ((lhs.large == rhs.large) || (lhs.large && rhs.large && *lhs.large == *rhs.large)) && - (lhs.small == rhs.small); -} - -inline bool operator!=(const BadAlignmentRootT &lhs, const BadAlignmentRootT &rhs) { - return !(lhs == rhs); -} - - -inline BadAlignmentRootT::BadAlignmentRootT(const BadAlignmentRootT &o) - : large((o.large) ? new OuterLargeT(*o.large) : nullptr), - small(o.small) { -} - -inline BadAlignmentRootT &BadAlignmentRootT::operator=(BadAlignmentRootT o) FLATBUFFERS_NOEXCEPT { - std::swap(large, o.large); - std::swap(small, o.small); - return *this; -} - -inline BadAlignmentRootT *BadAlignmentRoot::UnPack(const ::flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::unique_ptr(new BadAlignmentRootT()); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void BadAlignmentRoot::UnPackTo(BadAlignmentRootT *_o, const ::flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = large(); if (_e) { if(_o->large) { _e->UnPackTo(_o->large.get(), _resolver); } else { _o->large = std::unique_ptr(_e->UnPack(_resolver)); } } else if (_o->large) { _o->large.reset(); } } - { auto _e = small(); if (_e) { _o->small.resize(_e->size()); for (::flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->small[_i] = *_e->Get(_i); } } else { _o->small.resize(0); } } -} - -inline ::flatbuffers::Offset BadAlignmentRoot::Pack(::flatbuffers::FlatBufferBuilder &_fbb, const BadAlignmentRootT* _o, const ::flatbuffers::rehasher_function_t *_rehasher) { - return CreateBadAlignmentRoot(_fbb, _o, _rehasher); -} - -inline ::flatbuffers::Offset CreateBadAlignmentRoot(::flatbuffers::FlatBufferBuilder &_fbb, const BadAlignmentRootT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const BadAlignmentRootT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _large = _o->large ? CreateOuterLarge(_fbb, _o->large.get(), _rehasher) : 0; - auto _small = _o->small.size() ? _fbb.CreateVectorOfStructs(_o->small) : 0; - return CreateBadAlignmentRoot( - _fbb, - _large, - _small); -} - -inline const ::flatbuffers::TypeTable *BadAlignmentSmallTypeTable() { - static const ::flatbuffers::TypeCode type_codes[] = { - { ::flatbuffers::ET_UINT, 0, -1 }, - { ::flatbuffers::ET_UINT, 0, -1 }, - { ::flatbuffers::ET_UINT, 0, -1 } - }; - static const int64_t values[] = { 0, 4, 8, 12 }; - static const char * const names[] = { - "var_0", - "var_1", - "var_2" - }; - static const ::flatbuffers::TypeTable tt = { - ::flatbuffers::ST_STRUCT, 3, type_codes, nullptr, nullptr, values, names - }; - return &tt; -} - -inline const ::flatbuffers::TypeTable *BadAlignmentLargeTypeTable() { - static const ::flatbuffers::TypeCode type_codes[] = { - { ::flatbuffers::ET_ULONG, 0, -1 } - }; - static const int64_t values[] = { 0, 8 }; - static const char * const names[] = { - "var_0" - }; - static const ::flatbuffers::TypeTable tt = { - ::flatbuffers::ST_STRUCT, 1, type_codes, nullptr, nullptr, values, names - }; - return &tt; -} - -inline const ::flatbuffers::TypeTable *OuterLargeTypeTable() { - static const ::flatbuffers::TypeCode type_codes[] = { - { ::flatbuffers::ET_SEQUENCE, 0, 0 } - }; - static const ::flatbuffers::TypeFunction type_refs[] = { - BadAlignmentLargeTypeTable - }; - static const char * const names[] = { - "large" - }; - static const ::flatbuffers::TypeTable tt = { - ::flatbuffers::ST_TABLE, 1, type_codes, type_refs, nullptr, nullptr, names - }; - return &tt; -} - -inline const ::flatbuffers::TypeTable *BadAlignmentRootTypeTable() { - static const ::flatbuffers::TypeCode type_codes[] = { - { ::flatbuffers::ET_SEQUENCE, 0, 0 }, - { ::flatbuffers::ET_SEQUENCE, 1, 1 } - }; - static const ::flatbuffers::TypeFunction type_refs[] = { - OuterLargeTypeTable, - BadAlignmentSmallTypeTable - }; - static const char * const names[] = { - "large", - "small" - }; - static const ::flatbuffers::TypeTable tt = { - ::flatbuffers::ST_TABLE, 2, type_codes, type_refs, nullptr, nullptr, names - }; - return &tt; -} - -inline const BadAlignmentRoot *GetBadAlignmentRoot(const void *buf) { - return ::flatbuffers::GetRoot(buf); -} - -inline const BadAlignmentRoot *GetSizePrefixedBadAlignmentRoot(const void *buf) { - return ::flatbuffers::GetSizePrefixedRoot(buf); -} - -inline BadAlignmentRoot *GetMutableBadAlignmentRoot(void *buf) { - return ::flatbuffers::GetMutableRoot(buf); -} - -inline BadAlignmentRoot *GetMutableSizePrefixedBadAlignmentRoot(void *buf) { - return ::flatbuffers::GetMutableSizePrefixedRoot(buf); -} - -inline bool VerifyBadAlignmentRootBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(nullptr); -} - -inline bool VerifySizePrefixedBadAlignmentRootBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(nullptr); -} - -inline void FinishBadAlignmentRootBuffer( - ::flatbuffers::FlatBufferBuilder &fbb, - ::flatbuffers::Offset root) { - fbb.Finish(root); -} - -inline void FinishSizePrefixedBadAlignmentRootBuffer( - ::flatbuffers::FlatBufferBuilder &fbb, - ::flatbuffers::Offset root) { - fbb.FinishSizePrefixed(root); -} - -inline std::unique_ptr UnPackBadAlignmentRoot( - const void *buf, - const ::flatbuffers::resolver_function_t *res = nullptr) { - return std::unique_ptr(GetBadAlignmentRoot(buf)->UnPack(res)); -} - -inline std::unique_ptr UnPackSizePrefixedBadAlignmentRoot( - const void *buf, - const ::flatbuffers::resolver_function_t *res = nullptr) { - return std::unique_ptr(GetSizePrefixedBadAlignmentRoot(buf)->UnPack(res)); -} - -#endif // FLATBUFFERS_GENERATED_ALIGNMENTTEST_H_ diff --git a/tests/arrays_test_generated.h b/tests/arrays_test_generated.h deleted file mode 100644 index 41fd7f8f303..00000000000 --- a/tests/arrays_test_generated.h +++ /dev/null @@ -1,539 +0,0 @@ -// automatically generated by the FlatBuffers compiler, do not modify - - -#ifndef FLATBUFFERS_GENERATED_ARRAYSTEST_MYGAME_EXAMPLE_H_ -#define FLATBUFFERS_GENERATED_ARRAYSTEST_MYGAME_EXAMPLE_H_ - -#include "flatbuffers/flatbuffers.h" - -// Ensure the included flatbuffers.h is the same version as when this file was -// generated, otherwise it may not be compatible. -static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && - FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, - "Non-compatible flatbuffers version included"); - -namespace MyGame { -namespace Example { - -struct NestedStruct; - -struct ArrayStruct; - -struct ArrayTable; -struct ArrayTableBuilder; -struct ArrayTableT; - -bool operator==(const NestedStruct &lhs, const NestedStruct &rhs); -bool operator!=(const NestedStruct &lhs, const NestedStruct &rhs); -bool operator==(const ArrayStruct &lhs, const ArrayStruct &rhs); -bool operator!=(const ArrayStruct &lhs, const ArrayStruct &rhs); -bool operator==(const ArrayTableT &lhs, const ArrayTableT &rhs); -bool operator!=(const ArrayTableT &lhs, const ArrayTableT &rhs); - -inline const ::flatbuffers::TypeTable *NestedStructTypeTable(); - -inline const ::flatbuffers::TypeTable *ArrayStructTypeTable(); - -inline const ::flatbuffers::TypeTable *ArrayTableTypeTable(); - -enum class TestEnum : int8_t { - A = 0, - B = 1, - C = 2, - MIN = A, - MAX = C -}; - -inline const TestEnum (&EnumValuesTestEnum())[3] { - static const TestEnum values[] = { - TestEnum::A, - TestEnum::B, - TestEnum::C - }; - return values; -} - -inline const char * const *EnumNamesTestEnum() { - static const char * const names[4] = { - "A", - "B", - "C", - nullptr - }; - return names; -} - -inline const char *EnumNameTestEnum(TestEnum e) { - if (::flatbuffers::IsOutRange(e, TestEnum::A, TestEnum::C)) return ""; - const size_t index = static_cast(e); - return EnumNamesTestEnum()[index]; -} - -FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(8) NestedStruct FLATBUFFERS_FINAL_CLASS { - private: - int32_t a_[2]; - int8_t b_; - int8_t c_[2]; - int8_t padding0__; int32_t padding1__; - int64_t d_[2]; - - public: - static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { - return NestedStructTypeTable(); - } - NestedStruct() - : a_(), - b_(0), - c_(), - padding0__(0), - padding1__(0), - d_() { - (void)padding0__; - (void)padding1__; - } - NestedStruct(MyGame::Example::TestEnum _b) - : a_(), - b_(::flatbuffers::EndianScalar(static_cast(_b))), - c_(), - padding0__(0), - padding1__(0), - d_() { - (void)padding0__; - (void)padding1__; - } - NestedStruct(::flatbuffers::span _a, MyGame::Example::TestEnum _b, ::flatbuffers::span _c, ::flatbuffers::span _d) - : b_(::flatbuffers::EndianScalar(static_cast(_b))), - padding0__(0), - padding1__(0) { - ::flatbuffers::CastToArray(a_).CopyFromSpan(_a); - ::flatbuffers::CastToArrayOfEnum(c_).CopyFromSpan(_c); - (void)padding0__; - (void)padding1__; - ::flatbuffers::CastToArray(d_).CopyFromSpan(_d); - } - const ::flatbuffers::Array *a() const { - return &::flatbuffers::CastToArray(a_); - } - ::flatbuffers::Array *mutable_a() { - return &::flatbuffers::CastToArray(a_); - } - MyGame::Example::TestEnum b() const { - return static_cast(::flatbuffers::EndianScalar(b_)); - } - void mutate_b(MyGame::Example::TestEnum _b) { - ::flatbuffers::WriteScalar(&b_, static_cast(_b)); - } - const ::flatbuffers::Array *c() const { - return &::flatbuffers::CastToArrayOfEnum(c_); - } - ::flatbuffers::Array *mutable_c() { - return &::flatbuffers::CastToArrayOfEnum(c_); - } - const ::flatbuffers::Array *d() const { - return &::flatbuffers::CastToArray(d_); - } - ::flatbuffers::Array *mutable_d() { - return &::flatbuffers::CastToArray(d_); - } -}; -FLATBUFFERS_STRUCT_END(NestedStruct, 32); - -inline bool operator==(const NestedStruct &lhs, const NestedStruct &rhs) { - return - (*lhs.a() == *rhs.a()) && - (lhs.b() == rhs.b()) && - (*lhs.c() == *rhs.c()) && - (*lhs.d() == *rhs.d()); -} - -inline bool operator!=(const NestedStruct &lhs, const NestedStruct &rhs) { - return !(lhs == rhs); -} - - -FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(8) ArrayStruct FLATBUFFERS_FINAL_CLASS { - private: - float a_; - int32_t b_[15]; - int8_t c_; - int8_t padding0__; int16_t padding1__; int32_t padding2__; - MyGame::Example::NestedStruct d_[2]; - int32_t e_; - int32_t padding3__; - int64_t f_[2]; - - public: - static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { - return ArrayStructTypeTable(); - } - ArrayStruct() - : a_(0), - b_(), - c_(0), - padding0__(0), - padding1__(0), - padding2__(0), - d_(), - e_(0), - padding3__(0), - f_() { - (void)padding0__; - (void)padding1__; - (void)padding2__; - (void)padding3__; - } - ArrayStruct(float _a, int8_t _c, int32_t _e) - : a_(::flatbuffers::EndianScalar(_a)), - b_(), - c_(::flatbuffers::EndianScalar(_c)), - padding0__(0), - padding1__(0), - padding2__(0), - d_(), - e_(::flatbuffers::EndianScalar(_e)), - padding3__(0), - f_() { - (void)padding0__; - (void)padding1__; - (void)padding2__; - (void)padding3__; - } - ArrayStruct(float _a, ::flatbuffers::span _b, int8_t _c, ::flatbuffers::span _d, int32_t _e, ::flatbuffers::span _f) - : a_(::flatbuffers::EndianScalar(_a)), - c_(::flatbuffers::EndianScalar(_c)), - padding0__(0), - padding1__(0), - padding2__(0), - e_(::flatbuffers::EndianScalar(_e)), - padding3__(0) { - ::flatbuffers::CastToArray(b_).CopyFromSpan(_b); - (void)padding0__; - (void)padding1__; - (void)padding2__; - ::flatbuffers::CastToArray(d_).CopyFromSpan(_d); - (void)padding3__; - ::flatbuffers::CastToArray(f_).CopyFromSpan(_f); - } - float a() const { - return ::flatbuffers::EndianScalar(a_); - } - void mutate_a(float _a) { - ::flatbuffers::WriteScalar(&a_, _a); - } - const ::flatbuffers::Array *b() const { - return &::flatbuffers::CastToArray(b_); - } - ::flatbuffers::Array *mutable_b() { - return &::flatbuffers::CastToArray(b_); - } - int8_t c() const { - return ::flatbuffers::EndianScalar(c_); - } - void mutate_c(int8_t _c) { - ::flatbuffers::WriteScalar(&c_, _c); - } - const ::flatbuffers::Array *d() const { - return &::flatbuffers::CastToArray(d_); - } - ::flatbuffers::Array *mutable_d() { - return &::flatbuffers::CastToArray(d_); - } - int32_t e() const { - return ::flatbuffers::EndianScalar(e_); - } - void mutate_e(int32_t _e) { - ::flatbuffers::WriteScalar(&e_, _e); - } - const ::flatbuffers::Array *f() const { - return &::flatbuffers::CastToArray(f_); - } - ::flatbuffers::Array *mutable_f() { - return &::flatbuffers::CastToArray(f_); - } -}; -FLATBUFFERS_STRUCT_END(ArrayStruct, 160); - -inline bool operator==(const ArrayStruct &lhs, const ArrayStruct &rhs) { - return - (lhs.a() == rhs.a()) && - (*lhs.b() == *rhs.b()) && - (lhs.c() == rhs.c()) && - (*lhs.d() == *rhs.d()) && - (lhs.e() == rhs.e()) && - (*lhs.f() == *rhs.f()); -} - -inline bool operator!=(const ArrayStruct &lhs, const ArrayStruct &rhs) { - return !(lhs == rhs); -} - - -struct ArrayTableT : public ::flatbuffers::NativeTable { - typedef ArrayTable TableType; - std::unique_ptr a{}; - ArrayTableT() = default; - ArrayTableT(const ArrayTableT &o); - ArrayTableT(ArrayTableT&&) FLATBUFFERS_NOEXCEPT = default; - ArrayTableT &operator=(ArrayTableT o) FLATBUFFERS_NOEXCEPT; -}; - -struct ArrayTable FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { - typedef ArrayTableT NativeTableType; - typedef ArrayTableBuilder Builder; - static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { - return ArrayTableTypeTable(); - } - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_A = 4 - }; - const MyGame::Example::ArrayStruct *a() const { - return GetStruct(VT_A); - } - MyGame::Example::ArrayStruct *mutable_a() { - return GetStruct(VT_A); - } - bool Verify(::flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_A, 8) && - verifier.EndTable(); - } - ArrayTableT *UnPack(const ::flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(ArrayTableT *_o, const ::flatbuffers::resolver_function_t *_resolver = nullptr) const; - static ::flatbuffers::Offset Pack(::flatbuffers::FlatBufferBuilder &_fbb, const ArrayTableT* _o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct ArrayTableBuilder { - typedef ArrayTable Table; - ::flatbuffers::FlatBufferBuilder &fbb_; - ::flatbuffers::uoffset_t start_; - void add_a(const MyGame::Example::ArrayStruct *a) { - fbb_.AddStruct(ArrayTable::VT_A, a); - } - explicit ArrayTableBuilder(::flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - ::flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = ::flatbuffers::Offset(end); - return o; - } -}; - -inline ::flatbuffers::Offset CreateArrayTable( - ::flatbuffers::FlatBufferBuilder &_fbb, - const MyGame::Example::ArrayStruct *a = nullptr) { - ArrayTableBuilder builder_(_fbb); - builder_.add_a(a); - return builder_.Finish(); -} - -::flatbuffers::Offset CreateArrayTable(::flatbuffers::FlatBufferBuilder &_fbb, const ArrayTableT *_o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr); - - -inline bool operator==(const ArrayTableT &lhs, const ArrayTableT &rhs) { - return - ((lhs.a == rhs.a) || (lhs.a && rhs.a && *lhs.a == *rhs.a)); -} - -inline bool operator!=(const ArrayTableT &lhs, const ArrayTableT &rhs) { - return !(lhs == rhs); -} - - -inline ArrayTableT::ArrayTableT(const ArrayTableT &o) - : a((o.a) ? new MyGame::Example::ArrayStruct(*o.a) : nullptr) { -} - -inline ArrayTableT &ArrayTableT::operator=(ArrayTableT o) FLATBUFFERS_NOEXCEPT { - std::swap(a, o.a); - return *this; -} - -inline ArrayTableT *ArrayTable::UnPack(const ::flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::unique_ptr(new ArrayTableT()); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void ArrayTable::UnPackTo(ArrayTableT *_o, const ::flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = a(); if (_e) _o->a = std::unique_ptr(new MyGame::Example::ArrayStruct(*_e)); } -} - -inline ::flatbuffers::Offset ArrayTable::Pack(::flatbuffers::FlatBufferBuilder &_fbb, const ArrayTableT* _o, const ::flatbuffers::rehasher_function_t *_rehasher) { - return CreateArrayTable(_fbb, _o, _rehasher); -} - -inline ::flatbuffers::Offset CreateArrayTable(::flatbuffers::FlatBufferBuilder &_fbb, const ArrayTableT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const ArrayTableT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _a = _o->a ? _o->a.get() : nullptr; - return MyGame::Example::CreateArrayTable( - _fbb, - _a); -} - -inline const ::flatbuffers::TypeTable *TestEnumTypeTable() { - static const ::flatbuffers::TypeCode type_codes[] = { - { ::flatbuffers::ET_CHAR, 0, 0 }, - { ::flatbuffers::ET_CHAR, 0, 0 }, - { ::flatbuffers::ET_CHAR, 0, 0 } - }; - static const ::flatbuffers::TypeFunction type_refs[] = { - MyGame::Example::TestEnumTypeTable - }; - static const char * const names[] = { - "A", - "B", - "C" - }; - static const ::flatbuffers::TypeTable tt = { - ::flatbuffers::ST_ENUM, 3, type_codes, type_refs, nullptr, nullptr, names - }; - return &tt; -} - -inline const ::flatbuffers::TypeTable *NestedStructTypeTable() { - static const ::flatbuffers::TypeCode type_codes[] = { - { ::flatbuffers::ET_INT, 1, -1 }, - { ::flatbuffers::ET_CHAR, 0, 0 }, - { ::flatbuffers::ET_CHAR, 1, 0 }, - { ::flatbuffers::ET_LONG, 1, -1 } - }; - static const ::flatbuffers::TypeFunction type_refs[] = { - MyGame::Example::TestEnumTypeTable - }; - static const int16_t array_sizes[] = { 2, 2, 2, }; - static const int64_t values[] = { 0, 8, 9, 16, 32 }; - static const char * const names[] = { - "a", - "b", - "c", - "d" - }; - static const ::flatbuffers::TypeTable tt = { - ::flatbuffers::ST_STRUCT, 4, type_codes, type_refs, array_sizes, values, names - }; - return &tt; -} - -inline const ::flatbuffers::TypeTable *ArrayStructTypeTable() { - static const ::flatbuffers::TypeCode type_codes[] = { - { ::flatbuffers::ET_FLOAT, 0, -1 }, - { ::flatbuffers::ET_INT, 1, -1 }, - { ::flatbuffers::ET_CHAR, 0, -1 }, - { ::flatbuffers::ET_SEQUENCE, 1, 0 }, - { ::flatbuffers::ET_INT, 0, -1 }, - { ::flatbuffers::ET_LONG, 1, -1 } - }; - static const ::flatbuffers::TypeFunction type_refs[] = { - MyGame::Example::NestedStructTypeTable - }; - static const int16_t array_sizes[] = { 15, 2, 2, }; - static const int64_t values[] = { 0, 4, 64, 72, 136, 144, 160 }; - static const char * const names[] = { - "a", - "b", - "c", - "d", - "e", - "f" - }; - static const ::flatbuffers::TypeTable tt = { - ::flatbuffers::ST_STRUCT, 6, type_codes, type_refs, array_sizes, values, names - }; - return &tt; -} - -inline const ::flatbuffers::TypeTable *ArrayTableTypeTable() { - static const ::flatbuffers::TypeCode type_codes[] = { - { ::flatbuffers::ET_SEQUENCE, 0, 0 } - }; - static const ::flatbuffers::TypeFunction type_refs[] = { - MyGame::Example::ArrayStructTypeTable - }; - static const char * const names[] = { - "a" - }; - static const ::flatbuffers::TypeTable tt = { - ::flatbuffers::ST_TABLE, 1, type_codes, type_refs, nullptr, nullptr, names - }; - return &tt; -} - -inline const MyGame::Example::ArrayTable *GetArrayTable(const void *buf) { - return ::flatbuffers::GetRoot(buf); -} - -inline const MyGame::Example::ArrayTable *GetSizePrefixedArrayTable(const void *buf) { - return ::flatbuffers::GetSizePrefixedRoot(buf); -} - -inline ArrayTable *GetMutableArrayTable(void *buf) { - return ::flatbuffers::GetMutableRoot(buf); -} - -inline MyGame::Example::ArrayTable *GetMutableSizePrefixedArrayTable(void *buf) { - return ::flatbuffers::GetMutableSizePrefixedRoot(buf); -} - -inline const char *ArrayTableIdentifier() { - return "ARRT"; -} - -inline bool ArrayTableBufferHasIdentifier(const void *buf) { - return ::flatbuffers::BufferHasIdentifier( - buf, ArrayTableIdentifier()); -} - -inline bool SizePrefixedArrayTableBufferHasIdentifier(const void *buf) { - return ::flatbuffers::BufferHasIdentifier( - buf, ArrayTableIdentifier(), true); -} - -inline bool VerifyArrayTableBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(ArrayTableIdentifier()); -} - -inline bool VerifySizePrefixedArrayTableBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(ArrayTableIdentifier()); -} - -inline const char *ArrayTableExtension() { - return "mon"; -} - -inline void FinishArrayTableBuffer( - ::flatbuffers::FlatBufferBuilder &fbb, - ::flatbuffers::Offset root) { - fbb.Finish(root, ArrayTableIdentifier()); -} - -inline void FinishSizePrefixedArrayTableBuffer( - ::flatbuffers::FlatBufferBuilder &fbb, - ::flatbuffers::Offset root) { - fbb.FinishSizePrefixed(root, ArrayTableIdentifier()); -} - -inline std::unique_ptr UnPackArrayTable( - const void *buf, - const ::flatbuffers::resolver_function_t *res = nullptr) { - return std::unique_ptr(GetArrayTable(buf)->UnPack(res)); -} - -inline std::unique_ptr UnPackSizePrefixedArrayTable( - const void *buf, - const ::flatbuffers::resolver_function_t *res = nullptr) { - return std::unique_ptr(GetSizePrefixedArrayTable(buf)->UnPack(res)); -} - -} // namespace Example -} // namespace MyGame - -#endif // FLATBUFFERS_GENERATED_ARRAYSTEST_MYGAME_EXAMPLE_H_ diff --git a/tests/cpp17/generated_cpp17/monster_test_generated.h b/tests/cpp17/generated_cpp17/monster_test_generated.h index 54fa1a29abc..4863ea2c547 100644 --- a/tests/cpp17/generated_cpp17/monster_test_generated.h +++ b/tests/cpp17/generated_cpp17/monster_test_generated.h @@ -12,7 +12,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); namespace MyGame { diff --git a/tests/cpp17/generated_cpp17/optional_scalars_generated.h b/tests/cpp17/generated_cpp17/optional_scalars_generated.h index f30ba0b2b4a..92f6e5a5f72 100644 --- a/tests/cpp17/generated_cpp17/optional_scalars_generated.h +++ b/tests/cpp17/generated_cpp17/optional_scalars_generated.h @@ -10,7 +10,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); namespace optional_scalars { diff --git a/tests/cpp17/generated_cpp17/union_vector_generated.h b/tests/cpp17/generated_cpp17/union_vector_generated.h index 4f65d37d165..64bf358da7f 100644 --- a/tests/cpp17/generated_cpp17/union_vector_generated.h +++ b/tests/cpp17/generated_cpp17/union_vector_generated.h @@ -10,7 +10,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); struct Attacker; diff --git a/tests/evolution_test.cpp b/tests/evolution_test.cpp index 6ed2f57459e..51c2e8131e2 100644 --- a/tests/evolution_test.cpp +++ b/tests/evolution_test.cpp @@ -111,6 +111,13 @@ void ConformTest() { test_conform(ref2, "enum E:int32 { A } table T2 { df:byte; f:E; }", "field renamed to different type: T2.df (renamed from T2.f)"); + // Check enum underlying type changes. + test_conform("enum E:int32 {A}", "enum E: byte {A}", "underlying type differ for enum: E"); + + // Check union underlying type changes. + const char ref3[] = "table A {} table B {} union C {A, B}"; + test_conform(ref3, "table A {} table B {} union C:int32 {A, B}", "underlying type differ for union: C"); + // Check conformity for Offset64-related changes. { const char ref[] = "table T { a:[uint8]; b:string; }"; diff --git a/tests/evolution_test/evolution_v1_generated.h b/tests/evolution_test/evolution_v1_generated.h index 34888d5a140..80e75416515 100644 --- a/tests/evolution_test/evolution_v1_generated.h +++ b/tests/evolution_test/evolution_v1_generated.h @@ -10,7 +10,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); namespace Evolution { diff --git a/tests/evolution_test/evolution_v2_generated.h b/tests/evolution_test/evolution_v2_generated.h index f0adefe6077..32aae375fcb 100644 --- a/tests/evolution_test/evolution_v2_generated.h +++ b/tests/evolution_test/evolution_v2_generated.h @@ -10,7 +10,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); namespace Evolution { diff --git a/tests/flexbuffers_test.cpp b/tests/flexbuffers_test.cpp index b8da8ed70d3..c504f4e3b83 100644 --- a/tests/flexbuffers_test.cpp +++ b/tests/flexbuffers_test.cpp @@ -1,7 +1,7 @@ -#include - #include "flexbuffers_test.h" +#include + #include "flatbuffers/flexbuffers.h" #include "flatbuffers/idl.h" #include "is_quiet_nan.h" diff --git a/tests/fuzz_test.cpp b/tests/fuzz_test.cpp index f6ee238d7f4..1c9adbc577e 100644 --- a/tests/fuzz_test.cpp +++ b/tests/fuzz_test.cpp @@ -1,7 +1,7 @@ -#include - #include "fuzz_test.h" +#include + #include "flatbuffers/flatbuffers.h" #include "flatbuffers/idl.h" #include "test_assert.h" @@ -22,7 +22,7 @@ void lcg_reset() { lcg_seed = 48271; } template static void CompareTableFieldValue(flatbuffers::Table *table, - flatbuffers::voffset_t voffset, T val) { + flatbuffers::voffset_t voffset, T val) { T read = table->GetField(voffset, static_cast(0)); TEST_EQ(read, val); } @@ -273,8 +273,7 @@ void FuzzTest2() { std::string jsongen; parser.opts.indent_step = 0; - auto result = - GenerateText(parser, parser.builder_.GetBufferPointer(), &jsongen); + auto result = GenText(parser, parser.builder_.GetBufferPointer(), &jsongen); TEST_NULL(result); if (jsongen != json) { diff --git a/tests/fuzzer/flatbuffers_monster_fuzzer.cc b/tests/fuzzer/flatbuffers_monster_fuzzer.cc index 4b8b79061ec..71a6802789f 100644 --- a/tests/fuzzer/flatbuffers_monster_fuzzer.cc +++ b/tests/fuzzer/flatbuffers_monster_fuzzer.cc @@ -78,8 +78,8 @@ std::string do_test(const flatbuffers::IDLOptions &opts, flatbuffers::Verifier verifier(parser_.builder_.GetBufferPointer(), parser_.builder_.GetSize()); TEST_EQ(true, MyGame::Example::VerifyMonsterBuffer(verifier)); - TEST_ASSERT( - GenerateText(parser_, parser_.builder_.GetBufferPointer(), &jsongen)); + TEST_NULL( + GenText(parser_, parser_.builder_.GetBufferPointer(), &jsongen)); } else if (check_parser) { TEST_OUTPUT_LINE("parser failed with JSON:\n%s", input_json.c_str()); TEST_EQ_STR("", parser_.error_.c_str()); diff --git a/tests/fuzzer/flatbuffers_scalar_fuzzer.cc b/tests/fuzzer/flatbuffers_scalar_fuzzer.cc index faa069e1db5..cd43506f511 100644 --- a/tests/fuzzer/flatbuffers_scalar_fuzzer.cc +++ b/tests/fuzzer/flatbuffers_scalar_fuzzer.cc @@ -218,8 +218,7 @@ bool Parse(flatbuffers::Parser &parser, const std::string &json, std::string *_text) { auto done = parser.ParseJson(json.c_str()); if (done) { - TEST_EQ(GenerateText(parser, parser.builder_.GetBufferPointer(), _text), - true); + TEST_NULL(GenText(parser, parser.builder_.GetBufferPointer(), _text)); } else { *_text = parser.error_; } @@ -358,9 +357,9 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { } // Compare with print. std::string ref_string, def_string; - FLATBUFFERS_ASSERT(GenerateText( + FLATBUFFERS_ASSERT(!GenText( parser, parser.builder_.GetBufferPointer(), &ref_string)); - FLATBUFFERS_ASSERT(GenerateText( + FLATBUFFERS_ASSERT(!GenText( def_parser, def_parser.builder_.GetBufferPointer(), &def_string)); if (ref_string != def_string) { TEST_OUTPUT_LINE("Stage 3.2 failed: '%s' != '%s'", def_string.c_str(), diff --git a/tests/json_test.cpp b/tests/json_test.cpp index 8acbb10eebe..2a328638abb 100644 --- a/tests/json_test.cpp +++ b/tests/json_test.cpp @@ -2,8 +2,8 @@ #include "flatbuffers/flatbuffers.h" #include "flatbuffers/idl.h" +#include "monster_test_bfbs_generated.h" #include "monster_test_generated.h" -#include "monster_test_bfbs_generated.h" #include "optional_scalars_generated.h" #include "test_assert.h" @@ -13,7 +13,7 @@ namespace tests { using namespace MyGame::Example; // Check stringify of an default enum value to json -void JsonDefaultTest(const std::string& tests_data_path) { +void JsonDefaultTest(const std::string &tests_data_path) { // load FlatBuffer schema (.fbs) from disk std::string schemafile; TEST_EQ(flatbuffers::LoadFile((tests_data_path + "monster_test.fbs").c_str(), @@ -36,7 +36,7 @@ void JsonDefaultTest(const std::string& tests_data_path) { color_monster.add_name(name); FinishMonsterBuffer(builder, color_monster.Finish()); std::string jsongen; - auto result = GenerateText(parser, builder.GetBufferPointer(), &jsongen); + auto result = GenText(parser, builder.GetBufferPointer(), &jsongen); TEST_NULL(result); // default value of the "color" field is Blue TEST_EQ(std::string::npos != jsongen.find("color: \"Blue\""), true); @@ -44,7 +44,7 @@ void JsonDefaultTest(const std::string& tests_data_path) { TEST_EQ(std::string::npos != jsongen.find("testf: 3.14159"), true); } -void JsonEnumsTest(const std::string& tests_data_path) { +void JsonEnumsTest(const std::string &tests_data_path) { // load FlatBuffer schema (.fbs) from disk std::string schemafile; TEST_EQ(flatbuffers::LoadFile((tests_data_path + "monster_test.fbs").c_str(), @@ -65,7 +65,7 @@ void JsonEnumsTest(const std::string& tests_data_path) { color_monster.add_color(Color(Color_Blue | Color_Red)); FinishMonsterBuffer(builder, color_monster.Finish()); std::string jsongen; - auto result = GenerateText(parser, builder.GetBufferPointer(), &jsongen); + auto result = GenText(parser, builder.GetBufferPointer(), &jsongen); TEST_NULL(result); TEST_EQ(std::string::npos != jsongen.find("color: \"Red Blue\""), true); // Test forward compatibility with 'output_enum_identifiers = true'. @@ -78,12 +78,13 @@ void JsonEnumsTest(const std::string& tests_data_path) { future_color.add_color( static_cast((1u << 2) | Color_Blue | Color_Red)); FinishMonsterBuffer(builder, future_color.Finish()); - result = GenerateText(parser, builder.GetBufferPointer(), &future_json); + result = GenText(parser, builder.GetBufferPointer(), &future_json); TEST_NULL(result); TEST_EQ(std::string::npos != future_json.find("color: 13"), true); } -void JsonOptionalTest(const std::string& tests_data_path, bool default_scalars) { +void JsonOptionalTest(const std::string &tests_data_path, + bool default_scalars) { // load FlatBuffer schema (.fbs) and JSON from disk std::string schemafile; std::string jsonfile; @@ -118,13 +119,12 @@ void JsonOptionalTest(const std::string& tests_data_path, bool default_scalars) // to ensure it is correct, we now generate text back from the binary, // and compare the two: std::string jsongen; - auto result = - GenerateText(parser, parser.builder_.GetBufferPointer(), &jsongen); + auto result = GenText(parser, parser.builder_.GetBufferPointer(), &jsongen); TEST_NULL(result); TEST_EQ_STR(jsongen.c_str(), jsonfile.c_str()); } -void ParseIncorrectMonsterJsonTest(const std::string& tests_data_path) { +void ParseIncorrectMonsterJsonTest(const std::string &tests_data_path) { std::string schemafile; TEST_EQ(flatbuffers::LoadFile((tests_data_path + "monster_test.bfbs").c_str(), true, &schemafile), @@ -179,7 +179,7 @@ table JsonUnionStructTest { union_with_struct: UnionWithStruct; } root_type JsonUnionStructTest; )"; // source text to parse and expected result of generation text back - auto json_source =R"({ + auto json_source = R"({ union_with_struct_type: "MyStruct", union_with_struct: { field: 12345 @@ -198,7 +198,7 @@ root_type JsonUnionStructTest; // now generate text back from the binary, and compare the two: std::string json_generated; auto generate_result = - GenerateText(parser, parser.builder_.GetBufferPointer(), &json_generated); + GenText(parser, parser.builder_.GetBufferPointer(), &json_generated); TEST_NULL(generate_result); TEST_EQ_STR(json_source, json_generated.c_str()); } diff --git a/tests/key_field/key_field_sample_generated.h b/tests/key_field/key_field_sample_generated.h index 1da14edcb0a..6763522750a 100644 --- a/tests/key_field/key_field_sample_generated.h +++ b/tests/key_field/key_field_sample_generated.h @@ -10,7 +10,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); namespace keyfield { diff --git a/tests/key_field_test.cpp b/tests/key_field_test.cpp index 7194e6d69ae..20eb2094c18 100644 --- a/tests/key_field_test.cpp +++ b/tests/key_field_test.cpp @@ -38,7 +38,6 @@ void FixedSizedScalarKeyInStructTest() { bars.push_back(Bar(flatbuffers::make_span(test_float_array4), 1)); auto bar_vec = fbb.CreateVectorOfSortedStructs(&bars); - auto t = CreateFooTable(fbb, 1, 2, test_string, baz_vec, bar_vec); fbb.Finish(t); @@ -51,15 +50,11 @@ void FixedSizedScalarKeyInStructTest() { TEST_EQ(sorted_baz_vec->Get(3)->b(), 4); uint8_t test_array[4]; - auto* key_array = &flatbuffers::CastToArray(test_array); + auto *key_array = &flatbuffers::CastToArray(test_array); key_array->CopyFromSpan(flatbuffers::make_span(test_array1)); - - TEST_NOTNULL( - sorted_baz_vec->LookupByKey(key_array)); - TEST_EQ( - sorted_baz_vec->LookupByKey(key_array)->b(), - 4); + TEST_NOTNULL(sorted_baz_vec->LookupByKey(key_array)); + TEST_EQ(sorted_baz_vec->LookupByKey(key_array)->b(), 4); uint8_t array_int[4] = { 7, 2, 3, 0 }; key_array->CopyFromSpan(flatbuffers::make_span(array_int)); TEST_EQ(sorted_baz_vec->LookupByKey(key_array), @@ -70,7 +65,7 @@ void FixedSizedScalarKeyInStructTest() { TEST_EQ(sorted_bar_vec->Get(3)->b(), 4); float test_float_array[3]; - auto* key_float_array = &flatbuffers::CastToArray(test_float_array); + auto *key_float_array = &flatbuffers::CastToArray(test_float_array); key_float_array->CopyFromSpan(flatbuffers::make_span(test_float_array1)); TEST_NOTNULL(sorted_bar_vec->LookupByKey(key_float_array)); TEST_EQ(sorted_bar_vec->LookupByKey(key_float_array)->b(), 3); @@ -105,7 +100,6 @@ void StructKeyInStructTest() { auto orc = foo_builder.Finish(); fbb.Finish(orc); - uint8_t *buf = fbb.GetBufferPointer(); auto foo_table = GetFooTable(buf); @@ -153,9 +147,14 @@ void NestedStructKeyInStructTest() { TEST_EQ(sorted_fruit_vec->Get(0)->b(), 3); TEST_EQ(sorted_fruit_vec->Get(1)->b(), 1); TEST_EQ(sorted_fruit_vec->Get(2)->b(), 2); - TEST_EQ(sorted_fruit_vec->LookupByKey(Apple(2, Color(flatbuffers::make_span(test_float_array2), 1)))->b(), 1); - TEST_EQ(sorted_fruit_vec->LookupByKey(Apple(1, Color(flatbuffers::make_span(test_float_array2), 1))), static_cast(nullptr)); - + TEST_EQ(sorted_fruit_vec + ->LookupByKey( + Apple(2, Color(flatbuffers::make_span(test_float_array2), 1))) + ->b(), + 1); + TEST_EQ(sorted_fruit_vec->LookupByKey( + Apple(1, Color(flatbuffers::make_span(test_float_array2), 1))), + static_cast(nullptr)); } void FixedSizedStructArrayKeyInStructTest() { diff --git a/tests/monster_extra_generated.h b/tests/monster_extra_generated.h index ebe02d009ff..017c682450e 100644 --- a/tests/monster_extra_generated.h +++ b/tests/monster_extra_generated.h @@ -10,7 +10,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); namespace MyGame { diff --git a/tests/monster_test.cpp b/tests/monster_test.cpp index 2ca3277a9be..8ec031a3ddf 100644 --- a/tests/monster_test.cpp +++ b/tests/monster_test.cpp @@ -3,7 +3,9 @@ #include #include +#include "flatbuffers/base.h" #include "flatbuffers/flatbuffer_builder.h" +#include "flatbuffers/flatbuffers.h" #include "flatbuffers/idl.h" #include "flatbuffers/registry.h" #include "flatbuffers/verifier.h" @@ -422,8 +424,8 @@ void MutateFlatBuffersTest(uint8_t *flatbuf, std::size_t length) { // Mutate structs. auto pos = monster->mutable_pos(); - auto & test3 = pos->mutable_test3(); // Struct inside a struct. - test3.mutate_a(50); // Struct fields never fail. + auto &test3 = pos->mutable_test3(); // Struct inside a struct. + test3.mutate_a(50); // Struct fields never fail. TEST_EQ(test3.a(), 50); test3.mutate_a(10); @@ -441,13 +443,12 @@ void MutateFlatBuffersTest(uint8_t *flatbuf, std::size_t length) { first->mutate_hp(1000); // Test for each loop over mutable entries - for (auto item: *tables) - { + for (auto item : *tables) { TEST_EQ(item->hp(), 1000); item->mutate_hp(0); TEST_EQ(item->hp(), 0); item->mutate_hp(1000); - break; // one iteration is enough, just testing compilation + break; // one iteration is enough, just testing compilation } // Mutate via LookupByKey @@ -579,11 +580,31 @@ void SizePrefixedTest() { flatbuffers::Verifier verifier(fbb.GetBufferPointer(), fbb.GetSize()); TEST_EQ(VerifySizePrefixedMonsterBuffer(verifier), true); + // The prefixed size doesn't include itself, so substract the size of the + // prefix + TEST_EQ(GetPrefixedSize(fbb.GetBufferPointer()), + fbb.GetSize() - sizeof(uoffset_t)); + + // Getting the buffer length does include the prefix size, so it should be the + // full lenght. + TEST_EQ(GetSizePrefixedBufferLength(fbb.GetBufferPointer()), fbb.GetSize()); + // Access it. auto m = GetSizePrefixedMonster(fbb.GetBufferPointer()); TEST_EQ(m->mana(), 200); TEST_EQ(m->hp(), 300); TEST_EQ_STR(m->name()->c_str(), "bob"); + + { + // Verify that passing a larger size is OK, but not a smaller + flatbuffers::Verifier verifier_larger(fbb.GetBufferPointer(), + fbb.GetSize() + 10); + TEST_EQ(VerifySizePrefixedMonsterBuffer(verifier_larger), true); + + flatbuffers::Verifier verifier_smaller(fbb.GetBufferPointer(), + fbb.GetSize() - 10); + TEST_EQ(VerifySizePrefixedMonsterBuffer(verifier_smaller), false); + } } void TestMonsterExtraFloats(const std::string &tests_data_path) { @@ -625,7 +646,7 @@ void TestMonsterExtraFloats(const std::string &tests_data_path) { TEST_EQ(def_extra->d2(), +infinity_d); TEST_EQ(def_extra->d3(), -infinity_d); std::string jsongen; - auto result = GenerateText(parser, def_obj, &jsongen); + auto result = GenText(parser, def_obj, &jsongen); TEST_NULL(result); // Check expected default values. TEST_EQ(std::string::npos != jsongen.find("f0: nan"), true); @@ -775,8 +796,7 @@ void ParseAndGenerateTextTest(const std::string &tests_data_path, bool binary) { // to ensure it is correct, we now generate text back from the binary, // and compare the two: std::string jsongen; - auto result = - GenerateText(parser, parser.builder_.GetBufferPointer(), &jsongen); + auto result = GenText(parser, parser.builder_.GetBufferPointer(), &jsongen); TEST_NULL(result); TEST_EQ_STR(jsongen.c_str(), jsonfile.c_str()); @@ -815,8 +835,7 @@ void ParseAndGenerateTextTest(const std::string &tests_data_path, bool binary) { // request natural printing for utf-8 strings parser.opts.natural_utf8 = true; parser.opts.strict_json = true; - TEST_NULL( - GenerateText(parser, parser.builder_.GetBufferPointer(), &jsongen_utf8)); + TEST_NULL(GenText(parser, parser.builder_.GetBufferPointer(), &jsongen_utf8)); TEST_EQ_STR(jsongen_utf8.c_str(), jsonfile_utf8.c_str()); } diff --git a/tests/monster_test_bfbs_generated.h b/tests/monster_test_bfbs_generated.h index 58adf629efd..3a4c001000f 100644 --- a/tests/monster_test_bfbs_generated.h +++ b/tests/monster_test_bfbs_generated.h @@ -4,15 +4,8 @@ #ifndef FLATBUFFERS_GENERATED_MONSTERTEST_MYGAME_EXAMPLE_BFBS_H_ #define FLATBUFFERS_GENERATED_MONSTERTEST_MYGAME_EXAMPLE_BFBS_H_ -#include "flatbuffers/flatbuffers.h" - -// Ensure the included flatbuffers.h is the same version as when this file was -// generated, otherwise it may not be compatible. -static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && - FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, - "Non-compatible flatbuffers version included"); - +#include +#include namespace MyGame { namespace Example { diff --git a/tests/monster_test_generated.h b/tests/monster_test_generated.h index 5c89973c2d2..77b34181954 100644 --- a/tests/monster_test_generated.h +++ b/tests/monster_test_generated.h @@ -12,7 +12,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); // For access to the binary schema that produced this file. diff --git a/tests/monster_test_generated.py b/tests/monster_test_generated.py index 2acdf6ce856..f2b62cb2f2a 100644 --- a/tests/monster_test_generated.py +++ b/tests/monster_test_generated.py @@ -1050,7 +1050,7 @@ def TestnestedflatbufferAsNumpy(self): def TestnestedflatbufferNestedRoot(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(30)) if o != 0: - from .MyGame.Example.Monster import Monster + from MyGame.Example.Monster import Monster return Monster.GetRootAs(self._tab.Bytes, self._tab.Vector(o)) return 0 @@ -1581,7 +1581,7 @@ def TestrequirednestedflatbufferAsNumpy(self): def TestrequirednestedflatbufferNestedRoot(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(102)) if o != 0: - from .MyGame.Example.Monster import Monster + from MyGame.Example.Monster import Monster return Monster.GetRootAs(self._tab.Bytes, self._tab.Vector(o)) return 0 diff --git a/tests/monster_test_suffix/ext_only/monster_test_generated.hpp b/tests/monster_test_suffix/ext_only/monster_test_generated.hpp index a9e8adaf2a8..f07d5eff895 100644 --- a/tests/monster_test_suffix/ext_only/monster_test_generated.hpp +++ b/tests/monster_test_suffix/ext_only/monster_test_generated.hpp @@ -12,7 +12,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); namespace MyGame { diff --git a/tests/monster_test_suffix/filesuffix_only/monster_test_suffix.h b/tests/monster_test_suffix/filesuffix_only/monster_test_suffix.h index a9e8adaf2a8..f07d5eff895 100644 --- a/tests/monster_test_suffix/filesuffix_only/monster_test_suffix.h +++ b/tests/monster_test_suffix/filesuffix_only/monster_test_suffix.h @@ -12,7 +12,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); namespace MyGame { diff --git a/tests/monster_test_suffix/monster_test_suffix.hpp b/tests/monster_test_suffix/monster_test_suffix.hpp index a9e8adaf2a8..f07d5eff895 100644 --- a/tests/monster_test_suffix/monster_test_suffix.hpp +++ b/tests/monster_test_suffix/monster_test_suffix.hpp @@ -12,7 +12,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); namespace MyGame { diff --git a/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.cs b/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.cs index ce2115358d2..fa09fee63ba 100644 --- a/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.cs +++ b/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.cs @@ -13,7 +13,7 @@ public struct TableInNestedNS : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static TableInNestedNS GetRootAsTableInNestedNS(ByteBuffer _bb) { return GetRootAsTableInNestedNS(_bb, new TableInNestedNS()); } public static TableInNestedNS GetRootAsTableInNestedNS(ByteBuffer _bb, TableInNestedNS obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p = new Table(_i, _bb); } diff --git a/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.java b/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.java index c1d54e16da7..6fda3c7892b 100644 --- a/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.java +++ b/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.java @@ -9,7 +9,7 @@ @SuppressWarnings("unused") public final class TableInNestedNS extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static TableInNestedNS getRootAsTableInNestedNS(ByteBuffer _bb) { return getRootAsTableInNestedNS(_bb, new TableInNestedNS()); } public static TableInNestedNS getRootAsTableInNestedNS(ByteBuffer _bb, TableInNestedNS obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); } public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); } diff --git a/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.kt b/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.kt index 8f6ea4f3200..3565c9cb8d5 100644 --- a/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.kt +++ b/tests/namespace_test/NamespaceA/NamespaceB/TableInNestedNS.kt @@ -44,7 +44,7 @@ class TableInNestedNS : Table() { } } companion object { - fun validateVersion() = Constants.FLATBUFFERS_23_5_9() + fun validateVersion() = Constants.FLATBUFFERS_23_5_26() fun getRootAsTableInNestedNS(_bb: ByteBuffer): TableInNestedNS = getRootAsTableInNestedNS(_bb, TableInNestedNS()) fun getRootAsTableInNestedNS(_bb: ByteBuffer, obj: TableInNestedNS): TableInNestedNS { _bb.order(ByteOrder.LITTLE_ENDIAN) diff --git a/tests/namespace_test/NamespaceA/SecondTableInA.cs b/tests/namespace_test/NamespaceA/SecondTableInA.cs index 8111ac7ff3a..98866c74593 100644 --- a/tests/namespace_test/NamespaceA/SecondTableInA.cs +++ b/tests/namespace_test/NamespaceA/SecondTableInA.cs @@ -13,7 +13,7 @@ public struct SecondTableInA : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static SecondTableInA GetRootAsSecondTableInA(ByteBuffer _bb) { return GetRootAsSecondTableInA(_bb, new SecondTableInA()); } public static SecondTableInA GetRootAsSecondTableInA(ByteBuffer _bb, SecondTableInA obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p = new Table(_i, _bb); } diff --git a/tests/namespace_test/NamespaceA/SecondTableInA.java b/tests/namespace_test/NamespaceA/SecondTableInA.java index 6f006da1374..3357ff35bbd 100644 --- a/tests/namespace_test/NamespaceA/SecondTableInA.java +++ b/tests/namespace_test/NamespaceA/SecondTableInA.java @@ -9,7 +9,7 @@ @SuppressWarnings("unused") public final class SecondTableInA extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static SecondTableInA getRootAsSecondTableInA(ByteBuffer _bb) { return getRootAsSecondTableInA(_bb, new SecondTableInA()); } public static SecondTableInA getRootAsSecondTableInA(ByteBuffer _bb, SecondTableInA obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); } public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); } diff --git a/tests/namespace_test/NamespaceA/SecondTableInA.kt b/tests/namespace_test/NamespaceA/SecondTableInA.kt index f0a59cb9dd5..a69cfdb6613 100644 --- a/tests/namespace_test/NamespaceA/SecondTableInA.kt +++ b/tests/namespace_test/NamespaceA/SecondTableInA.kt @@ -39,7 +39,7 @@ class SecondTableInA : Table() { } } companion object { - fun validateVersion() = Constants.FLATBUFFERS_23_5_9() + fun validateVersion() = Constants.FLATBUFFERS_23_5_26() fun getRootAsSecondTableInA(_bb: ByteBuffer): SecondTableInA = getRootAsSecondTableInA(_bb, SecondTableInA()) fun getRootAsSecondTableInA(_bb: ByteBuffer, obj: SecondTableInA): SecondTableInA { _bb.order(ByteOrder.LITTLE_ENDIAN) diff --git a/tests/namespace_test/NamespaceA/TableInFirstNS.cs b/tests/namespace_test/NamespaceA/TableInFirstNS.cs index 4ea03309f04..7d7033ba1ba 100644 --- a/tests/namespace_test/NamespaceA/TableInFirstNS.cs +++ b/tests/namespace_test/NamespaceA/TableInFirstNS.cs @@ -13,7 +13,7 @@ public struct TableInFirstNS : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static TableInFirstNS GetRootAsTableInFirstNS(ByteBuffer _bb) { return GetRootAsTableInFirstNS(_bb, new TableInFirstNS()); } public static TableInFirstNS GetRootAsTableInFirstNS(ByteBuffer _bb, TableInFirstNS obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p = new Table(_i, _bb); } diff --git a/tests/namespace_test/NamespaceA/TableInFirstNS.java b/tests/namespace_test/NamespaceA/TableInFirstNS.java index 08c320f4c18..3cc33a0ab39 100644 --- a/tests/namespace_test/NamespaceA/TableInFirstNS.java +++ b/tests/namespace_test/NamespaceA/TableInFirstNS.java @@ -9,7 +9,7 @@ @SuppressWarnings("unused") public final class TableInFirstNS extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static TableInFirstNS getRootAsTableInFirstNS(ByteBuffer _bb) { return getRootAsTableInFirstNS(_bb, new TableInFirstNS()); } public static TableInFirstNS getRootAsTableInFirstNS(ByteBuffer _bb, TableInFirstNS obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); } public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); } diff --git a/tests/namespace_test/NamespaceA/TableInFirstNS.kt b/tests/namespace_test/NamespaceA/TableInFirstNS.kt index bd484b84be9..6040a2339e8 100644 --- a/tests/namespace_test/NamespaceA/TableInFirstNS.kt +++ b/tests/namespace_test/NamespaceA/TableInFirstNS.kt @@ -79,7 +79,7 @@ class TableInFirstNS : Table() { } } companion object { - fun validateVersion() = Constants.FLATBUFFERS_23_5_9() + fun validateVersion() = Constants.FLATBUFFERS_23_5_26() fun getRootAsTableInFirstNS(_bb: ByteBuffer): TableInFirstNS = getRootAsTableInFirstNS(_bb, TableInFirstNS()) fun getRootAsTableInFirstNS(_bb: ByteBuffer, obj: TableInFirstNS): TableInFirstNS { _bb.order(ByteOrder.LITTLE_ENDIAN) diff --git a/tests/namespace_test/NamespaceC/TableInC.cs b/tests/namespace_test/NamespaceC/TableInC.cs index fa480cbed33..7d1ed5ae0fa 100644 --- a/tests/namespace_test/NamespaceC/TableInC.cs +++ b/tests/namespace_test/NamespaceC/TableInC.cs @@ -13,7 +13,7 @@ public struct TableInC : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static TableInC GetRootAsTableInC(ByteBuffer _bb) { return GetRootAsTableInC(_bb, new TableInC()); } public static TableInC GetRootAsTableInC(ByteBuffer _bb, TableInC obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p = new Table(_i, _bb); } diff --git a/tests/namespace_test/NamespaceC/TableInC.java b/tests/namespace_test/NamespaceC/TableInC.java index 2c451037bb5..98fc18c5f8e 100644 --- a/tests/namespace_test/NamespaceC/TableInC.java +++ b/tests/namespace_test/NamespaceC/TableInC.java @@ -9,7 +9,7 @@ @SuppressWarnings("unused") public final class TableInC extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static TableInC getRootAsTableInC(ByteBuffer _bb) { return getRootAsTableInC(_bb, new TableInC()); } public static TableInC getRootAsTableInC(ByteBuffer _bb, TableInC obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); } public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); } diff --git a/tests/namespace_test/NamespaceC/TableInC.kt b/tests/namespace_test/NamespaceC/TableInC.kt index 7c355c317b7..efcfe30fb5b 100644 --- a/tests/namespace_test/NamespaceC/TableInC.kt +++ b/tests/namespace_test/NamespaceC/TableInC.kt @@ -48,7 +48,7 @@ class TableInC : Table() { } } companion object { - fun validateVersion() = Constants.FLATBUFFERS_23_5_9() + fun validateVersion() = Constants.FLATBUFFERS_23_5_26() fun getRootAsTableInC(_bb: ByteBuffer): TableInC = getRootAsTableInC(_bb, TableInC()) fun getRootAsTableInC(_bb: ByteBuffer, obj: TableInC): TableInC { _bb.order(ByteOrder.LITTLE_ENDIAN) diff --git a/tests/namespace_test/namespace_test1_generated.h b/tests/namespace_test/namespace_test1_generated.h index b4499d455ac..1671a738aa9 100644 --- a/tests/namespace_test/namespace_test1_generated.h +++ b/tests/namespace_test/namespace_test1_generated.h @@ -10,7 +10,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); namespace NamespaceA { diff --git a/tests/namespace_test/namespace_test2_generated.h b/tests/namespace_test/namespace_test2_generated.h index a046b0b2faf..40659a19e4c 100644 --- a/tests/namespace_test/namespace_test2_generated.h +++ b/tests/namespace_test/namespace_test2_generated.h @@ -10,7 +10,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); namespace NamespaceA { diff --git a/tests/native_inline_table_test_generated.h b/tests/native_inline_table_test_generated.h index b49b5a8e6b1..6843ce11f8e 100644 --- a/tests/native_inline_table_test_generated.h +++ b/tests/native_inline_table_test_generated.h @@ -10,7 +10,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); struct NativeInlineTable; diff --git a/tests/native_type_test_generated.h b/tests/native_type_test_generated.h index 7b5f941cec7..43779c0c868 100644 --- a/tests/native_type_test_generated.h +++ b/tests/native_type_test_generated.h @@ -10,7 +10,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); #include "native_type_test_impl.h" diff --git a/tests/nested_namespace_test/nested_namespace_test3_generated.cs b/tests/nested_namespace_test/nested_namespace_test3_generated.cs index 6114b5b398a..32be9bedeef 100644 --- a/tests/nested_namespace_test/nested_namespace_test3_generated.cs +++ b/tests/nested_namespace_test/nested_namespace_test3_generated.cs @@ -13,7 +13,7 @@ public struct ColorTestTable : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static ColorTestTable GetRootAsColorTestTable(ByteBuffer _bb) { return GetRootAsColorTestTable(_bb, new ColorTestTable()); } public static ColorTestTable GetRootAsColorTestTable(ByteBuffer _bb, ColorTestTable obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p = new Table(_i, _bb); } diff --git a/tests/optional_scalars/OptionalByte.nim b/tests/optional_scalars/OptionalByte.nim index 17a689834b8..f84c506b270 100644 --- a/tests/optional_scalars/OptionalByte.nim +++ b/tests/optional_scalars/OptionalByte.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : optional_scalars.ScalarStuff () diff --git a/tests/optional_scalars/ScalarStuff.cs b/tests/optional_scalars/ScalarStuff.cs index 6a1991dd7da..29c601495c8 100644 --- a/tests/optional_scalars/ScalarStuff.cs +++ b/tests/optional_scalars/ScalarStuff.cs @@ -13,7 +13,7 @@ public struct ScalarStuff : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static ScalarStuff GetRootAsScalarStuff(ByteBuffer _bb) { return GetRootAsScalarStuff(_bb, new ScalarStuff()); } public static ScalarStuff GetRootAsScalarStuff(ByteBuffer _bb, ScalarStuff obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public static bool ScalarStuffBufferHasIdentifier(ByteBuffer _bb) { return Table.__has_identifier(_bb, "NULL"); } diff --git a/tests/optional_scalars/ScalarStuff.java b/tests/optional_scalars/ScalarStuff.java index 2e40b149bbc..3e6757320eb 100644 --- a/tests/optional_scalars/ScalarStuff.java +++ b/tests/optional_scalars/ScalarStuff.java @@ -21,7 +21,7 @@ @SuppressWarnings("unused") public final class ScalarStuff extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } public static ScalarStuff getRootAsScalarStuff(ByteBuffer _bb) { return getRootAsScalarStuff(_bb, new ScalarStuff()); } public static ScalarStuff getRootAsScalarStuff(ByteBuffer _bb, ScalarStuff obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); } public static boolean ScalarStuffBufferHasIdentifier(ByteBuffer _bb) { return __has_identifier(_bb, "NULL"); } diff --git a/tests/optional_scalars/ScalarStuff.kt b/tests/optional_scalars/ScalarStuff.kt index f615336270e..a178b4266f4 100644 --- a/tests/optional_scalars/ScalarStuff.kt +++ b/tests/optional_scalars/ScalarStuff.kt @@ -209,7 +209,7 @@ class ScalarStuff : Table() { return if(o != 0) bb.get(o + bb_pos) else 1 } companion object { - fun validateVersion() = Constants.FLATBUFFERS_23_5_9() + fun validateVersion() = Constants.FLATBUFFERS_23_5_26() fun getRootAsScalarStuff(_bb: ByteBuffer): ScalarStuff = getRootAsScalarStuff(_bb, ScalarStuff()) fun getRootAsScalarStuff(_bb: ByteBuffer, obj: ScalarStuff): ScalarStuff { _bb.order(ByteOrder.LITTLE_ENDIAN) diff --git a/tests/optional_scalars/ScalarStuff.nim b/tests/optional_scalars/ScalarStuff.nim index 0df28bd2b76..de8544a601b 100644 --- a/tests/optional_scalars/ScalarStuff.nim +++ b/tests/optional_scalars/ScalarStuff.nim @@ -2,7 +2,7 @@ Automatically generated by the FlatBuffers compiler, do not modify. Or modify. I'm a message, not a cop. - flatc version: 23.5.9 + flatc version: 23.5.26 Declared by : Rooting type : optional_scalars.ScalarStuff () diff --git a/tests/optional_scalars/ScalarStuff.py b/tests/optional_scalars/ScalarStuff.py index 07737d298ca..dda052f36db 100644 --- a/tests/optional_scalars/ScalarStuff.py +++ b/tests/optional_scalars/ScalarStuff.py @@ -289,217 +289,217 @@ def Start(builder): def ScalarStuffAddJustI8(builder, justI8): builder.PrependInt8Slot(0, justI8, 0) -def AddJustI8(builder: flatbuffers.Builder, justI8: int): +def AddJustI8(builder, justI8): ScalarStuffAddJustI8(builder, justI8) def ScalarStuffAddMaybeI8(builder, maybeI8): builder.PrependInt8Slot(1, maybeI8, None) -def AddMaybeI8(builder: flatbuffers.Builder, maybeI8: int): +def AddMaybeI8(builder, maybeI8): ScalarStuffAddMaybeI8(builder, maybeI8) def ScalarStuffAddDefaultI8(builder, defaultI8): builder.PrependInt8Slot(2, defaultI8, 42) -def AddDefaultI8(builder: flatbuffers.Builder, defaultI8: int): +def AddDefaultI8(builder, defaultI8): ScalarStuffAddDefaultI8(builder, defaultI8) def ScalarStuffAddJustU8(builder, justU8): builder.PrependUint8Slot(3, justU8, 0) -def AddJustU8(builder: flatbuffers.Builder, justU8: int): +def AddJustU8(builder, justU8): ScalarStuffAddJustU8(builder, justU8) def ScalarStuffAddMaybeU8(builder, maybeU8): builder.PrependUint8Slot(4, maybeU8, None) -def AddMaybeU8(builder: flatbuffers.Builder, maybeU8: int): +def AddMaybeU8(builder, maybeU8): ScalarStuffAddMaybeU8(builder, maybeU8) def ScalarStuffAddDefaultU8(builder, defaultU8): builder.PrependUint8Slot(5, defaultU8, 42) -def AddDefaultU8(builder: flatbuffers.Builder, defaultU8: int): +def AddDefaultU8(builder, defaultU8): ScalarStuffAddDefaultU8(builder, defaultU8) def ScalarStuffAddJustI16(builder, justI16): builder.PrependInt16Slot(6, justI16, 0) -def AddJustI16(builder: flatbuffers.Builder, justI16: int): +def AddJustI16(builder, justI16): ScalarStuffAddJustI16(builder, justI16) def ScalarStuffAddMaybeI16(builder, maybeI16): builder.PrependInt16Slot(7, maybeI16, None) -def AddMaybeI16(builder: flatbuffers.Builder, maybeI16: int): +def AddMaybeI16(builder, maybeI16): ScalarStuffAddMaybeI16(builder, maybeI16) def ScalarStuffAddDefaultI16(builder, defaultI16): builder.PrependInt16Slot(8, defaultI16, 42) -def AddDefaultI16(builder: flatbuffers.Builder, defaultI16: int): +def AddDefaultI16(builder, defaultI16): ScalarStuffAddDefaultI16(builder, defaultI16) def ScalarStuffAddJustU16(builder, justU16): builder.PrependUint16Slot(9, justU16, 0) -def AddJustU16(builder: flatbuffers.Builder, justU16: int): +def AddJustU16(builder, justU16): ScalarStuffAddJustU16(builder, justU16) def ScalarStuffAddMaybeU16(builder, maybeU16): builder.PrependUint16Slot(10, maybeU16, None) -def AddMaybeU16(builder: flatbuffers.Builder, maybeU16: int): +def AddMaybeU16(builder, maybeU16): ScalarStuffAddMaybeU16(builder, maybeU16) def ScalarStuffAddDefaultU16(builder, defaultU16): builder.PrependUint16Slot(11, defaultU16, 42) -def AddDefaultU16(builder: flatbuffers.Builder, defaultU16: int): +def AddDefaultU16(builder, defaultU16): ScalarStuffAddDefaultU16(builder, defaultU16) def ScalarStuffAddJustI32(builder, justI32): builder.PrependInt32Slot(12, justI32, 0) -def AddJustI32(builder: flatbuffers.Builder, justI32: int): +def AddJustI32(builder, justI32): ScalarStuffAddJustI32(builder, justI32) def ScalarStuffAddMaybeI32(builder, maybeI32): builder.PrependInt32Slot(13, maybeI32, None) -def AddMaybeI32(builder: flatbuffers.Builder, maybeI32: int): +def AddMaybeI32(builder, maybeI32): ScalarStuffAddMaybeI32(builder, maybeI32) def ScalarStuffAddDefaultI32(builder, defaultI32): builder.PrependInt32Slot(14, defaultI32, 42) -def AddDefaultI32(builder: flatbuffers.Builder, defaultI32: int): +def AddDefaultI32(builder, defaultI32): ScalarStuffAddDefaultI32(builder, defaultI32) def ScalarStuffAddJustU32(builder, justU32): builder.PrependUint32Slot(15, justU32, 0) -def AddJustU32(builder: flatbuffers.Builder, justU32: int): +def AddJustU32(builder, justU32): ScalarStuffAddJustU32(builder, justU32) def ScalarStuffAddMaybeU32(builder, maybeU32): builder.PrependUint32Slot(16, maybeU32, None) -def AddMaybeU32(builder: flatbuffers.Builder, maybeU32: int): +def AddMaybeU32(builder, maybeU32): ScalarStuffAddMaybeU32(builder, maybeU32) def ScalarStuffAddDefaultU32(builder, defaultU32): builder.PrependUint32Slot(17, defaultU32, 42) -def AddDefaultU32(builder: flatbuffers.Builder, defaultU32: int): +def AddDefaultU32(builder, defaultU32): ScalarStuffAddDefaultU32(builder, defaultU32) def ScalarStuffAddJustI64(builder, justI64): builder.PrependInt64Slot(18, justI64, 0) -def AddJustI64(builder: flatbuffers.Builder, justI64: int): +def AddJustI64(builder, justI64): ScalarStuffAddJustI64(builder, justI64) def ScalarStuffAddMaybeI64(builder, maybeI64): builder.PrependInt64Slot(19, maybeI64, None) -def AddMaybeI64(builder: flatbuffers.Builder, maybeI64: int): +def AddMaybeI64(builder, maybeI64): ScalarStuffAddMaybeI64(builder, maybeI64) def ScalarStuffAddDefaultI64(builder, defaultI64): builder.PrependInt64Slot(20, defaultI64, 42) -def AddDefaultI64(builder: flatbuffers.Builder, defaultI64: int): +def AddDefaultI64(builder, defaultI64): ScalarStuffAddDefaultI64(builder, defaultI64) def ScalarStuffAddJustU64(builder, justU64): builder.PrependUint64Slot(21, justU64, 0) -def AddJustU64(builder: flatbuffers.Builder, justU64: int): +def AddJustU64(builder, justU64): ScalarStuffAddJustU64(builder, justU64) def ScalarStuffAddMaybeU64(builder, maybeU64): builder.PrependUint64Slot(22, maybeU64, None) -def AddMaybeU64(builder: flatbuffers.Builder, maybeU64: int): +def AddMaybeU64(builder, maybeU64): ScalarStuffAddMaybeU64(builder, maybeU64) def ScalarStuffAddDefaultU64(builder, defaultU64): builder.PrependUint64Slot(23, defaultU64, 42) -def AddDefaultU64(builder: flatbuffers.Builder, defaultU64: int): +def AddDefaultU64(builder, defaultU64): ScalarStuffAddDefaultU64(builder, defaultU64) def ScalarStuffAddJustF32(builder, justF32): builder.PrependFloat32Slot(24, justF32, 0.0) -def AddJustF32(builder: flatbuffers.Builder, justF32: float): +def AddJustF32(builder, justF32): ScalarStuffAddJustF32(builder, justF32) def ScalarStuffAddMaybeF32(builder, maybeF32): builder.PrependFloat32Slot(25, maybeF32, None) -def AddMaybeF32(builder: flatbuffers.Builder, maybeF32: float): +def AddMaybeF32(builder, maybeF32): ScalarStuffAddMaybeF32(builder, maybeF32) def ScalarStuffAddDefaultF32(builder, defaultF32): builder.PrependFloat32Slot(26, defaultF32, 42.0) -def AddDefaultF32(builder: flatbuffers.Builder, defaultF32: float): +def AddDefaultF32(builder, defaultF32): ScalarStuffAddDefaultF32(builder, defaultF32) def ScalarStuffAddJustF64(builder, justF64): builder.PrependFloat64Slot(27, justF64, 0.0) -def AddJustF64(builder: flatbuffers.Builder, justF64: float): +def AddJustF64(builder, justF64): ScalarStuffAddJustF64(builder, justF64) def ScalarStuffAddMaybeF64(builder, maybeF64): builder.PrependFloat64Slot(28, maybeF64, None) -def AddMaybeF64(builder: flatbuffers.Builder, maybeF64: float): +def AddMaybeF64(builder, maybeF64): ScalarStuffAddMaybeF64(builder, maybeF64) def ScalarStuffAddDefaultF64(builder, defaultF64): builder.PrependFloat64Slot(29, defaultF64, 42.0) -def AddDefaultF64(builder: flatbuffers.Builder, defaultF64: float): +def AddDefaultF64(builder, defaultF64): ScalarStuffAddDefaultF64(builder, defaultF64) def ScalarStuffAddJustBool(builder, justBool): builder.PrependBoolSlot(30, justBool, 0) -def AddJustBool(builder: flatbuffers.Builder, justBool: bool): +def AddJustBool(builder, justBool): ScalarStuffAddJustBool(builder, justBool) def ScalarStuffAddMaybeBool(builder, maybeBool): builder.PrependBoolSlot(31, maybeBool, None) -def AddMaybeBool(builder: flatbuffers.Builder, maybeBool: bool): +def AddMaybeBool(builder, maybeBool): ScalarStuffAddMaybeBool(builder, maybeBool) def ScalarStuffAddDefaultBool(builder, defaultBool): builder.PrependBoolSlot(32, defaultBool, 1) -def AddDefaultBool(builder: flatbuffers.Builder, defaultBool: bool): +def AddDefaultBool(builder, defaultBool): ScalarStuffAddDefaultBool(builder, defaultBool) def ScalarStuffAddJustEnum(builder, justEnum): builder.PrependInt8Slot(33, justEnum, 0) -def AddJustEnum(builder: flatbuffers.Builder, justEnum: int): +def AddJustEnum(builder, justEnum): ScalarStuffAddJustEnum(builder, justEnum) def ScalarStuffAddMaybeEnum(builder, maybeEnum): builder.PrependInt8Slot(34, maybeEnum, None) -def AddMaybeEnum(builder: flatbuffers.Builder, maybeEnum: int): +def AddMaybeEnum(builder, maybeEnum): ScalarStuffAddMaybeEnum(builder, maybeEnum) def ScalarStuffAddDefaultEnum(builder, defaultEnum): builder.PrependInt8Slot(35, defaultEnum, 1) -def AddDefaultEnum(builder: flatbuffers.Builder, defaultEnum: int): +def AddDefaultEnum(builder, defaultEnum): ScalarStuffAddDefaultEnum(builder, defaultEnum) def ScalarStuffEnd(builder): diff --git a/tests/optional_scalars_generated.h b/tests/optional_scalars_generated.h index 50fc68bab0d..51a0c8818c3 100644 --- a/tests/optional_scalars_generated.h +++ b/tests/optional_scalars_generated.h @@ -10,7 +10,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); namespace optional_scalars { diff --git a/tests/optional_scalars_test.cpp b/tests/optional_scalars_test.cpp index 5dada029100..7713eb558a8 100644 --- a/tests/optional_scalars_test.cpp +++ b/tests/optional_scalars_test.cpp @@ -1,13 +1,14 @@ #include "optional_scalars_test.h" + #include #include + #include "flatbuffers/idl.h" #include "optional_scalars_generated.h" #include "test_assert.h" -namespace flatbuffers{ - namespace tests{ - +namespace flatbuffers { +namespace tests { void OptionalScalarsTest() { // Simple schemas and a "has optional scalar" sentinal. @@ -97,5 +98,5 @@ void OptionalScalarsTest() { TEST_ASSERT(opts->maybe_i32() == flatbuffers::Optional(-1)); } - } -} +} // namespace tests +} // namespace flatbuffers diff --git a/tests/parser_test.cpp b/tests/parser_test.cpp index 83c67e85eda..33b1d6e1e6d 100644 --- a/tests/parser_test.cpp +++ b/tests/parser_test.cpp @@ -484,8 +484,7 @@ T TestValue(const char *json, const char *type_name, // Check with print. std::string print_back; parser.opts.indent_step = -1; - TEST_NULL( - GenerateText(parser, parser.builder_.GetBufferPointer(), &print_back)); + TEST_NULL(GenText(parser, parser.builder_.GetBufferPointer(), &print_back)); // restore value from its default if (check_default) { TEST_EQ(parser.Parse(print_back.c_str()), true); } @@ -740,8 +739,7 @@ void UnicodeTest() { true); std::string jsongen; parser.opts.indent_step = -1; - auto result = - GenerateText(parser, parser.builder_.GetBufferPointer(), &jsongen); + auto result = GenText(parser, parser.builder_.GetBufferPointer(), &jsongen); TEST_NULL(result); TEST_EQ_STR(jsongen.c_str(), "{F: \"\\u20AC\\u00A2\\u30E6\\u30FC\\u30B6\\u30FC" @@ -760,8 +758,7 @@ void UnicodeTestAllowNonUTF8() { true); std::string jsongen; parser.opts.indent_step = -1; - auto result = - GenerateText(parser, parser.builder_.GetBufferPointer(), &jsongen); + auto result = GenText(parser, parser.builder_.GetBufferPointer(), &jsongen); TEST_NULL(result); TEST_EQ_STR( jsongen.c_str(), @@ -783,11 +780,10 @@ void UnicodeTestGenerateTextFailsOnNonUTF8() { true); std::string jsongen; parser.opts.indent_step = -1; - // Now, disallow non-UTF-8 (the default behavior) so GenerateText indicates + // Now, disallow non-UTF-8 (the default behavior) so GenText indicates // failure. parser.opts.allow_non_utf8 = false; - auto result = - GenerateText(parser, parser.builder_.GetBufferPointer(), &jsongen); + auto result = GenText(parser, parser.builder_.GetBufferPointer(), &jsongen); TEST_EQ_STR(result, "string contains non-utf8 bytes"); } @@ -825,8 +821,7 @@ void UnknownFieldsTest() { std::string jsongen; parser.opts.indent_step = -1; - auto result = - GenerateText(parser, parser.builder_.GetBufferPointer(), &jsongen); + auto result = GenText(parser, parser.builder_.GetBufferPointer(), &jsongen); TEST_NULL(result); TEST_EQ_STR(jsongen.c_str(), "{str: \"test\",i: 10}"); } @@ -846,6 +841,15 @@ void ParseUnionTest() { "table B { e:U; } root_type B;" "{ e_type: N_A, e: {} }"), true); + + // Test union underlying type + const char *source = "table A {} table B {} union U : int {A, B} table C {test_union: U; test_vector_of_union: [U];}"; + flatbuffers::Parser parser3; + parser3.opts.lang_to_generate = flatbuffers::IDLOptions::kCpp | flatbuffers::IDLOptions::kTs; + TEST_EQ(parser3.Parse(source), true); + + parser3.opts.lang_to_generate &= flatbuffers::IDLOptions::kJava; + TEST_EQ(parser3.Parse(source), false); } void ValidSameNameDifferentNamespaceTest() { diff --git a/tests/proto_test.cpp b/tests/proto_test.cpp index 3480bc57f2a..90c70bdb211 100644 --- a/tests/proto_test.cpp +++ b/tests/proto_test.cpp @@ -17,7 +17,10 @@ void RunTest(const flatbuffers::IDLOptions &opts, const std::string &proto_path, TEST_EQ(parser.Parse(proto_file.c_str(), include_directories), true); // Generate fbs. - auto fbs = flatbuffers::GenerateFBS(parser, "test", true); + std::unique_ptr fbs_generator = NewFBSCodeGenerator(true); + std::string fbs; + TEST_EQ(fbs_generator->GenerateCodeString(parser, "test", fbs), + CodeGenerator::Status::OK); // Ensure generated file is parsable. flatbuffers::Parser parser2; @@ -27,7 +30,11 @@ void RunTest(const flatbuffers::IDLOptions &opts, const std::string &proto_path, flatbuffers::Parser import_parser(opts); TEST_EQ(import_parser.Parse(import_proto_file.c_str(), include_directories), true); - auto import_fbs = flatbuffers::GenerateFBS(import_parser, "test", true); + std::string import_fbs; + TEST_EQ( + fbs_generator->GenerateCodeString(import_parser, "test", import_fbs), + CodeGenerator::Status::OK); + // auto import_fbs = flatbuffers::GenerateFBS(import_parser, "test", true); // Since `imported.fbs` isn't in the filesystem AbsolutePath can't figure it // out by itself. We manually construct it so Parser works. std::string imported_fbs = flatbuffers::PosixPath( @@ -317,7 +324,8 @@ void ParseProtoBufAsciiTest() { TEST_EQ(parser.Parse("{ A [1 2] C { B:2 }}"), true); // Similarly, in text output, it should omit these. std::string text; - auto err = flatbuffers::GenerateText( + auto err = + flatbuffers::GenText( parser, parser.builder_.GetBufferPointer(), &text); TEST_NULL(err); TEST_EQ_STR(text.c_str(), diff --git a/tests/reflection_test.cpp b/tests/reflection_test.cpp index 9f926895194..869c98db418 100644 --- a/tests/reflection_test.cpp +++ b/tests/reflection_test.cpp @@ -1,19 +1,21 @@ #include "reflection_test.h" + #include "arrays_test_generated.h" #include "flatbuffers/minireflect.h" #include "flatbuffers/reflection.h" #include "flatbuffers/reflection_generated.h" #include "flatbuffers/verifier.h" -#include "test_assert.h" #include "monster_test.h" #include "monster_test_generated.h" +#include "test_assert.h" namespace flatbuffers { namespace tests { using namespace MyGame::Example; -void ReflectionTest(const std::string& tests_data_path, uint8_t *flatbuf, size_t length) { +void ReflectionTest(const std::string &tests_data_path, uint8_t *flatbuf, + size_t length) { // Load a binary schema. std::string bfbsfile; TEST_EQ(flatbuffers::LoadFile((tests_data_path + "monster_test.bfbs").c_str(), diff --git a/tests/rust_namer_test.fbs b/tests/rust_namer_test.fbs new file mode 100644 index 00000000000..646abcb9d4b --- /dev/null +++ b/tests/rust_namer_test.fbs @@ -0,0 +1,27 @@ +namespace RustNamerTest; + +table FieldTable {} + +union FieldUnion { + f :FieldTable (id: 0), +} + +table RootTable { + field42 :FieldUnion (id: 1); +} + +table PlayerStatEvent {} +table PlayerSpectate {} +table PlayerInputChange {} + +union GameMessage +{ + PlayerStatEvent, + PlayerSpectate, + PlayerInputChange +} + +table GameMessageWrapper +{ + Message:GameMessage; +} \ No newline at end of file diff --git a/tests/rust_namer_test/mod.rs b/tests/rust_namer_test/mod.rs new file mode 100644 index 00000000000..264a2c09168 --- /dev/null +++ b/tests/rust_namer_test/mod.rs @@ -0,0 +1,21 @@ +// Automatically generated by the Flatbuffers compiler. Do not modify. +// @generated +pub mod rust_namer_test { + use super::*; + mod field_union_generated; + pub use self::field_union_generated::*; + mod game_message_generated; + pub use self::game_message_generated::*; + mod field_table_generated; + pub use self::field_table_generated::*; + mod root_table_generated; + pub use self::root_table_generated::*; + mod player_stat_event_generated; + pub use self::player_stat_event_generated::*; + mod player_spectate_generated; + pub use self::player_spectate_generated::*; + mod player_input_change_generated; + pub use self::player_input_change_generated::*; + mod game_message_wrapper_generated; + pub use self::game_message_wrapper_generated::*; +} // rust_namer_test diff --git a/tests/rust_namer_test/rust_namer_test/field_table_generated.rs b/tests/rust_namer_test/rust_namer_test/field_table_generated.rs new file mode 100644 index 00000000000..d8034ef0ed5 --- /dev/null +++ b/tests/rust_namer_test/rust_namer_test/field_table_generated.rs @@ -0,0 +1,117 @@ +// automatically generated by the FlatBuffers compiler, do not modify +// @generated +extern crate alloc; +extern crate flatbuffers; +use alloc::boxed::Box; +use alloc::string::{String, ToString}; +use alloc::vec::Vec; +use core::mem; +use core::cmp::Ordering; +use self::flatbuffers::{EndianScalar, Follow}; +use super::*; +pub enum FieldTableOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct FieldTable<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for FieldTable<'a> { + type Inner = FieldTable<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> FieldTable<'a> { + + pub const fn get_fully_qualified_name() -> &'static str { + "RustNamerTest.FieldTable" + } + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + FieldTable { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + _args: &'args FieldTableArgs + ) -> flatbuffers::WIPOffset> { + let mut builder = FieldTableBuilder::new(_fbb); + builder.finish() + } + + pub fn unpack(&self) -> FieldTableT { + FieldTableT { + } + } +} + +impl flatbuffers::Verifiable for FieldTable<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .finish(); + Ok(()) + } +} +pub struct FieldTableArgs { +} +impl<'a> Default for FieldTableArgs { + #[inline] + fn default() -> Self { + FieldTableArgs { + } + } +} + +pub struct FieldTableBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b> FieldTableBuilder<'a, 'b> { + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> FieldTableBuilder<'a, 'b> { + let start = _fbb.start_table(); + FieldTableBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for FieldTable<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("FieldTable"); + ds.finish() + } +} +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq)] +pub struct FieldTableT { +} +impl Default for FieldTableT { + fn default() -> Self { + Self { + } + } +} +impl FieldTableT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b> + ) -> flatbuffers::WIPOffset> { + FieldTable::create(_fbb, &FieldTableArgs{ + }) + } +} diff --git a/tests/rust_namer_test/rust_namer_test/field_union_generated.rs b/tests/rust_namer_test/rust_namer_test/field_union_generated.rs new file mode 100644 index 00000000000..f5d866210ba --- /dev/null +++ b/tests/rust_namer_test/rust_namer_test/field_union_generated.rs @@ -0,0 +1,145 @@ +// automatically generated by the FlatBuffers compiler, do not modify +// @generated +extern crate alloc; +extern crate flatbuffers; +use alloc::boxed::Box; +use alloc::string::{String, ToString}; +use alloc::vec::Vec; +use core::mem; +use core::cmp::Ordering; +use self::flatbuffers::{EndianScalar, Follow}; +use super::*; +#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")] +pub const ENUM_MIN_FIELD_UNION: u8 = 0; +#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")] +pub const ENUM_MAX_FIELD_UNION: u8 = 1; +#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")] +#[allow(non_camel_case_types)] +pub const ENUM_VALUES_FIELD_UNION: [FieldUnion; 2] = [ + FieldUnion::NONE, + FieldUnion::f, +]; + +#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)] +#[repr(transparent)] +pub struct FieldUnion(pub u8); +#[allow(non_upper_case_globals)] +impl FieldUnion { + pub const NONE: Self = Self(0); + pub const f: Self = Self(1); + + pub const ENUM_MIN: u8 = 0; + pub const ENUM_MAX: u8 = 1; + pub const ENUM_VALUES: &'static [Self] = &[ + Self::NONE, + Self::f, + ]; + /// Returns the variant's name or "" if unknown. + pub fn variant_name(self) -> Option<&'static str> { + match self { + Self::NONE => Some("NONE"), + Self::f => Some("f"), + _ => None, + } + } +} +impl core::fmt::Debug for FieldUnion { + fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { + if let Some(name) = self.variant_name() { + f.write_str(name) + } else { + f.write_fmt(format_args!("", self.0)) + } + } +} +impl<'a> flatbuffers::Follow<'a> for FieldUnion { + type Inner = Self; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + let b = flatbuffers::read_scalar_at::(buf, loc); + Self(b) + } +} + +impl flatbuffers::Push for FieldUnion { + type Output = FieldUnion; + #[inline] + unsafe fn push(&self, dst: &mut [u8], _written_len: usize) { + flatbuffers::emplace_scalar::(dst, self.0); + } +} + +impl flatbuffers::EndianScalar for FieldUnion { + type Scalar = u8; + #[inline] + fn to_little_endian(self) -> u8 { + self.0.to_le() + } + #[inline] + #[allow(clippy::wrong_self_convention)] + fn from_little_endian(v: u8) -> Self { + let b = u8::from_le(v); + Self(b) + } +} + +impl<'a> flatbuffers::Verifiable for FieldUnion { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + u8::run_verifier(v, pos) + } +} + +impl flatbuffers::SimpleToVerifyInSlice for FieldUnion {} +pub struct FieldUnionUnionTableOffset {} + +#[allow(clippy::upper_case_acronyms)] +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq)] +pub enum FieldUnionT { + NONE, + F(Box), +} +impl Default for FieldUnionT { + fn default() -> Self { + Self::NONE + } +} +impl FieldUnionT { + pub fn field_union_type(&self) -> FieldUnion { + match self { + Self::NONE => FieldUnion::NONE, + Self::F(_) => FieldUnion::f, + } + } + pub fn pack(&self, fbb: &mut flatbuffers::FlatBufferBuilder) -> Option> { + match self { + Self::NONE => None, + Self::F(v) => Some(v.pack(fbb).as_union_value()), + } + } + /// If the union variant matches, return the owned FieldTableT, setting the union to NONE. + pub fn take_f(&mut self) -> Option> { + if let Self::F(_) = self { + let v = core::mem::replace(self, Self::NONE); + if let Self::F(w) = v { + Some(w) + } else { + unreachable!() + } + } else { + None + } + } + /// If the union variant matches, return a reference to the FieldTableT. + pub fn as_f(&self) -> Option<&FieldTableT> { + if let Self::F(v) = self { Some(v.as_ref()) } else { None } + } + /// If the union variant matches, return a mutable reference to the FieldTableT. + pub fn as_f_mut(&mut self) -> Option<&mut FieldTableT> { + if let Self::F(v) = self { Some(v.as_mut()) } else { None } + } +} diff --git a/tests/rust_namer_test/rust_namer_test/game_message_generated.rs b/tests/rust_namer_test/rust_namer_test/game_message_generated.rs new file mode 100644 index 00000000000..b6bf9eae12f --- /dev/null +++ b/tests/rust_namer_test/rust_namer_test/game_message_generated.rs @@ -0,0 +1,201 @@ +// automatically generated by the FlatBuffers compiler, do not modify +// @generated +extern crate alloc; +extern crate flatbuffers; +use alloc::boxed::Box; +use alloc::string::{String, ToString}; +use alloc::vec::Vec; +use core::mem; +use core::cmp::Ordering; +use self::flatbuffers::{EndianScalar, Follow}; +use super::*; +#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")] +pub const ENUM_MIN_GAME_MESSAGE: u8 = 0; +#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")] +pub const ENUM_MAX_GAME_MESSAGE: u8 = 3; +#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")] +#[allow(non_camel_case_types)] +pub const ENUM_VALUES_GAME_MESSAGE: [GameMessage; 4] = [ + GameMessage::NONE, + GameMessage::PlayerStatEvent, + GameMessage::PlayerSpectate, + GameMessage::PlayerInputChange, +]; + +#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)] +#[repr(transparent)] +pub struct GameMessage(pub u8); +#[allow(non_upper_case_globals)] +impl GameMessage { + pub const NONE: Self = Self(0); + pub const PlayerStatEvent: Self = Self(1); + pub const PlayerSpectate: Self = Self(2); + pub const PlayerInputChange: Self = Self(3); + + pub const ENUM_MIN: u8 = 0; + pub const ENUM_MAX: u8 = 3; + pub const ENUM_VALUES: &'static [Self] = &[ + Self::NONE, + Self::PlayerStatEvent, + Self::PlayerSpectate, + Self::PlayerInputChange, + ]; + /// Returns the variant's name or "" if unknown. + pub fn variant_name(self) -> Option<&'static str> { + match self { + Self::NONE => Some("NONE"), + Self::PlayerStatEvent => Some("PlayerStatEvent"), + Self::PlayerSpectate => Some("PlayerSpectate"), + Self::PlayerInputChange => Some("PlayerInputChange"), + _ => None, + } + } +} +impl core::fmt::Debug for GameMessage { + fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { + if let Some(name) = self.variant_name() { + f.write_str(name) + } else { + f.write_fmt(format_args!("", self.0)) + } + } +} +impl<'a> flatbuffers::Follow<'a> for GameMessage { + type Inner = Self; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + let b = flatbuffers::read_scalar_at::(buf, loc); + Self(b) + } +} + +impl flatbuffers::Push for GameMessage { + type Output = GameMessage; + #[inline] + unsafe fn push(&self, dst: &mut [u8], _written_len: usize) { + flatbuffers::emplace_scalar::(dst, self.0); + } +} + +impl flatbuffers::EndianScalar for GameMessage { + type Scalar = u8; + #[inline] + fn to_little_endian(self) -> u8 { + self.0.to_le() + } + #[inline] + #[allow(clippy::wrong_self_convention)] + fn from_little_endian(v: u8) -> Self { + let b = u8::from_le(v); + Self(b) + } +} + +impl<'a> flatbuffers::Verifiable for GameMessage { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + u8::run_verifier(v, pos) + } +} + +impl flatbuffers::SimpleToVerifyInSlice for GameMessage {} +pub struct GameMessageUnionTableOffset {} + +#[allow(clippy::upper_case_acronyms)] +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq)] +pub enum GameMessageT { + NONE, + PlayerStatEvent(Box), + PlayerSpectate(Box), + PlayerInputChange(Box), +} +impl Default for GameMessageT { + fn default() -> Self { + Self::NONE + } +} +impl GameMessageT { + pub fn game_message_type(&self) -> GameMessage { + match self { + Self::NONE => GameMessage::NONE, + Self::PlayerStatEvent(_) => GameMessage::PlayerStatEvent, + Self::PlayerSpectate(_) => GameMessage::PlayerSpectate, + Self::PlayerInputChange(_) => GameMessage::PlayerInputChange, + } + } + pub fn pack(&self, fbb: &mut flatbuffers::FlatBufferBuilder) -> Option> { + match self { + Self::NONE => None, + Self::PlayerStatEvent(v) => Some(v.pack(fbb).as_union_value()), + Self::PlayerSpectate(v) => Some(v.pack(fbb).as_union_value()), + Self::PlayerInputChange(v) => Some(v.pack(fbb).as_union_value()), + } + } + /// If the union variant matches, return the owned PlayerStatEventT, setting the union to NONE. + pub fn take_player_stat_event(&mut self) -> Option> { + if let Self::PlayerStatEvent(_) = self { + let v = core::mem::replace(self, Self::NONE); + if let Self::PlayerStatEvent(w) = v { + Some(w) + } else { + unreachable!() + } + } else { + None + } + } + /// If the union variant matches, return a reference to the PlayerStatEventT. + pub fn as_player_stat_event(&self) -> Option<&PlayerStatEventT> { + if let Self::PlayerStatEvent(v) = self { Some(v.as_ref()) } else { None } + } + /// If the union variant matches, return a mutable reference to the PlayerStatEventT. + pub fn as_player_stat_event_mut(&mut self) -> Option<&mut PlayerStatEventT> { + if let Self::PlayerStatEvent(v) = self { Some(v.as_mut()) } else { None } + } + /// If the union variant matches, return the owned PlayerSpectateT, setting the union to NONE. + pub fn take_player_spectate(&mut self) -> Option> { + if let Self::PlayerSpectate(_) = self { + let v = core::mem::replace(self, Self::NONE); + if let Self::PlayerSpectate(w) = v { + Some(w) + } else { + unreachable!() + } + } else { + None + } + } + /// If the union variant matches, return a reference to the PlayerSpectateT. + pub fn as_player_spectate(&self) -> Option<&PlayerSpectateT> { + if let Self::PlayerSpectate(v) = self { Some(v.as_ref()) } else { None } + } + /// If the union variant matches, return a mutable reference to the PlayerSpectateT. + pub fn as_player_spectate_mut(&mut self) -> Option<&mut PlayerSpectateT> { + if let Self::PlayerSpectate(v) = self { Some(v.as_mut()) } else { None } + } + /// If the union variant matches, return the owned PlayerInputChangeT, setting the union to NONE. + pub fn take_player_input_change(&mut self) -> Option> { + if let Self::PlayerInputChange(_) = self { + let v = core::mem::replace(self, Self::NONE); + if let Self::PlayerInputChange(w) = v { + Some(w) + } else { + unreachable!() + } + } else { + None + } + } + /// If the union variant matches, return a reference to the PlayerInputChangeT. + pub fn as_player_input_change(&self) -> Option<&PlayerInputChangeT> { + if let Self::PlayerInputChange(v) = self { Some(v.as_ref()) } else { None } + } + /// If the union variant matches, return a mutable reference to the PlayerInputChangeT. + pub fn as_player_input_change_mut(&mut self) -> Option<&mut PlayerInputChangeT> { + if let Self::PlayerInputChange(v) = self { Some(v.as_mut()) } else { None } + } +} diff --git a/tests/rust_namer_test/rust_namer_test/game_message_wrapper_generated.rs b/tests/rust_namer_test/rust_namer_test/game_message_wrapper_generated.rs new file mode 100644 index 00000000000..05d8fa32ef6 --- /dev/null +++ b/tests/rust_namer_test/rust_namer_test/game_message_wrapper_generated.rs @@ -0,0 +1,255 @@ +// automatically generated by the FlatBuffers compiler, do not modify +// @generated +extern crate alloc; +extern crate flatbuffers; +use alloc::boxed::Box; +use alloc::string::{String, ToString}; +use alloc::vec::Vec; +use core::mem; +use core::cmp::Ordering; +use self::flatbuffers::{EndianScalar, Follow}; +use super::*; +pub enum GameMessageWrapperOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct GameMessageWrapper<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for GameMessageWrapper<'a> { + type Inner = GameMessageWrapper<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> GameMessageWrapper<'a> { + pub const VT_MESSAGE_TYPE: flatbuffers::VOffsetT = 4; + pub const VT_MESSAGE: flatbuffers::VOffsetT = 6; + + pub const fn get_fully_qualified_name() -> &'static str { + "RustNamerTest.GameMessageWrapper" + } + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + GameMessageWrapper { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args GameMessageWrapperArgs + ) -> flatbuffers::WIPOffset> { + let mut builder = GameMessageWrapperBuilder::new(_fbb); + if let Some(x) = args.Message { builder.add_Message(x); } + builder.add_Message_type(args.Message_type); + builder.finish() + } + + pub fn unpack(&self) -> GameMessageWrapperT { + let Message = match self.Message_type() { + GameMessage::NONE => GameMessageT::NONE, + GameMessage::PlayerStatEvent => GameMessageT::PlayerStatEvent(Box::new( + self.Message_as_player_stat_event() + .expect("Invalid union table, expected `GameMessage::PlayerStatEvent`.") + .unpack() + )), + GameMessage::PlayerSpectate => GameMessageT::PlayerSpectate(Box::new( + self.Message_as_player_spectate() + .expect("Invalid union table, expected `GameMessage::PlayerSpectate`.") + .unpack() + )), + GameMessage::PlayerInputChange => GameMessageT::PlayerInputChange(Box::new( + self.Message_as_player_input_change() + .expect("Invalid union table, expected `GameMessage::PlayerInputChange`.") + .unpack() + )), + _ => GameMessageT::NONE, + }; + GameMessageWrapperT { + Message, + } + } + + #[inline] + pub fn Message_type(&self) -> GameMessage { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(GameMessageWrapper::VT_MESSAGE_TYPE, Some(GameMessage::NONE)).unwrap()} + } + #[inline] + pub fn Message(&self) -> Option> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>(GameMessageWrapper::VT_MESSAGE, None)} + } + #[inline] + #[allow(non_snake_case)] + pub fn Message_as_player_stat_event(&self) -> Option> { + if self.Message_type() == GameMessage::PlayerStatEvent { + self.Message().map(|t| { + // Safety: + // Created from a valid Table for this object + // Which contains a valid union in this slot + unsafe { PlayerStatEvent::init_from_table(t) } + }) + } else { + None + } + } + + #[inline] + #[allow(non_snake_case)] + pub fn Message_as_player_spectate(&self) -> Option> { + if self.Message_type() == GameMessage::PlayerSpectate { + self.Message().map(|t| { + // Safety: + // Created from a valid Table for this object + // Which contains a valid union in this slot + unsafe { PlayerSpectate::init_from_table(t) } + }) + } else { + None + } + } + + #[inline] + #[allow(non_snake_case)] + pub fn Message_as_player_input_change(&self) -> Option> { + if self.Message_type() == GameMessage::PlayerInputChange { + self.Message().map(|t| { + // Safety: + // Created from a valid Table for this object + // Which contains a valid union in this slot + unsafe { PlayerInputChange::init_from_table(t) } + }) + } else { + None + } + } + +} + +impl flatbuffers::Verifiable for GameMessageWrapper<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_union::("Message_type", Self::VT_MESSAGE_TYPE, "Message", Self::VT_MESSAGE, false, |key, v, pos| { + match key { + GameMessage::PlayerStatEvent => v.verify_union_variant::>("GameMessage::PlayerStatEvent", pos), + GameMessage::PlayerSpectate => v.verify_union_variant::>("GameMessage::PlayerSpectate", pos), + GameMessage::PlayerInputChange => v.verify_union_variant::>("GameMessage::PlayerInputChange", pos), + _ => Ok(()), + } + })? + .finish(); + Ok(()) + } +} +pub struct GameMessageWrapperArgs { + pub Message_type: GameMessage, + pub Message: Option>, +} +impl<'a> Default for GameMessageWrapperArgs { + #[inline] + fn default() -> Self { + GameMessageWrapperArgs { + Message_type: GameMessage::NONE, + Message: None, + } + } +} + +pub struct GameMessageWrapperBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b> GameMessageWrapperBuilder<'a, 'b> { + #[inline] + pub fn add_Message_type(&mut self, Message_type: GameMessage) { + self.fbb_.push_slot::(GameMessageWrapper::VT_MESSAGE_TYPE, Message_type, GameMessage::NONE); + } + #[inline] + pub fn add_Message(&mut self, Message: flatbuffers::WIPOffset) { + self.fbb_.push_slot_always::>(GameMessageWrapper::VT_MESSAGE, Message); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> GameMessageWrapperBuilder<'a, 'b> { + let start = _fbb.start_table(); + GameMessageWrapperBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for GameMessageWrapper<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("GameMessageWrapper"); + ds.field("Message_type", &self.Message_type()); + match self.Message_type() { + GameMessage::PlayerStatEvent => { + if let Some(x) = self.Message_as_player_stat_event() { + ds.field("Message", &x) + } else { + ds.field("Message", &"InvalidFlatbuffer: Union discriminant does not match value.") + } + }, + GameMessage::PlayerSpectate => { + if let Some(x) = self.Message_as_player_spectate() { + ds.field("Message", &x) + } else { + ds.field("Message", &"InvalidFlatbuffer: Union discriminant does not match value.") + } + }, + GameMessage::PlayerInputChange => { + if let Some(x) = self.Message_as_player_input_change() { + ds.field("Message", &x) + } else { + ds.field("Message", &"InvalidFlatbuffer: Union discriminant does not match value.") + } + }, + _ => { + let x: Option<()> = None; + ds.field("Message", &x) + }, + }; + ds.finish() + } +} +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq)] +pub struct GameMessageWrapperT { + pub Message: GameMessageT, +} +impl Default for GameMessageWrapperT { + fn default() -> Self { + Self { + Message: GameMessageT::NONE, + } + } +} +impl GameMessageWrapperT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b> + ) -> flatbuffers::WIPOffset> { + let Message_type = self.Message.game_message_type(); + let Message = self.Message.pack(_fbb); + GameMessageWrapper::create(_fbb, &GameMessageWrapperArgs{ + Message_type, + Message, + }) + } +} diff --git a/tests/rust_namer_test/rust_namer_test/player_input_change_generated.rs b/tests/rust_namer_test/rust_namer_test/player_input_change_generated.rs new file mode 100644 index 00000000000..2f57d80f95b --- /dev/null +++ b/tests/rust_namer_test/rust_namer_test/player_input_change_generated.rs @@ -0,0 +1,117 @@ +// automatically generated by the FlatBuffers compiler, do not modify +// @generated +extern crate alloc; +extern crate flatbuffers; +use alloc::boxed::Box; +use alloc::string::{String, ToString}; +use alloc::vec::Vec; +use core::mem; +use core::cmp::Ordering; +use self::flatbuffers::{EndianScalar, Follow}; +use super::*; +pub enum PlayerInputChangeOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct PlayerInputChange<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for PlayerInputChange<'a> { + type Inner = PlayerInputChange<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> PlayerInputChange<'a> { + + pub const fn get_fully_qualified_name() -> &'static str { + "RustNamerTest.PlayerInputChange" + } + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + PlayerInputChange { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + _args: &'args PlayerInputChangeArgs + ) -> flatbuffers::WIPOffset> { + let mut builder = PlayerInputChangeBuilder::new(_fbb); + builder.finish() + } + + pub fn unpack(&self) -> PlayerInputChangeT { + PlayerInputChangeT { + } + } +} + +impl flatbuffers::Verifiable for PlayerInputChange<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .finish(); + Ok(()) + } +} +pub struct PlayerInputChangeArgs { +} +impl<'a> Default for PlayerInputChangeArgs { + #[inline] + fn default() -> Self { + PlayerInputChangeArgs { + } + } +} + +pub struct PlayerInputChangeBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b> PlayerInputChangeBuilder<'a, 'b> { + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> PlayerInputChangeBuilder<'a, 'b> { + let start = _fbb.start_table(); + PlayerInputChangeBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for PlayerInputChange<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("PlayerInputChange"); + ds.finish() + } +} +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq)] +pub struct PlayerInputChangeT { +} +impl Default for PlayerInputChangeT { + fn default() -> Self { + Self { + } + } +} +impl PlayerInputChangeT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b> + ) -> flatbuffers::WIPOffset> { + PlayerInputChange::create(_fbb, &PlayerInputChangeArgs{ + }) + } +} diff --git a/tests/rust_namer_test/rust_namer_test/player_spectate_generated.rs b/tests/rust_namer_test/rust_namer_test/player_spectate_generated.rs new file mode 100644 index 00000000000..06e51106eb7 --- /dev/null +++ b/tests/rust_namer_test/rust_namer_test/player_spectate_generated.rs @@ -0,0 +1,117 @@ +// automatically generated by the FlatBuffers compiler, do not modify +// @generated +extern crate alloc; +extern crate flatbuffers; +use alloc::boxed::Box; +use alloc::string::{String, ToString}; +use alloc::vec::Vec; +use core::mem; +use core::cmp::Ordering; +use self::flatbuffers::{EndianScalar, Follow}; +use super::*; +pub enum PlayerSpectateOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct PlayerSpectate<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for PlayerSpectate<'a> { + type Inner = PlayerSpectate<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> PlayerSpectate<'a> { + + pub const fn get_fully_qualified_name() -> &'static str { + "RustNamerTest.PlayerSpectate" + } + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + PlayerSpectate { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + _args: &'args PlayerSpectateArgs + ) -> flatbuffers::WIPOffset> { + let mut builder = PlayerSpectateBuilder::new(_fbb); + builder.finish() + } + + pub fn unpack(&self) -> PlayerSpectateT { + PlayerSpectateT { + } + } +} + +impl flatbuffers::Verifiable for PlayerSpectate<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .finish(); + Ok(()) + } +} +pub struct PlayerSpectateArgs { +} +impl<'a> Default for PlayerSpectateArgs { + #[inline] + fn default() -> Self { + PlayerSpectateArgs { + } + } +} + +pub struct PlayerSpectateBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b> PlayerSpectateBuilder<'a, 'b> { + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> PlayerSpectateBuilder<'a, 'b> { + let start = _fbb.start_table(); + PlayerSpectateBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for PlayerSpectate<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("PlayerSpectate"); + ds.finish() + } +} +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq)] +pub struct PlayerSpectateT { +} +impl Default for PlayerSpectateT { + fn default() -> Self { + Self { + } + } +} +impl PlayerSpectateT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b> + ) -> flatbuffers::WIPOffset> { + PlayerSpectate::create(_fbb, &PlayerSpectateArgs{ + }) + } +} diff --git a/tests/rust_namer_test/rust_namer_test/player_stat_event_generated.rs b/tests/rust_namer_test/rust_namer_test/player_stat_event_generated.rs new file mode 100644 index 00000000000..a76bdfa739b --- /dev/null +++ b/tests/rust_namer_test/rust_namer_test/player_stat_event_generated.rs @@ -0,0 +1,117 @@ +// automatically generated by the FlatBuffers compiler, do not modify +// @generated +extern crate alloc; +extern crate flatbuffers; +use alloc::boxed::Box; +use alloc::string::{String, ToString}; +use alloc::vec::Vec; +use core::mem; +use core::cmp::Ordering; +use self::flatbuffers::{EndianScalar, Follow}; +use super::*; +pub enum PlayerStatEventOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct PlayerStatEvent<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for PlayerStatEvent<'a> { + type Inner = PlayerStatEvent<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> PlayerStatEvent<'a> { + + pub const fn get_fully_qualified_name() -> &'static str { + "RustNamerTest.PlayerStatEvent" + } + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + PlayerStatEvent { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + _args: &'args PlayerStatEventArgs + ) -> flatbuffers::WIPOffset> { + let mut builder = PlayerStatEventBuilder::new(_fbb); + builder.finish() + } + + pub fn unpack(&self) -> PlayerStatEventT { + PlayerStatEventT { + } + } +} + +impl flatbuffers::Verifiable for PlayerStatEvent<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .finish(); + Ok(()) + } +} +pub struct PlayerStatEventArgs { +} +impl<'a> Default for PlayerStatEventArgs { + #[inline] + fn default() -> Self { + PlayerStatEventArgs { + } + } +} + +pub struct PlayerStatEventBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b> PlayerStatEventBuilder<'a, 'b> { + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> PlayerStatEventBuilder<'a, 'b> { + let start = _fbb.start_table(); + PlayerStatEventBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for PlayerStatEvent<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("PlayerStatEvent"); + ds.finish() + } +} +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq)] +pub struct PlayerStatEventT { +} +impl Default for PlayerStatEventT { + fn default() -> Self { + Self { + } + } +} +impl PlayerStatEventT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b> + ) -> flatbuffers::WIPOffset> { + PlayerStatEvent::create(_fbb, &PlayerStatEventArgs{ + }) + } +} diff --git a/tests/rust_namer_test/rust_namer_test/root_table_generated.rs b/tests/rust_namer_test/rust_namer_test/root_table_generated.rs new file mode 100644 index 00000000000..a87ba0f483d --- /dev/null +++ b/tests/rust_namer_test/rust_namer_test/root_table_generated.rs @@ -0,0 +1,199 @@ +// automatically generated by the FlatBuffers compiler, do not modify +// @generated +extern crate alloc; +extern crate flatbuffers; +use alloc::boxed::Box; +use alloc::string::{String, ToString}; +use alloc::vec::Vec; +use core::mem; +use core::cmp::Ordering; +use self::flatbuffers::{EndianScalar, Follow}; +use super::*; +pub enum RootTableOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct RootTable<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for RootTable<'a> { + type Inner = RootTable<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> RootTable<'a> { + pub const VT_FIELD42_TYPE: flatbuffers::VOffsetT = 4; + pub const VT_FIELD42: flatbuffers::VOffsetT = 6; + + pub const fn get_fully_qualified_name() -> &'static str { + "RustNamerTest.RootTable" + } + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + RootTable { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, + args: &'args RootTableArgs + ) -> flatbuffers::WIPOffset> { + let mut builder = RootTableBuilder::new(_fbb); + if let Some(x) = args.field42 { builder.add_field42(x); } + builder.add_field42_type(args.field42_type); + builder.finish() + } + + pub fn unpack(&self) -> RootTableT { + let field42 = match self.field42_type() { + FieldUnion::NONE => FieldUnionT::NONE, + FieldUnion::f => FieldUnionT::F(Box::new( + self.field42_as_f() + .expect("Invalid union table, expected `FieldUnion::f`.") + .unpack() + )), + _ => FieldUnionT::NONE, + }; + RootTableT { + field42, + } + } + + #[inline] + pub fn field42_type(&self) -> FieldUnion { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(RootTable::VT_FIELD42_TYPE, Some(FieldUnion::NONE)).unwrap()} + } + #[inline] + pub fn field42(&self) -> Option> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>(RootTable::VT_FIELD42, None)} + } + #[inline] + #[allow(non_snake_case)] + pub fn field42_as_f(&self) -> Option> { + if self.field42_type() == FieldUnion::f { + self.field42().map(|t| { + // Safety: + // Created from a valid Table for this object + // Which contains a valid union in this slot + unsafe { FieldTable::init_from_table(t) } + }) + } else { + None + } + } + +} + +impl flatbuffers::Verifiable for RootTable<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_union::("field42_type", Self::VT_FIELD42_TYPE, "field42", Self::VT_FIELD42, false, |key, v, pos| { + match key { + FieldUnion::f => v.verify_union_variant::>("FieldUnion::f", pos), + _ => Ok(()), + } + })? + .finish(); + Ok(()) + } +} +pub struct RootTableArgs { + pub field42_type: FieldUnion, + pub field42: Option>, +} +impl<'a> Default for RootTableArgs { + #[inline] + fn default() -> Self { + RootTableArgs { + field42_type: FieldUnion::NONE, + field42: None, + } + } +} + +pub struct RootTableBuilder<'a: 'b, 'b> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b> RootTableBuilder<'a, 'b> { + #[inline] + pub fn add_field42_type(&mut self, field42_type: FieldUnion) { + self.fbb_.push_slot::(RootTable::VT_FIELD42_TYPE, field42_type, FieldUnion::NONE); + } + #[inline] + pub fn add_field42(&mut self, field42: flatbuffers::WIPOffset) { + self.fbb_.push_slot_always::>(RootTable::VT_FIELD42, field42); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> RootTableBuilder<'a, 'b> { + let start = _fbb.start_table(); + RootTableBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for RootTable<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("RootTable"); + ds.field("field42_type", &self.field42_type()); + match self.field42_type() { + FieldUnion::f => { + if let Some(x) = self.field42_as_f() { + ds.field("field42", &x) + } else { + ds.field("field42", &"InvalidFlatbuffer: Union discriminant does not match value.") + } + }, + _ => { + let x: Option<()> = None; + ds.field("field42", &x) + }, + }; + ds.finish() + } +} +#[non_exhaustive] +#[derive(Debug, Clone, PartialEq)] +pub struct RootTableT { + pub field42: FieldUnionT, +} +impl Default for RootTableT { + fn default() -> Self { + Self { + field42: FieldUnionT::NONE, + } + } +} +impl RootTableT { + pub fn pack<'b>( + &self, + _fbb: &mut flatbuffers::FlatBufferBuilder<'b> + ) -> flatbuffers::WIPOffset> { + let field42_type = self.field42.field_union_type(); + let field42 = self.field42.pack(_fbb); + RootTable::create(_fbb, &RootTableArgs{ + field42_type, + field42, + }) + } +} diff --git a/tests/rust_usage_test/tests/integration_test.rs b/tests/rust_usage_test/tests/integration_test.rs index fd92da3855b..89cacc1713a 100644 --- a/tests/rust_usage_test/tests/integration_test.rs +++ b/tests/rust_usage_test/tests/integration_test.rs @@ -78,6 +78,11 @@ mod arrays_test_generated; #[path = "../../keyword_test/mod.rs"] mod keyword_test_generated; +// Test rust namer, should not cause compiling issues +#[allow(dead_code, unused_imports, clippy::all)] +#[path = "../../rust_namer_test/mod.rs"] +mod rust_namer_test; + #[rustfmt::skip] // TODO: Use standard rust formatting and remove dead code. #[allow(dead_code)] mod flatbuffers_tests { diff --git a/tests/swift/Wasm.tests/Tests/FlatBuffers.Test.Swift.WasmTests/monster_test_generated.swift b/tests/swift/Wasm.tests/Tests/FlatBuffers.Test.Swift.WasmTests/monster_test_generated.swift index 9d7f52866fd..a51cb5461d7 100644 --- a/tests/swift/Wasm.tests/Tests/FlatBuffers.Test.Swift.WasmTests/monster_test_generated.swift +++ b/tests/swift/Wasm.tests/Tests/FlatBuffers.Test.Swift.WasmTests/monster_test_generated.swift @@ -237,7 +237,7 @@ public struct MyGame_Example_AnyAmbiguousAliasesUnion { } public struct MyGame_Example_Test: NativeStruct, Verifiable, FlatbuffersInitializable, NativeObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } private var _a: Int16 private var _b: Int8 @@ -291,7 +291,7 @@ extension MyGame_Example_Test: Encodable { public struct MyGame_Example_Test_Mutable: FlatBufferObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Struct @@ -318,7 +318,7 @@ public struct MyGame_Example_Test_Mutable: FlatBufferObject { public struct MyGame_Example_Vec3: NativeStruct, Verifiable, FlatbuffersInitializable, NativeObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } private var _x: Float32 private var _y: Float32 @@ -413,7 +413,7 @@ extension MyGame_Example_Vec3: Encodable { public struct MyGame_Example_Vec3_Mutable: FlatBufferObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Struct @@ -447,7 +447,7 @@ public struct MyGame_Example_Vec3_Mutable: FlatBufferObject { public struct MyGame_Example_Ability: NativeStruct, Verifiable, FlatbuffersInitializable, NativeObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } private var _id: UInt32 private var _distance: UInt32 @@ -500,7 +500,7 @@ extension MyGame_Example_Ability: Encodable { public struct MyGame_Example_Ability_Mutable: FlatBufferObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Struct @@ -527,7 +527,7 @@ public struct MyGame_Example_Ability_Mutable: FlatBufferObject { public struct MyGame_Example_StructOfStructs: NativeStruct, Verifiable, FlatbuffersInitializable, NativeObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } private var _a: MyGame_Example_Ability private var _b: MyGame_Example_Test @@ -587,7 +587,7 @@ extension MyGame_Example_StructOfStructs: Encodable { public struct MyGame_Example_StructOfStructs_Mutable: FlatBufferObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Struct @@ -613,7 +613,7 @@ public struct MyGame_Example_StructOfStructs_Mutable: FlatBufferObject { public struct MyGame_Example_StructOfStructsOfStructs: NativeStruct, Verifiable, FlatbuffersInitializable, NativeObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } private var _a: MyGame_Example_StructOfStructs @@ -655,7 +655,7 @@ extension MyGame_Example_StructOfStructsOfStructs: Encodable { public struct MyGame_Example_StructOfStructsOfStructs_Mutable: FlatBufferObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Struct @@ -679,7 +679,7 @@ public struct MyGame_Example_StructOfStructsOfStructs_Mutable: FlatBufferObject public struct MyGame_InParentNamespace: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table @@ -731,7 +731,7 @@ public class MyGame_InParentNamespaceT: NativeObject { } public struct MyGame_Example2_Monster: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table @@ -783,7 +783,7 @@ public class MyGame_Example2_MonsterT: NativeObject { } internal struct MyGame_Example_TestSimpleTableWithEnum: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } internal var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table @@ -864,7 +864,7 @@ internal class MyGame_Example_TestSimpleTableWithEnumT: NativeObject { } public struct MyGame_Example_Stat: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table @@ -1003,7 +1003,7 @@ public class MyGame_Example_StatT: NativeObject { } public struct MyGame_Example_Referrable: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table @@ -1109,7 +1109,7 @@ public class MyGame_Example_ReferrableT: NativeObject { /// an example documentation comment: "monster object" public struct MyGame_Example_Monster: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table @@ -2405,7 +2405,7 @@ public class MyGame_Example_MonsterT: NativeObject { } public struct MyGame_Example_TypeAliases: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table diff --git a/tests/swift/tests/CodeGenerationTests/test_import_generated.swift b/tests/swift/tests/CodeGenerationTests/test_import_generated.swift index cc2288716cf..65725e9ba8a 100644 --- a/tests/swift/tests/CodeGenerationTests/test_import_generated.swift +++ b/tests/swift/tests/CodeGenerationTests/test_import_generated.swift @@ -6,7 +6,7 @@ internal struct Message: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } internal var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table diff --git a/tests/swift/tests/CodeGenerationTests/test_no_include_generated.swift b/tests/swift/tests/CodeGenerationTests/test_no_include_generated.swift index d0dd8715836..d3d279b3702 100644 --- a/tests/swift/tests/CodeGenerationTests/test_no_include_generated.swift +++ b/tests/swift/tests/CodeGenerationTests/test_no_include_generated.swift @@ -4,7 +4,7 @@ public struct BytesCount: NativeStruct, Verifiable, FlatbuffersInitializable, NativeObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } private var _x: Int64 @@ -47,7 +47,7 @@ extension BytesCount: Encodable { public struct BytesCount_Mutable: FlatBufferObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Struct @@ -72,7 +72,7 @@ public struct BytesCount_Mutable: FlatBufferObject { public struct InternalMessage: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table @@ -155,7 +155,7 @@ public class InternalMessageT: NativeObject { } public struct Message: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table diff --git a/tests/swift/tests/Sources/SwiftFlatBuffers/fuzzer_generated.swift b/tests/swift/tests/Sources/SwiftFlatBuffers/fuzzer_generated.swift index 629f4bf02c4..e198e99af32 100644 --- a/tests/swift/tests/Sources/SwiftFlatBuffers/fuzzer_generated.swift +++ b/tests/swift/tests/Sources/SwiftFlatBuffers/fuzzer_generated.swift @@ -32,7 +32,7 @@ extension Color: Encodable { public struct Test: NativeStruct, Verifiable, FlatbuffersInitializable { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } private var _a: Int16 private var _b: Int8 @@ -81,7 +81,7 @@ extension Test: Encodable { public struct Test_Mutable: FlatBufferObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Struct @@ -93,7 +93,7 @@ public struct Test_Mutable: FlatBufferObject { public struct Vec3: NativeStruct, Verifiable, FlatbuffersInitializable { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } private var _x: Float32 private var _y: Float32 @@ -178,7 +178,7 @@ extension Vec3: Encodable { public struct Vec3_Mutable: FlatBufferObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Struct @@ -195,7 +195,7 @@ public struct Vec3_Mutable: FlatBufferObject { /// an example documentation comment: "monster object" public struct Monster: FlatBufferObject, Verifiable { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table diff --git a/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/MutatingBool_generated.swift b/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/MutatingBool_generated.swift index 161bf0b273f..9ed52b3002c 100644 --- a/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/MutatingBool_generated.swift +++ b/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/MutatingBool_generated.swift @@ -6,7 +6,7 @@ import FlatBuffers public struct Property: NativeStruct, Verifiable, FlatbuffersInitializable, NativeObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } private var _property: Bool @@ -49,7 +49,7 @@ extension Property: Encodable { public struct Property_Mutable: FlatBufferObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Struct @@ -74,7 +74,7 @@ public struct Property_Mutable: FlatBufferObject { public struct TestMutatingBool: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table diff --git a/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/monster_test_generated.swift b/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/monster_test_generated.swift index 9d7f52866fd..a51cb5461d7 100644 --- a/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/monster_test_generated.swift +++ b/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/monster_test_generated.swift @@ -237,7 +237,7 @@ public struct MyGame_Example_AnyAmbiguousAliasesUnion { } public struct MyGame_Example_Test: NativeStruct, Verifiable, FlatbuffersInitializable, NativeObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } private var _a: Int16 private var _b: Int8 @@ -291,7 +291,7 @@ extension MyGame_Example_Test: Encodable { public struct MyGame_Example_Test_Mutable: FlatBufferObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Struct @@ -318,7 +318,7 @@ public struct MyGame_Example_Test_Mutable: FlatBufferObject { public struct MyGame_Example_Vec3: NativeStruct, Verifiable, FlatbuffersInitializable, NativeObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } private var _x: Float32 private var _y: Float32 @@ -413,7 +413,7 @@ extension MyGame_Example_Vec3: Encodable { public struct MyGame_Example_Vec3_Mutable: FlatBufferObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Struct @@ -447,7 +447,7 @@ public struct MyGame_Example_Vec3_Mutable: FlatBufferObject { public struct MyGame_Example_Ability: NativeStruct, Verifiable, FlatbuffersInitializable, NativeObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } private var _id: UInt32 private var _distance: UInt32 @@ -500,7 +500,7 @@ extension MyGame_Example_Ability: Encodable { public struct MyGame_Example_Ability_Mutable: FlatBufferObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Struct @@ -527,7 +527,7 @@ public struct MyGame_Example_Ability_Mutable: FlatBufferObject { public struct MyGame_Example_StructOfStructs: NativeStruct, Verifiable, FlatbuffersInitializable, NativeObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } private var _a: MyGame_Example_Ability private var _b: MyGame_Example_Test @@ -587,7 +587,7 @@ extension MyGame_Example_StructOfStructs: Encodable { public struct MyGame_Example_StructOfStructs_Mutable: FlatBufferObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Struct @@ -613,7 +613,7 @@ public struct MyGame_Example_StructOfStructs_Mutable: FlatBufferObject { public struct MyGame_Example_StructOfStructsOfStructs: NativeStruct, Verifiable, FlatbuffersInitializable, NativeObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } private var _a: MyGame_Example_StructOfStructs @@ -655,7 +655,7 @@ extension MyGame_Example_StructOfStructsOfStructs: Encodable { public struct MyGame_Example_StructOfStructsOfStructs_Mutable: FlatBufferObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Struct @@ -679,7 +679,7 @@ public struct MyGame_Example_StructOfStructsOfStructs_Mutable: FlatBufferObject public struct MyGame_InParentNamespace: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table @@ -731,7 +731,7 @@ public class MyGame_InParentNamespaceT: NativeObject { } public struct MyGame_Example2_Monster: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table @@ -783,7 +783,7 @@ public class MyGame_Example2_MonsterT: NativeObject { } internal struct MyGame_Example_TestSimpleTableWithEnum: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } internal var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table @@ -864,7 +864,7 @@ internal class MyGame_Example_TestSimpleTableWithEnumT: NativeObject { } public struct MyGame_Example_Stat: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table @@ -1003,7 +1003,7 @@ public class MyGame_Example_StatT: NativeObject { } public struct MyGame_Example_Referrable: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table @@ -1109,7 +1109,7 @@ public class MyGame_Example_ReferrableT: NativeObject { /// an example documentation comment: "monster object" public struct MyGame_Example_Monster: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table @@ -2405,7 +2405,7 @@ public class MyGame_Example_MonsterT: NativeObject { } public struct MyGame_Example_TypeAliases: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table diff --git a/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/more_defaults_generated.swift b/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/more_defaults_generated.swift index aba865d2ad4..6abaaf113e8 100644 --- a/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/more_defaults_generated.swift +++ b/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/more_defaults_generated.swift @@ -29,7 +29,7 @@ extension ABC: Encodable { public struct MoreDefaults: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table diff --git a/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/nan_inf_test_generated.swift b/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/nan_inf_test_generated.swift index f1e985c4eb0..f7c179f4b67 100644 --- a/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/nan_inf_test_generated.swift +++ b/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/nan_inf_test_generated.swift @@ -6,7 +6,7 @@ import FlatBuffers public struct Swift_Tests_NanInfTable: FlatBufferObject, Verifiable { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table diff --git a/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/optional_scalars_generated.swift b/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/optional_scalars_generated.swift index a7fa205283e..13598192072 100644 --- a/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/optional_scalars_generated.swift +++ b/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/optional_scalars_generated.swift @@ -29,7 +29,7 @@ extension optional_scalars_OptionalByte: Encodable { public struct optional_scalars_ScalarStuff: FlatBufferObject, Verifiable { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table diff --git a/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/union_vector_generated.swift b/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/union_vector_generated.swift index 9df75a18347..e35bf6024c2 100644 --- a/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/union_vector_generated.swift +++ b/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/union_vector_generated.swift @@ -120,7 +120,7 @@ public struct GadgetUnion { } public struct Rapunzel: NativeStruct, Verifiable, FlatbuffersInitializable, NativeObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } private var _hairLength: Int32 @@ -163,7 +163,7 @@ extension Rapunzel: Encodable { public struct Rapunzel_Mutable: FlatBufferObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Struct @@ -188,7 +188,7 @@ public struct Rapunzel_Mutable: FlatBufferObject { public struct BookReader: NativeStruct, Verifiable, FlatbuffersInitializable, NativeObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } private var _booksRead: Int32 @@ -231,7 +231,7 @@ extension BookReader: Encodable { public struct BookReader_Mutable: FlatBufferObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Struct @@ -256,7 +256,7 @@ public struct BookReader_Mutable: FlatBufferObject { public struct FallingTub: NativeStruct, Verifiable, FlatbuffersInitializable, NativeObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } private var _weight: Int32 @@ -299,7 +299,7 @@ extension FallingTub: Encodable { public struct FallingTub_Mutable: FlatBufferObject { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Struct @@ -324,7 +324,7 @@ public struct FallingTub_Mutable: FlatBufferObject { public struct Attacker: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table @@ -405,7 +405,7 @@ public class AttackerT: NativeObject { } public struct HandFan: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table @@ -486,7 +486,7 @@ public class HandFanT: NativeObject { } public struct Movie: FlatBufferObject, Verifiable, ObjectAPIPacker { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table diff --git a/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/vector_has_test_generated.swift b/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/vector_has_test_generated.swift index 14cfa2159e5..bc991923cc2 100644 --- a/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/vector_has_test_generated.swift +++ b/tests/swift/tests/Tests/FlatBuffers.Test.SwiftTests/vector_has_test_generated.swift @@ -6,7 +6,7 @@ import FlatBuffers public struct Swift_Tests_Vectors: FlatBufferObject, Verifiable { - static func validateVersion() { FlatBuffersVersion_23_5_9() } + static func validateVersion() { FlatBuffersVersion_23_5_26() } public var __buffer: ByteBuffer! { return _accessor.bb } private var _accessor: Table diff --git a/tests/test.cpp b/tests/test.cpp index ec60251ad47..f26b1adf29a 100644 --- a/tests/test.cpp +++ b/tests/test.cpp @@ -39,6 +39,7 @@ #include "proto_test.h" #include "reflection_test.h" #include "union_vector/union_vector_generated.h" +#include "union_underlying_type_test_generated.h" #if !defined(_MSC_VER) || _MSC_VER >= 1700 # include "arrays_test_generated.h" #endif @@ -119,13 +120,13 @@ void GenerateTableTextTest(const std::string &tests_data_path) { TEST_EQ(abilities->Get(2)->distance(), 12); std::string jsongen; - auto result = GenerateTextFromTable(parser, monster, "MyGame.Example.Monster", + auto result = GenTextFromTable(parser, monster, "MyGame.Example.Monster", &jsongen); TEST_NULL(result); // Test sub table const Vec3 *pos = monster->pos(); jsongen.clear(); - result = GenerateTextFromTable(parser, pos, "MyGame.Example.Vec3", &jsongen); + result = GenTextFromTable(parser, pos, "MyGame.Example.Vec3", &jsongen); TEST_NULL(result); TEST_EQ_STR( jsongen.c_str(), @@ -133,13 +134,13 @@ void GenerateTableTextTest(const std::string &tests_data_path) { const Test &test3 = pos->test3(); jsongen.clear(); result = - GenerateTextFromTable(parser, &test3, "MyGame.Example.Test", &jsongen); + GenTextFromTable(parser, &test3, "MyGame.Example.Test", &jsongen); TEST_NULL(result); TEST_EQ_STR(jsongen.c_str(), "{a: 5,b: 6}"); const Test *test4 = monster->test4()->Get(0); jsongen.clear(); result = - GenerateTextFromTable(parser, test4, "MyGame.Example.Test", &jsongen); + GenTextFromTable(parser, test4, "MyGame.Example.Test", &jsongen); TEST_NULL(result); TEST_EQ_STR(jsongen.c_str(), "{a: 10,b: 20}"); } @@ -337,7 +338,7 @@ void UnionVectorTest(const std::string &tests_data_path) { // Generate text using parsed schema. std::string jsongen; - auto result = GenerateText(parser, fbb.GetBufferPointer(), &jsongen); + auto result = GenText(parser, fbb.GetBufferPointer(), &jsongen); TEST_NULL(result); TEST_EQ_STR(jsongen.c_str(), "{\n" @@ -957,7 +958,7 @@ void FixedLengthArrayJsonTest(const std::string &tests_data_path, bool binary) { // Export to JSON std::string jsonGen; TEST_NULL( - GenerateText(parserOrg, parserOrg.builder_.GetBufferPointer(), &jsonGen)); + GenText(parserOrg, parserOrg.builder_.GetBufferPointer(), &jsonGen)); // Import from JSON TEST_EQ(parserGen.Parse(jsonGen.c_str()), true); @@ -1083,7 +1084,7 @@ void TestEmbeddedBinarySchema(const std::string &tests_data_path) { // Export to JSON std::string jsonGen; TEST_NULL( - GenerateText(parserOrg, parserOrg.builder_.GetBufferPointer(), &jsonGen)); + GenText(parserOrg, parserOrg.builder_.GetBufferPointer(), &jsonGen)); // Import from JSON TEST_EQ(parserGen.Parse(jsonGen.c_str()), true); @@ -1540,6 +1541,41 @@ void DoNotRequireEofTest(const std::string &tests_data_path) { } #endif +void UnionUnderlyingTypeTest() { + using namespace UnionUnderlyingType; + TEST_ASSERT(sizeof(ABC) == sizeof(uint32_t)); + TEST_ASSERT(ABC::ABC_A == 555); + TEST_ASSERT(ABC::ABC_B == 666); + TEST_ASSERT(ABC::ABC_C == 777); + + DT buffer; + AT a; + a.a = 42; + BT b; + b.b = "foo"; + CT c; + c.c = true; + buffer.test_union = ABCUnion(); + buffer.test_union.Set(a); + buffer.test_vector_of_union.resize(3); + buffer.test_vector_of_union[0].Set(a); + buffer.test_vector_of_union[1].Set(b); + buffer.test_vector_of_union[2].Set(c); + + flatbuffers::FlatBufferBuilder fbb; + auto offset = D::Pack(fbb, &buffer); + fbb.Finish(offset); + + auto *root = + flatbuffers::GetRoot(fbb.GetBufferPointer()); + DT unpacked; + root->UnPackTo(&unpacked); + + TEST_ASSERT(unpacked.test_union == buffer.test_union); + TEST_ASSERT(unpacked.test_vector_of_union == buffer.test_vector_of_union); + +} + static void Offset64Tests() { Offset64Test(); Offset64SerializedFirst(); @@ -1663,6 +1699,7 @@ int FlatBufferTests(const std::string &tests_data_path) { FixedSizedStructArrayKeyInStructTest(); EmbeddedSchemaAccess(); Offset64Tests(); + UnionUnderlyingTypeTest(); return 0; } } // namespace @@ -1670,12 +1707,7 @@ int FlatBufferTests(const std::string &tests_data_path) { } // namespace flatbuffers int main(int argc, const char *argv[]) { - std::string tests_data_path = -#ifdef BAZEL_TEST_DATA_PATH - "../com_github_google_flatbuffers/tests/"; -#else - "tests/"; -#endif + std::string tests_data_path = "tests/"; for (int argi = 1; argi < argc; argi++) { std::string arg = argv[argi]; diff --git a/tests/test_builder.cpp b/tests/test_builder.cpp index 3b0eaa04c16..8b14a92aea6 100644 --- a/tests/test_builder.cpp +++ b/tests/test_builder.cpp @@ -15,8 +15,7 @@ class TestHeapBuilder : public FlatBufferBuilder { TestHeapBuilder &operator=(const TestHeapBuilder &); public: - TestHeapBuilder() - : FlatBufferBuilder(2048, new OwnedAllocator(), true) {} + TestHeapBuilder() : FlatBufferBuilder(2048, new OwnedAllocator(), true) {} TestHeapBuilder(TestHeapBuilder &&other) : FlatBufferBuilder(std::move(other)) {} @@ -144,7 +143,7 @@ void FlatBufferBuilderTest() { } // forward-declared in test_builder.h -void CheckTestGeneratedIsValid(const MyGame::Example::Color&); +void CheckTestGeneratedIsValid(const MyGame::Example::Color &); // Link-time check using pointer type. void CheckTestGeneratedIsValid(const MyGame::Example::Color &) {} diff --git a/tests/ts/JavaScriptUnionUnderlyingTypeTest.js b/tests/ts/JavaScriptUnionUnderlyingTypeTest.js new file mode 100644 index 00000000000..6a324ca43ec --- /dev/null +++ b/tests/ts/JavaScriptUnionUnderlyingTypeTest.js @@ -0,0 +1,26 @@ +import assert from 'assert' +import * as flatbuffers from 'flatbuffers' +import {UnionUnderlyingType as Test} from './union_underlying_type_test.js' + +function main() { + let a = new Test.AT(); + a.a = 1; + let b = new Test.BT(); + b.b = "foo"; + let c = new Test.CT(); + c.c = true; + let d = new Test.DT(); + d.testUnionType = Test.ABC.A; + d.testUnion = a; + d.testVectorOfUnionType = [Test.ABC.A, Test.ABC.B, Test.ABC.C]; + d.testVectorOfUnion = [a, b, c]; + + let fbb = new flatbuffers.Builder(); + let offset = d.pack(fbb); + fbb.finish(offset); + + let unpacked = Test.D.getRootAsD(fbb.dataBuffer()).unpack(); + assert.equal(JSON.stringify(unpacked), JSON.stringify(d)); +} + +main() \ No newline at end of file diff --git a/tests/ts/TypeScriptTest.py b/tests/ts/TypeScriptTest.py index ae357ef09c4..c6c7cb7f993 100755 --- a/tests/ts/TypeScriptTest.py +++ b/tests/ts/TypeScriptTest.py @@ -117,6 +117,11 @@ def esbuild(input, output): ) esbuild("typescript_keywords.ts", "typescript_keywords_generated.cjs") +flatc( + options=["--ts", "--reflect-names", "--gen-name-strings", "--gen-mutable", "--gen-object-api", "--ts-entry-points", "--ts-flat-files"], + schema="../union_underlying_type_test.fbs" +) + print("Running TypeScript Compiler...") check_call(["tsc"]) print("Running TypeScript Compiler in old node resolution mode for no_import_ext...") @@ -129,6 +134,7 @@ def esbuild(input, output): check_call(NODE_CMD + ["JavaScriptUnionVectorTest"]) check_call(NODE_CMD + ["JavaScriptFlexBuffersTest"]) check_call(NODE_CMD + ["JavaScriptComplexArraysTest"]) +check_call(NODE_CMD + ["JavaScriptUnionUnderlyingTypeTest"]) print("Running old v1 TypeScript Tests...") check_call(NODE_CMD + ["JavaScriptTestv1.cjs", "./monster_test_generated.cjs"]) diff --git a/tests/ts/arrays_test_complex/arrays_test_complex_generated.cjs b/tests/ts/arrays_test_complex/arrays_test_complex_generated.cjs index 3ae6bcd007e..ec2df6334ef 100644 --- a/tests/ts/arrays_test_complex/arrays_test_complex_generated.cjs +++ b/tests/ts/arrays_test_complex/arrays_test_complex_generated.cjs @@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => { return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); diff --git a/tests/ts/bazel_repository_test.sh b/tests/ts/bazel_repository_test.sh index 5030809329f..94e115c747e 100755 --- a/tests/ts/bazel_repository_test.sh +++ b/tests/ts/bazel_repository_test.sh @@ -17,7 +17,7 @@ source "${RUNFILES_DIR:-/dev/null}/$f" 2>/dev/null || \ BAZEL_BIN="$(rlocation bazel_linux_x86_64/file/bazel)" readonly BAZEL_BIN -if [[ ! -e "${BAZEL_BIN}" ]]; then +if [[ ! -x "${BAZEL_BIN}" ]]; then echo "Failed to find the bazel binary." >&2 exit 1 fi diff --git a/tests/ts/foobar/tab.ts b/tests/ts/foobar/tab.ts new file mode 100644 index 00000000000..a15ada717cb --- /dev/null +++ b/tests/ts/foobar/tab.ts @@ -0,0 +1,132 @@ +// automatically generated by the FlatBuffers compiler, do not modify + +import * as flatbuffers from 'flatbuffers'; + +import { Abc } from '../foobar/abc.js'; +import { class_ } from '../foobar/class.js'; + + +export class Tab implements flatbuffers.IUnpackableObject { + bb: flatbuffers.ByteBuffer|null = null; + bb_pos = 0; + __init(i:number, bb:flatbuffers.ByteBuffer):Tab { + this.bb_pos = i; + this.bb = bb; + return this; +} + +static getRootAsTab(bb:flatbuffers.ByteBuffer, obj?:Tab):Tab { + return (obj || new Tab()).__init(bb.readInt32(bb.position()) + bb.position(), bb); +} + +static getSizePrefixedRootAsTab(bb:flatbuffers.ByteBuffer, obj?:Tab):Tab { + bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH); + return (obj || new Tab()).__init(bb.readInt32(bb.position()) + bb.position(), bb); +} + +abc():Abc { + const offset = this.bb!.__offset(this.bb_pos, 4); + return offset ? this.bb!.readInt32(this.bb_pos + offset) : Abc.a; +} + +mutate_abc(value:Abc):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; +} + +arg():class_ { + const offset = this.bb!.__offset(this.bb_pos, 6); + return offset ? this.bb!.readInt32(this.bb_pos + offset) : class_.arguments_; +} + +mutate_arg(value:class_):boolean { + const offset = this.bb!.__offset(this.bb_pos, 6); + + if (offset === 0) { + return false; + } + + this.bb!.writeInt32(this.bb_pos + offset, value); + return true; +} + +name():string|null +name(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null +name(optionalEncoding?:any):string|Uint8Array|null { + const offset = this.bb!.__offset(this.bb_pos, 8); + return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null; +} + +static getFullyQualifiedName():string { + return 'foobar.Tab'; +} + +static startTab(builder:flatbuffers.Builder) { + builder.startObject(3); +} + +static addAbc(builder:flatbuffers.Builder, abc:Abc) { + builder.addFieldInt32(0, abc, Abc.a); +} + +static addArg(builder:flatbuffers.Builder, arg:class_) { + builder.addFieldInt32(1, arg, class_.arguments_); +} + +static addName(builder:flatbuffers.Builder, nameOffset:flatbuffers.Offset) { + builder.addFieldOffset(2, nameOffset, 0); +} + +static endTab(builder:flatbuffers.Builder):flatbuffers.Offset { + const offset = builder.endObject(); + return offset; +} + +static createTab(builder:flatbuffers.Builder, abc:Abc, arg:class_, nameOffset:flatbuffers.Offset):flatbuffers.Offset { + Tab.startTab(builder); + Tab.addAbc(builder, abc); + Tab.addArg(builder, arg); + Tab.addName(builder, nameOffset); + return Tab.endTab(builder); +} + +unpack(): TabT { + return new TabT( + this.abc(), + this.arg(), + this.name() + ); +} + + +unpackTo(_o: TabT): void { + _o.abc = this.abc(); + _o.arg = this.arg(); + _o.name = this.name(); +} +} + +export class TabT implements flatbuffers.IGeneratedObject { +constructor( + public abc: Abc = Abc.a, + public arg: class_ = class_.arguments_, + public name: string|Uint8Array|null = null +){} + + +pack(builder:flatbuffers.Builder): flatbuffers.Offset { + const name = (this.name !== null ? builder.createString(this.name!) : 0); + + return Tab.createTab(builder, + this.abc, + this.arg, + name + ); +} +} diff --git a/tests/ts/monster_test_generated.cjs b/tests/ts/monster_test_generated.cjs index 3f05fd0abbb..234054b9e73 100644 --- a/tests/ts/monster_test_generated.cjs +++ b/tests/ts/monster_test_generated.cjs @@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => { return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); @@ -928,6 +932,10 @@ var Monster2 = class { const offset = this.bb.__offset(this.bb_pos, 24); return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; } + /** + * an example documentation comment: this will end up in the generated code + * multiline too + */ testarrayoftables(index, obj) { const offset = this.bb.__offset(this.bb_pos, 26); return offset ? (obj || new Monster2()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null; diff --git a/tests/ts/tsconfig.json b/tests/ts/tsconfig.json index d9ef7410c3a..eb08992b427 100644 --- a/tests/ts/tsconfig.json +++ b/tests/ts/tsconfig.json @@ -14,6 +14,7 @@ "optional_scalars/**/*.ts", "namespace_test/**/*.ts", "union_vector/**/*.ts", - "arrays_test_complex/**/*.ts" + "arrays_test_complex/**/*.ts", + "union_underlying_type_test.ts" ] } diff --git a/tests/ts/typescript_keywords_generated.cjs b/tests/ts/typescript_keywords_generated.cjs index a25f9adbc11..5e2e1a870ae 100644 --- a/tests/ts/typescript_keywords_generated.cjs +++ b/tests/ts/typescript_keywords_generated.cjs @@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => { return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); @@ -246,6 +250,9 @@ var Type = class { this.bb.writeUint16(this.bb_pos + offset, value); return true; } + /** + * The size (octets) of the `base_type` field. + */ baseSize() { const offset = this.bb.__offset(this.bb_pos, 12); return offset ? this.bb.readUint32(this.bb_pos + offset) : 4; @@ -258,6 +265,9 @@ var Type = class { this.bb.writeUint32(this.bb_pos + offset, value); return true; } + /** + * The size (octets) of the `element` field, if present. + */ elementSize() { const offset = this.bb.__offset(this.bb_pos, 14); return offset ? this.bb.readUint32(this.bb_pos + offset) : 0; @@ -779,6 +789,9 @@ var Field = class { this.bb.writeInt8(this.bb_pos + offset, +value); return true; } + /** + * Number of padding octets to always add after this field. Structs only. + */ padding() { const offset = this.bb.__offset(this.bb_pos, 28); return offset ? this.bb.readUint16(this.bb_pos + offset) : 0; @@ -1551,6 +1564,10 @@ var Schema = class { this.bb.writeUint64(this.bb_pos + offset, value); return true; } + /** + * All the files used in this compilation. Files are relative to where + * flatc was invoked. + */ fbsFiles(index, obj) { const offset = this.bb.__offset(this.bb_pos, 18); return offset ? (obj || new SchemaFile()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null; diff --git a/tests/ts/union_vector/union_vector_generated.cjs b/tests/ts/union_vector/union_vector_generated.cjs index ab4b0dcfdac..b63140cd685 100644 --- a/tests/ts/union_vector/union_vector_generated.cjs +++ b/tests/ts/union_vector/union_vector_generated.cjs @@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => { return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); diff --git a/tests/type_field_collsion/Collision.cs b/tests/type_field_collsion/Collision.cs index a1e6d57e509..a33b39d3fbe 100644 --- a/tests/type_field_collsion/Collision.cs +++ b/tests/type_field_collsion/Collision.cs @@ -13,7 +13,7 @@ public struct Collision : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static Collision GetRootAsCollision(ByteBuffer _bb) { return GetRootAsCollision(_bb, new Collision()); } public static Collision GetRootAsCollision(ByteBuffer _bb, Collision obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public static bool VerifyCollision(ByteBuffer _bb) {Google.FlatBuffers.Verifier verifier = new Google.FlatBuffers.Verifier(_bb); return verifier.VerifyBuffer("", false, CollisionVerify.Verify); } diff --git a/tests/union_underlying_type_test.fbs b/tests/union_underlying_type_test.fbs new file mode 100644 index 00000000000..2f4ed12e2d6 --- /dev/null +++ b/tests/union_underlying_type_test.fbs @@ -0,0 +1,17 @@ + +namespace UnionUnderlyingType; + +table A { + a: int; +} +table B { + b: string; +} +table C { + c: bool; +} +union ABC: int { A = 555, B = 666, C = 777} +table D { + test_union: ABC; + test_vector_of_union: [ABC]; +} diff --git a/tests/union_underlying_type_test_generated.h b/tests/union_underlying_type_test_generated.h new file mode 100644 index 00000000000..c2642f06a6f --- /dev/null +++ b/tests/union_underlying_type_test_generated.h @@ -0,0 +1,880 @@ +// automatically generated by the FlatBuffers compiler, do not modify + + +#ifndef FLATBUFFERS_GENERATED_UNIONUNDERLYINGTYPETEST_UNIONUNDERLYINGTYPE_H_ +#define FLATBUFFERS_GENERATED_UNIONUNDERLYINGTYPETEST_UNIONUNDERLYINGTYPE_H_ + +#include "flatbuffers/flatbuffers.h" + +// Ensure the included flatbuffers.h is the same version as when this file was +// generated, otherwise it may not be compatible. +static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && + FLATBUFFERS_VERSION_MINOR == 5 && + FLATBUFFERS_VERSION_REVISION == 26, + "Non-compatible flatbuffers version included"); + +namespace UnionUnderlyingType { + +struct A; +struct ABuilder; +struct AT; + +struct B; +struct BBuilder; +struct BT; + +struct C; +struct CBuilder; +struct CT; + +struct D; +struct DBuilder; +struct DT; + +bool operator==(const AT &lhs, const AT &rhs); +bool operator!=(const AT &lhs, const AT &rhs); +bool operator==(const BT &lhs, const BT &rhs); +bool operator!=(const BT &lhs, const BT &rhs); +bool operator==(const CT &lhs, const CT &rhs); +bool operator!=(const CT &lhs, const CT &rhs); +bool operator==(const DT &lhs, const DT &rhs); +bool operator!=(const DT &lhs, const DT &rhs); + +inline const ::flatbuffers::TypeTable *ATypeTable(); + +inline const ::flatbuffers::TypeTable *BTypeTable(); + +inline const ::flatbuffers::TypeTable *CTypeTable(); + +inline const ::flatbuffers::TypeTable *DTypeTable(); + +enum ABC : int32_t { + ABC_NONE = 0, + ABC_A = 555, + ABC_B = 666, + ABC_C = 777, + ABC_MIN = ABC_NONE, + ABC_MAX = ABC_C +}; + +inline const ABC (&EnumValuesABC())[4] { + static const ABC values[] = { + ABC_NONE, + ABC_A, + ABC_B, + ABC_C + }; + return values; +} + +inline const char *EnumNameABC(ABC e) { + switch (e) { + case ABC_NONE: return "NONE"; + case ABC_A: return "A"; + case ABC_B: return "B"; + case ABC_C: return "C"; + default: return ""; + } +} + +template struct ABCTraits { + static const ABC enum_value = ABC_NONE; +}; + +template<> struct ABCTraits { + static const ABC enum_value = ABC_A; +}; + +template<> struct ABCTraits { + static const ABC enum_value = ABC_B; +}; + +template<> struct ABCTraits { + static const ABC enum_value = ABC_C; +}; + +template struct ABCUnionTraits { + static const ABC enum_value = ABC_NONE; +}; + +template<> struct ABCUnionTraits { + static const ABC enum_value = ABC_A; +}; + +template<> struct ABCUnionTraits { + static const ABC enum_value = ABC_B; +}; + +template<> struct ABCUnionTraits { + static const ABC enum_value = ABC_C; +}; + +struct ABCUnion { + ABC type; + void *value; + + ABCUnion() : type(ABC_NONE), value(nullptr) {} + ABCUnion(ABCUnion&& u) FLATBUFFERS_NOEXCEPT : + type(ABC_NONE), value(nullptr) + { std::swap(type, u.type); std::swap(value, u.value); } + ABCUnion(const ABCUnion &); + ABCUnion &operator=(const ABCUnion &u) + { ABCUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; } + ABCUnion &operator=(ABCUnion &&u) FLATBUFFERS_NOEXCEPT + { std::swap(type, u.type); std::swap(value, u.value); return *this; } + ~ABCUnion() { Reset(); } + + void Reset(); + + template + void Set(T&& val) { + typedef typename std::remove_reference::type RT; + Reset(); + type = ABCUnionTraits::enum_value; + if (type != ABC_NONE) { + value = new RT(std::forward(val)); + } + } + + static void *UnPack(const void *obj, ABC type, const ::flatbuffers::resolver_function_t *resolver); + ::flatbuffers::Offset Pack(::flatbuffers::FlatBufferBuilder &_fbb, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr) const; + + UnionUnderlyingType::AT *AsA() { + return type == ABC_A ? + reinterpret_cast(value) : nullptr; + } + const UnionUnderlyingType::AT *AsA() const { + return type == ABC_A ? + reinterpret_cast(value) : nullptr; + } + UnionUnderlyingType::BT *AsB() { + return type == ABC_B ? + reinterpret_cast(value) : nullptr; + } + const UnionUnderlyingType::BT *AsB() const { + return type == ABC_B ? + reinterpret_cast(value) : nullptr; + } + UnionUnderlyingType::CT *AsC() { + return type == ABC_C ? + reinterpret_cast(value) : nullptr; + } + const UnionUnderlyingType::CT *AsC() const { + return type == ABC_C ? + reinterpret_cast(value) : nullptr; + } +}; + + +inline bool operator==(const ABCUnion &lhs, const ABCUnion &rhs) { + if (lhs.type != rhs.type) return false; + switch (lhs.type) { + case ABC_NONE: { + return true; + } + case ABC_A: { + return *(reinterpret_cast(lhs.value)) == + *(reinterpret_cast(rhs.value)); + } + case ABC_B: { + return *(reinterpret_cast(lhs.value)) == + *(reinterpret_cast(rhs.value)); + } + case ABC_C: { + return *(reinterpret_cast(lhs.value)) == + *(reinterpret_cast(rhs.value)); + } + default: { + return false; + } + } +} + +inline bool operator!=(const ABCUnion &lhs, const ABCUnion &rhs) { + return !(lhs == rhs); +} + +bool VerifyABC(::flatbuffers::Verifier &verifier, const void *obj, ABC type); +bool VerifyABCVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); + +struct AT : public ::flatbuffers::NativeTable { + typedef A TableType; + int32_t a = 0; +}; + +struct A FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { + typedef AT NativeTableType; + typedef ABuilder Builder; + static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { + return ATypeTable(); + } + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_A = 4 + }; + int32_t a() const { + return GetField(VT_A, 0); + } + bool mutate_a(int32_t _a = 0) { + return SetField(VT_A, _a, 0); + } + bool Verify(::flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_A, 4) && + verifier.EndTable(); + } + AT *UnPack(const ::flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(AT *_o, const ::flatbuffers::resolver_function_t *_resolver = nullptr) const; + static ::flatbuffers::Offset Pack(::flatbuffers::FlatBufferBuilder &_fbb, const AT* _o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct ABuilder { + typedef A Table; + ::flatbuffers::FlatBufferBuilder &fbb_; + ::flatbuffers::uoffset_t start_; + void add_a(int32_t a) { + fbb_.AddElement(A::VT_A, a, 0); + } + explicit ABuilder(::flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + ::flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = ::flatbuffers::Offset(end); + return o; + } +}; + +inline ::flatbuffers::Offset CreateA( + ::flatbuffers::FlatBufferBuilder &_fbb, + int32_t a = 0) { + ABuilder builder_(_fbb); + builder_.add_a(a); + return builder_.Finish(); +} + +::flatbuffers::Offset CreateA(::flatbuffers::FlatBufferBuilder &_fbb, const AT *_o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct BT : public ::flatbuffers::NativeTable { + typedef B TableType; + std::string b{}; +}; + +struct B FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { + typedef BT NativeTableType; + typedef BBuilder Builder; + static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { + return BTypeTable(); + } + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_B = 4 + }; + const ::flatbuffers::String *b() const { + return GetPointer(VT_B); + } + ::flatbuffers::String *mutable_b() { + return GetPointer<::flatbuffers::String *>(VT_B); + } + bool Verify(::flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyOffset(verifier, VT_B) && + verifier.VerifyString(b()) && + verifier.EndTable(); + } + BT *UnPack(const ::flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(BT *_o, const ::flatbuffers::resolver_function_t *_resolver = nullptr) const; + static ::flatbuffers::Offset Pack(::flatbuffers::FlatBufferBuilder &_fbb, const BT* _o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct BBuilder { + typedef B Table; + ::flatbuffers::FlatBufferBuilder &fbb_; + ::flatbuffers::uoffset_t start_; + void add_b(::flatbuffers::Offset<::flatbuffers::String> b) { + fbb_.AddOffset(B::VT_B, b); + } + explicit BBuilder(::flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + ::flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = ::flatbuffers::Offset(end); + return o; + } +}; + +inline ::flatbuffers::Offset CreateB( + ::flatbuffers::FlatBufferBuilder &_fbb, + ::flatbuffers::Offset<::flatbuffers::String> b = 0) { + BBuilder builder_(_fbb); + builder_.add_b(b); + return builder_.Finish(); +} + +inline ::flatbuffers::Offset CreateBDirect( + ::flatbuffers::FlatBufferBuilder &_fbb, + const char *b = nullptr) { + auto b__ = b ? _fbb.CreateString(b) : 0; + return UnionUnderlyingType::CreateB( + _fbb, + b__); +} + +::flatbuffers::Offset CreateB(::flatbuffers::FlatBufferBuilder &_fbb, const BT *_o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct CT : public ::flatbuffers::NativeTable { + typedef C TableType; + bool c = false; +}; + +struct C FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { + typedef CT NativeTableType; + typedef CBuilder Builder; + static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { + return CTypeTable(); + } + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_C = 4 + }; + bool c() const { + return GetField(VT_C, 0) != 0; + } + bool mutate_c(bool _c = 0) { + return SetField(VT_C, static_cast(_c), 0); + } + bool Verify(::flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_C, 1) && + verifier.EndTable(); + } + CT *UnPack(const ::flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(CT *_o, const ::flatbuffers::resolver_function_t *_resolver = nullptr) const; + static ::flatbuffers::Offset Pack(::flatbuffers::FlatBufferBuilder &_fbb, const CT* _o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct CBuilder { + typedef C Table; + ::flatbuffers::FlatBufferBuilder &fbb_; + ::flatbuffers::uoffset_t start_; + void add_c(bool c) { + fbb_.AddElement(C::VT_C, static_cast(c), 0); + } + explicit CBuilder(::flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + ::flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = ::flatbuffers::Offset(end); + return o; + } +}; + +inline ::flatbuffers::Offset CreateC( + ::flatbuffers::FlatBufferBuilder &_fbb, + bool c = false) { + CBuilder builder_(_fbb); + builder_.add_c(c); + return builder_.Finish(); +} + +::flatbuffers::Offset CreateC(::flatbuffers::FlatBufferBuilder &_fbb, const CT *_o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct DT : public ::flatbuffers::NativeTable { + typedef D TableType; + UnionUnderlyingType::ABCUnion test_union{}; + std::vector test_vector_of_union{}; +}; + +struct D FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { + typedef DT NativeTableType; + typedef DBuilder Builder; + static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { + return DTypeTable(); + } + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_TEST_UNION_TYPE = 4, + VT_TEST_UNION = 6, + VT_TEST_VECTOR_OF_UNION_TYPE = 8, + VT_TEST_VECTOR_OF_UNION = 10 + }; + UnionUnderlyingType::ABC test_union_type() const { + return static_cast(GetField(VT_TEST_UNION_TYPE, 0)); + } + const void *test_union() const { + return GetPointer(VT_TEST_UNION); + } + template const T *test_union_as() const; + const UnionUnderlyingType::A *test_union_as_A() const { + return test_union_type() == UnionUnderlyingType::ABC_A ? static_cast(test_union()) : nullptr; + } + const UnionUnderlyingType::B *test_union_as_B() const { + return test_union_type() == UnionUnderlyingType::ABC_B ? static_cast(test_union()) : nullptr; + } + const UnionUnderlyingType::C *test_union_as_C() const { + return test_union_type() == UnionUnderlyingType::ABC_C ? static_cast(test_union()) : nullptr; + } + void *mutable_test_union() { + return GetPointer(VT_TEST_UNION); + } + const ::flatbuffers::Vector *test_vector_of_union_type() const { + return GetPointer *>(VT_TEST_VECTOR_OF_UNION_TYPE); + } + ::flatbuffers::Vector *mutable_test_vector_of_union_type() { + return GetPointer<::flatbuffers::Vector *>(VT_TEST_VECTOR_OF_UNION_TYPE); + } + const ::flatbuffers::Vector<::flatbuffers::Offset> *test_vector_of_union() const { + return GetPointer> *>(VT_TEST_VECTOR_OF_UNION); + } + ::flatbuffers::Vector<::flatbuffers::Offset> *mutable_test_vector_of_union() { + return GetPointer<::flatbuffers::Vector<::flatbuffers::Offset> *>(VT_TEST_VECTOR_OF_UNION); + } + bool Verify(::flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_TEST_UNION_TYPE, 1) && + VerifyOffset(verifier, VT_TEST_UNION) && + VerifyABC(verifier, test_union(), test_union_type()) && + VerifyOffset(verifier, VT_TEST_VECTOR_OF_UNION_TYPE) && + verifier.VerifyVector(test_vector_of_union_type()) && + VerifyOffset(verifier, VT_TEST_VECTOR_OF_UNION) && + verifier.VerifyVector(test_vector_of_union()) && + VerifyABCVector(verifier, test_vector_of_union(), test_vector_of_union_type()) && + verifier.EndTable(); + } + DT *UnPack(const ::flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(DT *_o, const ::flatbuffers::resolver_function_t *_resolver = nullptr) const; + static ::flatbuffers::Offset Pack(::flatbuffers::FlatBufferBuilder &_fbb, const DT* _o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +template<> inline const UnionUnderlyingType::A *D::test_union_as() const { + return test_union_as_A(); +} + +template<> inline const UnionUnderlyingType::B *D::test_union_as() const { + return test_union_as_B(); +} + +template<> inline const UnionUnderlyingType::C *D::test_union_as() const { + return test_union_as_C(); +} + +struct DBuilder { + typedef D Table; + ::flatbuffers::FlatBufferBuilder &fbb_; + ::flatbuffers::uoffset_t start_; + void add_test_union_type(UnionUnderlyingType::ABC test_union_type) { + fbb_.AddElement(D::VT_TEST_UNION_TYPE, static_cast(test_union_type), 0); + } + void add_test_union(::flatbuffers::Offset test_union) { + fbb_.AddOffset(D::VT_TEST_UNION, test_union); + } + void add_test_vector_of_union_type(::flatbuffers::Offset<::flatbuffers::Vector> test_vector_of_union_type) { + fbb_.AddOffset(D::VT_TEST_VECTOR_OF_UNION_TYPE, test_vector_of_union_type); + } + void add_test_vector_of_union(::flatbuffers::Offset<::flatbuffers::Vector<::flatbuffers::Offset>> test_vector_of_union) { + fbb_.AddOffset(D::VT_TEST_VECTOR_OF_UNION, test_vector_of_union); + } + explicit DBuilder(::flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + ::flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = ::flatbuffers::Offset(end); + return o; + } +}; + +inline ::flatbuffers::Offset CreateD( + ::flatbuffers::FlatBufferBuilder &_fbb, + UnionUnderlyingType::ABC test_union_type = UnionUnderlyingType::ABC_NONE, + ::flatbuffers::Offset test_union = 0, + ::flatbuffers::Offset<::flatbuffers::Vector> test_vector_of_union_type = 0, + ::flatbuffers::Offset<::flatbuffers::Vector<::flatbuffers::Offset>> test_vector_of_union = 0) { + DBuilder builder_(_fbb); + builder_.add_test_vector_of_union(test_vector_of_union); + builder_.add_test_vector_of_union_type(test_vector_of_union_type); + builder_.add_test_union(test_union); + builder_.add_test_union_type(test_union_type); + return builder_.Finish(); +} + +inline ::flatbuffers::Offset CreateDDirect( + ::flatbuffers::FlatBufferBuilder &_fbb, + UnionUnderlyingType::ABC test_union_type = UnionUnderlyingType::ABC_NONE, + ::flatbuffers::Offset test_union = 0, + const std::vector *test_vector_of_union_type = nullptr, + const std::vector<::flatbuffers::Offset> *test_vector_of_union = nullptr) { + auto test_vector_of_union_type__ = test_vector_of_union_type ? _fbb.CreateVector(*test_vector_of_union_type) : 0; + auto test_vector_of_union__ = test_vector_of_union ? _fbb.CreateVector<::flatbuffers::Offset>(*test_vector_of_union) : 0; + return UnionUnderlyingType::CreateD( + _fbb, + test_union_type, + test_union, + test_vector_of_union_type__, + test_vector_of_union__); +} + +::flatbuffers::Offset CreateD(::flatbuffers::FlatBufferBuilder &_fbb, const DT *_o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr); + + +inline bool operator==(const AT &lhs, const AT &rhs) { + return + (lhs.a == rhs.a); +} + +inline bool operator!=(const AT &lhs, const AT &rhs) { + return !(lhs == rhs); +} + + +inline AT *A::UnPack(const ::flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::unique_ptr(new AT()); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void A::UnPackTo(AT *_o, const ::flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = a(); _o->a = _e; } +} + +inline ::flatbuffers::Offset A::Pack(::flatbuffers::FlatBufferBuilder &_fbb, const AT* _o, const ::flatbuffers::rehasher_function_t *_rehasher) { + return CreateA(_fbb, _o, _rehasher); +} + +inline ::flatbuffers::Offset CreateA(::flatbuffers::FlatBufferBuilder &_fbb, const AT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const AT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _a = _o->a; + return UnionUnderlyingType::CreateA( + _fbb, + _a); +} + + +inline bool operator==(const BT &lhs, const BT &rhs) { + return + (lhs.b == rhs.b); +} + +inline bool operator!=(const BT &lhs, const BT &rhs) { + return !(lhs == rhs); +} + + +inline BT *B::UnPack(const ::flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::unique_ptr(new BT()); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void B::UnPackTo(BT *_o, const ::flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = b(); if (_e) _o->b = _e->str(); } +} + +inline ::flatbuffers::Offset B::Pack(::flatbuffers::FlatBufferBuilder &_fbb, const BT* _o, const ::flatbuffers::rehasher_function_t *_rehasher) { + return CreateB(_fbb, _o, _rehasher); +} + +inline ::flatbuffers::Offset CreateB(::flatbuffers::FlatBufferBuilder &_fbb, const BT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const BT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _b = _o->b.empty() ? 0 : _fbb.CreateString(_o->b); + return UnionUnderlyingType::CreateB( + _fbb, + _b); +} + + +inline bool operator==(const CT &lhs, const CT &rhs) { + return + (lhs.c == rhs.c); +} + +inline bool operator!=(const CT &lhs, const CT &rhs) { + return !(lhs == rhs); +} + + +inline CT *C::UnPack(const ::flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::unique_ptr(new CT()); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void C::UnPackTo(CT *_o, const ::flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = c(); _o->c = _e; } +} + +inline ::flatbuffers::Offset C::Pack(::flatbuffers::FlatBufferBuilder &_fbb, const CT* _o, const ::flatbuffers::rehasher_function_t *_rehasher) { + return CreateC(_fbb, _o, _rehasher); +} + +inline ::flatbuffers::Offset CreateC(::flatbuffers::FlatBufferBuilder &_fbb, const CT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const CT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _c = _o->c; + return UnionUnderlyingType::CreateC( + _fbb, + _c); +} + + +inline bool operator==(const DT &lhs, const DT &rhs) { + return + (lhs.test_union == rhs.test_union) && + (lhs.test_vector_of_union == rhs.test_vector_of_union); +} + +inline bool operator!=(const DT &lhs, const DT &rhs) { + return !(lhs == rhs); +} + + +inline DT *D::UnPack(const ::flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::unique_ptr
(new DT()); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void D::UnPackTo(DT *_o, const ::flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = test_union_type(); _o->test_union.type = _e; } + { auto _e = test_union(); if (_e) _o->test_union.value = UnionUnderlyingType::ABCUnion::UnPack(_e, test_union_type(), _resolver); } + { auto _e = test_vector_of_union_type(); if (_e) { _o->test_vector_of_union.resize(_e->size()); for (::flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test_vector_of_union[_i].type = static_cast(_e->Get(_i)); } } else { _o->test_vector_of_union.resize(0); } } + { auto _e = test_vector_of_union(); if (_e) { _o->test_vector_of_union.resize(_e->size()); for (::flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test_vector_of_union[_i].value = UnionUnderlyingType::ABCUnion::UnPack(_e->Get(_i), test_vector_of_union_type()->GetEnum(_i), _resolver); } } else { _o->test_vector_of_union.resize(0); } } +} + +inline ::flatbuffers::Offset D::Pack(::flatbuffers::FlatBufferBuilder &_fbb, const DT* _o, const ::flatbuffers::rehasher_function_t *_rehasher) { + return CreateD(_fbb, _o, _rehasher); +} + +inline ::flatbuffers::Offset CreateD(::flatbuffers::FlatBufferBuilder &_fbb, const DT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const DT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _test_union_type = _o->test_union.type; + auto _test_union = _o->test_union.Pack(_fbb); + auto _test_vector_of_union_type = _o->test_vector_of_union.size() ? _fbb.CreateVector(_o->test_vector_of_union.size(), [](size_t i, _VectorArgs *__va) { return static_cast(__va->__o->test_vector_of_union[i].type); }, &_va) : 0; + auto _test_vector_of_union = _o->test_vector_of_union.size() ? _fbb.CreateVector<::flatbuffers::Offset>(_o->test_vector_of_union.size(), [](size_t i, _VectorArgs *__va) { return __va->__o->test_vector_of_union[i].Pack(*__va->__fbb, __va->__rehasher); }, &_va) : 0; + return UnionUnderlyingType::CreateD( + _fbb, + _test_union_type, + _test_union, + _test_vector_of_union_type, + _test_vector_of_union); +} + +inline bool VerifyABC(::flatbuffers::Verifier &verifier, const void *obj, ABC type) { + switch (type) { + case ABC_NONE: { + return true; + } + case ABC_A: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ABC_B: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ABC_C: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + default: return true; + } +} + +inline bool VerifyABCVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *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 (!VerifyABC( + verifier, values->Get(i), types->GetEnum(i))) { + return false; + } + } + return true; +} + +inline void *ABCUnion::UnPack(const void *obj, ABC type, const ::flatbuffers::resolver_function_t *resolver) { + (void)resolver; + switch (type) { + case ABC_A: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ABC_B: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ABC_C: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + default: return nullptr; + } +} + +inline ::flatbuffers::Offset ABCUnion::Pack(::flatbuffers::FlatBufferBuilder &_fbb, const ::flatbuffers::rehasher_function_t *_rehasher) const { + (void)_rehasher; + switch (type) { + case ABC_A: { + auto ptr = reinterpret_cast(value); + return CreateA(_fbb, ptr, _rehasher).Union(); + } + case ABC_B: { + auto ptr = reinterpret_cast(value); + return CreateB(_fbb, ptr, _rehasher).Union(); + } + case ABC_C: { + auto ptr = reinterpret_cast(value); + return CreateC(_fbb, ptr, _rehasher).Union(); + } + default: return 0; + } +} + +inline ABCUnion::ABCUnion(const ABCUnion &u) : type(u.type), value(nullptr) { + switch (type) { + case ABC_A: { + value = new UnionUnderlyingType::AT(*reinterpret_cast(u.value)); + break; + } + case ABC_B: { + value = new UnionUnderlyingType::BT(*reinterpret_cast(u.value)); + break; + } + case ABC_C: { + value = new UnionUnderlyingType::CT(*reinterpret_cast(u.value)); + break; + } + default: + break; + } +} + +inline void ABCUnion::Reset() { + switch (type) { + case ABC_A: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ABC_B: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ABC_C: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + default: break; + } + value = nullptr; + type = ABC_NONE; +} + +inline const ::flatbuffers::TypeTable *ABCTypeTable() { + static const ::flatbuffers::TypeCode type_codes[] = { + { ::flatbuffers::ET_SEQUENCE, 0, -1 }, + { ::flatbuffers::ET_SEQUENCE, 0, 0 }, + { ::flatbuffers::ET_SEQUENCE, 0, 1 }, + { ::flatbuffers::ET_SEQUENCE, 0, 2 } + }; + static const ::flatbuffers::TypeFunction type_refs[] = { + UnionUnderlyingType::ATypeTable, + UnionUnderlyingType::BTypeTable, + UnionUnderlyingType::CTypeTable + }; + static const int64_t values[] = { 0, 555, 666, 777 }; + static const char * const names[] = { + "NONE", + "A", + "B", + "C" + }; + static const ::flatbuffers::TypeTable tt = { + ::flatbuffers::ST_UNION, 4, type_codes, type_refs, nullptr, values, names + }; + return &tt; +} + +inline const ::flatbuffers::TypeTable *ATypeTable() { + static const ::flatbuffers::TypeCode type_codes[] = { + { ::flatbuffers::ET_INT, 0, -1 } + }; + static const char * const names[] = { + "a" + }; + static const ::flatbuffers::TypeTable tt = { + ::flatbuffers::ST_TABLE, 1, type_codes, nullptr, nullptr, nullptr, names + }; + return &tt; +} + +inline const ::flatbuffers::TypeTable *BTypeTable() { + static const ::flatbuffers::TypeCode type_codes[] = { + { ::flatbuffers::ET_STRING, 0, -1 } + }; + static const char * const names[] = { + "b" + }; + static const ::flatbuffers::TypeTable tt = { + ::flatbuffers::ST_TABLE, 1, type_codes, nullptr, nullptr, nullptr, names + }; + return &tt; +} + +inline const ::flatbuffers::TypeTable *CTypeTable() { + static const ::flatbuffers::TypeCode type_codes[] = { + { ::flatbuffers::ET_BOOL, 0, -1 } + }; + static const char * const names[] = { + "c" + }; + static const ::flatbuffers::TypeTable tt = { + ::flatbuffers::ST_TABLE, 1, type_codes, nullptr, nullptr, nullptr, names + }; + return &tt; +} + +inline const ::flatbuffers::TypeTable *DTypeTable() { + static const ::flatbuffers::TypeCode type_codes[] = { + { ::flatbuffers::ET_UTYPE, 0, 0 }, + { ::flatbuffers::ET_SEQUENCE, 0, 0 }, + { ::flatbuffers::ET_UTYPE, 1, 0 }, + { ::flatbuffers::ET_SEQUENCE, 1, 0 } + }; + static const ::flatbuffers::TypeFunction type_refs[] = { + UnionUnderlyingType::ABCTypeTable + }; + static const char * const names[] = { + "test_union_type", + "test_union", + "test_vector_of_union_type", + "test_vector_of_union" + }; + static const ::flatbuffers::TypeTable tt = { + ::flatbuffers::ST_TABLE, 4, type_codes, type_refs, nullptr, nullptr, names + }; + return &tt; +} + +} // namespace UnionUnderlyingType + +#endif // FLATBUFFERS_GENERATED_UNIONUNDERLYINGTYPETEST_UNIONUNDERLYINGTYPE_H_ diff --git a/tests/union_value_collsion/union_value_collision_generated.cs b/tests/union_value_collsion/union_value_collision_generated.cs index c1d54863af2..7a38e8620a7 100644 --- a/tests/union_value_collsion/union_value_collision_generated.cs +++ b/tests/union_value_collsion/union_value_collision_generated.cs @@ -189,7 +189,7 @@ public struct IntValue : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static IntValue GetRootAsIntValue(ByteBuffer _bb) { return GetRootAsIntValue(_bb, new IntValue()); } public static IntValue GetRootAsIntValue(ByteBuffer _bb, IntValue obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p = new Table(_i, _bb); } @@ -250,7 +250,7 @@ public struct Collide : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static Collide GetRootAsCollide(ByteBuffer _bb) { return GetRootAsCollide(_bb, new Collide()); } public static Collide GetRootAsCollide(ByteBuffer _bb, Collide obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public void __init(int _i, ByteBuffer _bb) { __p = new Table(_i, _bb); } @@ -365,7 +365,7 @@ public struct Collision : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } public static Collision GetRootAsCollision(ByteBuffer _bb) { return GetRootAsCollision(_bb, new Collision()); } public static Collision GetRootAsCollision(ByteBuffer _bb, Collision obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); } public static bool VerifyCollision(ByteBuffer _bb) {Google.FlatBuffers.Verifier verifier = new Google.FlatBuffers.Verifier(_bb); return verifier.VerifyBuffer("", false, CollisionVerify.Verify); } diff --git a/tests/union_vector/Attacker.cs b/tests/union_vector/Attacker.cs index 10ac17c0a6a..1990670e06b 100644 --- a/tests/union_vector/Attacker.cs +++ b/tests/union_vector/Attacker.cs @@ -10,7 +10,7 @@ public struct Attacker : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } 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); } diff --git a/tests/union_vector/Attacker.java b/tests/union_vector/Attacker.java index e8690236a09..2a4fa23a6ce 100644 --- a/tests/union_vector/Attacker.java +++ b/tests/union_vector/Attacker.java @@ -19,7 +19,7 @@ @SuppressWarnings("unused") public final class Attacker extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } 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); } diff --git a/tests/union_vector/Attacker.kt b/tests/union_vector/Attacker.kt index 00f442cf63d..a623f8d1f02 100644 --- a/tests/union_vector/Attacker.kt +++ b/tests/union_vector/Attacker.kt @@ -41,7 +41,7 @@ class Attacker : Table() { } } companion object { - fun validateVersion() = Constants.FLATBUFFERS_23_5_9() + fun validateVersion() = Constants.FLATBUFFERS_23_5_26() 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/HandFan.cs b/tests/union_vector/HandFan.cs index 0f7df58e424..4b1d160db2a 100644 --- a/tests/union_vector/HandFan.cs +++ b/tests/union_vector/HandFan.cs @@ -10,7 +10,7 @@ public struct HandFan : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } 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); } diff --git a/tests/union_vector/HandFan.java b/tests/union_vector/HandFan.java index 91671000a8f..8209c945b12 100644 --- a/tests/union_vector/HandFan.java +++ b/tests/union_vector/HandFan.java @@ -19,7 +19,7 @@ @SuppressWarnings("unused") public final class HandFan extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } 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); } diff --git a/tests/union_vector/HandFan.kt b/tests/union_vector/HandFan.kt index 18ef62e263f..d1e4ba79414 100644 --- a/tests/union_vector/HandFan.kt +++ b/tests/union_vector/HandFan.kt @@ -41,7 +41,7 @@ class HandFan : Table() { } } companion object { - fun validateVersion() = Constants.FLATBUFFERS_23_5_9() + fun validateVersion() = Constants.FLATBUFFERS_23_5_26() fun getRootAsHandFan(_bb: ByteBuffer): HandFan = getRootAsHandFan(_bb, HandFan()) fun getRootAsHandFan(_bb: ByteBuffer, obj: HandFan): HandFan { _bb.order(ByteOrder.LITTLE_ENDIAN) diff --git a/tests/union_vector/Movie.cs b/tests/union_vector/Movie.cs index 1edfc349522..8e75f7c532f 100644 --- a/tests/union_vector/Movie.cs +++ b/tests/union_vector/Movie.cs @@ -10,7 +10,7 @@ public struct Movie : IFlatbufferObject { private Table __p; public ByteBuffer ByteBuffer { get { return __p.bb; } } - public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { FlatBufferConstants.FLATBUFFERS_23_5_26(); } 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"); } diff --git a/tests/union_vector/Movie.java b/tests/union_vector/Movie.java index a98a0005183..78695ca316e 100644 --- a/tests/union_vector/Movie.java +++ b/tests/union_vector/Movie.java @@ -19,7 +19,7 @@ @SuppressWarnings("unused") public final class Movie extends Table { - public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_9(); } + public static void ValidateVersion() { Constants.FLATBUFFERS_23_5_26(); } 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"); } diff --git a/tests/union_vector/Movie.kt b/tests/union_vector/Movie.kt index 098dc7d2ac8..9d97a19355a 100644 --- a/tests/union_vector/Movie.kt +++ b/tests/union_vector/Movie.kt @@ -79,7 +79,7 @@ class Movie : Table() { val o = __offset(10); return if (o != 0) __vector_len(o) else 0 } companion object { - fun validateVersion() = Constants.FLATBUFFERS_23_5_9() + fun validateVersion() = Constants.FLATBUFFERS_23_5_26() 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/union_vector_generated.h b/tests/union_vector/union_vector_generated.h index 467fbfb8a70..99eabb985fe 100644 --- a/tests/union_vector/union_vector_generated.h +++ b/tests/union_vector/union_vector_generated.h @@ -10,7 +10,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 23 && FLATBUFFERS_VERSION_MINOR == 5 && - FLATBUFFERS_VERSION_REVISION == 9, + FLATBUFFERS_VERSION_REVISION == 26, "Non-compatible flatbuffers version included"); struct Attacker;