* 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.
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
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)
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.
* 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.
* added intended use-cases to monster_test.fbs
* added check for `cpp_ptr_type` on hashed fields
added default value 'naked' to `cpp_ptr_type` on hashed fields
* added C++ generation of cpp_type vectors
removed ctor call for vector fields
added condition !vector for cpp_type check
added Pack() and UnPack() code generation for vector of hashes
added generation of correct resolve/rehash for cpp_type elements
* added attribute 'cpp_ptr_type_get' to hold accessor for pointer types possible where '.get()' does not work
use case: cpp_ptr_type:"std::weak_ptr", cpp_ptr_type_get:".lock().get()"
* run flatc to re-generate headers
* added bool param is_ctor to GetDefaultScalarValue() to differentiate between usage places
* modified monster_test.fbs to remove usage of shared_ptr/weak_ptr
reason: STLport does not support std::shared_ptr and std::weak_ptr
* run flatc again to re-generate headers
* fixed symbol unique_ptr not in namespace std when building with STLport
It was missing some helpers when we choose to use
size prefixed FlatBuffers.
* Add general helper : GetPrefixedSize
* Add generated helpers :
* GetSizePrefixedXXX
* VerfifySizePrefixedXXXBuffer
* FinishSizePrefixedXXXBuffer
- Fixed ForceVectorAlignment (and possibly other call-sites) not
setting minalign_.
- Fixed flipped alignment parameters in CopyTable (reflection).
- Made aligment for FlatBufferBuilder internal buffer configurable
(useful when reading a constructed buffer directly).
- Ensured Alignment rounding is always up.
Change-Id: I33ca4887d92a09cb11a369c14a109f4b07ae707a
Tested: on Linux.
Some implementations (e.g. C++98) won't support 64-bit enum values,
but there is no reason to silently truncate them.
Change-Id: I8629563523a96e887068f9c0efcd53741f60e0d6
Tested: on Linux.
Date: Mon Jan 15 11:38:20 2018 -0200
Compilation failure with grpc.h
If cmake run with flag FLATBUFFERS_BUILD_GRPCTEST=ON
compilation fails.
Fix :
-Fix argument list for overriden function in grpc.
-Fix member function name called by FlatBufferBuilder from
buf() to scratch_data()
Previously, FlatBufferBuilder used 3 resizable buffers:
- serialization (vector_downward)
- field offsets (std::vector)
- vtable offsets (std::vector)
Since the serialization buffer grows downwards, the bottom part of
it can be used as a "scratchpad" storage for the other two. Since
field offsets are only accumulated during table construction, and
vtable offsets only after table construction, the two can trivially
share the same storage.
Not only does this reduce the amount of allocation, it also removes
the bulk of std::vector usage from FlatBufferBuilder which was
the #1 cause of slow-down in debug mode, see e.g.:
https://stackoverflow.com/questions/36085285/any-way-to-improve-flatbuffer-performance-in-debug-c-msvc
Change-Id: I0224cf2f2a863d2d7ef762bc9163b52fdc149522
Tested: on Linux.
Without this change, the compiler tries to select the following overload
when CreateString is passed a `char *`:
template<typename T>
Offset<String> CreateString(const T &str) {
return CreateString(str.c_str(), str.length());
}
which is not valid since char pointers don't have methods.
(Fixes#4579)
Signed-off-by: Andrew Gunnerson <chenxiaolong@cxl.epac.to>
* grpc bindings generator for Java and a few minor supporting changes in improvements
* restored formatting before my previous changes for ease of review
* Fixed grpc java code generation bug resulting in duplicate extractor declarations in case the same is used in more than a single RPC method
In some debug environments using vector[i] does bounds checking even
though the standard specifies that it should not. Using
*(vector.begin()) sidesteps this though, giving the same result without
the bounds checking.
This CL also introduces the following changes to allow the generation of the
Go library for flatbuffers:
- add support for --gen-onefile for Go to simplify the build rule (mapping each
input .fbs to a single separate .go file)
- add a new --go-import flag to override the default import line (currently
github.com/google/flatbuffers/go)
- add new go_library in BUILD for flatbuffer (for files in flatbuffers/go)
(mirrored from cr/171126159)
Change-Id: I83e705a9a9d9544837af0baf9366ec37757799aa
- 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.
* 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>
* 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