Once `flatc` is built successfully, compile the schema for your language:
Once `flatc` is built successfully, compile the schema for your language:
<divclass="language-c">
*Note: If you're working in C, you need to use the separate project [FlatCC](https://github.com/dvidelabs/flatcc) which contains a schema compiler and runtime library in C for C.*
<br>
See [flatcc build instructions](https://github.com/dvidelabs/flatcc#building).
<br>
Please be aware of the difference between `flatc` and `flatcc` tools.
<br>
</div>
<divclass="language-cpp">
<divclass="language-cpp">
~~~{.sh}
~~~{.sh}
cd flatbuffers/sample
cd flatbuffers/sample
...
@@ -267,8 +283,17 @@ Once `flatc` is built successfully, compile the schema for your language:
...
@@ -267,8 +283,17 @@ Once `flatc` is built successfully, compile the schema for your language:
./../flatc --php samples/monster.fbs
./../flatc --php samples/monster.fbs
~~~
~~~
</div>
</div>
<divclass="language-c">
~~~{.sh}
cd flatcc
mkdir -p build/tmp/samples/monster
bin/flatcc -a -o build/tmp/samples/monster samples/monster/monster.fbs
# or just
flatcc/samples/monster/build.sh
~~~
</div>
For a more complete guide to using the `flatc` compiler, pleaes read the
For a more complete guide to using the `flatc` compiler, please read the
[Using the schema compiler](@ref flatbuffers_guide_using_schema_compiler)
[Using the schema compiler](@ref flatbuffers_guide_using_schema_compiler)
section of the Programmer's Guide.
section of the Programmer's Guide.
...
@@ -359,6 +384,18 @@ The first step is to import/include the library, generated files, etc.
...
@@ -359,6 +384,18 @@ The first step is to import/include the library, generated files, etc.
}
}
~~~
~~~
</div>
</div>
<divclass="language-c">
~~~{.c}
#include "monster_builder.h" // Generated by `flatcc`.
// Convenient namespace macro to manage long namespace prefix.
#undef ns
#define ns(x) FLATBUFFERS_WRAP_NAMESPACE(MyGame_Sample, x) // Specified in the schema.
// A helper to simplify creating vectors from C-arrays.
#define c_vec_len(V) (sizeof(V)/sizeof((V)[0]))
~~~
</div>
Now we are ready to start building some buffers. In order to start, we need
Now we are ready to start building some buffers. In order to start, we need
to create an instance of the `FlatBufferBuilder`, which will contain the buffer
to create an instance of the `FlatBufferBuilder`, which will contain the buffer
...
@@ -413,6 +450,14 @@ as it grows:
...
@@ -413,6 +450,14 @@ as it grows:
$builder = new Google\FlatBuffers\FlatbufferBuilder(0);
$builder = new Google\FlatBuffers\FlatbufferBuilder(0);
~~~
~~~
</div>
</div>
<divclass="language-c">
~~~{.c}
flatcc_builder_t builder, *B;
B = &builder;
// Initialize the builder object.
flatcc_builder_init(B);
~~~
</div>
After creating the `builder`, we can start serializing our data. Before we make
After creating the `builder`, we can start serializing our data. Before we make
our `orc` Monster, lets create some `Weapon`s: a `Sword` and an `Axe`.
our `orc` Monster, lets create some `Weapon`s: a `Sword` and an `Axe`.
...
@@ -525,6 +570,18 @@ our `orc` Monster, lets create some `Weapon`s: a `Sword` and an `Axe`.
...
@@ -525,6 +570,18 @@ our `orc` Monster, lets create some `Weapon`s: a `Sword` and an `Axe`.