Commit f0f0efe7 authored by Derek Bailey's avatar Derek Bailey Committed by Wouter van Oortmerssen

[C++] Refactor to conform to Google C++ style guide (#5608)

* Automatic refractor of C++ headers to Google C++ style guide

* Automatic refractor of C++ source to Google C++ style guide

* Automatic refractor of C++ tests to Google C++ style guide

* Fixed clang-format issues by running clang-format twice to correct itself. Kotlin was missing clang-format on after turning it off, so it was changed,
parent e837d5a2
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include <map> #include <map>
#include <sstream> #include <sstream>
#include "flatbuffers/idl.h" #include "flatbuffers/idl.h"
namespace flatbuffers { namespace flatbuffers {
...@@ -95,8 +96,7 @@ class BaseGenerator { ...@@ -95,8 +96,7 @@ class BaseGenerator {
protected: protected:
BaseGenerator(const Parser &parser, const std::string &path, BaseGenerator(const Parser &parser, const std::string &path,
const std::string &file_name, const std::string &file_name, std::string qualifying_start,
std::string qualifying_start,
std::string qualifying_separator) std::string qualifying_separator)
: parser_(parser), : parser_(parser),
path_(path), path_(path),
......
This diff is collapsed.
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <functional> #include <functional>
#include <limits> #include <limits>
#include <string> #include <string>
#include "flatbuffers/flatbuffers.h" #include "flatbuffers/flatbuffers.h"
#include "flatbuffers/idl.h" #include "flatbuffers/idl.h"
#include "flatbuffers/util.h" #include "flatbuffers/util.h"
......
...@@ -339,12 +339,12 @@ class Map : public Vector { ...@@ -339,12 +339,12 @@ class Map : public Vector {
template<typename T> template<typename T>
void AppendToString(std::string &s, T &&v, bool keys_quoted) { void AppendToString(std::string &s, T &&v, bool keys_quoted) {
s += "[ "; s += "[ ";
for (size_t i = 0; i < v.size(); i++) { for (size_t i = 0; i < v.size(); i++) {
if (i) s += ", "; if (i) s += ", ";
v[i].ToString(true, keys_quoted, s); v[i].ToString(true, keys_quoted, s);
} }
s += " ]"; s += " ]";
} }
class Reference { class Reference {
...@@ -386,13 +386,17 @@ class Reference { ...@@ -386,13 +386,17 @@ class Reference {
bool IsVector() const { return type_ == FBT_VECTOR || type_ == FBT_MAP; } bool IsVector() const { return type_ == FBT_VECTOR || type_ == FBT_MAP; }
bool IsUntypedVector() const { return type_ == FBT_VECTOR; } bool IsUntypedVector() const { return type_ == FBT_VECTOR; }
bool IsTypedVector() const { return flexbuffers::IsTypedVector(type_); } bool IsTypedVector() const { return flexbuffers::IsTypedVector(type_); }
bool IsFixedTypedVector() const { return flexbuffers::IsFixedTypedVector(type_); } bool IsFixedTypedVector() const {
bool IsAnyVector() const { return (IsTypedVector() || IsFixedTypedVector() || IsVector());} return flexbuffers::IsFixedTypedVector(type_);
}
bool IsAnyVector() const {
return (IsTypedVector() || IsFixedTypedVector() || IsVector());
}
bool IsMap() const { return type_ == FBT_MAP; } bool IsMap() const { return type_ == FBT_MAP; }
bool IsBlob() const { return type_ == FBT_BLOB; } bool IsBlob() const { return type_ == FBT_BLOB; }
bool AsBool() const { bool AsBool() const {
return (type_ == FBT_BOOL ? ReadUInt64(data_, parent_width_) return (type_ == FBT_BOOL ? ReadUInt64(data_, parent_width_)
: AsUInt64()) != 0; : AsUInt64()) != 0;
} }
// Reads any type as a int64_t. Never fails, does most sensible conversion. // Reads any type as a int64_t. Never fails, does most sensible conversion.
...@@ -555,7 +559,8 @@ class Reference { ...@@ -555,7 +559,8 @@ class Reference {
AppendToString<FixedTypedVector>(s, AsFixedTypedVector(), keys_quoted); AppendToString<FixedTypedVector>(s, AsFixedTypedVector(), keys_quoted);
} else if (IsBlob()) { } else if (IsBlob()) {
auto blob = AsBlob(); auto blob = AsBlob();
flatbuffers::EscapeString(reinterpret_cast<const char*>(blob.data()), blob.size(), &s, true, false); flatbuffers::EscapeString(reinterpret_cast<const char *>(blob.data()),
blob.size(), &s, true, false);
} else { } else {
s += "(?)"; s += "(?)";
} }
...@@ -729,9 +734,15 @@ template<> inline int32_t Reference::As<int32_t>() const { return AsInt32(); } ...@@ -729,9 +734,15 @@ template<> inline int32_t Reference::As<int32_t>() const { return AsInt32(); }
template<> inline int64_t Reference::As<int64_t>() const { return AsInt64(); } template<> inline int64_t Reference::As<int64_t>() const { return AsInt64(); }
template<> inline uint8_t Reference::As<uint8_t>() const { return AsUInt8(); } template<> inline uint8_t Reference::As<uint8_t>() const { return AsUInt8(); }
template<> inline uint16_t Reference::As<uint16_t>() const { return AsUInt16(); } template<> inline uint16_t Reference::As<uint16_t>() const {
template<> inline uint32_t Reference::As<uint32_t>() const { return AsUInt32(); } return AsUInt16();
template<> inline uint64_t Reference::As<uint64_t>() const { return AsUInt64(); } }
template<> inline uint32_t Reference::As<uint32_t>() const {
return AsUInt32();
}
template<> inline uint64_t Reference::As<uint64_t>() const {
return AsUInt64();
}
template<> inline double Reference::As<double>() const { return AsDouble(); } template<> inline double Reference::As<double>() const { return AsDouble(); }
template<> inline float Reference::As<float>() const { return AsFloat(); } template<> inline float Reference::As<float>() const { return AsFloat(); }
...@@ -920,9 +931,7 @@ class Builder FLATBUFFERS_FINAL_CLASS { ...@@ -920,9 +931,7 @@ class Builder FLATBUFFERS_FINAL_CLASS {
Bool(b); Bool(b);
} }
void IndirectInt(int64_t i) { void IndirectInt(int64_t i) { PushIndirect(i, FBT_INDIRECT_INT, WidthI(i)); }
PushIndirect(i, FBT_INDIRECT_INT, WidthI(i));
}
void IndirectInt(const char *key, int64_t i) { void IndirectInt(const char *key, int64_t i) {
Key(key); Key(key);
IndirectInt(i); IndirectInt(i);
...@@ -1214,9 +1223,7 @@ class Builder FLATBUFFERS_FINAL_CLASS { ...@@ -1214,9 +1223,7 @@ class Builder FLATBUFFERS_FINAL_CLASS {
// Works on any data type. // Works on any data type.
struct Value; struct Value;
Value LastValue() { return stack_.back(); } Value LastValue() { return stack_.back(); }
void ReuseValue(Value v) { void ReuseValue(Value v) { stack_.push_back(v); }
stack_.push_back(v);
}
void ReuseValue(const char *key, Value v) { void ReuseValue(const char *key, Value v) {
Key(key); Key(key);
ReuseValue(v); ReuseValue(v);
...@@ -1462,7 +1469,9 @@ class Builder FLATBUFFERS_FINAL_CLASS { ...@@ -1462,7 +1469,9 @@ class Builder FLATBUFFERS_FINAL_CLASS {
Value CreateVector(size_t start, size_t vec_len, size_t step, bool typed, Value CreateVector(size_t start, size_t vec_len, size_t step, bool typed,
bool fixed, const Value *keys = nullptr) { bool fixed, const Value *keys = nullptr) {
FLATBUFFERS_ASSERT(!fixed || typed); // typed=false, fixed=true combination is not supported. FLATBUFFERS_ASSERT(
!fixed ||
typed); // typed=false, fixed=true combination is not supported.
// Figure out smallest bit width we can store this vector with. // Figure out smallest bit width we can store this vector with.
auto bit_width = (std::max)(force_min_bit_width_, WidthU(vec_len)); auto bit_width = (std::max)(force_min_bit_width_, WidthU(vec_len));
auto prefix_elems = 1; auto prefix_elems = 1;
...@@ -1542,7 +1551,8 @@ class Builder FLATBUFFERS_FINAL_CLASS { ...@@ -1542,7 +1551,8 @@ class Builder FLATBUFFERS_FINAL_CLASS {
typedef std::pair<size_t, size_t> StringOffset; typedef std::pair<size_t, size_t> StringOffset;
struct StringOffsetCompare { struct StringOffsetCompare {
explicit StringOffsetCompare(const std::vector<uint8_t> &buf) : buf_(&buf) {} explicit StringOffsetCompare(const std::vector<uint8_t> &buf)
: buf_(&buf) {}
bool operator()(const StringOffset &a, const StringOffset &b) const { bool operator()(const StringOffset &a, const StringOffset &b) const {
auto stra = reinterpret_cast<const char *>( auto stra = reinterpret_cast<const char *>(
flatbuffers::vector_data(*buf_) + a.first); flatbuffers::vector_data(*buf_) + a.first);
...@@ -1562,8 +1572,8 @@ class Builder FLATBUFFERS_FINAL_CLASS { ...@@ -1562,8 +1572,8 @@ class Builder FLATBUFFERS_FINAL_CLASS {
} // namespace flexbuffers } // namespace flexbuffers
# if defined(_MSC_VER) #if defined(_MSC_VER)
# pragma warning(pop) # pragma warning(pop)
# endif #endif
#endif // FLATBUFFERS_FLEXBUFFERS_H_ #endif // FLATBUFFERS_FLEXBUFFERS_H_
...@@ -88,8 +88,7 @@ class SliceAllocator : public Allocator { ...@@ -88,8 +88,7 @@ class SliceAllocator : public Allocator {
SliceAllocator(const SliceAllocator &other) = delete; SliceAllocator(const SliceAllocator &other) = delete;
SliceAllocator &operator=(const SliceAllocator &other) = delete; SliceAllocator &operator=(const SliceAllocator &other) = delete;
SliceAllocator(SliceAllocator &&other) SliceAllocator(SliceAllocator &&other) : slice_(grpc_empty_slice()) {
: slice_(grpc_empty_slice()) {
// default-construct and swap idiom // default-construct and swap idiom
swap(other); swap(other);
} }
...@@ -164,34 +163,36 @@ class MessageBuilder : private detail::SliceAllocatorMember, ...@@ -164,34 +163,36 @@ class MessageBuilder : private detail::SliceAllocatorMember,
public FlatBufferBuilder { public FlatBufferBuilder {
public: public:
explicit MessageBuilder(uoffset_t initial_size = 1024) explicit MessageBuilder(uoffset_t initial_size = 1024)
: FlatBufferBuilder(initial_size, &slice_allocator_, false) {} : FlatBufferBuilder(initial_size, &slice_allocator_, false) {}
MessageBuilder(const MessageBuilder &other) = delete; MessageBuilder(const MessageBuilder &other) = delete;
MessageBuilder &operator=(const MessageBuilder &other) = delete; MessageBuilder &operator=(const MessageBuilder &other) = delete;
MessageBuilder(MessageBuilder &&other) MessageBuilder(MessageBuilder &&other)
: FlatBufferBuilder(1024, &slice_allocator_, false) { : FlatBufferBuilder(1024, &slice_allocator_, false) {
// Default construct and swap idiom. // Default construct and swap idiom.
Swap(other); Swap(other);
} }
/// Create a MessageBuilder from a FlatBufferBuilder. /// Create a MessageBuilder from a FlatBufferBuilder.
explicit MessageBuilder(FlatBufferBuilder &&src, void (*dealloc)(void*, size_t) = &DefaultAllocator::dealloc) explicit MessageBuilder(FlatBufferBuilder &&src,
: FlatBufferBuilder(1024, &slice_allocator_, false) { void (*dealloc)(void *,
size_t) = &DefaultAllocator::dealloc)
: FlatBufferBuilder(1024, &slice_allocator_, false) {
src.Swap(*this); src.Swap(*this);
src.SwapBufAllocator(*this); src.SwapBufAllocator(*this);
if (buf_.capacity()) { if (buf_.capacity()) {
uint8_t *buf = buf_.scratch_data(); // pointer to memory uint8_t *buf = buf_.scratch_data(); // pointer to memory
size_t capacity = buf_.capacity(); // size of memory size_t capacity = buf_.capacity(); // size of memory
slice_allocator_.slice_ = grpc_slice_new_with_len(buf, capacity, dealloc); slice_allocator_.slice_ = grpc_slice_new_with_len(buf, capacity, dealloc);
} } else {
else {
slice_allocator_.slice_ = grpc_empty_slice(); slice_allocator_.slice_ = grpc_empty_slice();
} }
} }
/// Move-assign a FlatBufferBuilder to a MessageBuilder. /// Move-assign a FlatBufferBuilder to a MessageBuilder.
/// Only FlatBufferBuilder with default allocator (basically, nullptr) is supported. /// Only FlatBufferBuilder with default allocator (basically, nullptr) is
/// supported.
MessageBuilder &operator=(FlatBufferBuilder &&src) { MessageBuilder &operator=(FlatBufferBuilder &&src) {
// Move construct a temporary and swap // Move construct a temporary and swap
MessageBuilder temp(std::move(src)); MessageBuilder temp(std::move(src));
...@@ -209,10 +210,11 @@ class MessageBuilder : private detail::SliceAllocatorMember, ...@@ -209,10 +210,11 @@ class MessageBuilder : private detail::SliceAllocatorMember,
void Swap(MessageBuilder &other) { void Swap(MessageBuilder &other) {
slice_allocator_.swap(other.slice_allocator_); slice_allocator_.swap(other.slice_allocator_);
FlatBufferBuilder::Swap(other); FlatBufferBuilder::Swap(other);
// After swapping the FlatBufferBuilder, we swap back the allocator, which restores // After swapping the FlatBufferBuilder, we swap back the allocator, which
// the original allocator back in place. This is necessary because MessageBuilder's // restores the original allocator back in place. This is necessary because
// allocator is its own member (SliceAllocatorMember). The allocator passed to // MessageBuilder's allocator is its own member (SliceAllocatorMember). The
// FlatBufferBuilder::vector_downward must point to this member. // allocator passed to FlatBufferBuilder::vector_downward must point to this
// member.
buf_.swap_allocator(other.buf_); buf_.swap_allocator(other.buf_);
} }
...@@ -232,10 +234,10 @@ class MessageBuilder : private detail::SliceAllocatorMember, ...@@ -232,10 +234,10 @@ class MessageBuilder : private detail::SliceAllocatorMember,
// flatbuffers-encoded region and wraps it in a `Message<T>` to handle buffer // flatbuffers-encoded region and wraps it in a `Message<T>` to handle buffer
// ownership. // ownership.
template<class T> Message<T> GetMessage() { template<class T> Message<T> GetMessage() {
auto buf_data = buf_.scratch_data(); // pointer to memory auto buf_data = buf_.scratch_data(); // pointer to memory
auto buf_size = buf_.capacity(); // size of memory auto buf_size = buf_.capacity(); // size of memory
auto msg_data = buf_.data(); // pointer to msg auto msg_data = buf_.data(); // pointer to msg
auto msg_size = buf_.size(); // size of msg auto msg_size = buf_.size(); // size of msg
// Do some sanity checks on data/size // Do some sanity checks on data/size
FLATBUFFERS_ASSERT(msg_data); FLATBUFFERS_ASSERT(msg_data);
FLATBUFFERS_ASSERT(msg_size); FLATBUFFERS_ASSERT(msg_size);
......
...@@ -57,17 +57,17 @@ template<typename T> T HashFnv1a(const char *input) { ...@@ -57,17 +57,17 @@ template<typename T> T HashFnv1a(const char *input) {
return hash; return hash;
} }
template <> inline uint16_t HashFnv1<uint16_t>(const char *input) { template<> inline uint16_t HashFnv1<uint16_t>(const char *input) {
uint32_t hash = HashFnv1<uint32_t>(input); uint32_t hash = HashFnv1<uint32_t>(input);
return (hash >> 16) ^ (hash & 0xffff); return (hash >> 16) ^ (hash & 0xffff);
} }
template <> inline uint16_t HashFnv1a<uint16_t>(const char *input) { template<> inline uint16_t HashFnv1a<uint16_t>(const char *input) {
uint32_t hash = HashFnv1a<uint32_t>(input); uint32_t hash = HashFnv1a<uint32_t>(input);
return (hash >> 16) ^ (hash & 0xffff); return (hash >> 16) ^ (hash & 0xffff);
} }
template <typename T> struct NamedHashFunction { template<typename T> struct NamedHashFunction {
const char *name; const char *name;
typedef T (*HashFunction)(const char *); typedef T (*HashFunction)(const char *);
...@@ -75,7 +75,7 @@ template <typename T> struct NamedHashFunction { ...@@ -75,7 +75,7 @@ template <typename T> struct NamedHashFunction {
}; };
const NamedHashFunction<uint16_t> kHashFunctions16[] = { const NamedHashFunction<uint16_t> kHashFunctions16[] = {
{ "fnv1_16", HashFnv1<uint16_t> }, { "fnv1_16", HashFnv1<uint16_t> },
{ "fnv1a_16", HashFnv1a<uint16_t> }, { "fnv1a_16", HashFnv1a<uint16_t> },
}; };
......
This diff is collapsed.
...@@ -88,7 +88,8 @@ inline size_t InlineSize(ElementaryType type, const TypeTable *type_table) { ...@@ -88,7 +88,8 @@ inline size_t InlineSize(ElementaryType type, const TypeTable *type_table) {
switch (type_table->st) { switch (type_table->st) {
case ST_TABLE: case ST_TABLE:
case ST_UNION: return 4; case ST_UNION: return 4;
case ST_STRUCT: return static_cast<size_t>(type_table->values[type_table->num_elems]); case ST_STRUCT:
return static_cast<size_t>(type_table->values[type_table->num_elems]);
default: FLATBUFFERS_ASSERT(false); return 1; default: FLATBUFFERS_ASSERT(false); return 1;
} }
default: FLATBUFFERS_ASSERT(false); return 1; default: FLATBUFFERS_ASSERT(false); return 1;
......
...@@ -17,10 +17,10 @@ ...@@ -17,10 +17,10 @@
#ifndef FLATBUFFERS_UTIL_H_ #ifndef FLATBUFFERS_UTIL_H_
#define FLATBUFFERS_UTIL_H_ #define FLATBUFFERS_UTIL_H_
#include "flatbuffers/base.h"
#include <errno.h> #include <errno.h>
#include "flatbuffers/base.h"
#ifndef FLATBUFFERS_PREFER_PRINTF #ifndef FLATBUFFERS_PREFER_PRINTF
# include <sstream> # include <sstream>
#else // FLATBUFFERS_PREFER_PRINTF #else // FLATBUFFERS_PREFER_PRINTF
......
...@@ -15,12 +15,14 @@ ...@@ -15,12 +15,14 @@
*/ */
#include "flatbuffers/code_generators.h" #include "flatbuffers/code_generators.h"
#include <assert.h> #include <assert.h>
#include "flatbuffers/base.h"
#include "flatbuffers/util.h"
#include <cmath> #include <cmath>
#include "flatbuffers/base.h"
#include "flatbuffers/util.h"
#if defined(_MSC_VER) #if defined(_MSC_VER)
# pragma warning(push) # pragma warning(push)
# pragma warning(disable : 4127) // C4127: conditional expression is constant # pragma warning(disable : 4127) // C4127: conditional expression is constant
......
...@@ -42,7 +42,7 @@ void FlatCompiler::LoadBinarySchema(flatbuffers::Parser &parser, ...@@ -42,7 +42,7 @@ void FlatCompiler::LoadBinarySchema(flatbuffers::Parser &parser,
const std::string &filename, const std::string &filename,
const std::string &contents) { const std::string &contents) {
if (!parser.Deserialize(reinterpret_cast<const uint8_t *>(contents.c_str()), if (!parser.Deserialize(reinterpret_cast<const uint8_t *>(contents.c_str()),
contents.size())) { contents.size())) {
Error("failed to load binary schema: " + filename, false, false); Error("failed to load binary schema: " + filename, false, false);
} }
} }
...@@ -402,7 +402,8 @@ int FlatCompiler::Compile(int argc, const char **argv) { ...@@ -402,7 +402,8 @@ int FlatCompiler::Compile(int argc, const char **argv) {
"\" matches the schema, use --raw-binary to read this file" "\" matches the schema, use --raw-binary to read this file"
" anyway."); " anyway.");
} else if (!flatbuffers::BufferHasIdentifier( } else if (!flatbuffers::BufferHasIdentifier(
contents.c_str(), parser->file_identifier_.c_str(), opts.size_prefixed)) { contents.c_str(), parser->file_identifier_.c_str(),
opts.size_prefixed)) {
Error("binary \"" + filename + Error("binary \"" + filename +
"\" does not have expected file_identifier \"" + "\" does not have expected file_identifier \"" +
parser->file_identifier_ + parser->file_identifier_ +
......
...@@ -61,13 +61,15 @@ int main(int argc, const char *argv[]) { ...@@ -61,13 +61,15 @@ int main(int argc, const char *argv[]) {
flatbuffers::GeneralMakeRule }, flatbuffers::GeneralMakeRule },
{ flatbuffers::GenerateJSTS, "-s", "--js", "JavaScript", true, nullptr, { flatbuffers::GenerateJSTS, "-s", "--js", "JavaScript", true, nullptr,
flatbuffers::IDLOptions::kJs, flatbuffers::IDLOptions::kJs,
"Generate JavaScript code for tables/structs", flatbuffers::JSTSMakeRule }, "Generate JavaScript code for tables/structs",
flatbuffers::JSTSMakeRule },
{ flatbuffers::GenerateDart, "-d", "--dart", "Dart", true, nullptr, { flatbuffers::GenerateDart, "-d", "--dart", "Dart", true, nullptr,
flatbuffers::IDLOptions::kDart, flatbuffers::IDLOptions::kDart,
"Generate Dart classes for tables/structs", flatbuffers::DartMakeRule }, "Generate Dart classes for tables/structs", flatbuffers::DartMakeRule },
{ flatbuffers::GenerateJSTS, "-T", "--ts", "TypeScript", true, nullptr, { flatbuffers::GenerateJSTS, "-T", "--ts", "TypeScript", true, nullptr,
flatbuffers::IDLOptions::kTs, flatbuffers::IDLOptions::kTs,
"Generate TypeScript code for tables/structs", flatbuffers::JSTSMakeRule }, "Generate TypeScript code for tables/structs",
flatbuffers::JSTSMakeRule },
{ flatbuffers::GenerateGeneral, "-n", "--csharp", "C#", true, nullptr, { flatbuffers::GenerateGeneral, "-n", "--csharp", "C#", true, nullptr,
flatbuffers::IDLOptions::kCSharp, flatbuffers::IDLOptions::kCSharp,
"Generate C# classes for tables/structs", flatbuffers::GeneralMakeRule }, "Generate C# classes for tables/structs", flatbuffers::GeneralMakeRule },
...@@ -75,23 +77,22 @@ int main(int argc, const char *argv[]) { ...@@ -75,23 +77,22 @@ int main(int argc, const char *argv[]) {
flatbuffers::IDLOptions::kPython, flatbuffers::IDLOptions::kPython,
"Generate Python files for tables/structs", "Generate Python files for tables/structs",
flatbuffers::GeneralMakeRule }, flatbuffers::GeneralMakeRule },
{ flatbuffers::GenerateLobster, nullptr, "--lobster", "Lobster", true, nullptr, { flatbuffers::GenerateLobster, nullptr, "--lobster", "Lobster", true,
flatbuffers::IDLOptions::kLobster, nullptr, flatbuffers::IDLOptions::kLobster,
"Generate Lobster files for tables/structs", "Generate Lobster files for tables/structs",
flatbuffers::GeneralMakeRule }, flatbuffers::GeneralMakeRule },
{ flatbuffers::GenerateLua, "-l", "--lua", "Lua", true, nullptr, { flatbuffers::GenerateLua, "-l", "--lua", "Lua", true, nullptr,
flatbuffers::IDLOptions::kLua, flatbuffers::IDLOptions::kLua, "Generate Lua files for tables/structs",
"Generate Lua files for tables/structs",
flatbuffers::GeneralMakeRule }, flatbuffers::GeneralMakeRule },
{ flatbuffers::GenerateRust, "-r", "--rust", "Rust", true, nullptr, { flatbuffers::GenerateRust, "-r", "--rust", "Rust", true, nullptr,
flatbuffers::IDLOptions::kRust, flatbuffers::IDLOptions::kRust, "Generate Rust files for tables/structs",
"Generate Rust files for tables/structs",
flatbuffers::RustMakeRule }, flatbuffers::RustMakeRule },
{ flatbuffers::GeneratePhp, nullptr, "--php", "PHP", true, nullptr, { flatbuffers::GeneratePhp, nullptr, "--php", "PHP", true, nullptr,
flatbuffers::IDLOptions::kPhp, "Generate PHP files for tables/structs", flatbuffers::IDLOptions::kPhp, "Generate PHP files for tables/structs",
flatbuffers::GeneralMakeRule }, flatbuffers::GeneralMakeRule },
{ flatbuffers::GenerateKotlin, nullptr, "--kotlin", "Kotlin", true, nullptr, { flatbuffers::GenerateKotlin, nullptr, "--kotlin", "Kotlin", true, nullptr,
flatbuffers::IDLOptions::kKotlin, "Generate Kotlin classes for tables/structs", flatbuffers::IDLOptions::kKotlin,
"Generate Kotlin classes for tables/structs",
flatbuffers::GeneralMakeRule }, flatbuffers::GeneralMakeRule },
{ flatbuffers::GenerateJsonSchema, nullptr, "--jsonschema", "JsonSchema", { flatbuffers::GenerateJsonSchema, nullptr, "--jsonschema", "JsonSchema",
true, nullptr, flatbuffers::IDLOptions::kJsonSchema, true, nullptr, flatbuffers::IDLOptions::kJsonSchema,
......
...@@ -15,9 +15,11 @@ ...@@ -15,9 +15,11 @@
*/ */
#include <stdio.h> #include <stdio.h>
#include <iostream> #include <iostream>
#include <sstream> #include <sstream>
#include <string> #include <string>
#include "flatbuffers/hash.h" #include "flatbuffers/hash.h"
enum OutputFormat { kDecimal, kHexadecimal, kHexadecimal0x }; enum OutputFormat { kDecimal, kHexadecimal, kHexadecimal0x };
...@@ -35,7 +37,7 @@ int main(int argc, char *argv[]) { ...@@ -35,7 +37,7 @@ int main(int argc, char *argv[]) {
} }
printf(" 32 bit:\n"); printf(" 32 bit:\n");
size = sizeof(flatbuffers::kHashFunctions32) / size = sizeof(flatbuffers::kHashFunctions32) /
sizeof(flatbuffers::kHashFunctions32[0]); sizeof(flatbuffers::kHashFunctions32[0]);
for (size_t i = 0; i < size; ++i) { for (size_t i = 0; i < size; ++i) {
printf(" * %s\n", flatbuffers::kHashFunctions32[i].name); printf(" * %s\n", flatbuffers::kHashFunctions32[i].name);
} }
......
...@@ -16,13 +16,13 @@ ...@@ -16,13 +16,13 @@
// independent from idl_parser, since this code is not needed for most clients // independent from idl_parser, since this code is not needed for most clients
#include <unordered_set>
#include "flatbuffers/code_generators.h" #include "flatbuffers/code_generators.h"
#include "flatbuffers/flatbuffers.h" #include "flatbuffers/flatbuffers.h"
#include "flatbuffers/idl.h" #include "flatbuffers/idl.h"
#include "flatbuffers/util.h" #include "flatbuffers/util.h"
#include <unordered_set>
namespace flatbuffers { namespace flatbuffers {
// Pedantic warning free version of toupper(). // Pedantic warning free version of toupper().
...@@ -208,9 +208,7 @@ class CppGenerator : public BaseGenerator { ...@@ -208,9 +208,7 @@ class CppGenerator : public BaseGenerator {
for (std::size_t i = 0; i < parser_.opts.cpp_includes.size(); ++i) { for (std::size_t i = 0; i < parser_.opts.cpp_includes.size(); ++i) {
code_ += "#include \"" + parser_.opts.cpp_includes[i] + "\""; code_ += "#include \"" + parser_.opts.cpp_includes[i] + "\"";
} }
if (!parser_.opts.cpp_includes.empty()) { if (!parser_.opts.cpp_includes.empty()) { code_ += ""; }
code_ += "";
}
} }
std::string EscapeKeyword(const std::string &name) const { std::string EscapeKeyword(const std::string &name) const {
...@@ -577,7 +575,9 @@ class CppGenerator : public BaseGenerator { ...@@ -577,7 +575,9 @@ class CppGenerator : public BaseGenerator {
} }
case BASE_TYPE_UNION: case BASE_TYPE_UNION:
// fall through // fall through
default: { return "void"; } default: {
return "void";
}
} }
} }
...@@ -696,7 +696,9 @@ class CppGenerator : public BaseGenerator { ...@@ -696,7 +696,9 @@ class CppGenerator : public BaseGenerator {
case BASE_TYPE_UNION: { case BASE_TYPE_UNION: {
return type.enum_def->name + "Union"; return type.enum_def->name + "Union";
} }
default: { return GenTypeBasic(type, true); } default: {
return GenTypeBasic(type, true);
}
} }
} }
...@@ -1163,7 +1165,8 @@ class CppGenerator : public BaseGenerator { ...@@ -1163,7 +1165,8 @@ class CppGenerator : public BaseGenerator {
code_ += " void Set(T&& val) {"; code_ += " void Set(T&& val) {";
code_ += " using RT = typename std::remove_reference<T>::type;"; code_ += " using RT = typename std::remove_reference<T>::type;";
code_ += " Reset();"; code_ += " Reset();";
code_ += " type = {{NAME}}Traits<typename RT::TableType>::enum_value;"; code_ +=
" type = {{NAME}}Traits<typename RT::TableType>::enum_value;";
code_ += " if (type != {{NONE}}) {"; code_ += " if (type != {{NONE}}) {";
code_ += " value = new RT(std::forward<T>(val));"; code_ += " value = new RT(std::forward<T>(val));";
code_ += " }"; code_ += " }";
...@@ -1276,7 +1279,8 @@ class CppGenerator : public BaseGenerator { ...@@ -1276,7 +1279,8 @@ class CppGenerator : public BaseGenerator {
" auto ptr = reinterpret_cast<const {{TYPE}} *>(obj);"; " auto ptr = reinterpret_cast<const {{TYPE}} *>(obj);";
if (ev.union_type.base_type == BASE_TYPE_STRUCT) { if (ev.union_type.base_type == BASE_TYPE_STRUCT) {
if (ev.union_type.struct_def->fixed) { if (ev.union_type.struct_def->fixed) {
code_ += " return verifier.Verify<{{TYPE}}>(static_cast<const " code_ +=
" return verifier.Verify<{{TYPE}}>(static_cast<const "
"uint8_t *>(obj), 0);"; "uint8_t *>(obj), 0);";
} else { } else {
code_ += getptr; code_ += getptr;
...@@ -1295,7 +1299,7 @@ class CppGenerator : public BaseGenerator { ...@@ -1295,7 +1299,7 @@ class CppGenerator : public BaseGenerator {
code_ += " }"; code_ += " }";
} }
} }
code_ += " default: return true;"; // unknown values are OK. code_ += " default: return true;"; // unknown values are OK.
code_ += " }"; code_ += " }";
code_ += "}"; code_ += "}";
code_ += ""; code_ += "";
...@@ -1763,7 +1767,9 @@ class CppGenerator : public BaseGenerator { ...@@ -1763,7 +1767,9 @@ class CppGenerator : public BaseGenerator {
} }
break; break;
} }
default: { break; } default: {
break;
}
} }
} }
...@@ -1925,7 +1931,8 @@ class CppGenerator : public BaseGenerator { ...@@ -1925,7 +1931,8 @@ class CppGenerator : public BaseGenerator {
} }
} }
if (parser_.opts.mutable_buffer && !(is_scalar && IsUnion(field.value.type))) { if (parser_.opts.mutable_buffer &&
!(is_scalar && IsUnion(field.value.type))) {
if (is_scalar) { if (is_scalar) {
const auto type = GenTypeWire(field.value.type, "", false); const auto type = GenTypeWire(field.value.type, "", false);
code_.SetValue("SET_FN", "SetField<" + type + ">"); code_.SetValue("SET_FN", "SetField<" + type + ">");
...@@ -2901,8 +2908,8 @@ class CppGenerator : public BaseGenerator { ...@@ -2901,8 +2908,8 @@ class CppGenerator : public BaseGenerator {
} else if (IsArray(field.value.type)) { } else if (IsArray(field.value.type)) {
auto underlying = GenTypeGet(field.value.type, "", "", "", false); auto underlying = GenTypeGet(field.value.type, "", "", "", false);
code_ += " flatbuffers::Array<" + mut_field_type + ", " + code_ += " flatbuffers::Array<" + mut_field_type + ", " +
NumToString(field.value.type.fixed_length) + NumToString(field.value.type.fixed_length) + "> *" +
"> *" + "mutable_{{FIELD_NAME}}() {"; "mutable_{{FIELD_NAME}}() {";
code_ += " return reinterpret_cast<flatbuffers::Array<" + code_ += " return reinterpret_cast<flatbuffers::Array<" +
mut_field_type + ", " + mut_field_type + ", " +
NumToString(field.value.type.fixed_length) + NumToString(field.value.type.fixed_length) +
......
...@@ -71,9 +71,7 @@ class DartGenerator : public BaseGenerator { ...@@ -71,9 +71,7 @@ class DartGenerator : public BaseGenerator {
"// ignore_for_file: unused_import, unused_field, " "// ignore_for_file: unused_import, unused_field, "
"unused_local_variable\n\n"; "unused_local_variable\n\n";
if (!kv->first.empty()) { if (!kv->first.empty()) { code += "library " + kv->first + ";\n\n"; }
code += "library " + kv->first + ";\n\n";
}
code += "import 'dart:typed_data' show Uint8List;\n"; code += "import 'dart:typed_data' show Uint8List;\n";
code += "import 'package:flat_buffers/flat_buffers.dart' as " + _kFb + code += "import 'package:flat_buffers/flat_buffers.dart' as " + _kFb +
...@@ -87,16 +85,20 @@ class DartGenerator : public BaseGenerator { ...@@ -87,16 +85,20 @@ class DartGenerator : public BaseGenerator {
++kv2) { ++kv2) {
if (kv2->first != kv->first) { if (kv2->first != kv->first) {
code += "import '" + code += "import '" +
GeneratedFileName("./", file_name_ + (!kv2->first.empty() ? "_" + kv2->first : "")) + GeneratedFileName(
"./", file_name_ +
(!kv2->first.empty() ? "_" + kv2->first : "")) +
"' as " + ImportAliasName(kv2->first) + ";\n"; "' as " + ImportAliasName(kv2->first) + ";\n";
} }
} }
code += "\n"; code += "\n";
code += kv->second; code += kv->second;
if (!SaveFile( if (!SaveFile(GeneratedFileName(
GeneratedFileName(path_, file_name_ + (!kv->first.empty() ? "_" + kv->first : "")).c_str(), path_, file_name_ +
code, false)) { (!kv->first.empty() ? "_" + kv->first : ""))
.c_str(),
code, false)) {
return false; return false;
} }
} }
...@@ -117,9 +119,7 @@ class DartGenerator : public BaseGenerator { ...@@ -117,9 +119,7 @@ class DartGenerator : public BaseGenerator {
} }
static std::string BuildNamespaceName(const Namespace &ns) { static std::string BuildNamespaceName(const Namespace &ns) {
if (ns.components.empty()) { if (ns.components.empty()) { return ""; }
return "";
}
std::stringstream sstream; std::stringstream sstream;
std::copy(ns.components.begin(), ns.components.end() - 1, std::copy(ns.components.begin(), ns.components.end() - 1,
std::ostream_iterator<std::string>(sstream, ".")); std::ostream_iterator<std::string>(sstream, "."));
...@@ -139,7 +139,8 @@ class DartGenerator : public BaseGenerator { ...@@ -139,7 +139,8 @@ class DartGenerator : public BaseGenerator {
return ret; return ret;
} }
void GenIncludeDependencies(std::string* code, const std::string& the_namespace) { void GenIncludeDependencies(std::string *code,
const std::string &the_namespace) {
for (auto it = parser_.included_files_.begin(); for (auto it = parser_.included_files_.begin();
it != parser_.included_files_.end(); ++it) { it != parser_.included_files_.end(); ++it) {
if (it->second.empty()) continue; if (it->second.empty()) continue;
...@@ -147,7 +148,11 @@ class DartGenerator : public BaseGenerator { ...@@ -147,7 +148,11 @@ class DartGenerator : public BaseGenerator {
auto noext = flatbuffers::StripExtension(it->second); auto noext = flatbuffers::StripExtension(it->second);
auto basename = flatbuffers::StripPath(noext); auto basename = flatbuffers::StripPath(noext);
*code += "import '" + GeneratedFileName("", basename + (the_namespace == "" ? "" : "_" + the_namespace)) + "';\n"; *code +=
"import '" +
GeneratedFileName(
"", basename + (the_namespace == "" ? "" : "_" + the_namespace)) +
"';\n";
} }
} }
...@@ -798,7 +803,8 @@ class DartGenerator : public BaseGenerator { ...@@ -798,7 +803,8 @@ class DartGenerator : public BaseGenerator {
} }
code += "\n : null;\n"; code += "\n : null;\n";
} else if (field.value.type.base_type == BASE_TYPE_STRING) { } else if (field.value.type.base_type == BASE_TYPE_STRING) {
code += " = fbBuilder.writeString(_" + MakeCamel(field.name, false) + ");\n"; code += " = fbBuilder.writeString(_" + MakeCamel(field.name, false) +
");\n";
} else { } else {
code += " = _" + MakeCamel(field.name, false) + code += " = _" + MakeCamel(field.name, false) +
"?.getOrCreateOffset(fbBuilder);\n"; "?.getOrCreateOffset(fbBuilder);\n";
......
This diff is collapsed.
This diff is collapsed.
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
#include "flatbuffers/flatbuffers.h" #include "flatbuffers/flatbuffers.h"
#include "flatbuffers/idl.h" #include "flatbuffers/idl.h"
#include "flatbuffers/util.h" #include "flatbuffers/util.h"
#include "src/compiler/cpp_generator.h" #include "src/compiler/cpp_generator.h"
#include "src/compiler/go_generator.h" #include "src/compiler/go_generator.h"
#include "src/compiler/java_generator.h" #include "src/compiler/java_generator.h"
...@@ -35,9 +34,7 @@ namespace flatbuffers { ...@@ -35,9 +34,7 @@ namespace flatbuffers {
class FlatBufMethod : public grpc_generator::Method { class FlatBufMethod : public grpc_generator::Method {
public: public:
enum Streaming { enum Streaming { kNone, kClient, kServer, kBiDi };
kNone, kClient, kServer, kBiDi
};
FlatBufMethod(const RPCCall *method) : method_(method) { FlatBufMethod(const RPCCall *method) : method_(method) {
streaming_ = kNone; streaming_ = kNone;
...@@ -171,7 +168,7 @@ class FlatBufPrinter : public grpc_generator::Printer { ...@@ -171,7 +168,7 @@ class FlatBufPrinter : public grpc_generator::Printer {
void Outdent() { void Outdent() {
indent_--; indent_--;
FLATBUFFERS_ASSERT(indent_ >= 0); FLATBUFFERS_ASSERT(indent_ >= 0);
} }
private: private:
...@@ -182,9 +179,7 @@ class FlatBufPrinter : public grpc_generator::Printer { ...@@ -182,9 +179,7 @@ class FlatBufPrinter : public grpc_generator::Printer {
class FlatBufFile : public grpc_generator::File { class FlatBufFile : public grpc_generator::File {
public: public:
enum Language { enum Language { kLanguageGo, kLanguageCpp, kLanguageJava };
kLanguageGo, kLanguageCpp, kLanguageJava
};
FlatBufFile(const Parser &parser, const std::string &file_name, FlatBufFile(const Parser &parser, const std::string &file_name,
Language language) Language language)
...@@ -270,7 +265,8 @@ class GoGRPCGenerator : public flatbuffers::BaseGenerator { ...@@ -270,7 +265,8 @@ class GoGRPCGenerator : public flatbuffers::BaseGenerator {
auto service = file.service(i); auto service = file.service(i);
const Definition *def = parser_.services_.vec[i]; const Definition *def = parser_.services_.vec[i];
p.package_name = LastNamespacePart(*(def->defined_namespace)); p.package_name = LastNamespacePart(*(def->defined_namespace));
p.service_prefix = def->defined_namespace->GetFullyQualifiedName(""); // file.package(); p.service_prefix =
def->defined_namespace->GetFullyQualifiedName(""); // file.package();
std::string output = std::string output =
grpc_go_generator::GenerateServiceSource(&file, service.get(), &p); grpc_go_generator::GenerateServiceSource(&file, service.get(), &p);
std::string filename = std::string filename =
...@@ -313,20 +309,20 @@ bool GenerateCppGRPC(const Parser &parser, const std::string &path, ...@@ -313,20 +309,20 @@ bool GenerateCppGRPC(const Parser &parser, const std::string &path,
std::string header_code = std::string header_code =
grpc_cpp_generator::GetHeaderPrologue(&fbfile, generator_parameters) + grpc_cpp_generator::GetHeaderPrologue(&fbfile, generator_parameters) +
grpc_cpp_generator::GetHeaderIncludes(&fbfile, generator_parameters) + grpc_cpp_generator::GetHeaderIncludes(&fbfile, generator_parameters) +
grpc_cpp_generator::GetHeaderServices(&fbfile, generator_parameters) + grpc_cpp_generator::GetHeaderServices(&fbfile, generator_parameters) +
grpc_cpp_generator::GetHeaderEpilogue(&fbfile, generator_parameters); grpc_cpp_generator::GetHeaderEpilogue(&fbfile, generator_parameters);
std::string source_code = std::string source_code =
grpc_cpp_generator::GetSourcePrologue(&fbfile, generator_parameters) + grpc_cpp_generator::GetSourcePrologue(&fbfile, generator_parameters) +
grpc_cpp_generator::GetSourceIncludes(&fbfile, generator_parameters) + grpc_cpp_generator::GetSourceIncludes(&fbfile, generator_parameters) +
grpc_cpp_generator::GetSourceServices(&fbfile, generator_parameters) + grpc_cpp_generator::GetSourceServices(&fbfile, generator_parameters) +
grpc_cpp_generator::GetSourceEpilogue(&fbfile, generator_parameters); grpc_cpp_generator::GetSourceEpilogue(&fbfile, generator_parameters);
return flatbuffers::SaveFile((path + file_name + ".grpc.fb.h").c_str(), return flatbuffers::SaveFile((path + file_name + ".grpc.fb.h").c_str(),
header_code, false) && header_code, false) &&
flatbuffers::SaveFile((path + file_name + ".grpc.fb.cc").c_str(), flatbuffers::SaveFile((path + file_name + ".grpc.fb.cc").c_str(),
source_code, false); source_code, false);
} }
class JavaGRPCGenerator : public flatbuffers::BaseGenerator { class JavaGRPCGenerator : public flatbuffers::BaseGenerator {
......
...@@ -127,9 +127,7 @@ class JsTsGenerator : public BaseGenerator { ...@@ -127,9 +127,7 @@ class JsTsGenerator : public BaseGenerator {
const auto &file = *it; const auto &file = *it;
const auto basename = const auto basename =
flatbuffers::StripPath(flatbuffers::StripExtension(file)); flatbuffers::StripPath(flatbuffers::StripExtension(file));
if (basename != file_name_) { if (basename != file_name_) { code += GenPrefixedImport(file, basename); }
code += GenPrefixedImport(file, basename);
}
} }
} }
...@@ -309,14 +307,12 @@ class JsTsGenerator : public BaseGenerator { ...@@ -309,14 +307,12 @@ class JsTsGenerator : public BaseGenerator {
result += " " + type_name; result += " " + type_name;
break; break;
} }
default: { result += " {" + type_name + "}"; } default: {
} result += " {" + type_name + "}";
if (!arg_name.empty()) { }
result += " " + arg_name;
}
if (include_newline) {
result += "\n";
} }
if (!arg_name.empty()) { result += " " + arg_name; }
if (include_newline) { result += "\n"; }
return result; return result;
} }
...@@ -605,7 +601,8 @@ class JsTsGenerator : public BaseGenerator { ...@@ -605,7 +601,8 @@ class JsTsGenerator : public BaseGenerator {
} }
void GenerateRootAccessor(StructDef &struct_def, std::string *code_ptr, void GenerateRootAccessor(StructDef &struct_def, std::string *code_ptr,
std::string &code, std::string &object_name, bool size_prefixed) { std::string &code, std::string &object_name,
bool size_prefixed) {
if (!struct_def.fixed) { if (!struct_def.fixed) {
GenDocComment(code_ptr, GenDocComment(code_ptr,
GenTypeAnnotation(kParam, "flatbuffers.ByteBuffer", "bb") + GenTypeAnnotation(kParam, "flatbuffers.ByteBuffer", "bb") +
...@@ -613,11 +610,13 @@ class JsTsGenerator : public BaseGenerator { ...@@ -613,11 +610,13 @@ class JsTsGenerator : public BaseGenerator {
GenTypeAnnotation(kReturns, object_name, "", false)); GenTypeAnnotation(kReturns, object_name, "", false));
std::string sizePrefixed("SizePrefixed"); std::string sizePrefixed("SizePrefixed");
if (lang_.language == IDLOptions::kTs) { if (lang_.language == IDLOptions::kTs) {
code += "static get" + (size_prefixed ? sizePrefixed : "") + "Root" + Verbose(struct_def, "As"); code += "static get" + (size_prefixed ? sizePrefixed : "") + "Root" +
Verbose(struct_def, "As");
code += "(bb:flatbuffers.ByteBuffer, obj?:" + object_name + code += "(bb:flatbuffers.ByteBuffer, obj?:" + object_name +
"):" + object_name + " {\n"; "):" + object_name + " {\n";
} else { } else {
code += object_name + ".get" + (size_prefixed ? sizePrefixed : "") + "Root" + Verbose(struct_def, "As"); code += object_name + ".get" + (size_prefixed ? sizePrefixed : "") +
"Root" + Verbose(struct_def, "As");
code += " = function(bb, obj) {\n"; code += " = function(bb, obj) {\n";
} }
code += " return (obj || new " + object_name; code += " return (obj || new " + object_name;
...@@ -627,21 +626,22 @@ class JsTsGenerator : public BaseGenerator { ...@@ -627,21 +626,22 @@ class JsTsGenerator : public BaseGenerator {
} }
void GenerateFinisher(StructDef &struct_def, std::string *code_ptr, void GenerateFinisher(StructDef &struct_def, std::string *code_ptr,
std::string &code, std::string &object_name, bool size_prefixed) { std::string &code, std::string &object_name,
bool size_prefixed) {
if (parser_.root_struct_def_ == &struct_def) { if (parser_.root_struct_def_ == &struct_def) {
std::string sizePrefixed("SizePrefixed"); std::string sizePrefixed("SizePrefixed");
GenDocComment( GenDocComment(
code_ptr, code_ptr,
GenTypeAnnotation(kParam, "flatbuffers.Builder", "builder") + GenTypeAnnotation(kParam, "flatbuffers.Builder", "builder") +
GenTypeAnnotation(kParam, "flatbuffers.Offset", "offset", GenTypeAnnotation(kParam, "flatbuffers.Offset", "offset", false));
false));
if (lang_.language == IDLOptions::kTs) { if (lang_.language == IDLOptions::kTs) {
code += "static finish" + (size_prefixed ? sizePrefixed : "") + Verbose(struct_def) + "Buffer"; code += "static finish" + (size_prefixed ? sizePrefixed : "") +
code += Verbose(struct_def) + "Buffer";
"(builder:flatbuffers.Builder, offset:flatbuffers.Offset) {\n"; code += "(builder:flatbuffers.Builder, offset:flatbuffers.Offset) {\n";
} else { } else {
code += object_name + ".finish" + (size_prefixed ? sizePrefixed : "") + Verbose(struct_def) + "Buffer"; code += object_name + ".finish" + (size_prefixed ? sizePrefixed : "") +
Verbose(struct_def) + "Buffer";
code += " = function(builder, offset) {\n"; code += " = function(builder, offset) {\n";
} }
...@@ -650,9 +650,7 @@ class JsTsGenerator : public BaseGenerator { ...@@ -650,9 +650,7 @@ class JsTsGenerator : public BaseGenerator {
code += ", '" + parser_.file_identifier_ + "'"; code += ", '" + parser_.file_identifier_ + "'";
} }
if (size_prefixed) { if (size_prefixed) {
if (parser_.file_identifier_.empty()) { if (parser_.file_identifier_.empty()) { code += ", undefined"; }
code += ", undefined";
}
code += ", true"; code += ", true";
} }
code += ");\n"; code += ");\n";
...@@ -682,7 +680,8 @@ class JsTsGenerator : public BaseGenerator { ...@@ -682,7 +680,8 @@ class JsTsGenerator : public BaseGenerator {
code += " {\n"; code += " {\n";
if (lang_.language != IDLOptions::kTs) { if (lang_.language != IDLOptions::kTs) {
code += " /**\n"; code += " /**\n";
code += " * " + GenTypeAnnotation(kType, "flatbuffers.ByteBuffer", ""); code +=
" * " + GenTypeAnnotation(kType, "flatbuffers.ByteBuffer", "");
code += " */\n"; code += " */\n";
} }
code += " bb: flatbuffers.ByteBuffer|null = null;\n"; code += " bb: flatbuffers.ByteBuffer|null = null;\n";
...@@ -752,10 +751,9 @@ class JsTsGenerator : public BaseGenerator { ...@@ -752,10 +751,9 @@ class JsTsGenerator : public BaseGenerator {
// Generate the identifier check method // Generate the identifier check method
if (!struct_def.fixed && parser_.root_struct_def_ == &struct_def && if (!struct_def.fixed && parser_.root_struct_def_ == &struct_def &&
!parser_.file_identifier_.empty()) { !parser_.file_identifier_.empty()) {
GenDocComment( GenDocComment(code_ptr,
code_ptr, GenTypeAnnotation(kParam, "flatbuffers.ByteBuffer", "bb") +
GenTypeAnnotation(kParam, "flatbuffers.ByteBuffer", "bb") + GenTypeAnnotation(kReturns, "boolean", "", false));
GenTypeAnnotation(kReturns, "boolean", "", false));
if (lang_.language == IDLOptions::kTs) { if (lang_.language == IDLOptions::kTs) {
code += code +=
"static bufferHasIdentifier(bb:flatbuffers.ByteBuffer):boolean " "static bufferHasIdentifier(bb:flatbuffers.ByteBuffer):boolean "
...@@ -872,7 +870,8 @@ class JsTsGenerator : public BaseGenerator { ...@@ -872,7 +870,8 @@ class JsTsGenerator : public BaseGenerator {
code += ", " + GenBBAccess() + ") : null;\n"; code += ", " + GenBBAccess() + ") : null;\n";
} }
if (lang_.language == IDLOptions::kTs && !parser_.opts.generate_all) { if (lang_.language == IDLOptions::kTs &&
!parser_.opts.generate_all) {
imported_files.insert(field.value.type.struct_def->file); imported_files.insert(field.value.type.struct_def->file);
} }
...@@ -1290,8 +1289,7 @@ class JsTsGenerator : public BaseGenerator { ...@@ -1290,8 +1289,7 @@ class JsTsGenerator : public BaseGenerator {
for (auto it = struct_def.fields.vec.begin(); for (auto it = struct_def.fields.vec.begin();
it != struct_def.fields.vec.end(); ++it) { it != struct_def.fields.vec.end(); ++it) {
const auto &field = **it; const auto &field = **it;
if (field.deprecated) if (field.deprecated) continue;
continue;
paramDoc += paramDoc +=
GenTypeAnnotation(kParam, GetArgType(field), GetArgName(field)); GenTypeAnnotation(kParam, GetArgType(field), GetArgName(field));
} }
...@@ -1311,8 +1309,7 @@ class JsTsGenerator : public BaseGenerator { ...@@ -1311,8 +1309,7 @@ class JsTsGenerator : public BaseGenerator {
for (auto it = struct_def.fields.vec.begin(); for (auto it = struct_def.fields.vec.begin();
it != struct_def.fields.vec.end(); ++it) { it != struct_def.fields.vec.end(); ++it) {
const auto &field = **it; const auto &field = **it;
if (field.deprecated) if (field.deprecated) continue;
continue;
if (lang_.language == IDLOptions::kTs) { if (lang_.language == IDLOptions::kTs) {
code += ", " + GetArgName(field) + ":" + GetArgType(field); code += ", " + GetArgName(field) + ":" + GetArgType(field);
...@@ -1336,8 +1333,7 @@ class JsTsGenerator : public BaseGenerator { ...@@ -1336,8 +1333,7 @@ class JsTsGenerator : public BaseGenerator {
for (auto it = struct_def.fields.vec.begin(); for (auto it = struct_def.fields.vec.begin();
it != struct_def.fields.vec.end(); ++it) { it != struct_def.fields.vec.end(); ++it) {
const auto &field = **it; const auto &field = **it;
if (field.deprecated) if (field.deprecated) continue;
continue;
code += " " + methodPrefix + ".add" + MakeCamel(field.name) + "("; code += " " + methodPrefix + ".add" + MakeCamel(field.name) + "(";
code += "builder, " + GetArgName(field) + ");\n"; code += "builder, " + GetArgName(field) + ");\n";
...@@ -1346,14 +1342,11 @@ class JsTsGenerator : public BaseGenerator { ...@@ -1346,14 +1342,11 @@ class JsTsGenerator : public BaseGenerator {
code += " return " + methodPrefix + ".end" + Verbose(struct_def) + code += " return " + methodPrefix + ".end" + Verbose(struct_def) +
"(builder);\n"; "(builder);\n";
code += "}\n"; code += "}\n";
if (lang_.language == IDLOptions::kJs) if (lang_.language == IDLOptions::kJs) code += "\n";
code += "\n";
} }
if (lang_.language == IDLOptions::kTs) { if (lang_.language == IDLOptions::kTs) {
if (!object_namespace.empty()) { if (!object_namespace.empty()) { code += "}\n"; }
code += "}\n";
}
code += "}\n"; code += "}\n";
} }
} }
...@@ -1372,9 +1365,7 @@ class JsTsGenerator : public BaseGenerator { ...@@ -1372,9 +1365,7 @@ class JsTsGenerator : public BaseGenerator {
return argname; return argname;
} }
std::string Verbose(const StructDef &struct_def, std::string Verbose(const StructDef &struct_def, const char *prefix = "") {
const char* prefix = "")
{
return parser_.opts.js_ts_short_names ? "" : prefix + struct_def.name; return parser_.opts.js_ts_short_names ? "" : prefix + struct_def.name;
} }
}; };
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
*/ */
#include <iostream> #include <iostream>
#include "flatbuffers/code_generators.h" #include "flatbuffers/code_generators.h"
#include "flatbuffers/idl.h" #include "flatbuffers/idl.h"
#include "flatbuffers/util.h" #include "flatbuffers/util.h"
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
...@@ -826,7 +826,8 @@ class PhpGenerator : public BaseGenerator { ...@@ -826,7 +826,8 @@ class PhpGenerator : public BaseGenerator {
code += Indent + "private static $names = array(\n"; code += Indent + "private static $names = array(\n";
for (auto it = enum_def.Vals().begin(); it != enum_def.Vals().end(); ++it) { for (auto it = enum_def.Vals().begin(); it != enum_def.Vals().end(); ++it) {
auto &ev = **it; auto &ev = **it;
code += Indent + Indent + enum_def.name + "::" + ev.name + "=>" + "\"" + ev.name + "\",\n"; code += Indent + Indent + enum_def.name + "::" + ev.name + "=>" + "\"" +
ev.name + "\",\n";
} }
code += Indent + ");\n\n"; code += Indent + ");\n\n";
......
This diff is collapsed.
This diff is collapsed.
...@@ -142,8 +142,8 @@ bool Print<const void *>(const void *val, Type type, int indent, ...@@ -142,8 +142,8 @@ bool Print<const void *>(const void *val, Type type, int indent,
FLATBUFFERS_ASSERT(prev_val); FLATBUFFERS_ASSERT(prev_val);
auto union_type_byte = *prev_val; // Always a uint8_t. auto union_type_byte = *prev_val; // Always a uint8_t.
if (vector_index >= 0) { if (vector_index >= 0) {
auto type_vec = reinterpret_cast<const Vector<uint8_t> *>(prev_val + auto type_vec = reinterpret_cast<const Vector<uint8_t> *>(
ReadScalar<uoffset_t>(prev_val)); prev_val + ReadScalar<uoffset_t>(prev_val));
union_type_byte = type_vec->Get(static_cast<uoffset_t>(vector_index)); union_type_byte = type_vec->Get(static_cast<uoffset_t>(vector_index));
} }
auto enum_val = type.enum_def->ReverseLookup(union_type_byte, true); auto enum_val = type.enum_def->ReverseLookup(union_type_byte, true);
...@@ -205,9 +205,7 @@ bool Print<const void *>(const void *val, Type type, int indent, ...@@ -205,9 +205,7 @@ bool Print<const void *>(const void *val, Type type, int indent,
// clang-format on // clang-format on
return true; return true;
} }
default: default: FLATBUFFERS_ASSERT(0); return false;
FLATBUFFERS_ASSERT(0);
return false;
} }
} }
...@@ -287,7 +285,7 @@ static bool GenStruct(const StructDef &struct_def, const Table *table, ...@@ -287,7 +285,7 @@ static bool GenStruct(const StructDef &struct_def, const Table *table,
text += ":"; text += ":";
text += " "; text += " ";
switch (fd.value.type.base_type) { switch (fd.value.type.base_type) {
// clang-format off // clang-format off
#define FLATBUFFERS_TD(ENUM, IDLTYPE, \ #define FLATBUFFERS_TD(ENUM, IDLTYPE, \
CTYPE, JTYPE, GTYPE, NTYPE, PTYPE, RTYPE, KTYPE) \ CTYPE, JTYPE, GTYPE, NTYPE, PTYPE, RTYPE, KTYPE) \
case BASE_TYPE_ ## ENUM: \ case BASE_TYPE_ ## ENUM: \
...@@ -310,7 +308,7 @@ static bool GenStruct(const StructDef &struct_def, const Table *table, ...@@ -310,7 +308,7 @@ static bool GenStruct(const StructDef &struct_def, const Table *table,
return false; return false;
} }
break; break;
// clang-format on // clang-format on
} }
// Track prev val for use with union types. // Track prev val for use with union types.
if (struct_def.fixed) { if (struct_def.fixed) {
...@@ -330,15 +328,11 @@ static bool GenStruct(const StructDef &struct_def, const Table *table, ...@@ -330,15 +328,11 @@ static bool GenStruct(const StructDef &struct_def, const Table *table,
bool GenerateTextFromTable(const Parser &parser, const void *table, bool GenerateTextFromTable(const Parser &parser, const void *table,
const std::string &table_name, std::string *_text) { const std::string &table_name, std::string *_text) {
auto struct_def = parser.LookupStruct(table_name); auto struct_def = parser.LookupStruct(table_name);
if (struct_def == nullptr) { if (struct_def == nullptr) { return false; }
return false;
}
auto &text = *_text; auto &text = *_text;
text.reserve(1024); // Reduce amount of inevitable reallocs. text.reserve(1024); // Reduce amount of inevitable reallocs.
auto root = static_cast<const Table *>(table); auto root = static_cast<const Table *>(table);
if (!GenStruct(*struct_def, root, 0, parser.opts, &text)) { if (!GenStruct(*struct_def, root, 0, parser.opts, &text)) { return false; }
return false;
}
text += NewLine(parser.opts); text += NewLine(parser.opts);
return true; return true;
} }
...@@ -348,9 +342,9 @@ bool GenerateText(const Parser &parser, const void *flatbuffer, ...@@ -348,9 +342,9 @@ bool GenerateText(const Parser &parser, const void *flatbuffer,
std::string *_text) { std::string *_text) {
std::string &text = *_text; std::string &text = *_text;
FLATBUFFERS_ASSERT(parser.root_struct_def_); // call SetRootType() FLATBUFFERS_ASSERT(parser.root_struct_def_); // call SetRootType()
text.reserve(1024); // Reduce amount of inevitable reallocs. text.reserve(1024); // Reduce amount of inevitable reallocs.
auto root = parser.opts.size_prefixed ? auto root = parser.opts.size_prefixed ? GetSizePrefixedRoot<Table>(flatbuffer)
GetSizePrefixedRoot<Table>(flatbuffer) : GetRoot<Table>(flatbuffer); : GetRoot<Table>(flatbuffer);
if (!GenStruct(*parser.root_struct_def_, root, 0, parser.opts, _text)) { if (!GenStruct(*parser.root_struct_def_, root, 0, parser.opts, _text)) {
return false; return false;
} }
......
This diff is collapsed.
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
*/ */
#include "flatbuffers/reflection.h" #include "flatbuffers/reflection.h"
#include "flatbuffers/util.h" #include "flatbuffers/util.h"
// Helper functionality for reflection. // Helper functionality for reflection.
...@@ -431,8 +432,8 @@ Offset<const Table *> CopyTable(FlatBufferBuilder &fbb, ...@@ -431,8 +432,8 @@ Offset<const Table *> CopyTable(FlatBufferBuilder &fbb,
break; break;
} }
} }
FLATBUFFERS_FALLTHROUGH(); // fall thru FLATBUFFERS_FALLTHROUGH(); // fall thru
default: { // Scalars and structs. default: { // Scalars and structs.
auto element_size = GetTypeSize(element_base_type); auto element_size = GetTypeSize(element_base_type);
if (elemobjectdef && elemobjectdef->is_struct()) if (elemobjectdef && elemobjectdef->is_struct())
element_size = elemobjectdef->bytesize(); element_size = elemobjectdef->bytesize();
...@@ -466,7 +467,7 @@ Offset<const Table *> CopyTable(FlatBufferBuilder &fbb, ...@@ -466,7 +467,7 @@ Offset<const Table *> CopyTable(FlatBufferBuilder &fbb,
break; break;
} }
} }
FLATBUFFERS_FALLTHROUGH(); // fall thru FLATBUFFERS_FALLTHROUGH(); // fall thru
case reflection::Union: case reflection::Union:
case reflection::String: case reflection::String:
case reflection::Vector: case reflection::Vector:
...@@ -495,9 +496,8 @@ bool VerifyStruct(flatbuffers::Verifier &v, ...@@ -495,9 +496,8 @@ bool VerifyStruct(flatbuffers::Verifier &v,
auto offset = parent_table.GetOptionalFieldOffset(field_offset); auto offset = parent_table.GetOptionalFieldOffset(field_offset);
if (required && !offset) { return false; } if (required && !offset) { return false; }
return !offset || return !offset || v.Verify(reinterpret_cast<const uint8_t *>(&parent_table),
v.Verify(reinterpret_cast<const uint8_t *>(&parent_table), offset, offset, obj.bytesize());
obj.bytesize());
} }
bool VerifyVectorOfStructs(flatbuffers::Verifier &v, bool VerifyVectorOfStructs(flatbuffers::Verifier &v,
...@@ -535,9 +535,8 @@ bool VerifyUnion(flatbuffers::Verifier &v, const reflection::Schema &schema, ...@@ -535,9 +535,8 @@ bool VerifyUnion(flatbuffers::Verifier &v, const reflection::Schema &schema,
} }
case reflection::String: case reflection::String:
return v.VerifyString( return v.VerifyString(
reinterpret_cast<const flatbuffers::String *>(elem)); reinterpret_cast<const flatbuffers::String *>(elem));
default: default: return false;
return false;
} }
} }
...@@ -597,27 +596,24 @@ bool VerifyVector(flatbuffers::Verifier &v, const reflection::Schema &schema, ...@@ -597,27 +596,24 @@ bool VerifyVector(flatbuffers::Verifier &v, const reflection::Schema &schema,
} }
} }
case reflection::Union: { case reflection::Union: {
auto vec = flatbuffers::GetFieldV<flatbuffers::Offset<uint8_t>>(table, auto vec = flatbuffers::GetFieldV<flatbuffers::Offset<uint8_t>>(
vec_field); table, vec_field);
if (!v.VerifyVector(vec)) return false; if (!v.VerifyVector(vec)) return false;
if (!vec) return true; if (!vec) return true;
auto type_vec = table.GetPointer<Vector<uint8_t> *> auto type_vec = table.GetPointer<Vector<uint8_t> *>(vec_field.offset() -
(vec_field.offset() - sizeof(voffset_t)); sizeof(voffset_t));
if (!v.VerifyVector(type_vec)) return false; if (!v.VerifyVector(type_vec)) return false;
for (uoffset_t j = 0; j < vec->size(); j++) { for (uoffset_t j = 0; j < vec->size(); j++) {
// get union type from the prev field // get union type from the prev field
auto utype = type_vec->Get(j); auto utype = type_vec->Get(j);
auto elem = vec->Get(j); auto elem = vec->Get(j);
if (!VerifyUnion(v, schema, utype, elem, vec_field)) if (!VerifyUnion(v, schema, utype, elem, vec_field)) return false;
return false;
} }
return true; return true;
} }
case reflection::Vector: case reflection::Vector:
case reflection::None: case reflection::None:
default: default: FLATBUFFERS_ASSERT(false); return false;
FLATBUFFERS_ASSERT(false);
return false;
} }
} }
...@@ -663,8 +659,7 @@ bool VerifyObject(flatbuffers::Verifier &v, const reflection::Schema &schema, ...@@ -663,8 +659,7 @@ bool VerifyObject(flatbuffers::Verifier &v, const reflection::Schema &schema,
} }
break; break;
case reflection::Vector: case reflection::Vector:
if (!VerifyVector(v, schema, *table, *field_def)) if (!VerifyVector(v, schema, *table, *field_def)) return false;
return false;
break; break;
case reflection::Obj: { case reflection::Obj: {
auto child_obj = schema.objects()->Get(field_def->type()->index()); auto child_obj = schema.objects()->Get(field_def->type()->index());
...@@ -687,15 +682,11 @@ bool VerifyObject(flatbuffers::Verifier &v, const reflection::Schema &schema, ...@@ -687,15 +682,11 @@ bool VerifyObject(flatbuffers::Verifier &v, const reflection::Schema &schema,
voffset_t utype_offset = field_def->offset() - sizeof(voffset_t); voffset_t utype_offset = field_def->offset() - sizeof(voffset_t);
auto utype = table->GetField<uint8_t>(utype_offset, 0); auto utype = table->GetField<uint8_t>(utype_offset, 0);
auto uval = reinterpret_cast<const uint8_t *>( auto uval = reinterpret_cast<const uint8_t *>(
flatbuffers::GetFieldT(*table, *field_def)); flatbuffers::GetFieldT(*table, *field_def));
if (!VerifyUnion(v, schema, utype, uval, *field_def)) { if (!VerifyUnion(v, schema, utype, uval, *field_def)) { return false; }
return false;
}
break; break;
} }
default: default: FLATBUFFERS_ASSERT(false); break;
FLATBUFFERS_ASSERT(false);
break;
} }
} }
......
...@@ -242,9 +242,9 @@ bool SetGlobalTestLocale(const char *locale_name, std::string *_value) { ...@@ -242,9 +242,9 @@ bool SetGlobalTestLocale(const char *locale_name, std::string *_value) {
} }
bool ReadEnvironmentVariable(const char *var_name, std::string *_value) { bool ReadEnvironmentVariable(const char *var_name, std::string *_value) {
#ifdef _MSC_VER #ifdef _MSC_VER
__pragma(warning(disable : 4996)); // _CRT_SECURE_NO_WARNINGS __pragma(warning(disable : 4996)); // _CRT_SECURE_NO_WARNINGS
#endif #endif
auto env_str = std::getenv(var_name); auto env_str = std::getenv(var_name);
if (!env_str) return false; if (!env_str) return false;
if (_value) *_value = std::string(env_str); if (_value) *_value = std::string(env_str);
......
#include "native_type_test_impl.h" #include "native_type_test_impl.h"
#include "native_type_test_generated.h" #include "native_type_test_generated.h"
namespace flatbuffers { namespace flatbuffers {
Geometry::Vector3D Pack(const Native::Vector3D &obj) { Geometry::Vector3D Pack(const Native::Vector3D &obj) {
return Geometry::Vector3D(obj.x, obj.y, obj.z); return Geometry::Vector3D(obj.x, obj.y, obj.z);
}
const Native::Vector3D UnPack(const Geometry::Vector3D &obj) {
return Native::Vector3D(obj.x(), obj.y(), obj.z());
}
} }
const Native::Vector3D UnPack(const Geometry::Vector3D &obj) {
return Native::Vector3D(obj.x(), obj.y(), obj.z());
}
} // namespace flatbuffers
...@@ -2,23 +2,31 @@ ...@@ -2,23 +2,31 @@
#define NATIVE_TYPE_TEST_IMPL_H #define NATIVE_TYPE_TEST_IMPL_H
namespace Native { namespace Native {
struct Vector3D { struct Vector3D {
float x; float x;
float y; float y;
float z; float z;
Vector3D() { x = 0; y = 0; z = 0; }; Vector3D() {
Vector3D(float _x, float _y, float _z) { this->x = _x; this->y = _y; this->z = _z; } x = 0;
y = 0;
z = 0;
}; };
} Vector3D(float _x, float _y, float _z) {
this->x = _x;
this->y = _y;
this->z = _z;
}
};
} // namespace Native
namespace Geometry { namespace Geometry {
struct Vector3D; struct Vector3D;
} }
namespace flatbuffers { namespace flatbuffers {
Geometry::Vector3D Pack(const Native::Vector3D &obj); Geometry::Vector3D Pack(const Native::Vector3D &obj);
const Native::Vector3D UnPack(const Geometry::Vector3D &obj); const Native::Vector3D UnPack(const Geometry::Vector3D &obj);
} } // namespace flatbuffers
#endif // VECTOR3D_PACK_H #endif // VECTOR3D_PACK_H
This diff is collapsed.
...@@ -31,7 +31,7 @@ void TestEqStr(const char *expval, const char *val, const char *exp, ...@@ -31,7 +31,7 @@ void TestEqStr(const char *expval, const char *val, const char *exp,
#if defined(FLATBUFFERS_MEMORY_LEAK_TRACKING) && defined(_MSC_VER) && \ #if defined(FLATBUFFERS_MEMORY_LEAK_TRACKING) && defined(_MSC_VER) && \
defined(_DEBUG) defined(_DEBUG)
#define FLATBUFFERS_MEMORY_LEAK_TRACKING_MSVC # define FLATBUFFERS_MEMORY_LEAK_TRACKING_MSVC
#endif #endif
void InitTestEngine(TestFailEventListener listener) { void InitTestEngine(TestFailEventListener listener) {
...@@ -58,12 +58,12 @@ void InitTestEngine(TestFailEventListener listener) { ...@@ -58,12 +58,12 @@ void InitTestEngine(TestFailEventListener listener) {
int CloseTestEngine(bool force_report) { int CloseTestEngine(bool force_report) {
if (!testing_fails || force_report) { if (!testing_fails || force_report) {
#if defined(FLATBUFFERS_MEMORY_LEAK_TRACKING_MSVC) #if defined(FLATBUFFERS_MEMORY_LEAK_TRACKING_MSVC)
auto flags = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG); auto flags = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
flags &= ~_CRTDBG_DELAY_FREE_MEM_DF; flags &= ~_CRTDBG_DELAY_FREE_MEM_DF;
flags |= _CRTDBG_LEAK_CHECK_DF; flags |= _CRTDBG_LEAK_CHECK_DF;
_CrtSetDbgFlag(flags); _CrtSetDbgFlag(flags);
#endif #endif
} }
return (0 != testing_fails); return (0 != testing_fails);
} }
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment