• 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

    代码效果

    参考资料

    https://formulae.brew.sh/formula/flatbuffers
    https://github.com/google/flatbuffers
    https://www.npmjs.com/package/flatbuffers

  • 相关阅读:
    细菌觅食算法-python实现
    蝙蝠算法-python实现
    人工免疫算法-python实现
    人工鱼群算法-python实现
    人工蜂群算法-python实现
    粒子群优化算法-python实现
    查看所有定时任务
    记一次反挖矿病毒。。。
    ubantu20.04安装Amber20 && AmberTools20
    centos8.2装teamviewer,启动时无法显示GUI,无法登录,但是不报错的解决办法。
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/14589627.html
Copyright © 2020-2023  润新知