<!-- 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: Class Members - Functions</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('functions_func_e.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="contents">
&#160;

<h3><a id="index_e"></a>- e -</h3><ul>
<li>empty()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_1_1_blob.html#a880b5dd86d9dcdf1ebd6311ff5ff323e">com.google.flatbuffers.FlexBuffers.Blob</a>
, <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_1_1_key.html#a77f53a9fec79249643086510a123fafe">com.google.flatbuffers.FlexBuffers.Key</a>
, <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_1_1_map.html#a51613f9a249fe3d8157f6fbc3764b211">com.google.flatbuffers.FlexBuffers.Map</a>
, <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_1_1_typed_vector.html#aab2eaadabb0da8cefbbfe6350df9ac84">com.google.flatbuffers.FlexBuffers.TypedVector</a>
, <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_1_1_vector.html#afa8814c2f88a954250fb18abafdf9374">com.google.flatbuffers.FlexBuffers.Vector</a>
</li>
<li>encodedLength()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_utf8.html#a88db1f58c8651f849151d4563f86bcab">com.google.flatbuffers.Utf8</a>
, <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_utf8_old.html#af955284b2754ee1f27832845fa8f29f1">com.google.flatbuffers.Utf8Old</a>
, <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_utf8_safe.html#af89e3718e33e96bf9875faf42d158239">com.google.flatbuffers.Utf8Safe</a>
</li>
<li>encodeUtf8()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_utf8.html#a60b4b2e81aae13bd5a0d09b95a0be4bb">com.google.flatbuffers.Utf8</a>
, <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_utf8_old.html#af5a4971f1696a7efb4b2f56bbcdaf553">com.google.flatbuffers.Utf8Old</a>
, <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_utf8_safe.html#a7151137667cc19c5b510f43927fecc43">com.google.flatbuffers.Utf8Safe</a>
</li>
<li>encodeUtf8CodePoint()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_utf8.html#a948306c5d5b42739bd1e42cc462c0395">com.google.flatbuffers.Utf8</a>
</li>
<li>endMap()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_builder.html#a06f4f09e464b1ed2d44dd2ac22e82e74">com.google.flatbuffers.FlexBuffersBuilder</a>
</li>
<li>endVector()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_builder.html#a15ed395d361a4099057629a0b0307dbc">com.google.flatbuffers.FlexBuffersBuilder</a>
</li>
<li>EndVector()
: <a class="el" href="class_flat_buffers_1_1_flat_buffer_builder.html#a7cacff748cbf996b52de2e31e731af41">FlatBuffers.FlatBufferBuilder</a>
</li>
<li>equals()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_1_1_key.html#a70a304543e4b3b231486a9b2cf49d815">com.google.flatbuffers.FlexBuffers.Key</a>
</li>
</ul>
</div><!-- contents -->
</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>
