platform/upstream/flatbuffers.git
6 years agoUpdate FLATBUFFERS_HAS_STRING_VIEW __cplusplus checks to the versions provided by...
Paul Reimer [Thu, 26 Jul 2018 22:40:41 +0000 (15:40 -0700)]
Update FLATBUFFERS_HAS_STRING_VIEW __cplusplus checks to the versions provided by the standard feature test macros. (#4841)

6 years agoMerge pull request #4820 from nairb774/master
Robert [Thu, 26 Jul 2018 22:35:45 +0000 (15:35 -0700)]
Merge pull request #4820 from nairb774/master

[Go] encode.go performance changes

6 years agoUpdate for Dart 2.x constants (#4842)
Dan Field [Thu, 26 Jul 2018 21:21:23 +0000 (17:21 -0400)]
Update for Dart 2.x constants (#4842)

6 years agoPerformance Increase of Vector of Structures using .NET BlockCopy (#4830)
Derek Bailey [Thu, 26 Jul 2018 20:44:40 +0000 (13:44 -0700)]
Performance Increase of Vector of Structures using .NET BlockCopy (#4830)

* Added Get<vector_name>Array() method for accessing vectors of structures in C# using Buffer.Blockcopy().

* Added Get<vector_name>Array() method for accessing vectors of structures in C# using Buffer.Blockcopy().

Added Create<Name>VectorBlock() method to add a typed array using Buffer.BlockCopy() to speed up creation of vector of arrays

New Lua files for namespace test

* fixed c++ style issue

6 years agoFixed minalign in Lua being reset on StartObject
Wouter van Oortmerssen [Mon, 23 Jul 2018 23:36:21 +0000 (16:36 -0700)]
Fixed minalign in Lua being reset on StartObject

Change-Id: I9cd62b38c8dc526f069726a88baef63e4b0dae57

6 years agogo: do not clobber minalign when we create objects (#4834)
Robert [Mon, 23 Jul 2018 23:34:08 +0000 (16:34 -0700)]
go: do not clobber minalign when we create objects (#4834)

6 years agopython: do not clobber minalign when we create objects (#4833)
Robert [Mon, 23 Jul 2018 23:29:45 +0000 (16:29 -0700)]
python: do not clobber minalign when we create objects (#4833)

6 years agoAdd missing public header `minireflect.h` to bazel build (#4832)
Evan Moran [Mon, 23 Jul 2018 23:28:49 +0000 (16:28 -0700)]
Add missing public header `minireflect.h` to bazel build (#4832)

6 years agoFixing bazel build's missing lua file (#4831)
Evan Moran [Mon, 23 Jul 2018 23:28:09 +0000 (16:28 -0700)]
Fixing bazel build's missing lua file (#4831)

6 years agoAdds ForceStringAlignment to flatbuffers. (#4828)
shassani [Thu, 19 Jul 2018 23:00:31 +0000 (16:00 -0700)]
Adds ForceStringAlignment to flatbuffers. (#4828)

ForceStringAlignment is useful for memory aligning string fields in flatbuffers.

6 years agoRestricting (typed=false, fixed=true) combination in flexbuffer CreateVector (#4825)
Shivendra Agarwal [Thu, 19 Jul 2018 21:59:06 +0000 (03:29 +0530)]
Restricting (typed=false, fixed=true) combination in flexbuffer CreateVector (#4825)

https://github.com/google/flatbuffers/issues/4815

6 years agoFixing an assert in flexbuffers CreateVector (#4824)
Shivendra Agarwal [Thu, 19 Jul 2018 21:55:06 +0000 (03:25 +0530)]
Fixing an assert in flexbuffers CreateVector (#4824)

An assert was blocking the creation of typedvectors. It was wrongly checking for limited types even though vector was not of fixedTyped.

6 years agoOption to NOT force libc++ when building with clang (#4826)
Kamil Rojewski [Thu, 19 Jul 2018 16:40:28 +0000 (18:40 +0200)]
Option to NOT force libc++ when building with clang (#4826)

* Eclipse ignore

* TypeScript support

* Prefixing enums

* Test results

* Merged JS and TS generators

* Fixed AppVeyor build problems

* Fixed more AppVeyor build problems

* Fixed more AppVeyor build problems

* Changed TS flag to options struct

* Storing options by value

* Removed unneeded const

* Re-export support for unions

* Uint support

* Casting bools to numbers for mutation

* TS shell tests

* Reverted generates js test file to original version

* Backing up js tests and properly generating test data

* Not importing flatbuffers for TS test generation

* Not overwriting generated js for tests

* AppVeyor test fixes

* Generating the most strict TS code possible

* Not returning null when creating vectors

* Not returning null from struct contructors

* Vector of unions for ts/js

* Sanity check for languages

* Indentation fix + output test files

* Vectors of unions for php

* Fixes to union vector handling + tests

* Fix for strictPropertyInitialization

* Fix for new aligned operator new for gcc >= 7.1

* Not generating imports/ns prefixes with --gen-all

* TypeScript docs

* Missing imports of enums

* Missing TS links

* Enabled vector of unions for java, since it seems to work

* Added jitpack config

* Added obj to vector of unions getter

* Removed unneeded accessor

* Bumped jdk version in pom.xml

* Vector of unions support for c#

* Missing TypeScript doc processing

* Option to NOT force libc++ when building with clang

6 years agoMissing Lua generated files
Wouter van Oortmerssen [Mon, 16 Jul 2018 23:44:49 +0000 (16:44 -0700)]
Missing Lua generated files

Change-Id: Id668ade474805dd9c7e108a478db3551d6a62b48

6 years agoRenamed Verifier methods
Wouter van Oortmerssen [Mon, 16 Jul 2018 23:41:38 +0000 (16:41 -0700)]
Renamed Verifier methods

The name Verify was getting too overloaded, and confused
the VS compiler

Change-Id: I26423a4d513e4def2f4e41d7f278bb683fc12518

6 years agoDart generated code changes
Wouter van Oortmerssen [Mon, 16 Jul 2018 23:39:33 +0000 (16:39 -0700)]
Dart generated code changes

Change-Id: I1110974a375acb9668552294632658d9d1779772

6 years agoflatbuffer force-empty option (#4822)
shassani [Mon, 16 Jul 2018 23:05:06 +0000 (16:05 -0700)]
flatbuffer force-empty option (#4822)

6 years agoUpdated fuzzer scripts
Wouter van Oortmerssen [Mon, 16 Jul 2018 22:51:01 +0000 (15:51 -0700)]
Updated fuzzer scripts

Point to new Chromium location
Also enable UBSan

Change-Id: I4ba182e3c6a967ad89090b776d05762fa9ae6e40

6 years agoFixed assert in ParseSingleValue (found by fuzzer)
Wouter van Oortmerssen [Mon, 16 Jul 2018 22:49:53 +0000 (15:49 -0700)]
Fixed assert in ParseSingleValue (found by fuzzer)

Change-Id: I84674eaab75b2b455e918b04e3027920430678ac

6 years agoC++ verifier now primarily uses offsets instead of pointers.
Wouter van Oortmerssen [Thu, 12 Jul 2018 23:26:17 +0000 (16:26 -0700)]
C++ verifier now primarily uses offsets instead of pointers.

Fix for: https://bugs.chromium.org/p/chromium/issues/detail?id=834710

Before, the verifier would create pointers to objects, and then
verify they are inside the buffer. But since even constructing pointers
that are outside a valid allocation is Undefinied Behavior in C++, this
can trigger UBSAN (with -fsanitize=pointer-overflow).

Now instead the bounds checking is first performed using offsets
before pointers are even created.

Change-Id: If4d376e90df9847e543247e70a062671914dae1b
Tested: on Linux.

6 years ago:memo: release mode in building doc (#4819)
xgdgsc [Mon, 16 Jul 2018 19:56:14 +0000 (03:56 +0800)]
:memo: release mode in building doc (#4819)

6 years agoConvert net/FlatBuffers project to be compatible with netstandard (#4811)
Damien Pontifex [Mon, 16 Jul 2018 16:13:36 +0000 (00:13 +0800)]
Convert net/FlatBuffers project to be compatible with netstandard (#4811)

6 years ago[Go] Force a single, early bounds check on read and write paths.
Brian Atkinson [Sun, 15 Jul 2018 23:38:56 +0000 (16:38 -0700)]
[Go] Force a single, early bounds check on read and write paths.

As an example, GetInt64 used to perform 8 bounds checks, one for each
slice access. By performing a bound check on the highest index, the
number of checks is reduced to one through bounds-check-elimination.

6 years ago[Go] Unroll WriteUint64 and WriteInt64.
Brian Atkinson [Sun, 15 Jul 2018 23:38:55 +0000 (16:38 -0700)]
[Go] Unroll WriteUint64 and WriteInt64.

This enables both WriteUint64 and WriteInt64 to both be inlined as
well as implemented with a single assembly instruction. The current Go
compiler refuses to inline functions with for loops. The compiler is
also not smart enough to produce a single assembly instruction for the
for-loop.

6 years agoFixed Uint() method actually storing a signed int.
Wouter van Oortmerssen [Fri, 6 Jul 2018 19:30:43 +0000 (12:30 -0700)]
Fixed Uint() method actually storing a signed int.

Also fixed two constructors missing explicit.

Change-Id: I147b2d2517bb660d92d4b0167992c115ed65dca7

6 years agoLua (5.3) Language addition (#4804)
Derek Bailey [Thu, 5 Jul 2018 22:55:57 +0000 (15:55 -0700)]
Lua (5.3) Language addition (#4804)

* starting Lua port of python implmention. Syncing commit

* Bulk of Lua module port from Python done. Not tested, only static analysis. Need to work on binary strings. Started work on flatc lua code generation

* Fixed all the basic errors to produced a binary output from the builder, don't know if it is generated correctly, but it contains data, so that must be good

* fixed binary set command that was extending the array improperly

* continued improvement

* Moved lua submodules down a directory so their names don't clash with potential other modules. Added compat module to provide Lua versioning logic

* Successful sample port from Python

* working on testing Lua code with formal tests

* continued to work on tests and fixes to code to make tests pass

* Added reading buffer test

* Changed binaryarray implmentation to use a temporary table for storing data, and then serialize it to a string when requested. This double the rate of building flatbuffers compared to the string approach.

* Didn't need encode module as it just added another layer of indirection that isn't need

* profiled reading buffers, optimizations to increase read performance of monster data to ~7 monster / millisecond

* Writing profiler improvments. Get about
~2 monsters/millisecond building rate

* removed Numpy generation from Lua (came from the Python port)

* math.pow is deprecated in Lua 5.3, so changed to ^ notation. Also added .bat script for starting Lua tests

* adding results of generate_code.bat

* simple edits for code review in PR.

* There was a buffer overflow in inserting the keywords into the unorder set for both the Lua and Python code gens. Changed insertion to use iterators.

* fixed spacing issue

* basic documenation/tutorial updates. Updated sample_binary.lua to reflect the tutorial better

* removed windows-specific build step in Lua tests

6 years agoIssue #4799 fixed. Generator for KeyCompareWithValue is extracted. (#4802)
Vladimir Glavnyy [Thu, 5 Jul 2018 16:23:40 +0000 (23:23 +0700)]
Issue #4799 fixed. Generator for KeyCompareWithValue is extracted. (#4802)

* Issue #4799 fixed. Generator for KeyCompareWithValue is extracted.

* format fix

6 years agoDart: Add missing imports (#4803)
Woody Guo [Tue, 3 Jul 2018 15:44:27 +0000 (23:44 +0800)]
Dart: Add missing imports (#4803)

6 years agoHelper function to get empty string on nullptr (#4800)
shassani [Mon, 2 Jul 2018 16:34:18 +0000 (09:34 -0700)]
Helper function to get empty string on nullptr (#4800)

Adds helper function to get empty string when String is nullptr.

This is to get over the fact that flat buffer builders will record null when data
is not present.

6 years agoDart: Fix default values (#4795)
Woody Guo [Thu, 28 Jun 2018 17:12:18 +0000 (01:12 +0800)]
Dart: Fix default values (#4795)

6 years agoGo GRPC generator Updates - Fixes #4787 (#4797)
Kapil Sharma [Wed, 27 Jun 2018 16:57:40 +0000 (11:57 -0500)]
Go GRPC generator Updates - Fixes #4787 (#4797)

* Fix for #4787

- Updated the grpc generator for go to use full namespace for service
rpc method names

* Formatting Fix

- Set to Google Style Formatting

6 years agoAdd --force-defaults option to flatc [C++, parser] (#4729)
Paul Reimer [Wed, 27 Jun 2018 16:12:52 +0000 (09:12 -0700)]
Add --force-defaults option to flatc [C++, parser] (#4729)

* Add --force-defaults option to flatc

To emit default values for fields which are not present or which are set
to the default value.

* flatc option --force-defaults should have a default value (false) and take action on the builder_ within the Parser constructor

* Add help text from flatc --force-defaults to Compiler.md doc

* Clarified docs for flatc --force-defaults, and imply that this behaviour is not normally needed.

* Updated docs and flatc help text for --force-defaults option

6 years agoAdded setup.cfg to default to python 2/3 wheels for pypi.
Wouter van Oortmerssen [Mon, 25 Jun 2018 22:07:26 +0000 (15:07 -0700)]
Added setup.cfg to default to python 2/3 wheels for pypi.

Change-Id: I64cf42aca79c32d21cd15c1415125ba97665d134

6 years agodocs: fix flatc instructions (#4794)
Polynomdivision [Mon, 25 Jun 2018 21:55:18 +0000 (23:55 +0200)]
docs: fix flatc instructions (#4794)

6 years agoFixed documentation comments at the start of a file.
Wouter van Oortmerssen [Mon, 25 Jun 2018 21:02:12 +0000 (14:02 -0700)]
Fixed documentation comments at the start of a file.

Change-Id: Ic24018a6cd604c71b4d8d3cd35dc7a583fb18394

6 years agoFixed empty structs generating bad constructor.
Wouter van Oortmerssen [Mon, 25 Jun 2018 19:26:04 +0000 (12:26 -0700)]
Fixed empty structs generating bad constructor.

This was fixed previously here:
https://github.com/google/flatbuffers/commit/5fd0fefab644caa2bb395cda79fbee6103035818
but somehow got undone in intermediate refactors.

Change-Id: I86e45a3f96f67a2b3d84d44081403baef6798921

6 years agoComment update for ForceDefaults. (#4788)
Shivendra Agarwal [Thu, 21 Jun 2018 15:50:36 +0000 (21:20 +0530)]
Comment update for ForceDefaults. (#4788)

Current comment is a bit ambiguous. Default values can be read either if field is not written (like in table), or if they are written explicitly by client but not serialized due to optimization. Impression from current comment is that all the default values which are coming during read are from binaries when we turn-on Force-Defaults. However, that will be a wrong interpretation.

Force_Defaults = true ensures to turn OFF later optimization. In case a field is not written, during read we will get default values but they will still not be serialized.

6 years agoCreateUnitializedVectorOfStructs and tests (#4781)
Shivendra Agarwal [Mon, 18 Jun 2018 17:12:26 +0000 (22:42 +0530)]
CreateUnitializedVectorOfStructs and tests (#4781)

* CreateUnitializedVectorOfStructs and tests

* Incorporating review comments

* snake_case variable names

6 years agoProtected parser against infinite recursion.
Wouter van Oortmerssen [Thu, 14 Jun 2018 23:17:19 +0000 (16:17 -0700)]
Protected parser against infinite recursion.

Will error-out after e.g. 64 levels of nested JSON tables.

Change-Id: I3ab66cdd509378bfab87b85f85c07ab42aded788
Tested: on Linux.

6 years agoFixed ASan array out of bounds.
Wouter van Oortmerssen [Thu, 14 Jun 2018 22:13:01 +0000 (15:13 -0700)]
Fixed ASan array out of bounds.

Change-Id: I53366bd14548aa41c3d25bcd187d7436d47e8665
Tested: on Linux.

6 years agoFix misaligned nested buffers (#4785)
zejal [Thu, 14 Jun 2018 16:21:42 +0000 (18:21 +0200)]
Fix misaligned nested buffers (#4785)

6 years agoFixed TypeScript links in docs (#4783)
Kamil Rojewski [Tue, 12 Jun 2018 18:37:10 +0000 (20:37 +0200)]
Fixed TypeScript links in docs (#4783)

* Eclipse ignore

* TypeScript support

* Prefixing enums

* Test results

* Merged JS and TS generators

* Fixed AppVeyor build problems

* Fixed more AppVeyor build problems

* Fixed more AppVeyor build problems

* Changed TS flag to options struct

* Storing options by value

* Removed unneeded const

* Re-export support for unions

* Uint support

* Casting bools to numbers for mutation

* TS shell tests

* Reverted generates js test file to original version

* Backing up js tests and properly generating test data

* Not importing flatbuffers for TS test generation

* Not overwriting generated js for tests

* AppVeyor test fixes

* Generating the most strict TS code possible

* Not returning null when creating vectors

* Not returning null from struct contructors

* Vector of unions for ts/js

* Sanity check for languages

* Indentation fix + output test files

* Vectors of unions for php

* Fixes to union vector handling + tests

* Fix for strictPropertyInitialization

* Fix for new aligned operator new for gcc >= 7.1

* Not generating imports/ns prefixes with --gen-all

* TypeScript docs

* Missing imports of enums

* Missing TS links

* Enabled vector of unions for java, since it seems to work

* Added jitpack config

* Added obj to vector of unions getter

* Removed unneeded accessor

* Bumped jdk version in pom.xml

* Vector of unions support for c#

* Missing TypeScript doc processing

6 years agoDart: Generate the enum from 0 if value is null and fix inconsistent naming when...
Woody Guo [Tue, 12 Jun 2018 18:35:40 +0000 (02:35 +0800)]
Dart: Generate the enum from 0 if value is null and fix inconsistent naming when generating object builder (#4782)

* Dart: Generate the enum from 0 if value is null

* Dart: Fix inconsistent naming when generating object builder

6 years agoRe-enable clang / os x in .travis
Wouter van Oortmerssen [Fri, 8 Jun 2018 18:10:41 +0000 (11:10 -0700)]
Re-enable clang / os x in .travis

Change-Id: I45f6326f1b7da2d83eeee72fe44fd9626a288b5b

6 years agoRemoved biicode from repo.
Wouter van Oortmerssen [Fri, 8 Jun 2018 18:03:34 +0000 (11:03 -0700)]
Removed biicode from repo.

Change-Id: I8b517fb8eaf02772052d95ca55bdaa0efbffa65a

6 years agoAdded missing Dart generated files.
Wouter van Oortmerssen [Fri, 8 Jun 2018 17:59:46 +0000 (10:59 -0700)]
Added missing Dart generated files.

Change-Id: I27986e8aaf2f672145af9beae6ab659b272c9721

6 years agoPython: Escape enum member names if they correspond to a Python keyword (#4772)
Michael Seifert [Fri, 8 Jun 2018 17:55:19 +0000 (19:55 +0200)]
Python: Escape enum member names if they correspond to a Python keyword (#4772)

* Python: Generated enum member names are now escaped if they correspond to a Python keyword.

* Keyword list in Python generator is now a const char* instead of an std::string array.

* Moved static functions and keyword list of Python generator into the PythonGenerator class.

* Python generator escapes keyword identifiers in all definitions.

6 years agoPython: fix default bool value. (#4773)
Tin Tvrtković [Thu, 7 Jun 2018 19:02:35 +0000 (21:02 +0200)]
Python: fix default bool value. (#4773)

* Python: fix default bool value.

* Small style tweak.

6 years agoEnforcing CreateUninitializedVector is only used with scalars.
Wouter van Oortmerssen [Thu, 7 Jun 2018 15:48:15 +0000 (08:48 -0700)]
Enforcing CreateUninitializedVector is only used with scalars.

This function cannot work with any offset types (since offsets
must always point forward) so this avoid possible mistakes.

Change-Id: I1b3dfbefc8d40da630345b9b04f9aff4a990e8e5

6 years agoMakes VectorIterator compatible with STL iterators. (#4768)
Vladimir Glavnyy [Mon, 4 Jun 2018 19:02:08 +0000 (02:02 +0700)]
Makes VectorIterator compatible with STL iterators. (#4768)

6 years agoFix a small problem with add_subdirectory(${FLATBUFFERS_DIR}) from top level project...
Vladimir Glavnyy [Fri, 1 Jun 2018 15:22:17 +0000 (22:22 +0700)]
Fix a small problem with add_subdirectory(${FLATBUFFERS_DIR}) from top level project. (#4764)

6 years agorenamed flexbuffers::Type enum values TYPE_ -> FBT_ (#4761)
Christian Helmich [Thu, 31 May 2018 18:06:44 +0000 (03:06 +0900)]
renamed flexbuffers::Type enum values TYPE_ -> FBT_ (#4761)

reason: TYPE_BOOL is a macro defined in some iOS build configurations.

6 years agoFixed typo in Java/C# tutorial.
Wouter van Oortmerssen [Thu, 31 May 2018 16:53:47 +0000 (09:53 -0700)]
Fixed typo in Java/C# tutorial.

Change-Id: I956b27f37b11988e67d0403a596c0569eacbfc2a

6 years agoFixed ASAN false positive.
Wouter van Oortmerssen [Thu, 31 May 2018 16:48:34 +0000 (09:48 -0700)]
Fixed ASAN false positive.

Change-Id: I79d9b2cddc61df5919bc4a93627fba2aa69e5d49
Tested: on Linux.

6 years agoadds https to landing page link so it resolves (#4757)
Steve Barman [Thu, 31 May 2018 16:37:51 +0000 (12:37 -0400)]
adds https to landing page link so it resolves (#4757)

6 years agoFix typo in tutorial for Go (#4756)
Gautham B A [Thu, 31 May 2018 16:17:34 +0000 (21:47 +0530)]
Fix typo in tutorial for Go (#4756)

Fixed a typo in serialising the inventory for Orc.

6 years agoJavascript: Add suppport for ES6 style exports (#4754)
Nathan Mitchell [Thu, 31 May 2018 15:29:58 +0000 (08:29 -0700)]
Javascript: Add suppport for ES6 style exports (#4754)

* Add suppport for ES6 style exports

Adds support for ECMAScript 6 module exports during Javascript
generation. This is useful as many development projects are
switching to this new standard and away from custom module
solutions. By integrating support into flatbuffers, users
do not need to perform additional post-processing of generated
files in order to use flatbuffers output directly in their
codebases.

Reference to ECMAScript 6 modules:
https://www.ecma-international.org/ecma-262/6.0/#sec-exports

Changes:
* Added `--es6-js-export` option to cli parser tool
* Added conditional code to generate a ES6 style export
  line, replacing the normal NodeJS/RequireJS line.

* Fixed missing export statements

Added exports for definition and struct names that were not inside namespaces

* Updated Compiler.md with new generator option

Added entry to Compiler.md in docs for the `--es6-js-export` flag, including a brief description of the effects and usefulness.

6 years agoChanged how the default allocator is handled.
Wouter van Oortmerssen [Fri, 18 May 2018 18:54:39 +0000 (11:54 -0700)]
Changed how the default allocator is handled.

This is to not need static variables, which could trip up users
with destruction order problems.

This potentially makes these operations slightly slower, but I
think they're infrequent enough that this should not be noticable.

Also there is one breaking API change, for a method that is not
used by any code in FlatBuffers and is assumed to affect very
few if any users. A namechange and comment ensures that those
affected, if any, will not run into trouble silently.

Change-Id: I16c1352d1dfc9092c816ddb7e353ed7f5f417444
Tested: on Linux.

6 years agoFix of namespace problem described in #4747 (#4752)
Vitaly Bondar [Fri, 18 May 2018 19:21:08 +0000 (22:21 +0300)]
Fix of namespace problem described in #4747 (#4752)

6 years agoAdd [Dart] support (#4676)
Dan Field [Fri, 18 May 2018 18:06:15 +0000 (14:06 -0400)]
Add [Dart] support (#4676)

* Add [Dart] support

* fix enum vectors

* Allow for opt out of string interning

* fix comment style, make interning opt in

* remove Offset<T>, prefer int

* avoid creating unnecessary vtable objects

* start work on tests - do not generate builder if struct has 0 fields - add int64

* support reading structs properly

* correctly handle reading vectors of structs, dartfmt

* support structs, fix unnecessary prepares

* fix bool customizations

* undo unintentional removal of file

* docs updates, complete tutorial, bug fix for codegen

* more documentation

* Update docs, add to doxygen file

* update package structure, add samples script/code

* rearrange sample

* Tests

* Add readme for pub

* cleanup package for pub

* update docs for renamed file

* remove custom matcher, use `closeTo` instead

* remove unintentional file

* remove unintended file checkin

* use auto, move method, cleanup

* refactor to ObjectBuilders, add Builders

* Update tests, examples

* Add files missing from previous commit

* documentation and example updates

* Update LICENSE, make dartanalyzer happy, fix minor bugs, get rid of duplicate files, publish script

* fix sample for slightly different schema

* Update pubspec.yaml

6 years agoFix undertermined execution behavior (#4751)
joligarson [Fri, 18 May 2018 16:15:20 +0000 (18:15 +0200)]
Fix undertermined execution behavior (#4751)

Fix for the issue #4744: Ambiguous side-effect execution on vector_downward::make_space() method.
C++ does not impose evaluation order on the two expressions on the right side of the assignment, so compiler can freely decide. As ensure_space() method can change the value of "cur_" variable, the result of the subtraction may be different depending on the evaluation order, which is ambiguous in C++.
In order to make this code deterministic and correct, cur_ must be evaluated after ensure_space() is called.

6 years ago[BREAKING CHANGE] Python: handle bool table fields properly. (#4736)
Tin Tvrtković [Mon, 14 May 2018 20:30:10 +0000 (22:30 +0200)]
[BREAKING CHANGE] Python: handle bool table fields properly. (#4736)

* Python: handle bool table fields properly.

* Small refactor.

* Use snake_case instead of camelCase. Use auto.

6 years agoVector of unions support for java and c# (#4735)
Kamil Rojewski [Mon, 14 May 2018 18:12:24 +0000 (20:12 +0200)]
Vector of unions support for java and c# (#4735)

* Eclipse ignore

* TypeScript support

* Prefixing enums

* Test results

* Merged JS and TS generators

* Fixed AppVeyor build problems

* Fixed more AppVeyor build problems

* Fixed more AppVeyor build problems

* Changed TS flag to options struct

* Storing options by value

* Removed unneeded const

* Re-export support for unions

* Uint support

* Casting bools to numbers for mutation

* TS shell tests

* Reverted generates js test file to original version

* Backing up js tests and properly generating test data

* Not importing flatbuffers for TS test generation

* Not overwriting generated js for tests

* AppVeyor test fixes

* Generating the most strict TS code possible

* Not returning null when creating vectors

* Not returning null from struct contructors

* Vector of unions for ts/js

* Sanity check for languages

* Indentation fix + output test files

* Vectors of unions for php

* Fixes to union vector handling + tests

* Fix for strictPropertyInitialization

* Fix for new aligned operator new for gcc >= 7.1

* Not generating imports/ns prefixes with --gen-all

* TypeScript docs

* Missing imports of enums

* Missing TS links

* Enabled vector of unions for java, since it seems to work

* Added jitpack config

* Added obj to vector of unions getter

* Removed unneeded accessor

* Bumped jdk version in pom.xml

* Vector of unions support for c#

6 years agoSet Working Directory for flatc commands (#4737)
Keef Aragon [Mon, 14 May 2018 16:20:49 +0000 (09:20 -0700)]
Set Working Directory for flatc commands (#4737)

6 years agoAdd define/ifdef blocks, alternate sprintf implementation via FLATBUFFERS_PREFER_PRIN...
Paul Reimer [Thu, 10 May 2018 20:31:02 +0000 (13:31 -0700)]
Add define/ifdef blocks, alternate sprintf implementation via FLATBUFFERS_PREFER_PRINTF [C++] (#4700)

* Add define/ifdef blocks for FLATBUFFERS_PREFER_PRINTF to avoid using std::*streams for idl_parser

* Use string::size() as limit in snprintf

* Refactored FLATBUFFERS_PREFER_PRINTF guarded feature into NumToStringImplWrapper around sprintf

* Remove '.0' where not needed from IntToDigitCount

* Remove leading dot from name in GetFullyQualifiedName when FLATBUFFERS_PREFER_PRINTF is enabled

* Return string directly from conversion functions where possible when FLATBUFFERS_PREFER_PRINTF is enabled

* Use string instead of stringstream for GetFullyQualifiedName

* Revert removing leading dot from GetFullyQualifiedName, it does need to be there for parity with the stringstream implementation

* Dot is single char in Namespace::GetFullyQualifiedName

* Remove trailing (duplicate) null-byte from NumToStringImplWrapper when using FLATBUFFERS_PREFER_PRINTF.

* Update preprocessor indenting (and use clang-format off/on) for FLATBUFFERS_PREFER_PRINTF

* Reduce whitespace, unneeded braces in FLATBUFFERS_PREFER_PRINTF string width functions

* Remove unneeded use of iostream from idl_parser.cpp, std::string is used instead

* Tell snprintf to use the trailing null byte expected at the end of std::string buffer

6 years agoAdd string view [C++] (#4730)
Paul Reimer [Thu, 10 May 2018 20:30:35 +0000 (13:30 -0700)]
Add string view [C++] (#4730)

* Add view() method on flatbuffers::String, to return a string_view type
if support for std::string_view (or alternately
std::experimental::string_view) is found

* Move detection/definition of FLATBUFFERS_STRING_VIEW to base.h, use the
macro (if it is defined) as the argument type for an overload of CreateString

* Rename String::view() to String::string_view() and use the existing c_str() method for the data pointer

* Add and explain minimum C++ standard version checks for FLATBUFFERS_STRING_VIEW implementations

* Updated preprocessor indenting for FLATBUFFERS_STRING_VIEW

* Convert FLATBUFFERS_STRING_VIEW macro to typedef in flatbuffers:: namespace, and boolean feature toggle macro FLATBUFFERS_HAS_STRING_VIEW

* Prepend flatbuffers:: namespace to disambiguate flatbuffers::string_view typedef from String::string_view()

* clang-format as-she-is-spoke for FLATBUFFERS_HAS_STRING_VIEW

6 years agoPython: return None for missing strings. (#4733)
Tin Tvrtković [Thu, 10 May 2018 17:34:20 +0000 (19:34 +0200)]
Python: return None for missing strings. (#4733)

[BREAKING CHANGE] Python: return None for missing strings.

6 years agoRemove @Nullable (Java) for required fields (fixes #4724) (#4726)
Mike Mansell [Thu, 10 May 2018 16:27:23 +0000 (09:27 -0700)]
Remove @Nullable (Java) for required fields (fixes #4724) (#4726)

@Nullable is only a compiler informational attribute.
Removing for required fields improves compiler warnings
but doesn't impact any running code.

6 years agoAdd --root-type option to flatc [C++, parser, JSON] (#4728)
Paul Reimer [Mon, 7 May 2018 23:07:52 +0000 (16:07 -0700)]
Add --root-type option to flatc [C++, parser, JSON] (#4728)

* Add --root-type option to flatc

To select or override a root_type

* Add help text from flatc --root-type to Compiler.md doc

6 years agoSeveral pom.xml files did not have their version bumped to 1.9.0
Wouter van Oortmerssen [Mon, 7 May 2018 15:46:34 +0000 (08:46 -0700)]
Several pom.xml files did not have their version bumped to 1.9.0

Change-Id: I7c9bb5406ae8df951afe12a008f0d071e0195bfa

6 years agoOutput JSON strings as natural UTF-8 text without escapes (#4710)
Vladimir Glavnyy [Thu, 3 May 2018 19:10:45 +0000 (02:10 +0700)]
Output JSON strings as natural UTF-8 text without escapes (#4710)

* Added support for the non-escaped print of utf-8 string.

* EscapeString: the first invalid symbol resets print_natural_utf8 flag to false.

* Move the test to ParseAndGenerateTextTest. Fixes.

* Removed dependence between `natural_utf8` and `allow_non_utf8` flags.

6 years agoFix union escaping order. (#4722)
iceboy [Thu, 3 May 2018 18:59:30 +0000 (11:59 -0700)]
Fix union escaping order. (#4722)

* Fix union escaping order.

Fixes #4712

* style

6 years agoDelete ByteBuffer.exe (#4721)
iceboy [Thu, 3 May 2018 18:58:29 +0000 (11:58 -0700)]
Delete ByteBuffer.exe (#4721)

6 years agoAddition of Go FinishWithFileIdentifier (#4720)
husobee [Mon, 30 Apr 2018 21:37:24 +0000 (17:37 -0400)]
Addition of Go FinishWithFileIdentifier (#4720)

* Addition of Go FinishWithFileIdentifier, allows for Go flatbuffer data to contain a file identifier

* adding panic as per review if fileIdentifier does not match length, letting prep pad the file identifier

* updated error message to not use fmt.Sprintf

* using minalign for alignment for file identifier

6 years agoInclude services in reflection data (fixes #4639) (#4713)
Tobias Oberstein [Fri, 27 Apr 2018 20:31:18 +0000 (22:31 +0200)]
Include services in reflection data (fixes #4639) (#4713)

* include service in reflection data (fixes #4639)

* changes from review

* regenerated test data

6 years agoAdding JS function to get the File Identifier (#4715)
Mark Henderson [Mon, 23 Apr 2018 19:54:20 +0000 (12:54 -0700)]
Adding JS  function to get the File Identifier (#4715)

* Adding JS  function to get the File Identifier

* Update flatbuffers.js

6 years agoThe asserts replaced by FLATBUFFERS_ASSERT. (#4701)
Vladimir Glavnyy [Mon, 16 Apr 2018 15:57:59 +0000 (22:57 +0700)]
The asserts replaced by FLATBUFFERS_ASSERT. (#4701)

* The asserts replaced by FLATBUFFERS_ASSERT. Several asserts have converted to static_asserts.

* Regenerate header monster generate_code.sh

6 years agoRemove unnecessary const qualifier (#4698)
Sergey Avseyev [Fri, 6 Apr 2018 18:33:07 +0000 (21:33 +0300)]
Remove unnecessary const qualifier (#4698)

In file included from include/flatbuffers/flexbuffers.h:24,
                 from src/idl_gen_text.cpp:20:
include/flatbuffers/util.h: In function 'int flatbuffers::FromUTF8(const char**)':
include/flatbuffers/util.h:324:45: error: type qualifiers ignored on cast result type [-Werror=ignored-qualifiers]
   if ((static_cast<const unsigned char>(**in) << len) & 0x80) return -1;  // Bit after leading 1's must be 0.
                                             ^
cc1plus: all warnings being treated as errors
make[2]: *** [CMakeFiles/flatbuffers_shared.dir/build.make:92: CMakeFiles/flatbuffers_shared.dir/src/idl_gen_text.cpp.o] Error 1

6 years agoAn user-defined attribute name validation (#4689)
Vladimir Glavnyy [Fri, 6 Apr 2018 16:07:59 +0000 (23:07 +0700)]
An user-defined attribute name validation (#4689)

* User-declared attribute should be either identifier or string with the identifier.

* Attribute can be identifier or string in metadata.

6 years agoRename MANUALLY_ALIGNED_STRUCT to add FLATBUFFERS_ prefix in generated code within...
Paul Reimer [Thu, 5 Apr 2018 23:36:42 +0000 (16:36 -0700)]
Rename MANUALLY_ALIGNED_STRUCT to add FLATBUFFERS_ prefix in generated code within tests/. Via running `cd tests && sh generate_code.sh` (#4696)

6 years agoAdd FLATBUFFERS_ prefix to defines [C++] (#4695)
Paul Reimer [Thu, 5 Apr 2018 23:00:54 +0000 (16:00 -0700)]
Add FLATBUFFERS_ prefix to defines [C++] (#4695)

* Rename STRUCT_END to add FLATBUFFERS_ prefix, now FLATBUFFERS_STRUCT_END. Via running `ag -l STRUCT_END | xargs rpl STRUCT_END FLATBUFFERS_STRUCT_END`

* Rename MANUALLY_ALIGNED_STRUCT to add FLATBUFFERS_ prefix, now FLATBUFFERS_MANUALLY_ALIGNED_STRUCT. Via running `ag -l MANUALLY_ALIGNED_STRUCT | xargs rpl MANUALLY_ALIGNED_STRUCT FLATBUFFERS_MANUALLY_ALIGNED_STRUCT && cd tests && sh generate_code.sh`

* Rename DEFINE_BITMASK_OPERATORS to add FLATBUFFERS_ prefix, now FLATBUFFERS_DEFINE_BITMASK_OPERATORS. Via running `ag -l DEFINE_BITMASK_OPERATORS | xargs rpl DEFINE_BITMASK_OPERATORS FLATBUFFERS_DEFINE_BITMASK_OPERATORS`

6 years agoUpdate version number to 1.9 v1.9.0
Wouter van Oortmerssen [Thu, 5 Apr 2018 22:11:52 +0000 (15:11 -0700)]
Update version number to 1.9

Change-Id: I0b0ed43129c4d8fc88a177792df50adfeb52a1e3

6 years agoAdded missing generated code files.
Wouter van Oortmerssen [Thu, 5 Apr 2018 22:01:35 +0000 (15:01 -0700)]
Added missing generated code files.

Change-Id: I59af6ca1825870461c0badc7e7a045b97befdc1a

6 years agoMissing TS links in docs (#4693)
Kamil Rojewski [Thu, 5 Apr 2018 16:54:37 +0000 (18:54 +0200)]
Missing TS links in docs (#4693)

* Eclipse ignore

* TypeScript support

* Prefixing enums

* Test results

* Merged JS and TS generators

* Fixed AppVeyor build problems

* Fixed more AppVeyor build problems

* Fixed more AppVeyor build problems

* Changed TS flag to options struct

* Storing options by value

* Removed unneeded const

* Re-export support for unions

* Uint support

* Casting bools to numbers for mutation

* TS shell tests

* Reverted generates js test file to original version

* Backing up js tests and properly generating test data

* Not importing flatbuffers for TS test generation

* Not overwriting generated js for tests

* AppVeyor test fixes

* Generating the most strict TS code possible

* Not returning null when creating vectors

* Not returning null from struct contructors

* Vector of unions for ts/js

* Sanity check for languages

* Indentation fix + output test files

* Vectors of unions for php

* Fixes to union vector handling + tests

* Fix for strictPropertyInitialization

* Fix for new aligned operator new for gcc >= 7.1

* Not generating imports/ns prefixes with --gen-all

* TypeScript docs

* Missing imports of enums

* Missing TS links

6 years agoRemove line break of CMakeLists.txt (#4691)
Juyeon Yoon [Thu, 5 Apr 2018 16:17:33 +0000 (01:17 +0900)]
Remove line break of CMakeLists.txt (#4691)

Fix #4650

6 years agoFix typos in C++ tutorial (#4685)
David Stephan [Mon, 2 Apr 2018 16:25:05 +0000 (09:25 -0700)]
Fix typos in C++ tutorial (#4685)

CreateMonster and MonsterBuilder examples fixed for C++

6 years agoFix for missing enum imports (#4683)
Kamil Rojewski [Mon, 26 Mar 2018 17:29:45 +0000 (19:29 +0200)]
Fix for missing enum imports (#4683)

* Eclipse ignore

* TypeScript support

* Prefixing enums

* Test results

* Merged JS and TS generators

* Fixed AppVeyor build problems

* Fixed more AppVeyor build problems

* Fixed more AppVeyor build problems

* Changed TS flag to options struct

* Storing options by value

* Removed unneeded const

* Re-export support for unions

* Uint support

* Casting bools to numbers for mutation

* TS shell tests

* Reverted generates js test file to original version

* Backing up js tests and properly generating test data

* Not importing flatbuffers for TS test generation

* Not overwriting generated js for tests

* AppVeyor test fixes

* Generating the most strict TS code possible

* Not returning null when creating vectors

* Not returning null from struct contructors

* Vector of unions for ts/js

* Sanity check for languages

* Indentation fix + output test files

* Vectors of unions for php

* Fixes to union vector handling + tests

* Fix for strictPropertyInitialization

* Fix for new aligned operator new for gcc >= 7.1

* Not generating imports/ns prefixes with --gen-all

* TypeScript docs

* Missing imports of enums

6 years agoTypeScript docs (#4680)
Kamil Rojewski [Fri, 23 Mar 2018 16:01:39 +0000 (17:01 +0100)]
TypeScript docs (#4680)

* Eclipse ignore

* TypeScript support

* Prefixing enums

* Test results

* Merged JS and TS generators

* Fixed AppVeyor build problems

* Fixed more AppVeyor build problems

* Fixed more AppVeyor build problems

* Changed TS flag to options struct

* Storing options by value

* Removed unneeded const

* Re-export support for unions

* Uint support

* Casting bools to numbers for mutation

* TS shell tests

* Reverted generates js test file to original version

* Backing up js tests and properly generating test data

* Not importing flatbuffers for TS test generation

* Not overwriting generated js for tests

* AppVeyor test fixes

* Generating the most strict TS code possible

* Not returning null when creating vectors

* Not returning null from struct contructors

* Vector of unions for ts/js

* Sanity check for languages

* Indentation fix + output test files

* Vectors of unions for php

* Fixes to union vector handling + tests

* Fix for strictPropertyInitialization

* Fix for new aligned operator new for gcc >= 7.1

* Not generating imports/ns prefixes with --gen-all

* TypeScript docs

6 years agoConst correctness in generated code and in code generators. Added missing \reflection...
Flaviu [Fri, 23 Mar 2018 15:58:07 +0000 (17:58 +0200)]
Const correctness in generated code and in code generators. Added missing \reflection\generate_code.bat file. (#4679)

6 years ago[C++, Go, Bazel]: Fix up Bazel support (#4672)
Andreas Bergmeier [Thu, 15 Mar 2018 19:31:16 +0000 (20:31 +0100)]
[C++, Go, Bazel]: Fix up Bazel support (#4672)

* Add Bazel support for Go library

* Make flatc compile again.

Was missing java_generator, which is now referenced from source.

6 years agoJava/C#/Python prefixed size support (#4445)
Robert Schmidtke [Mon, 12 Mar 2018 18:30:46 +0000 (19:30 +0100)]
Java/C#/Python prefixed size support (#4445)

* initial changes to support size prefixed buffers in Java

* add slice equivalent to CSharp ByteBuffer

* resolve TODO for slicing in CSharp code generation

* add newly generated Java and CSharp test sources

* fix typo in comment

* add FinishSizePrefixed methods to CSharp FlatBufferBuilder as well

* add option to allow writing the prefix as well

* generate size-prefixed monster binary as well

* extend JavaTest to test the size prefixed binary as well

* use constants for size prefix length

* fuse common code for getRootAs and getSizePrefixedRootAs

* pulled file identifier out of if

* add FinishSizePrefixed, GetSizePrefixedRootAs support for Python

* Revert "extend JavaTest to test the size prefixed binary as well"

This reverts commit 68be4420dda47e8d0600bb19691f03be71503a68.

* Revert "generate size-prefixed monster binary as well"

This reverts commit 2939516fdf78df4f061c627221e232b312301417.

* fix ByteBuffer.cs Slice() method; add proper CSharp and Java tests

* fix unused parameter

* increment version number

* pulled out generated methods into separate utility class

* pulled out generated methods into separate utility class for Python

* fix indentation

* remove unnecessary comment

* fix newline and copyright

* add ByteBufferUtil to csproj compilation

* hide ByteBuffer's internal data; track offset into parent's array

* test unsafe versions as well; compile and run in debug mode

* clarify help text for size prefix

* move ByteBuffer slicing behavior to subclass

* fix protection levels

* add size prefix support for text generation

* add ByteBufferSlice to csproj compilation

* revert size prefix handling for nested buffers

* use duplicate instead of slice for removing size prefix

* remove slice subclass and use duplicate for removing size prefix

* remove slice specific tests

* remove superfluous command line option

6 years agoRemove unnecessary const qualifier from cast (#4666)
Sergey Avseyev [Mon, 12 Mar 2018 15:22:17 +0000 (18:22 +0300)]
Remove unnecessary const qualifier from cast (#4666)

Const does not make sense here, and compiler actually throws warning
(error with -Werror) when you would try to compile it.

    In file included from include/flatbuffers/flexbuffers.h:24,
                     from include/flatbuffers/idl.h:26,
                     from include/flatbuffers/code_generators.h:22,
                     from src/code_generators.cpp:17:
    include/flatbuffers/util.h: In function ‘int flatbuffers::FromUTF8(const char**)’:
    include/flatbuffers/util.h:325:44: error: type qualifiers ignored on cast result type [-Werror=ignored-qualifiers]
       if ((static_cast<const unsigned char>(tmp) << len) & 0x80) return -1;  // Bit after leading 1's must be 0.
                                            ^
    cc1plus: all warnings being treated as errors

This warning caught by gcc8:

    $ g++ --version
    g++ (GCC) 8.0.1 20180222 (Red Hat 8.0.1-0.16)

6 years agoConvert to unsigned char before applying bit shift operator (#4664)
ianXian [Fri, 9 Mar 2018 17:45:47 +0000 (09:45 -0800)]
Convert to unsigned char before applying bit shift operator (#4664)

* Convert to unsigned char before applying bit shift operator

* convert to const unsigned char inline

* convert to unsigned char inline

6 years agoJson : Add --size-prefixed option to flatc (#4645)
desqaz [Fri, 9 Mar 2018 16:21:28 +0000 (17:21 +0100)]
Json : Add --size-prefixed option to flatc (#4645)

to be able to convert to json size prefixed buffers.

6 years agoSwapped the order of two conditions in an assert. (#4663)
Montoli [Thu, 8 Mar 2018 22:18:41 +0000 (14:18 -0800)]
Swapped the order of two conditions in an assert. (#4663)

An assert in flexbuffers was bit-shifting a 64-bit number by
64 bits, which throws up warnings in some automated tools.

The same assert also checks to see if the number of bytes
being shifted is 8.  Swapped the order, so that the bitshift
only occurs if the number of bits being shifted is not 64.

Should be the same behavior, but plays nicer with diagnostic
tools.

6 years agoUpdate .gitignore with Ninja stuff (#4659)
desqaz [Thu, 8 Mar 2018 18:36:27 +0000 (19:36 +0100)]
Update .gitignore with Ninja stuff (#4659)

6 years agoFix broken Java/C# codegen
Wouter van Oortmerssen [Tue, 6 Mar 2018 00:37:04 +0000 (16:37 -0800)]
Fix broken Java/C# codegen

6 years agoAdded missing generated code files.
Wouter van Oortmerssen [Mon, 5 Mar 2018 23:47:16 +0000 (15:47 -0800)]
Added missing generated code files.

Change-Id: Ie1cab284cb6e0fe5bd2b2c293c3136c148927ac3

6 years agoProtobufs: Added '--oneof-union' option. (#4647)
Nik Hemmings [Mon, 5 Mar 2018 16:45:25 +0000 (16:45 +0000)]
Protobufs: Added '--oneof-union' option. (#4647)

* Added '--oneof-union' option.

Used with the .proto -> .fbs converter, will translate protobuff oneofs to flatbuffer unions.
Updated proto test to check both methods of converting oneofs.

* Added '--oneof-union' option.

Used with the .proto -> .fbs converter, will translate protobuff oneofs to flatbuffer unions.
Updated proto test to check both methods of converting oneofs.

* FlatBuffers: Moved MakeCamel() into idl_parser.cpp

Removes library dependency on Java/C# generator code.

6 years agoMake nested flatbuffer lookup consistent. (#4656)
smillius [Mon, 5 Mar 2018 16:44:14 +0000 (17:44 +0100)]
Make nested flatbuffer lookup consistent. (#4656)

Lookup type of nested flatbuffer field with either raw name or fully qualified name as already done in the parser.
LookupCreateStruct tries both the raw name and the fully qualified one.
Without this, we cannot reference types outside of the current namespace, e.g. in a different module.