<!-- 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_i.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_i"></a>- i -</h3><ul>
<li>init()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#adf671e70a4d30c85f37393c47a7a7dd1">com.google.flatbuffers.FlatBufferBuilder</a>
</li>
<li>isBlob()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_1_1_reference.html#a73355c070fbb12912f016f8ce543d30c">com.google.flatbuffers.FlexBuffers.Reference</a>
</li>
<li>isBoolean()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_1_1_reference.html#a6599ee9390ccb44e5be8a0798c1f1b70">com.google.flatbuffers.FlexBuffers.Reference</a>
</li>
<li>isEmpty()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_1_1_vector.html#ad63c37d406fdca05ebaa6130eab03b43">com.google.flatbuffers.FlexBuffers.Vector</a>
</li>
<li>isEmptyVector()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_1_1_typed_vector.html#a3563e93c90dff9b62cf14c50527f67fa">com.google.flatbuffers.FlexBuffers.TypedVector</a>
</li>
<li>isFieldPresent()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a41a23ecaa9bdd850d68dbc5918de5030">com.google.flatbuffers.FlatBufferBuilder</a>
</li>
<li>isFloat()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_1_1_reference.html#aa6bde3e88b3944eb6107e869c883e1d3">com.google.flatbuffers.FlexBuffers.Reference</a>
</li>
<li>isInt()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_1_1_reference.html#a2f3a6ac8042012a84d7055a1cf7019e5">com.google.flatbuffers.FlexBuffers.Reference</a>
</li>
<li>isIntOrUInt()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_1_1_reference.html#a1a20212322d1e7c0ec3b6c903b5ae392">com.google.flatbuffers.FlexBuffers.Reference</a>
</li>
<li>isKey()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_1_1_reference.html#a05805646c07c621de31ccea661c42743">com.google.flatbuffers.FlexBuffers.Reference</a>
</li>
<li>isMap()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_1_1_reference.html#a2e60be6412357e9fc384c9188bf83a32">com.google.flatbuffers.FlexBuffers.Reference</a>
</li>
<li>isNull()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_1_1_reference.html#a7514601001d371504968558a5f28004e">com.google.flatbuffers.FlexBuffers.Reference</a>
</li>
<li>isNumeric()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_1_1_reference.html#a5d0eb9fdcce3680d939ebfbc859ca286">com.google.flatbuffers.FlexBuffers.Reference</a>
</li>
<li>isString()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_1_1_reference.html#a7bc5bc1def05910a487f71f73b11ae07">com.google.flatbuffers.FlexBuffers.Reference</a>
</li>
<li>isTypedVector()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_1_1_reference.html#af0ebeb71ae6518c502079a1fdae59247">com.google.flatbuffers.FlexBuffers.Reference</a>
</li>
<li>isUInt()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_1_1_reference.html#a1898474a735746d61ed9f92904bae547">com.google.flatbuffers.FlexBuffers.Reference</a>
</li>
<li>isVector()
: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flex_buffers_1_1_reference.html#abf279348e19a3add21e5fe73eaab7a8f">com.google.flatbuffers.FlexBuffers.Reference</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>
