<!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.7.6/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>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 Wed Sep 11 2019 22:23:04 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>
