Having a static_assert on MSAN and ASAN prevents
the fuzzers from being used with different engines,
like TSAN, UBSAN, … but also with fuzzers that aren't
using MSAN/ASAN like afl for example.
* Flatbuffers Python Object API
Implement the logic to generate the Python object API that can
unpack the data from a buf class into an object class, and pack
the data of an object class to a buf class.
* Fix the build issues
Remove unused parameters and replace auto in the for-loop statement
with std::string to make it compatible with VS2010.
* Fix the build issues.
* Add support for Array type
Added logic to handle Array type in Python Object API. Updated the
generated code accordingly.
* Fix the old style casting from int to char
* Fixed another conversion from int to char
* Fixed the import for typing
Importing typing may cause errors when a machine do not have the
moduel typing installed. This PR fixes the issue by guarding
"import typing" with the "try/except" statement.
* Fix issue of iterating the vector of import list
* Update the generated examples using generate_code.sh
* Fix the import order for typing
The import list was stored in unordered_set, so that each generated
codes may have different import order. Therefore, it failed in the
consistency test where two generated copies need to have exactly the
same apperance.
* Optimize unpack using numpy
Use numpy to unpack vector whenever it is possible to improve unpack
performance.
Also, added codegen command for Python specificly in generate_code.sh,
because --no-includes cannot be turn on for Python.
* Fix the import order
* Update generate_code.bat for windows accordingly
* Replace error message with pass
Avoid printing error message for every Python2 users about typing.
Replace it with pass.
* Add C++ build testing with clang and gcc
This adds Dockerfiles which test building flatc and the C++ library against clang
and gcc. See discussion at #5119. It is derived from the Travis CI tooling.
The GRPC tests are failing due to #5099 so those are commented out.
These are run from the .travis.yml file rather than the tests/docker/languages
folder because the builds may each take longer than 30 minutes and were hitting
Travis timeouts.
Parallel builds and build caching attempt to keep the build times low.
* Add GCC 8.3 and Clang 7.0 with sanitizers into CI (based on #5130)
- Add a docker based on Debian Buster.
- Add C++ building scripts for the docker.
- Leak-sanitizer requires SYS_PTRACE.
* Added basic schema evolution tests
* Add BUILD targets for evolution tests. Added to test/generate_code scripts
* Use vector.front() instead of vector.data()
* Added --scoped-enums option for evolution test
* Automatic refractor of C++ headers to Google C++ style guide
* Automatic refractor of C++ source to Google C++ style guide
* Automatic refractor of C++ tests to Google C++ style guide
* Fixed clang-format issues by running clang-format twice to correct itself. Kotlin was missing clang-format on after turning it off, so it was changed,
Kolin uses java library as dependency, which changed the way it access union vector recently
(e365c502ff).
This changes updates kotlin code generation to match Java's changes.
* Add forceDefaults opt to python Builder
* Add test functions for force_default option for python builder
* Simplify
* Add force default test for UOffsetTFlags
* Fix C/C++ Create<Type>Direct with sorted vectors
If a struct has a key the vector has to be sorted. To sort the vector
you can't use "const".
* Changes due to code review
* Improve code readability
Empty objects that inherit from Sized would try to access internal
ByteBuffer when Sized::size was called. So we add a single byte in
the empty buffer, so when size() is called it would return 0
The real position of a string is calculated by using the indirect() method,
which should be based on parentWidth and not byteWidth, as it was implemented.
We are also fixing the flag BUILDER_FLAG_SHARE_STRINGS on FlexBuffersBuilder
that was set as '1', same value as BUILDER_FLAG_SHARE_KEYS.
* Draft with Array specialization (#5508)
* Array specialization + SFINAE to fold copy-paste (#5508)
* Add implicit specialization of Array<scalar> and Array<struct> (#5508)
- Tag dispatching is used for implicit specialization
- Array<scalar> and Array<struct> have different iterators and accessors
- Array<scalar> and Array<struct> have different Mutate() methods
* Add implicit specialization of Array<scalar> and Array<struct> (#5508)
- Tag dispatching is used for implicit specialization
- Array<scalar> and Array<struct> have different iterators and accessors
- Array<scalar> and Array<struct> have different Mutate() methods
* Add element size parameter to __vector_as_arraysegment
Add element size parameter to __vector_as_arraysegment fixing issue where VectorAsBytes returns incorrect size span for multibyte element types.
* Update codegen
Update codegen and Table to return typed span.
* update test files
update test files
* [FlexBuffers][Java] Implementation of FlexBuffers API
This is the initial attemp to implement FlexBuffer on Java.
There is some limitations as compared to the C++ implementation:
1 - No mutations implemented yet
2 - Does not parse from json
Also, this initial implementation is not focused and performance, but
get the basics write. So there is many opportunities for optimization, for instance,
remove all enums, return CharSequence instead of Strings and object pooling.
* [FlexBuffers][Java] Optimizations and simplification of the Builder API.
This change removes BitWidth enum in favor of static ints. Also
make all "reads" APIs closer to C++ implementation (try to cast or convert
as much as possible, assuming user knows what he is doing). Finally,
we remove the helper classes for building vectors and maps.
There is no official benchmarks, but the unit tests are running in less
than 50% for previous runs, which mean those optimizations are worth it.
* [FlexBuffers][Java] Fix Reference::asString behavior
There was a incorrect assumption that strings would be null-terminated, which
could lead to truncated strings. S now it relies size instead of null-termination.
Other minor improvements
* [C++] remove static_cast expression
* [C++] Add unit test for native_type usage
* [C++] Add flatc compilation for native_type_test.fbs
* [C++] update CMakeLists to compile native_type_test.fbs properly
* Update BUILD file for bazel
* [C++] Add generated native_type_test_generated.h and fix arguments for flatc according to CMakeList
* [C++] remove "= default" from constructor to support old compilers
* Update BUILD file for bazel, attempt 2
* [C++] Workaround for MSVC 2010 for the issue with std::vector and explicitly aligned custom data types
* Update BUILD file for bazel, attempt 3
* Update BUILD file for bazel, attempt 4
* Update BUILD file for bazel, attempt 5
* Update BUILD file for bazel, attempt 6
* [C++] Workaround for MSVC 2010 for the issue with std::vector and explicitly aligned custom data types Part 2
* [C++] Keep only one optional parameter to compile_flatbuffers_schema_to_cpp_opt
* native_type_test.fbs style corrected
* [C++] Code style modifications
* [C++] Fix flatc arguments in CMakeLists
* [C++] Remove --gen-compare from default parameters for flatc in CMakeLists
* [C++] Change Vector3D fields from double to float, to have alignment eq. 4 (to support MSVC 2010), plus minor review fix
* [C++] Remove one more #if !defined
* [C++] Restore version with correct static_cast, add the same fix for SortedStructs
* Revert "[C++] Restore version with correct static_cast, add the same fix for SortedStructs"
This reverts commit d61f4d6628.
* [C++] Fix Android.mk
The packing/unpacking steps for Boolean values was failing because the
code expected numerical values. I overrode the functions for the Boolean
metatable to account for this. I also had to exclude the Boolean
metatable from the GenerateTypes helper function, as that was overriding
the Pack/Unpack functions defined in its metatable.
Added Linux bash script to run Lua tests from the command line.
Bug: google/flatbuffers#5379
Tested: Added Lua tests that were failing and are now fixed with the
code changes.
* Python: Added support for file_identifiers
* Added tests. Fixed file_identifier code.
* Python: Fixed excessive padding of file_identifier. Repaired tests.
* Python: Made code compatible with python2.7
* Python: Typo fix in @endcond
* whitespace normaalization
* Stylistic change from if(not X is None) to if(X is not None). Added comment to type string.
* Python: Added support for automatic code generation of file_identifiers. Added tests for said code generation.
* converted sprintf to snprintf
* Bugfix, added snprint deffinition for MSVC
* changed snprint deffinition for MSVC to sprint_s
* changed scanf to IntToStringHex. Renamed HasFileIdentifier to GenHasFileIdentifier.
* Added updated genereated code to commit
* Python bugix: flatc no longer produces HasFileIdentfier for shcemas with no file identifier
* Added tests to verify `MonsterBufferHasIdentifier` returns false on no Identifier
* Python: added tests for GetBufferIdentifier and BufferHasIdentifier
Python: removed unessasary parenethesis in if statements
Minor format changes.
* Python : correceted instances of keyword arguments being called as positional arguments
* fixed typos and grammer in comments
* Minor style fixes
* Indentation fix
* Equals style changes
* Python: Fixed Alignment Issues. Changed test code to test against atual output
* Ran make(forgot to run make last commit)
* Python: Style changes
* Style changes
* indentation and style
* readded CONTRIBUTING.md
* Formatting tweak
Mostly to make CI run again
* More formatting fixes
* More formatting fixes
* More formatting fixes
* More formatting fixes
* Formatting fix
* More formatting fixes
* Formatting
* ran generate_code.sh