<!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>
<link rel="canonical" href="https://ignite.apache.org/releases/2.9.0/cppdoc/functions_func_b.html" />
<META NAME="ROBOTS" CONTENT="NOINDEX">

<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.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>&nbsp; Apache Ignite C++: 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="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" />

<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','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-61232409-1', 'auto');
  ga('send', 'pageview');

</script></head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="ignite_logo.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">&nbsp; Apache Ignite C++
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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_b"></a>- b -</h3><ul>
<li>BinaryArrayReader()
: <a class="el" href="classignite_1_1binary_1_1BinaryArrayReader.html#a769b28f697b49ac51623493006e4eaa7">ignite::binary::BinaryArrayReader&lt; T &gt;</a>
</li>
<li>BinaryArrayWriter()
: <a class="el" href="classignite_1_1binary_1_1BinaryArrayWriter.html#aec2ce4c2637563459874d053d24ecced">ignite::binary::BinaryArrayWriter&lt; T &gt;</a>
</li>
<li>BinaryCollectionReader()
: <a class="el" href="classignite_1_1binary_1_1BinaryCollectionReader.html#a3b88325f92a5a1784555a51db7648981">ignite::binary::BinaryCollectionReader&lt; T &gt;</a>
</li>
<li>BinaryCollectionWriter()
: <a class="el" href="classignite_1_1binary_1_1BinaryCollectionWriter.html#a34d5d50ba640893134cd092460001dd9">ignite::binary::BinaryCollectionWriter&lt; T &gt;</a>
</li>
<li>BinaryEnumEntry()
: <a class="el" href="classignite_1_1binary_1_1BinaryEnumEntry.html#a3b9c6c381c6d4cf74171c4a23ac29767">ignite::binary::BinaryEnumEntry</a>
</li>
<li>BinaryMapReader()
: <a class="el" href="classignite_1_1binary_1_1BinaryMapReader.html#a2b5fe1df5d800106befb2b6984b16f2d">ignite::binary::BinaryMapReader&lt; K, V &gt;</a>
</li>
<li>BinaryMapWriter()
: <a class="el" href="classignite_1_1binary_1_1BinaryMapWriter.html#a4a68422e559efcda98e8c492b57d8aa3">ignite::binary::BinaryMapWriter&lt; K, V &gt;</a>
</li>
<li>BinaryObject()
: <a class="el" href="classignite_1_1binary_1_1BinaryObject.html#a33e2264ff8c984c59b5578b8d285af68">ignite::binary::BinaryObject</a>
</li>
<li>BinaryRawReader()
: <a class="el" href="classignite_1_1binary_1_1BinaryRawReader.html#a5a6449ff5459521cb2c7ff3827ace30c">ignite::binary::BinaryRawReader</a>
</li>
<li>BinaryRawWriter()
: <a class="el" href="classignite_1_1binary_1_1BinaryRawWriter.html#a46c2c51b894800c279e4272c2d6d6430">ignite::binary::BinaryRawWriter</a>
</li>
<li>BinaryReader()
: <a class="el" href="classignite_1_1binary_1_1BinaryReader.html#a2e625f22ec6b4d4b66603d6929da54d2">ignite::binary::BinaryReader</a>
</li>
<li>BinaryStringArrayReader()
: <a class="el" href="classignite_1_1binary_1_1BinaryStringArrayReader.html#a8ef57ef19ef33b7f7d0e7915fcca7246">ignite::binary::BinaryStringArrayReader</a>
</li>
<li>BinaryStringArrayWriter()
: <a class="el" href="classignite_1_1binary_1_1BinaryStringArrayWriter.html#a93bc442c34d5e02ae6d485064fbb3cd2">ignite::binary::BinaryStringArrayWriter</a>
</li>
<li>BinaryWriter()
: <a class="el" href="classignite_1_1binary_1_1BinaryWriter.html#a468b45f115ac3a9758890d50d0023409">ignite::binary::BinaryWriter</a>
</li>
<li>Broadcast()
: <a class="el" href="classignite_1_1compute_1_1Compute.html#aac88705f7750ccb045a0aa5f0cb1af1e">ignite::compute::Compute</a>
</li>
<li>BroadcastAsync()
: <a class="el" href="classignite_1_1compute_1_1Compute.html#aec7706da990ae1627fe03068ba0d4348">ignite::compute::Compute</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Oct 15 2020 12:17:18 for &nbsp; Apache Ignite C++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
