Skip to content
Snippets Groups Projects
  1. Feb 10, 2017
  2. Feb 09, 2017
  3. Feb 01, 2017
  4. Jan 27, 2017
  5. Jan 24, 2017
  6. Jan 19, 2017
    • Wouter van Oortmerssen's avatar
      More native code gen functionality. · 3f936c56
      Wouter van Oortmerssen authored
      Allow tables to be mapped to native types directly.  For example, a table
      representing a vector3 (eg. table Vec3 { x:float; y:float; z:float; }) can
      be mapped to a "mathfu::vec3" native type in NativeTables.  This requires
      users to provide Pack and UnPack functions that convert between the
      Table and native types.  This is done by adding the "native_type" attribute
      to the table definition.
      
      To support user-defined flatbuffers::Pack and flatbuffers::UnPack functions,
      support a "native_include" markup that will generate a corresponding
      
      Also add an UnPackTo function which allows users to pass in a pointer to
      a NativeTable object into which to UnPack the Table.  The existing UnPack
      function is now simply:
      
        NativeTable* UnPack() {
          NativeTable* obj = new NativeTable();
          Table::UnPackTo(obj);
          return obj;
        }
      
      Finally, allow native types to be given a default value as well which are
      set in the NativeTable constructor.  This is done by providing a
      "native_default" attribute to the member of a table.
      
      Change-Id: Ic45cb48b0e6d7cfa5734b24819e54aa96d847cfd
      3f936c56
  7. Jan 14, 2017
    • Wouter van Oortmerssen's avatar
      Add CodeWriter utility class. · 7b94eab2
      Wouter van Oortmerssen authored
      Helps simplify code generation code.  Instead of this:
        code += "inline const " + cpp_qualified_name + " *Get";
        code += name;
        code += "(const void *buf) {\n  return flatbuffers::GetRoot<";
        code += cpp_qualified_name + ">(buf);\n}\n\n";
      
      You do this:
        code.SetValue("NAME", struct_def.name);
        code.SetValue("CPP_NAME", cpp_qualified_name);
        code += "inline const {{CPP_NAME}} *Get{{NAME}}(const void *buf) {";
        code += "  return flatbuffers::GetRoot<{{CPP_NAME}}>(buf);";
        code += "}";
        code += "";
      
      Updated the CPP code generator to use the CodeWriter class.  Most of the
      changes in the generated code are white-space changes, esp. around new
      lines (since the code generator class automatically appends new lines
      when appending a string).  Actual code changes include:
      
      * Renamed "rehasher" to "_rehasher" for consistency with other args in
        Pack function.
      
      * Renamed "union_obj" to "obj: in UnPack function.
      
      * Always do "(void)_o;" to prevent unused variable warning in Create
        function (instead of only doing it if there are no fields) in order
        to avoid two-passes.
      
      * Renamed padding variables from __paddingX to paddingX__.
        "Each name that contains a double underscore (_ _) [...] is reserved
         to the implementation for any use."  C++ standards 17.4.3.1.2.
      
      * Add braces around switch cases.
      
      * Calculate index as a separate statement in EnumName function, eg.
          const size_t index = ...;
          return EnumNamesX()[index];
        vs.
          return EnumNamesX()[...];
      
      * Stored end table offset in variable in Finish() functions, eg.
          const auto end = fbb_.EndTable(start_, ...);
          auto o = flatbuffers::Offset<T>(end);
        vs.
          auto o = flatbuffers::Offset<T>(fbb_.EndTable(start, ...));
      
      * Separate reinterpret_cast calls from function calls in Union
        functions, eg.
          auto ptr = reinterpret_cast<const T *>(obj);
          return ptr->UnPack(resolver);
        vs.
          return reinterpret_cast<const T *>(obj)->UnPack(resolver);
      
      * Removed unecessary (void)(padding__X) no-ops from constructors, eg.
          Test(int16_t a, int8_t b) : ... {
            (void)__padding0;  // <-- Removed this line.
          }
      
      In the idl_gen_cpp.cpp file itself, I refactored some code generation into
      new functions: GenParam, GenNativeTable, GenVerifyCall, GenBuilders,
      GenUnpackFieldStatement, and GenCreateParam.
      
      Change-Id: I727b1bd8719d05b7ce33cbce00eb58fda817b25d
      7b94eab2
  8. Dec 14, 2016
  9. Dec 05, 2016
    • Ronak Jain's avatar
      Support for Golang GRPC (Experimental) (#4082) · a31ddd2b
      Ronak Jain authored
      * support for grpc golang
      
      * refactored grpc go generator
      
      * added grpc-go test and refactored
      
      * refactored idl_gen_grpc.cpp
      
      * fixed grpc generate method name
      
      * refactored flatc and fixed line length issue
      
      * added codec to go lib and fixed formatting issues
      
      * fixed spacing issues
      a31ddd2b
  10. Dec 02, 2016
  11. Oct 17, 2016
  12. Oct 12, 2016
  13. Aug 18, 2016
  14. Aug 01, 2016
  15. Jul 29, 2016
  16. Jul 21, 2016
  17. Jul 20, 2016
  18. Jul 09, 2016
  19. Jul 04, 2016
  20. Jul 01, 2016
  21. Jun 29, 2016
  22. Jun 20, 2016
  23. Apr 13, 2016
  24. Apr 12, 2016
  25. Mar 29, 2016
    • Nnamdi's avatar
      Added --gen-name-strings command line option. · 35f6bb50
      Nnamdi authored
      To support the use case described in issue google/flatbuffers#3826, a new command line option --gen-name-strings
      has been added, which will cause a static GetFullyQualifiedName function to be added
      to the C++ output for tables/structs.
      35f6bb50
  26. Mar 09, 2016
  27. Mar 08, 2016
  28. Jan 21, 2016
  29. Jan 18, 2016
  30. Jan 09, 2016
  31. Dec 30, 2015
  32. Dec 22, 2015
  33. Dec 21, 2015
  34. Dec 04, 2015
  35. Dec 02, 2015
  36. Nov 25, 2015
  37. Nov 17, 2015
    • Shuhei Taunma's avatar
      (PHP) add experimental support for PHP language. · 5ce86826
      Shuhei Taunma authored
      * codegen for all basic features: WIP (probably implemented all basic feature)
      * JSON parsing: NO
      * Simple mutation: NO
      * Reflection: NO
      * Buffer verifier: NO (will be add later)
      * Testing: basic: Yes
      * Testing: fuzz: Yes
      * Performance: Not bad
      * Platform: Supported Linux, OS X, Windows (has 32bit integer limitation)
      * Engine Unity: No
      
      flatc --php monster_test.fbs
      
        <?php
        //include neccessary files.
        $fbb = new Google\FlatBuffers\FlatBufferBuilder(1);
        $str = $fbb->createString("monster");
        \MyGame\Example\Monster::startMonster($fbb);
        \MyGame\Example\Monster::addHp($fbb, 80);
        \MyGame\Example\Monster::addName($fbb, $str);
        $mon = \MyGame\Example\Monster::endMonster($fbb);
        $fbb->finish($mon);
        echo $fbb->sizedByteArray();
      
      PHP 5.4 higher
      
      Currently, we do not register this library to packagist as still experimental and versioning problem.
      If you intended to use flatbuffers with composer. add repostiories section to composer.json like below.
      
        "repositories": [{
          "type": "vcs",
          "url": "https://github.com/google/flatbuffers"
        }],
      
       and just put google/flatbuffers.
      
        "require": {
          "google/flatbuffers": "*"
        }
      
      * PHP's integer is platform dependant. we strongly recommend use 64bit machine
        and don't use uint, ulong types as prevent overflow issue.
        ref: http://php.net/manual/en/language.types.integer.php
      
      * php don't support float type. floating point numbers are always parsed as double precision internally.
        ref: http://php.net/manual/en/language.types.float.php
      
      * ByteBuffer is little bit slow implemnentation due to many chr/ord function calls. Especially encoding objects.
        This is expected performance as PHP5 has parsing arguments overhead. probably we'll add C-extension.
      
      Basically, PHP implementation respects Java and C# implementation.
      
      Note: ByteBuffer and FlatBuffersBuilder class are not intended to use other purposes.
            we may change internal API foreseeable future.
      
      PSR-2, PSR-4 standards.
      
      Implemented simple assertion class (respect JavaScript testcase implementation) as we prefer small code base.
      this also keeps CI iteration speed.
      
      we'll choose phpunit or something when the test cases grown.
      5ce86826
  38. Oct 29, 2015
  39. Oct 15, 2015
    • Evan Wallace's avatar
      Add support for JavaScript code generation · 224e33ed
      Evan Wallace authored
      This adds a JavaScript language target. The generated JavaScript uses Google
      Closure Compiler type annotations and can be compiled using the advanced
      compilation mode, which performs type checking and optimizations such as
      inlining and dead code elimination. The generated JavaScript also exports all
      generated symbols for use with Node.js and RequireJS. This export behavior
      can be turned off with the --no-js-exports flag for use with Google Closure
      Compiler.
      224e33ed
Loading