platform/upstream/flatbuffers.git
6 years agoImproved .proto conversion.
Wouter van Oortmerssen [Mon, 2 Oct 2017 22:41:34 +0000 (15:41 -0700)]
Improved .proto conversion.

- Allowed enums to be declared before use.
- Generalized parsing of `required`.
- Reworked escaping of namespaces.
- Escaping field names that are C++ keywords.
- Many smaller fixes.

Change-Id: Ie580de7b70dc208f676f4f71bb0d061808648b8d
Tested: on Linux.

6 years ago[C++] Add explicit keyword on generated constructors for Builder structs (#4452)
Aaron [Fri, 6 Oct 2017 15:50:24 +0000 (08:50 -0700)]
[C++] Add explicit keyword on generated constructors for Builder structs (#4452)

* Add explicit keyword on C++ generated constructors for Builder structs

* Add missing generated code for review

6 years agoPython: CreateByteVector function in builder. (#4453)
Robert [Fri, 6 Oct 2017 15:34:07 +0000 (08:34 -0700)]
Python: CreateByteVector function in builder. (#4453)

6 years agoFix issue #4389, if field is ommitted the return type is the same for… (#4444)
Dariusz Ostolski [Thu, 5 Oct 2017 21:07:42 +0000 (23:07 +0200)]
Fix issue #4389, if field is ommitted the return type is the same for… (#4444)

* Fix issue #4389, if field is ommitted the return type is the same for python generator

* Fix issue #4389, bytes is returned when field is omitted

* Fix issue #4389, added generated python code after generator modification

6 years agoAdd template version for As method. (#4443)
Louis-Paul CORDIER [Mon, 2 Oct 2017 21:38:38 +0000 (06:38 +0900)]
Add template version for As method. (#4443)

* Add template version for As method.

* Fix compilation error on Linux.

* Fix linux issue (2).

* Linux fix (3)

* Add few tests.

6 years agoFixed TypeTable function not being inline.
Wouter van Oortmerssen [Mon, 25 Sep 2017 18:44:58 +0000 (11:44 -0700)]
Fixed TypeTable function not being inline.

Change-Id: Id335980daf909e885ed26a21b64623b78d01fb49
Tested: on OS X.

6 years agoMade the parser not have any hard-coded keywords.
Wouter van Oortmerssen [Fri, 22 Sep 2017 21:32:07 +0000 (14:32 -0700)]
Made the parser not have any hard-coded keywords.

This prevented any keywords showing up as JSON field names, for example.

Change-Id: Ie9d0cada96778e06016ca02ca96d052410a37038
Tested: on Linux.

6 years agoAdded support for mini-reflection tables.
Wouter van Oortmerssen [Fri, 25 Aug 2017 00:44:03 +0000 (17:44 -0700)]
Added support for mini-reflection tables.

Change-Id: I83453d074685fa57bbf1c7c87b1d9392ce972085
Tested: on Linux.

6 years agoAdd constant accessors to C++ unions (#4433)
endorph-soft [Thu, 21 Sep 2017 21:06:20 +0000 (06:36 +0930)]
Add constant accessors to C++ unions (#4433)

* Add constant accessors to C++ unions

* Remove redundant const pointer return type

* Update generate_code.bat to reflect generate_code.sh

* Add updated generated files

* Remove extra space from generated code

* Update generated files

* Change directory back to tests after generating code

6 years agoFix build with clang on big-endian targets (#4440)
Khem Raj [Thu, 21 Sep 2017 15:51:08 +0000 (08:51 -0700)]
Fix build with clang on big-endian targets (#4440)

* flatbuffers: Move EndianSwap template to flatbuffers/base.h

Clang complains
call to function 'EndianSwap' that is neither visible in the template definition nor found by argument-dependent lookup
     return EndianSwap(t);

This seems to be due to limitation of two-phase lookup of dependent names in template definitions

Its not being found using associated namespaces therefore
it has to be made visible at the template definition site as well

Signed-off-by: Khem Raj <raj.khem@gmail.com>
* use __builtin_bswap16 when building with clang

clang pretends to be gcc 4.2.0 and therefore the code does
not use __builtin_bswap16 but tries to synthesize it

Signed-off-by: Khem Raj <raj.khem@gmail.com>
6 years agoidl_gen_json_schema.cpp: Fixed detection of enum types (#4438)
schoetbi [Thu, 14 Sep 2017 16:25:43 +0000 (18:25 +0200)]
idl_gen_json_schema.cpp: Fixed detection of enum types (#4438)

6 years ago[C++] Fix DetachedBuffer move assignment lifetime (#4437)
Lukas Bergdoll [Thu, 14 Sep 2017 16:22:55 +0000 (18:22 +0200)]
[C++] Fix DetachedBuffer move assignment lifetime (#4437)

* Fix DetachedBuffer move assignment lifetime

DetachedBuffer move assignment now destroys it's own content,
rather than waiting for the destructor of other.
See more under #4435

Add missing function return type

* Rename empty_assign to reset

Reset after destroy
reset() now operates on itself

6 years agoFixed .proto not being accepted as schema file.
Wouter van Oortmerssen [Tue, 12 Sep 2017 18:36:38 +0000 (11:36 -0700)]
Fixed .proto not being accepted as schema file.

Change-Id: I1ccd52a847930fa636d24f9490d57577b8775d08

6 years agoForgot to bump flatc version to 1.7.1
Wouter van Oortmerssen [Thu, 7 Sep 2017 21:35:26 +0000 (14:35 -0700)]
Forgot to bump flatc version to 1.7.1

Change-Id: I480a08f445858bce3d0336c2b22da30d64f90012

6 years agoUpdate doc (#4427)
rouzier [Thu, 7 Sep 2017 18:52:58 +0000 (14:52 -0400)]
Update doc (#4427)

6 years agoEvery type gets additionalProperties set to "false" (#4424)
schoetbi [Thu, 31 Aug 2017 15:56:04 +0000 (17:56 +0200)]
Every type gets additionalProperties set to "false" (#4424)

#4423

6 years agoC++ Customise prefix/suffix of object API [Issue #4419] (#4422)
endorph-soft [Thu, 31 Aug 2017 15:54:03 +0000 (01:24 +0930)]
C++ Customise prefix/suffix of object API [Issue #4419] (#4422)

* Allow prefix/suffix of C++ Object API classes to be customised

* Address review comments

6 years agoUpdated C# test project.
Wouter van Oortmerssen [Fri, 25 Aug 2017 18:47:19 +0000 (11:47 -0700)]
Updated C# test project.

6 years agoFixed VS memory tracking leaking into user code
Wouter van Oortmerssen [Fri, 25 Aug 2017 18:29:58 +0000 (11:29 -0700)]
Fixed VS memory tracking leaking into user code

6 years agoDisabled numpy test in appveyor due to timeout.
Wouter van Oortmerssen [Thu, 24 Aug 2017 20:46:46 +0000 (13:46 -0700)]
Disabled numpy test in appveyor due to timeout.

It pulls in a LOT of dependencies, this will need to be done better.

Change-Id: Ib27effead194f6836facca01e9454a6037ad837a

6 years agoCleaned up namespace handling.
Wouter van Oortmerssen [Thu, 24 Aug 2017 19:55:35 +0000 (12:55 -0700)]
Cleaned up namespace handling.

A Namespace object is now guaranteed unique.
This cleaned up some old workarounds and latent bugs.

Change-Id: Ic3f12d89947871b03b2c449ba51b3186f953adde
Tested: on Linux.
Bug: 21336857

6 years agoTrimmed vtables of trailing zeroes.
Wouter van Oortmerssen [Mon, 21 Aug 2017 20:44:23 +0000 (13:44 -0700)]
Trimmed vtables of trailing zeroes.

This is something the format supports, but none of the builders
were doing. Can save 10-20% on FlatBuffer binary size!

Also fixed the Go tests.

Change-Id: I616c56ce9bbcfcaee23aa24f0532fcb60b6a8c75
Tested: on Linux.

6 years agoFix use of min and max when Windows.h is imported (#4411)
Younguk Kim [Thu, 17 Aug 2017 16:35:50 +0000 (01:35 +0900)]
Fix use of min and max when Windows.h is imported (#4411)

6 years agoNoted that benchmarks are for C++
Wouter van Oortmerssen [Mon, 14 Aug 2017 23:36:42 +0000 (16:36 -0700)]
Noted that benchmarks are for C++

Change-Id: I12fbba7ffd2db47502a05eb06cedab49fd99c366

6 years agoExplained GetRoot<Monster> vs GetMonster.
Wouter van Oortmerssen [Mon, 14 Aug 2017 22:34:15 +0000 (15:34 -0700)]
Explained GetRoot<Monster> vs GetMonster.

Change-Id: Ic302096c07551b5c1aff0b261a329c46964cf337

6 years agoFixed .proto -> .fbs translating type bytes incorrectly.
Wouter van Oortmerssen [Mon, 14 Aug 2017 21:45:29 +0000 (14:45 -0700)]
Fixed .proto -> .fbs translating type bytes incorrectly.

Change-Id: Idb607360123d12c73dd1e045305007120b12131b
Tested: on Linux.

6 years agoFurther grammar.md fixes: union types, idents, string constants.
Wouter van Oortmerssen [Mon, 14 Aug 2017 19:18:06 +0000 (12:18 -0700)]
Further grammar.md fixes: union types, idents, string constants.

Change-Id: I51db0511c52c79f2b322a1fdef798b061941887b

6 years agoFixed up grammar.md with rpc's and new scalar types.
Wouter van Oortmerssen [Mon, 14 Aug 2017 18:58:25 +0000 (11:58 -0700)]
Fixed up grammar.md with rpc's and new scalar types.

Change-Id: Ie2965f48810bf24cccf098b69a9d471583efc3bf

6 years agoMissing FieldDef initializer.
Wouter van Oortmerssen [Mon, 14 Aug 2017 17:52:25 +0000 (10:52 -0700)]
Missing FieldDef initializer.

Change-Id: I5ed1f77868e201d7231102a106e08f3376b6adcf

6 years agoFixed file_identifier/extension leaking from included file.
Wouter van Oortmerssen [Mon, 14 Aug 2017 17:41:39 +0000 (10:41 -0700)]
Fixed file_identifier/extension leaking from included file.

Change-Id: I470143411e4ce6322e018a27bcc9cd40c15d9bf1
Tested: on Linux.

6 years agoCleaned up test output.
Wouter van Oortmerssen [Mon, 14 Aug 2017 16:25:40 +0000 (09:25 -0700)]
Cleaned up test output.

Change-Id: I4bec0e728cc162aa3f19091a0d154124ffbccdff

6 years agoFixed root_type leaking in from included files.
Wouter van Oortmerssen [Mon, 14 Aug 2017 16:22:12 +0000 (09:22 -0700)]
Fixed root_type leaking in from included files.

Change-Id: I9378e375901f8a883eaeb2182955d690c358ed4b
Tested: on Linux.

6 years agoC++ Add new type vector_bool flexbuffers (#4410)
rouzier [Mon, 14 Aug 2017 15:44:56 +0000 (11:44 -0400)]
C++ Add new type vector_bool flexbuffers (#4410)

* Add new type vector_bool

* Update stl_emulation.h

Fix Is same typo

* Update stl_emulation.h

6 years agoInternal doc (#4409)
rouzier [Mon, 14 Aug 2017 15:33:38 +0000 (11:33 -0400)]
Internal doc  (#4409)

* Add information about flexbuffer bool and null encoding

* Fix spelling errors

* Fix encoding example for flexbuffer map

6 years agoAdded VS crtdbg memory leak tracking
Wouter van Oortmerssen [Fri, 11 Aug 2017 19:24:33 +0000 (12:24 -0700)]
Added VS crtdbg memory leak tracking

6 years agoAdded missing generated code.
Wouter van Oortmerssen [Fri, 11 Aug 2017 16:28:06 +0000 (09:28 -0700)]
Added missing generated code.

Change-Id: I7201d6891f56094178656a76bf0f87cf36d12554

6 years agoVector of unions for TS/JS and PHP (#4404)
Kamil Rojewski [Fri, 11 Aug 2017 16:24:36 +0000 (18:24 +0200)]
Vector of unions for TS/JS and PHP (#4404)

* 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

6 years agoCopying required field to union type vector (#4407)
Kamil Rojewski [Fri, 11 Aug 2017 16:19:28 +0000 (18:19 +0200)]
Copying required field to union type vector (#4407)

* 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

* Copying required field to union type vector

* Removed unneccessary bool

6 years agoMake flatc not silently skip schema files not ending in .fbs
Wouter van Oortmerssen [Thu, 10 Aug 2017 23:28:31 +0000 (16:28 -0700)]
Make flatc not silently skip schema files not ending in .fbs

Change-Id: I58463b321703b2ef0dc3f3062633909b86eca1a9
Tested: on Linux.

6 years agoMake it an error if a field has the same name as a table.
Wouter van Oortmerssen [Thu, 10 Aug 2017 21:22:03 +0000 (14:22 -0700)]
Make it an error if a field has the same name as a table.

Change-Id: Ie5a3bb5a3643cd48e1cc75fe170a7b8a7c2cc8ed
Tested: on Linux.

6 years agoForgot to update pom.xml in recent 1.7.1 release.
Wouter van Oortmerssen [Thu, 10 Aug 2017 18:35:58 +0000 (11:35 -0700)]
Forgot to update pom.xml in recent 1.7.1 release.

Change-Id: Ia6d6967546c0a2a5340a93e54c46d2630fff92fe

6 years agoMisc documentation fixes.
Wouter van Oortmerssen [Thu, 10 Aug 2017 18:25:13 +0000 (11:25 -0700)]
Misc documentation fixes.

Change-Id: Id7be5baba7d8a11ca050e8d94d95857406690378

6 years agoFixed clang-tidy warnings.
Wouter van Oortmerssen [Mon, 7 Aug 2017 22:33:36 +0000 (15:33 -0700)]
Fixed clang-tidy warnings.

Change-Id: Ib94ef29254c116b60e4ff298baa2ce323ac9655c
Tested: on Linux.

6 years agoAdded missing generated code from past commits.
Wouter van Oortmerssen [Mon, 7 Aug 2017 21:55:05 +0000 (14:55 -0700)]
Added missing generated code from past commits.

Change-Id: I43e8de5a2ac224836a79661cc03bf37ac6d509fe

6 years agoLinked to Mikkel's binary format documentation.
Wouter van Oortmerssen [Mon, 7 Aug 2017 21:53:54 +0000 (14:53 -0700)]
Linked to Mikkel's binary format documentation.

Change-Id: I5054e37833d59bbe925cac2000a453fbee8ef54b

6 years agoPublic accessor for buffer size of flexbuffers::Builder
Wouter van Oortmerssen [Mon, 7 Aug 2017 20:24:42 +0000 (13:24 -0700)]
Public accessor for buffer size of flexbuffers::Builder

Change-Id: Iff7895aebeba9c2940e26a3edbdf2d3f1b0d9b17

6 years ago[c++] Add support for boolean types in flexbuffers (#4386)
rouzier [Fri, 4 Aug 2017 15:04:28 +0000 (11:04 -0400)]
[c++] Add support for boolean types in flexbuffers (#4386)

* Add support for boolean types in flexbuffers

* Simplify casting number <=> boolean

* Added comments for tests

* Add proper support for Booleans

* Bad rebase

* No special case for strings

* Removed unused test

* Simplify logic

6 years agoAdd scalar type aliases for int8, uint8, ..., f32, f64 (#4400)
MikkelFJ [Wed, 2 Aug 2017 15:07:43 +0000 (17:07 +0200)]
Add scalar type aliases for int8, uint8, ..., f32, f64 (#4400)

* Add type aliases

* Add generated code

* Rebase master

6 years ago[Python] (scalar) vector reading speedup via numpy (#4390)
Kevin Rose [Tue, 1 Aug 2017 15:34:00 +0000 (10:34 -0500)]
[Python] (scalar) vector reading speedup via numpy (#4390)

* Add numpy accessor to python flatbuffers scalar vectors

* Update python tests to test numpy vector accessor

* Update appveyor CI to run Python tests, save generated code as artifact

* Update example generated python code

* Add numpy info to python usage docs

* Update test schema and python tests w/ multi-byte vector

* did not mean to push profiling code

* adding float64 numpy tests

6 years agoAdded support for nested flatbuffers serializing to json (#4391)
Christian Helmich [Fri, 28 Jul 2017 17:27:51 +0000 (02:27 +0900)]
Added support for nested flatbuffers serializing to json (#4391)

* added bool for nested_flatbuffer
setting bool flag nested_flatbuffer according to attributes
setting nested type

* added JSON serialization for nested flatbuffers

* simplified lookup of nested_flatbuffer StructDef

* added nested_flatbuffer parsing workound relying on flexbuffers

* moved nested flatbuffer parsing into its own function for clarity
removed flexbuffers workound to simplify and speed up nested_flatbuffer parsing
added support for 'legacy' nested_flatbuffers, ubyte arrays

* inlined functions for nested parser init/clean since only used once

* whitespace formatting

* changed type of FieldDef.nested_flatbuffer from bool to StructDef*
removed subsequent type lookups

* removed copies of unrequired data when initializing nested parser

* applied changes requested by reviewer

* removed superfluous lookup of nested_flatbuffer field attributes

* renamed camelCased variables to snake_case

6 years agoAdding accessors for IsBlob and Blob.data (#4398)
Manuel Kroiss [Thu, 27 Jul 2017 16:06:02 +0000 (17:06 +0100)]
Adding accessors for IsBlob and Blob.data (#4398)

6 years agoMerge pull request #4395 from stewartmiles/master
Stewart Miles [Mon, 24 Jul 2017 22:35:16 +0000 (15:35 -0700)]
Merge pull request #4395 from stewartmiles/master

Test case for CreateVectorOfStructs() using a callback.

6 years agoTest case for CreateVectorOfStructs() using a callback.
Stewart Miles [Mon, 24 Jul 2017 21:11:59 +0000 (14:11 -0700)]
Test case for CreateVectorOfStructs() using a callback.

Fixes issue #4392, also fixed C++98 compatible code generation in tests.

Change-Id: Ia5833026e615ad19d24a0439bdba2e3b45c5f86c

6 years agoforwarding IDLOptions.strict_json to flexbuffers .ToString() (#4394)
Christian Helmich [Mon, 24 Jul 2017 16:33:40 +0000 (01:33 +0900)]
forwarding IDLOptions.strict_json to flexbuffers .ToString() (#4394)

6 years agoMerge pull request #4383 from stewartmiles/master
Stewart Miles [Thu, 20 Jul 2017 19:24:38 +0000 (12:24 -0700)]
Merge pull request #4383 from stewartmiles/master

C++98 (stlport) support for core FlatBuffers and FlexBuffers.

6 years agoC++98 (stlport) support for core FlatBuffers and FlexBuffers.
Stewart Miles [Thu, 13 Jul 2017 13:27:39 +0000 (06:27 -0700)]
C++98 (stlport) support for core FlatBuffers and FlexBuffers.

* Added internal - limited - implementation of flatbuffers::unique_ptr
  for STLs that don't ship with std::unique_ptr.  In C++11 and beyond
  this is just an alias for std::unique_ptr.
* Aliased used type traits structs is_scalar is_floating_point is_unsigned
  into flatbuffers namespace so they can be replaced in C++98 implementations.
  Right now these point at stlport's TR1 implementations.
* Wrapped vector::data() in vector_data().
* Wrapped vector::emplace_back() in vector_emplace_back().
* Wrapper string::back() in string_back().
* Added variants of FlatBufferBuilder::CreateVector() and
  FlatBufferBuilder::CreateVectorOfStructs() that allow the use of plain
  function pointers.
  Generated code has also been modified to use plain functions to build objects
  rather than std::function() so all generated code will work in C++98
  applications.
* Added flexbuffers::Builder::Vector(), flexbuffers::Builder::TypedVector()
  and flexbuffers::Builder::Map() methods that allow the use of plain function
  pointers.
* Changed Parser to internally use plain function pointers when parsing table
  and vector delimiters.
* Added specializations of NumToString() for 64-bit types that aren't supported
  by stringstream in stlport.
* Overloaded numeric_limits for 64-bit types not supported by stlport.
* Replaced build_apk.sh (which was broken by deprecation of the
  "android" tool in the Android SDK) with build.gradle and the
  appropriate gradle wrapper to build an APK.
* Switched Android build to build against all STL variants.
* Updated travis configuration to build Android test and sample.

Tested:
* Verified all tests continue to work on Linux, OSX and Android.
* Verified Travis build is green.

Change-Id: I9e634363793f85b9f141d21454b10686020a2065

7 years agoidl_parser.cpp ignores $schema in input json (#4382)
schoetbi [Wed, 19 Jul 2017 15:58:48 +0000 (17:58 +0200)]
idl_parser.cpp ignores $schema in input json (#4382)

* idl_parser.cpp ignores $schema in input json
#4381

* idl_parser.cpp: Fixed ci error signed unsigned comparison

* idl_parser.cpp: replaced case insensitive search for $schema with case sensitive search

* idl_parser.cpp: Expecting a string constant after $schema
#4382

7 years agoJava: Added ByteBufferFactory interface and sizedInputStream method. (#4379)
Alex Wasserman [Thu, 13 Jul 2017 15:33:32 +0000 (10:33 -0500)]
Java: Added ByteBufferFactory interface and sizedInputStream method. (#4379)

The ByteBufferFactory interface gives the user an option to specify
the method in which the internal ByteBuffer is allocated. This provides
flexibility in the type of ByteBuffer that can be used.
The sizedInputStream method is an alternative to sizedByteArray that
does not make a copy of the data in memory.

7 years agoJson schema (#4369)
schoetbi [Mon, 10 Jul 2017 15:05:59 +0000 (17:05 +0200)]
Json schema (#4369)

* Added empty generator for json schema (idl_gen_json_schema.cpp)
#4360

* JsonSchemaGenerator: output of tables implemented

current problems:
- typenames are not correct
- array types need to be deduced

#4360

* JsonSchemaGenerator: Corrected generation of typenames
Current problems: enum types not written correctly
#4360

* JsonSchemaGenerator: Added generation of enum types
#4360

* idl_gen_json_schema.cpp: Write required properties to schema
#4360

* idl_gen_json_schema.cpp: Export Types including namespace
#4360

* idl_gen_json_schema.cpp: Fixed Json format
#4360

* idl_gen_json_schema.cpp: Formatted according to google code style
#4360

* Checked in monster_test.bfbs with changes from master

* Added idl_gen_json_schema.cpp in CMakeLists.txt

* generate_code.bat: Added generation of json schema

* Added todo.md

* generate_code.sh: Added generation of json schema

* Addressed some review issues
- removed command line arg -S
- removed new lines
- fixed codestyle in template functions
- removed usage of stringstream
- idented json schema
#4360

* removed auto in idl_gen_json_schema.cpp

* idl_gen_json_schema.cpp: changed iterator declarations to auto
#4360

* deleted todo.md

* idl_gen_json_schema.cpp: Removed keyword "override" so that vs2010 can compile

* idl_gen_json_schema.cpp: switch statement in GenType handeles all enum-members

* idl_gen_json_schema.cpp: Removed cerr output

* idl_gen_json_schema.cpp: Avoid vector copying

* idl_gen_json_schema.cpp: Fixed identation of json schema output

* idl_gen_json_schema.cpp: Do not output empty descriptions

7 years agoMake inter-file cycles compile (#4364)
Robbie McElrath [Mon, 26 Jun 2017 16:07:02 +0000 (09:07 -0700)]
Make inter-file cycles compile (#4364)

7 years agoMake flatbuffers work with ArduinoSTL (#4357) (#4361)
Andrei Stoica [Wed, 21 Jun 2017 15:26:37 +0000 (17:26 +0200)]
Make flatbuffers work with ArduinoSTL (#4357) (#4361)

*Keep legacy compatibility with StandardCplusplus lib (utility.h)

7 years agoAvoiding wrong template specialization on new CreateVector v1.7.1
Wouter van Oortmerssen [Tue, 20 Jun 2017 16:40:10 +0000 (09:40 -0700)]
Avoiding wrong template specialization on new CreateVector

Change-Id: I0da57cc71318ea13c10b547e2dfe3a2d4f32b4d9
Tested: on OS X.

7 years agoUpdated version numbers to 1.7.0 v1.7.0
Wouter van Oortmerssen [Fri, 16 Jun 2017 23:15:02 +0000 (16:15 -0700)]
Updated version numbers to 1.7.0

Change-Id: If2802ca48b61cfa7e5ec131e2a268400523217e2

7 years agoOptimize CreateVector for types > 1 byte on little endian (#4355)
Christopher Berner [Fri, 16 Jun 2017 22:29:47 +0000 (15:29 -0700)]
Optimize CreateVector for types > 1 byte on little endian (#4355)

This gives a 10x speed up in my test, when creating a Vector of floats

7 years agoAdded move assignment operator to DetachedBuffer.
Wouter van Oortmerssen [Fri, 16 Jun 2017 22:04:42 +0000 (15:04 -0700)]
Added move assignment operator to DetachedBuffer.

Change-Id: I4610946ac27d9d0d73c2fc2e4834bd2cfed88cdc
Tested: on Linux.

7 years agoAdding a method to get the file identifier from a flatbuffer.
Wouter van Oortmerssen [Fri, 16 Jun 2017 19:30:36 +0000 (12:30 -0700)]
Adding a method to get the file identifier from a flatbuffer.

Change-Id: Ie28fd1f0b463aac23647d38921600f15c8b7c10a

7 years agoInitial support for parsing (and generating) Protobuf ASCII.
Wouter van Oortmerssen [Fri, 16 Jun 2017 18:57:58 +0000 (11:57 -0700)]
Initial support for parsing (and generating) Protobuf ASCII.

Change-Id: I955b4b3eed27f26773d7dc0acceff13c88d1333d
Tested: on Linux.

7 years agoAdded convenient schema registry.
Wouter van Oortmerssen [Fri, 16 Jun 2017 03:54:04 +0000 (20:54 -0700)]
Added convenient schema registry.

Change-Id: I9d71375059369fbc538d0d051d8d2885e467bf29
Tested: on Mac OS X.

7 years agoFixed missing lambda return type.
Wouter van Oortmerssen [Fri, 16 Jun 2017 16:52:59 +0000 (09:52 -0700)]
Fixed missing lambda return type.

Change-Id: I48d41a240c8bf362b1f931f20a3ed9ae64f2d295

7 years agoFixed build error in Visual Studio 2017 (#4353)
Stephen Lane-Walsh [Fri, 16 Jun 2017 16:53:53 +0000 (12:53 -0400)]
Fixed build error in Visual Studio 2017 (#4353)

flatbuffers.h(591): error C2220: warning treated as error - no 'object' file generated
flatbuffers.h(591): warning C4267: 'return': conversion from 'size_t' to 'flatbuffers::uoffset_t', possible loss of data

7 years agogRPC: fix memory leak (#4351)
Lawrence Chan [Tue, 13 Jun 2017 15:50:27 +0000 (10:50 -0500)]
gRPC: fix memory leak (#4351)

SerializationTraits<T>::Deserialize _transfers_ ownership of the buffer,
so we must destroy it.

This commit also includes some misc fixes:
- Use grpc::Status::OK rather than default ctor for clarity.
- Check for a null buffer passed into Deserialize, and handle it the
  same way as the protobuf deserializer.

7 years agoAdded (nested) FlexBuffer JSON parsing and output.
Wouter van Oortmerssen [Tue, 6 Jun 2017 00:45:44 +0000 (17:45 -0700)]
Added (nested) FlexBuffer JSON parsing and output.

FlexBuffer parser is just 40 lines of code (on top of existing parser!).

Change-Id: Idebebadafb661ca5333f5621139031f6df3c3e1a
Tested: on Linux.

7 years agoAdded nested FlexBuffer parsing
Wouter van Oortmerssen [Fri, 2 Jun 2017 23:41:22 +0000 (16:41 -0700)]
Added nested FlexBuffer parsing

Change-Id: I918b66eb5646d035e3aae675f745802eb54b03ea

7 years agoFix memory leak in Message move operator (#4344)
Christopher Berner [Mon, 12 Jun 2017 18:23:55 +0000 (11:23 -0700)]
Fix memory leak in Message move operator (#4344)

7 years ago[cpp] Json parsing: adding support for parsing nested lists and top level lists ...
Guillaume Giraud [Wed, 7 Jun 2017 23:58:19 +0000 (01:58 +0200)]
[cpp] Json parsing: adding support for parsing nested lists and top level lists (#4338)

* Extended json parsing capability: add support for parsing nested lists and top level lists

* Stylistic conformance with surrounding code + generalized comments

* More code tidy-up for stylistic conformance with surrounding code

* Blank lines

* Reverted changes related to top-level list parsing

* Styling: newline before else

* Taking out ProcessTableFields which is no longer needed as the top level list change was reverted.

7 years ago[C++] Remove std::iterator usage (#4340) (#4341)
Stephan T. Lavavej [Wed, 7 Jun 2017 23:26:06 +0000 (16:26 -0700)]
[C++] Remove std::iterator usage (#4340) (#4341)

* [C++] Remove std::iterator usage (#4340)

Inheriting from std::iterator has never been required, and it's
deprecated in C++17. It can be replaced by directly providing typedefs.

Include <iterator> for std::random_access_iterator_tag.

Note that structs default to public access control.

* [C++] Change whitespace style in typedefs.

7 years ago[C++] Improve flatbuffers + gRPC integration (#4310)
Lawrence Chan [Wed, 7 Jun 2017 20:56:49 +0000 (15:56 -0500)]
[C++] Improve flatbuffers + gRPC integration (#4310)

* Rework flatbuffers + gRPC integration

- Introduce `flatbuffers::grpc::Message<T>`, a `grpc_slice`-backed
message buffer that handles refcounting and allows flatbuffers to
transfer ownership to gRPC efficiently. This replaces
`flatbuffers::BufferRef<T>`, which required a copy call and was also
unsafe w.r.t. buffer lifetime.
- Introduce `flatbuffers::grpc::MessageBuilder`, a gRPC-specific builder
that forces a `grpc_slice`-backed allocator and also adds some helpful
`Message<T>`-related methods.
- Update serializers accordingly (now zero-copy between flatbuffers and
gRPC).

* gRPC: verify messages by default, but allow user to override

* gRPC: fix some formatting issues

* Disable verification by default, but add helper method

* Make FlatBufferBuilder fields protected + remove vec accessor

* Use bool add_ref parameter to toggle refcount incr

* Remove unnecessary inline specifiers

* Fix formatting

* Use auto

* Remove empty lines

* Use grpc_slice helper macros

* Simplify reset code

* Disable Message copy ctor and assignment by default

* Remove unused member

* Enable gRPC verification by default

* Use auto

* Bake in message verification (remove template specialization)

* Add RoundUp func

* Consolidate gRPC message copy flag

* Make vector_downward allocations fully lazy

* Test message verification failure code/message

* Add grpctest verification test comments

* Simplify reallocate implementation

* Make initial_size a size_t

* Use ternary op for growth_policy

* Use truthiness rather than dont explicit nullptr check

* Indent preprocessor directives

* Remove grpc message copy/assignment

* Fix a few bugs

* Add gRPC example

* Add basic gRPC docs

* Use doxygen EXAMPLE_PATH + @include

* Reference example fbs in grpc docs

* Move gRPC examples into grpc/samples

* Fix pointer/reference formatting

* Use std::function rather than templated callback func

* Create fresh message builder for each request

* Use Clear() in Reset() impl

* Use FLATBUFFERS_CONSTEXPR

7 years agoGenerate a C++ function for EnumValues{{ENUM_NAME}} (#4337)
rufeooo [Wed, 7 Jun 2017 20:49:56 +0000 (13:49 -0700)]
Generate a C++ function for EnumValues{{ENUM_NAME}} (#4337)

* enables "for each" logic on enumeration types

7 years ago[C++] Remove std::move around a raw pointer in flatbuffers.h (#4339)
vabr-g [Mon, 5 Jun 2017 17:33:04 +0000 (19:33 +0200)]
[C++] Remove std::move around a raw pointer in flatbuffers.h (#4339)

* Remove std::move around a raw pointer

Calling std::move on a raw pointer has no advantage to just copying its value. Moreover, it is confusing, because it indicates that the argument is movable in some non-trivial way (e.g., is it actually meant to be a smart pointer?). More context in https://crbug.com/729393.

* Remove the move constructor altogether

7 years agoDisallowing field name same as table name.
Wouter van Oortmerssen [Fri, 2 Jun 2017 22:55:02 +0000 (15:55 -0700)]
Disallowing field name same as table name.

Change-Id: I4b5d822cc4eda975949d1b7cf33674c5bbf9d4b1
Tested: on Linux.

7 years agoAdded test for nested FlatBuffers functionality.
Wouter van Oortmerssen [Fri, 2 Jun 2017 18:26:37 +0000 (11:26 -0700)]
Added test for nested FlatBuffers functionality.

Also fixed that the parsing test wasn't calling the buffer
testing function.

Change-Id: I5baae071bf0832c7797b4ef1d19d9b015e3ff5bc
Tested: on Linux.

7 years agorefactor flatbuffers.h and util.h so FlexBuffers do not depend on flatbuffers.h ...
AntonYudintsev [Fri, 2 Jun 2017 17:26:11 +0000 (20:26 +0300)]
refactor flatbuffers.h and util.h so FlexBuffers do not depend on flatbuffers.h (#4331)

FlexBuffers are actually completely unrelated to FlatBuffers and can be used separately.
However, since they utilize several utility functions from flatbuffer.h, they require this header file, which creates unreasonable dependency.
By moving those utility functions to separate base header, both libraries can use same code but still be independent

7 years agoTrack included files in PATH-agnostic way. (#4329)
Pavel Kalinnikov [Fri, 2 Jun 2017 15:50:18 +0000 (17:50 +0200)]
Track included files in PATH-agnostic way. (#4329)

* Track included files in PATH-agnostic way.

Use full paths as keys in the map of included files. Store logical
include path as a value, in order to put it to the generated file.

* Fix tests by accepting null |include_filename|.

* Fix self-includes code generators.

7 years agoFixed --keep-prefix functionality.
Wouter van Oortmerssen [Wed, 24 May 2017 22:21:26 +0000 (15:21 -0700)]
Fixed --keep-prefix functionality.

Changing to keep include prefixes had two side effects: the main
file being parsed wasn't filtered out anymore, and include directory
paths would be added to the path in the include statement.

Also moved the include_test*.fbs files to sub directories so we
can actually test the handling of -I etc.

tested: on Linux.

Change-Id: Ibae095cea7ab0cccbac15cfb5171719f6b5cad8c

7 years ago[C++] Improve Allocator handling (#4312)
Lawrence Chan [Wed, 24 May 2017 20:55:15 +0000 (15:55 -0500)]
[C++] Improve Allocator handling (#4312)

* Improve Allocator handling

- Templatize Allocator on vector_downward, and make it own the allocator
instance so it can manage lifetimes.
- Templatize + rename FlatBufferBuilderT accordingly, and add a typedef
to FlatBufferBuilder so old code continues to work.
- Fix some issues with the release deleter
- More details in github issue #4311

* Fix constexpr for older MSVC

* Reimplement allocator improvements via inheritance

Instead of templates, use an abstract base class and some unique_ptrs to
implement the new and improved allocator.

* Fix misplaced newline

* Add missing override keyword

* Add macro for func delete to support older compilers

* Explicitly move BufferDeleter (maybe fixes VS 10?)

* Revert previous attempt at VS10 fix

* Try yet another workaround for MS 10

* Use FLATBUFFERS_NOEXCEPT macro

* Add FLATBUFFERS_OVERRIDE macro

* Fix some issues with MSVC 16 hack

* Remove dep on unique_ptr

* Update DEPRECATED macro with a message

* Sigh, no delegating ctors before c++11

* Fix simple_allocator stub

* Relax FlatBufferBuilder ctor

* Add vector_downward reset + assert in clear

* Rename DetachedBuffer to FlatBuffer + remove unnecessary deprecations

* Add flatbuffers::FlatBufferBuilder::Release()

* Address remaining allocator-improvements comments

7 years agoSome code in the samples and docs still used old C# API.
Wouter van Oortmerssen [Mon, 22 May 2017 22:13:20 +0000 (15:13 -0700)]
Some code in the samples and docs still used old C# API.

Change-Id: I7914c88ad7b31baa7586771423069dc2b90d534f
Tested: on Linux.

7 years agoStandardized internal path handling on Posix separators.
Wouter van Oortmerssen [Fri, 19 May 2017 00:18:43 +0000 (17:18 -0700)]
Standardized internal path handling on Posix separators.

There were several possible bugs involving paths not being
recognized as being the same on Windows. Rather than trying
to ensure all code deals with / and \ correctly, paths now
get transformed to / on input, fixing all current and
future such bugs.

Tested: on OS X.

7 years agoFix for invalid null returns (#4318)
Kamil Rojewski [Thu, 18 May 2017 17:30:30 +0000 (19:30 +0200)]
Fix for invalid null returns (#4318)

* 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

7 years agoadded check for presence of required fields. (flatc) c++ (#4316)
sfariv [Thu, 18 May 2017 16:32:04 +0000 (09:32 -0700)]
added check for presence of required fields. (flatc) c++ (#4316)

* added check for presence of required fields.

* updates to resolve Travis CI build error.

* fixes for resolving appveyor build errors.

* fixes for resolving appveyor build errors.

* fixes for resolving appveyor build errors.

* updates per aardappel's comments.

* updated a variable's name.

* updates per aardappel's comments.

7 years agoC#: Added <autogenerated> in cs generator file header comment (#4291)
schoetbi [Tue, 16 May 2017 21:28:34 +0000 (23:28 +0200)]
C#: Added <autogenerated> in cs generator file header comment (#4291)

* Added <autogenerated> in cs generator file header comment
#4287

* CS: Added xml-correct file header comment including "<auto-generated>...</auto-generated>"
code_generators.cpp: FlatBuffersGeneratedWarning() function replaced by compile time constant "GeneratedWarning"
 also removed extra newlines at end of GeneratedWarning to be able to generate a xml well formed file comment for cs files
#4291

* code_generators: Changed static string GeneratedWarning back to function FlatBuffersGeneratedWarning()
#4291

* Added modified Unit-Test files
#4291

* idl_gen_general: Add autogenerated only in C# code
#4291

7 years agoMade root test path configurable.
Wouter van Oortmerssen [Mon, 15 May 2017 23:57:39 +0000 (16:57 -0700)]
Made root test path configurable.

Change-Id: I9629a7648f0c3346c4724ca8938fed47d7828018
Tested: on Linux.

7 years agoUpdated tutorial with a vector of structs example.
Wouter van Oortmerssen [Mon, 15 May 2017 20:40:19 +0000 (13:40 -0700)]
Updated tutorial with a vector of structs example.

Since it wasn't documented and very different from a vector of
tables, this has caused a lot of confusion in the past.

Change-Id: Iab47c61b55c19abe5c4f25c86d71335a6b6321ca

7 years agoMade codegen always output a file, even on an empty schema.
Wouter van Oortmerssen [Fri, 12 May 2017 22:58:26 +0000 (15:58 -0700)]
Made codegen always output a file, even on an empty schema.

Previously, we had a check to simply skip such files, but this
tends to make build systems unhappy.

This only affects C++ and JS, since other language output per-class
files.

Change-Id: I54224642725bbafb9f6e1654ed3693e62ca9f7d7
Tested: on Linux.

7 years ago[C++] Fix code gen indentation when empty Print (#4313)
Lawrence Chan [Fri, 12 May 2017 21:36:35 +0000 (16:36 -0500)]
[C++] Fix code gen indentation when empty Print (#4313)

* Fix C++ code gen indentation when empty Print

* Also commit modified tests/monster_test.bfbs

7 years agoAdding support for s390x (#4297)
akamat-ibm [Fri, 12 May 2017 17:12:19 +0000 (22:42 +0530)]
Adding support for s390x (#4297)

* changes to support s390x

* added flag for s390x

* Adding support for Linux s390x

7 years agoC++/Go: Update gRPC related code to work with gRPC 1.3+ (#4305)
Per Grön [Fri, 12 May 2017 16:48:17 +0000 (18:48 +0200)]
C++/Go: Update gRPC related code to work with gRPC 1.3+ (#4305)

* Don't fail the build on unused parameters

gRPC headers have unused parameters so this breaks the test build.

* Pull in updated compiler files from gRPC

There have been some API breaks in gRPC lately. This commit
pulls in the most recent version of the files in this repo
that are just copied from gRPC.

* Modify the gRPC files so that they can work with Flatbuffers

The files taken from gRPC do not work out-of-the-box with Flatbuffers.
This commit modifies them so that they work. Hopefully this commit
will be able to serve as a guide or maybe even be cherry-picked on
top of new versions of those files as newer versions from gRPC are
pulled in.

* Adjust the rest of Flatbuffers to work with the new gRPC

* Change idl_gen_grpc.cpp to work with the new API
* Add missing #include in flatbuffers/grpc.h
* Run tests/generate_code.sh and check in the results
* Don't link with grpc++_unsecure and (secure) grpc. That's just weird

* Revert unrelated JS/TS test changes

* Simplify compiler/config.h

There is no need to import this file from gRPC. In fact, it probably
makes sense to not do so, since it seems to be intended to have
project specific configuration in it.

* Don't emit C++ types in the Go gRPC code generator

* Don't emit C++ #includes in generated gRPC code

Before this PR, there was a Go-specific additional_includes method
in schema_interface.h, which is shared with the gRPC repo. The
additional parameter to FlatBufFile in idl_gen_grpc.cpp makes that
unnecessary, which means we need less Flatbuffer-specific changes
in gRPC.

7 years agoReverting part of PR #4286
Wouter van Oortmerssen [Thu, 11 May 2017 01:04:53 +0000 (18:04 -0700)]
Reverting part of PR #4286

This is because it trips up the Closure compiler with errors like:

ERROR - assignment to property bb of SomeTable
found : undefined
required: (flatbuffers.ByteBuffer|null)
this.bb = undefined;
^^^^^^^^^^^^^^^^^^^

Change-Id: Iaf032b5249ec655e151331e81532e549c12bcd78

7 years agoRemoved unnecessary check for Offset in AssertScalarT()
Wouter van Oortmerssen [Thu, 11 May 2017 01:00:27 +0000 (18:00 -0700)]
Removed unnecessary check for Offset in AssertScalarT()

This will avoid it accidentally accepting structs of size 4.

Change-Id: I251285ae1e4bffb859367dcf89562741a3980bba
Tested: on Linux.

7 years agoAdded error message for union values out of range.
Wouter van Oortmerssen [Thu, 11 May 2017 00:21:47 +0000 (17:21 -0700)]
Added error message for union values out of range.

Change-Id: I481afcde6a554d1cad519ff95acac7f38a7f4ee5
Tested: on Linux.

7 years agocleaning up JavaTest.sh - quote paths, and less error-prone deletion (#4301)
Travis Wellman [Wed, 10 May 2017 23:45:08 +0000 (16:45 -0700)]
cleaning up JavaTest.sh - quote paths, and less error-prone deletion (#4301)