天天看點

flatbuffers 試用

flatbuffers 試用

安裝cli 編譯器

brew install flatbuffers      

cli 指令

flatc: error: unknown commandline argument: --help      
Usage: flatc [OPTION]... FILE... [-- FILE...]      
--binary         -b    Generate wire format binaries for any data definitions.      
--json           -t    Generate text output for any data definitions.      
--cpp            -c    Generate C++ headers for tables/structs.      
--go             -g    Generate Go files for tables/structs.      
--java           -j    Generate Java classes for tables/structs.      
--js             -s    Generate JavaScript code for tables/structs.      
--dart           -d    Generate Dart classes for tables/structs.      
--ts             -T    Generate TypeScript code for tables/structs.      
--csharp         -n    Generate C# classes for tables/structs.      
--python         -p    Generate Python files for tables/structs.      
--lobster              Generate Lobster files for tables/structs.      
--lua            -l    Generate Lua files for tables/structs.      
--rust           -r    Generate Rust files for tables/structs.      
--php                  Generate PHP files for tables/structs.      
--kotlin               Generate Kotlin classes for tables/structs.      
--jsonschema           Generate Json schema.      
--swift                Generate Swift files for tables/structs.      
-o PATH                Prefix PATH to all generated files.      
-I PATH                Search for includes in the specified path.      
-M                     Print make rules for generated files.      
--version              Print the version number of flatc and exit.      
--strict-json          Strict JSON: field names must be / will be quoted,      
no trailing commas in tables/vectors.      
--allow-non-utf8       Pass non-UTF-8 input through parser and emit nonstandard      
\x escapes in JSON. (Default is to raise parse error on      
non-UTF-8 input.)      
--natural-utf8         Output strings with UTF-8 as human-readable strings.      
By default, UTF-8 characters are printed as \uXXXX escapes.      
--defaults-json        Output fields whose value is the default when      
writing JSON      
--unknown-json         Allow fields in JSON that are not defined in the      
schema. These fields will be discared when generating      
binaries.      
--no-prefix            Don't prefix enum values with the enum type in C++.      
--scoped-enums         Use C++11 style scoped and strongly typed enums.      
also implies --no-prefix.      
--gen-includes         (deprecated), this is the default behavior.      
If the original behavior is required (no include      
statements) use --no-includes.      
--no-includes          Don't generate include statements for included      
schemas the generated file depends on (C++ / Python).      
--gen-mutable          Generate accessors that can mutate buffers in-place.      
--gen-onefile          Generate single output file for C# and Go.      
--gen-name-strings     Generate type name functions for C++ and Rust.      
--gen-object-api       Generate an additional object-based API.      
--gen-compare          Generate operator== for object-based API types.      
--gen-nullable         Add Clang _Nullable for C++ pointer. or @Nullable for Java      
--java-checkerframe    work Add @Pure for Java.      
--gen-generated        Add @Generated annotation for Java      
--gen-all              Generate not just code for the current schema files,      
but for all files it includes as well.      
If the language uses a single file for output (by default      
the case for C++ and JS), all code will end up in this one      
file.      
--cpp-include          Adds an #include in generated file.      
--cpp-ptr-type T       Set object API pointer type (default std::unique_ptr).      
--cpp-str-type T       Set object API string type (default std::string).      
T::c_str(), T::length() and T::empty() must be supported.      
The custom type also needs to be constructible from std::string      
(see the --cpp-str-flex-ctor option to change this behavior).      
--cpp-str-flex-ctor    Don't construct custom string types by passing std::string      
from Flatbuffers, but (char* + length).      
--cpp-std CPP_STD      Generate a C++ code using features of selected C++ standard.      
Supported CPP_STD values:      
* 'c++0x' - generate code compatible with old compilers;      
* 'c++11' - use C++11 code generator (default);      
* 'c++17' - use C++17 features in generated code (experimental).      
--object-prefix        Customise class prefix for C++ object-based API.      
--object-suffix        Customise class suffix for C++ object-based API.      
Default value is "T".      
--no-js-exports        Removes Node.js style export lines in JS.      
--goog-js-export       Uses goog.exports* for closure compiler exporting in JS.      
--es6-js-export        Uses ECMAScript 6 export style lines in JS.      
--go-namespace         Generate the overrided namespace in Golang.      
--go-import            Generate the overrided import for flatbuffers in Golang      
(default is "github.com/google/flatbuffers/go").      
--raw-binary           Allow binaries without file_indentifier to be read.      
This may crash flatc given a mismatched schema.      
--size-prefixed        Input binaries are size prefixed buffers.      
--proto                Input is a .proto, translate to .fbs.      
--proto-namespace-suffix Add this namespace to any flatbuffers generated      
SUFFIX                 from protobufs.      
--oneof-union          Translate .proto oneofs to flatbuffer unions.      
--grpc                 Generate GRPC interfaces for the specified languages.      
--schema               Serialize schemas instead of JSON (use with -b).      
--bfbs-comments        Add doc comments to the binary schema files.      
--bfbs-builtins        Add builtin attributes to the binary schema files.      
--bfbs-gen-embed       Generate code to embed the bfbs schema to the source.      
--conform FILE         Specify a schema the following schemas should be      
an evolution of. Gives errors if not.      
--conform-includes     Include path for the schema given with --conform PATH      
--filename-suffix      The suffix appended to the generated file names.      
Default is '_generated'.      
--filename-ext         The extension appended to the generated file names.      
Default is language-specific (e.g., '.h' for C++)      
--include-prefix       Prefix this path to any generated include statements.      
PATH      
--keep-prefix          Keep original prefix of schema include statement.      
--no-fb-import         Don't include flatbuffers import statement for TypeScript.      
--no-ts-reexport       Don't re-export imported dependencies for TypeScript.      
--short-names          Use short function names for JS and TypeScript.      
--reflect-types        Add minimal type reflection to code generation.      
--reflect-names        Add minimal type/name reflection.      
--root-type T          Select or override the default root_type      
--force-defaults       Emit default values in binary output from JSON      
--force-empty          When serializing from object API representation,      
force strings and vectors to empty rather than null.      
--force-empty-vectors  When serializing from object API representation,      
force vectors to empty rather than null.      
--flexbuffers          Used with "binary" and "json" options, it generates      
data using schema-less FlexBuffers.      
FILEs may be schemas (must end in .fbs), binary schemas (must end in .bfbs),      
or JSON files (conforming to preceding schema). FILEs after the -- must be      
binary flatbuffer format files.      
Output files are named using the base file name of the input,      
and written to the current directory or the path given by -o.      
example: flatc -c -b schema1.fbs schema2.fbs data.json      

編寫一個schema

http_message.fbs

union HttpCommand {      
HttpQuery,      
HttpResultSet,      
HttpError      
}      
table HttpMessage {      
message_id: uint;      
command: HttpCommand;      
}      
table HttpQuery {      
query: string;      
}      
table HttpError {      
error: string;      
}      
table HttpResultSet {      
columns: [string];      
rows: [HttpRow];      
}      
table HttpRow {      
values: [HttpColumnValue];      
}      
table HttpColumnValue {      
string_value: string;      
}      
root_type HttpMessage;      

生成代碼

flatc  --js ./http_message.fbs      

代碼效果

flatbuffers 試用

參考資料

上一篇: 應用:試用

繼續閱讀