<!-- HTML header for doxygen 1.8.6-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<title>FlatBuffers: Use in Lobster</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400italic,500,500italic,700,700italic|Roboto+Mono:400,700" rel="stylesheet">
<link href="style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea" style="height: 110px;">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="commonprojectlogo">
    <img alt="Logo" src="fpl_logo_small.png"/>
  </td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">FlatBuffers
   </div>
   <div style="font-size:12px;">
    An open source project by <a href="https://developers.google.com/games/#Tools">FPL</a>.
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('flatbuffers_guide_use_lobster.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="PageDoc"><div class="header">
  <div class="headertitle">
<div class="title">Use in Lobster </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p><a class="anchor" id="md_LobsterUsage"></a></p>
<h1><a class="anchor" id="autotoc_md128"></a>
Before you get started</h1>
<p>Before diving into the FlatBuffers usage in Lobster, it should be noted that the <a class="el" href="flatbuffers_guide_tutorial.html">Tutorial</a> page has a complete guide to general FlatBuffers usage in all of the supported languages (including Lobster). This page is designed to cover the nuances of FlatBuffers usage, specific to Lobster.</p>
<p>You should also have read the <a class="el" href="flatbuffers_guide_building.html">Building</a> documentation to build <code>flatc</code> and should be familiar with <a class="el" href="flatbuffers_guide_using_schema_compiler.html">Using the schema compiler</a> and <a class="el" href="flatbuffers_guide_writing_schema.html">Writing a schema</a>.</p>
<h1><a class="anchor" id="autotoc_md129"></a>
FlatBuffers Lobster library code location</h1>
<p>The code for the FlatBuffers Lobster library can be found at <code>flatbuffers/lobster</code>. You can browse the library code on the <a href="https://github.com/google/flatbuffers/tree/master/
lobster">FlatBuffers GitHub page</a>.</p>
<h1><a class="anchor" id="autotoc_md130"></a>
Testing the FlatBuffers Lobster library</h1>
<p>The code to test the Lobster library can be found at <code>flatbuffers/tests</code>. The test code itself is located in <a href="https://github.com/google/
flatbuffers/blob/master/tests/lobstertest.lobster">lobstertest.lobster</a>.</p>
<p>To run the tests, run <code>lobster lobstertest.lobster</code>. To obtain Lobster itself, go to the <a href="http://strlen.com/lobster">Lobster homepage</a> or <a href="https://github.com/aardappel/lobster">github</a> to learn how to build it for your platform.</p>
<h1><a class="anchor" id="autotoc_md131"></a>
Using the FlatBuffers Lobster library</h1>
<p><em>Note: See <a class="el" href="flatbuffers_guide_tutorial.html">Tutorial</a> for a more in-depth example of how to use FlatBuffers in Lobster.</em></p>
<p>There is support for both reading and writing FlatBuffers in Lobster.</p>
<p>To use FlatBuffers in your own code, first generate Lobster classes from your schema with the <code>--lobster</code> option to <code>flatc</code>. Then you can include both FlatBuffers and the generated code to read or write a FlatBuffer.</p>
<p>For example, here is how you would read a FlatBuffer binary file in Lobster: First, import the library and the generated code. Then read a FlatBuffer binary file into a string, which you pass to the <code>GetRootAsMonster</code> function:</p>
<div class="fragment"><div class="line">include &quot;monster_generated.lobster&quot;</div>
<div class="line"> </div>
<div class="line">let fb = read_file(&quot;monsterdata_test.mon&quot;)</div>
<div class="line">assert fb</div>
<div class="line">let monster = MyGame_Example_GetRootAsMonster(fb)</div>
</div><!-- fragment --><p>Now you can access values like this:</p>
<div class="fragment"><div class="line">let hp = monster.hp</div>
<div class="line">let pos = monster.pos</div>
</div><!-- fragment --><p>As you can see, even though <code>hp</code> and <code>pos</code> are functions that access FlatBuffer data in-place in the string buffer, they appear as field accesses.</p>
<h1><a class="anchor" id="autotoc_md132"></a>
Speed</h1>
<p>Using FlatBuffers in Lobster should be relatively fast, as the implementation makes use of native support for writing binary values, and access of vtables. Both generated code and the runtime library are therefore small and fast.</p>
<p>Actual speed will depend on whether you use Lobster as bytecode VM or compiled to C++.</p>
<h1><a class="anchor" id="autotoc_md133"></a>
Text Parsing</h1>
<p>Lobster has full support for parsing JSON into FlatBuffers, or generating JSON from FlatBuffers. See <code>samples/sample_test.lobster</code> for an example.</p>
<p>This uses the C++ parser and generator underneath, so should be both fast and conformant.</p>
<p><br  />
 </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- Google Analytics -->
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  ga('create', 'UA-49880327-7', 'auto');
  ga('send', 'pageview');
</script>
</body>
</html>
