<!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>
<!-- Yandex.Metrika counter -->
    <script type="text/javascript" >
      (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
      m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
      (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
    
      ym(72949126, "init", {
           clickmap:true,
           trackLinks:true,
           accurateTrackBounce:true,
           webvisor:true
      });
    </script>
    <noscript><div><img src="https://mc.yandex.ru/watch/72949126" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
    <!-- /Yandex.Metrika counter -->
<script type='text/javascript'>
    window.__lo_site_id = 284467;
    
      (function() {
        var wa = document.createElement('script'); wa.type = 'text/javascript'; wa.async = true;
        wa.src = 'https://d10lpsik1i8c69.cloudfront.net/w.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(wa, s);
        })();
      </script>
<link rel="canonical" href="https://ignite.apache.org/releases/latest/cppdoc/structignite_1_1binary_1_1BinaryEnumDefaultAll.html" />
<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++: ignite::binary::BinaryEnumDefaultAll&lt; T &gt; Struct Template Reference</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 async src="https://www.googletagmanager.com/gtag/js?id=UA-61232409-1"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
    
      gtag('config', 'UA-61232409-1');
    </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>
<!-- 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 id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespaceignite.html">ignite</a></li><li class="navelem"><a class="el" href="namespaceignite_1_1binary.html">binary</a></li><li class="navelem"><a class="el" href="structignite_1_1binary_1_1BinaryEnumDefaultAll.html">BinaryEnumDefaultAll</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="structignite_1_1binary_1_1BinaryEnumDefaultAll-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">ignite::binary::BinaryEnumDefaultAll&lt; T &gt; Struct Template Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Default implementations of <a class="el" href="structignite_1_1binary_1_1BinaryType.html" title="Binary type structure. ">BinaryType</a> hashing functions and non-null type behaviour.  
 <a href="structignite_1_1binary_1_1BinaryEnumDefaultAll.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="binary__enum_8h_source.html">binary_enum.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for ignite::binary::BinaryEnumDefaultAll&lt; T &gt;:</div>
<div class="dyncontent">
 <div class="center">
  <img src="structignite_1_1binary_1_1BinaryEnumDefaultAll.png" usemap="#ignite::binary::BinaryEnumDefaultAll_3C_20T_20_3E_map" alt=""/>
  <map id="ignite::binary::BinaryEnumDefaultAll_3C_20T_20_3E_map" name="ignite::binary::BinaryEnumDefaultAll_3C_20T_20_3E_map">
<area href="structignite_1_1binary_1_1BinaryEnumDefault.html" title="Default implementations of BinaryEnum. " alt="ignite::binary::BinaryEnumDefault&lt; T &gt;" shape="rect" coords="0,0,245,24"/>
<area href="structignite_1_1binary_1_1BinaryEnumIntMinNull.html" title="Implementations of BinaryEnum nullability when INT32_MIN ordinal value used as a NULL indicator..." alt="ignite::binary::BinaryEnumIntMinNull&lt; T &gt;" shape="rect" coords="255,0,500,24"/>
</map>
 </div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_static_methods_structignite_1_1binary_1_1BinaryEnumDefault"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_structignite_1_1binary_1_1BinaryEnumDefault')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="structignite_1_1binary_1_1BinaryEnumDefault.html">ignite::binary::BinaryEnumDefault&lt; T &gt;</a></td></tr>
<tr class="memitem:ab3e1336c69ef00e4fd3d4d3343b8dd16 inherit pub_static_methods_structignite_1_1binary_1_1BinaryEnumDefault"><td class="memItemLeft" align="right" valign="top">static int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structignite_1_1binary_1_1BinaryEnumDefault.html#ab3e1336c69ef00e4fd3d4d3343b8dd16">GetTypeId</a> ()</td></tr>
<tr class="memdesc:ab3e1336c69ef00e4fd3d4d3343b8dd16 inherit pub_static_methods_structignite_1_1binary_1_1BinaryEnumDefault"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get type ID for the enum type.  <a href="structignite_1_1binary_1_1BinaryEnumDefault.html#ab3e1336c69ef00e4fd3d4d3343b8dd16">More...</a><br /></td></tr>
<tr class="separator:ab3e1336c69ef00e4fd3d4d3343b8dd16 inherit pub_static_methods_structignite_1_1binary_1_1BinaryEnumDefault"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17bb09ef18e4045edef992e467bc9672 inherit pub_static_methods_structignite_1_1binary_1_1BinaryEnumDefault"><td class="memItemLeft" align="right" valign="top">static int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structignite_1_1binary_1_1BinaryEnumDefault.html#a17bb09ef18e4045edef992e467bc9672">GetOrdinal</a> (T value)</td></tr>
<tr class="memdesc:a17bb09ef18e4045edef992e467bc9672 inherit pub_static_methods_structignite_1_1binary_1_1BinaryEnumDefault"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get enum type ordinal.  <a href="structignite_1_1binary_1_1BinaryEnumDefault.html#a17bb09ef18e4045edef992e467bc9672">More...</a><br /></td></tr>
<tr class="separator:a17bb09ef18e4045edef992e467bc9672 inherit pub_static_methods_structignite_1_1binary_1_1BinaryEnumDefault"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a625b0d7a350837f27db254b2d2bab319 inherit pub_static_methods_structignite_1_1binary_1_1BinaryEnumDefault"><td class="memItemLeft" align="right" valign="top">static T&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structignite_1_1binary_1_1BinaryEnumDefault.html#a625b0d7a350837f27db254b2d2bab319">FromOrdinal</a> (int32_t ordinal)</td></tr>
<tr class="memdesc:a625b0d7a350837f27db254b2d2bab319 inherit pub_static_methods_structignite_1_1binary_1_1BinaryEnumDefault"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get enum value for the given ordinal value.  <a href="structignite_1_1binary_1_1BinaryEnumDefault.html#a625b0d7a350837f27db254b2d2bab319">More...</a><br /></td></tr>
<tr class="separator:a625b0d7a350837f27db254b2d2bab319 inherit pub_static_methods_structignite_1_1binary_1_1BinaryEnumDefault"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_static_methods_structignite_1_1binary_1_1BinaryEnumIntMinNull"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_structignite_1_1binary_1_1BinaryEnumIntMinNull')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="structignite_1_1binary_1_1BinaryEnumIntMinNull.html">ignite::binary::BinaryEnumIntMinNull&lt; T &gt;</a></td></tr>
<tr class="memitem:aa30c2ef446330641dccec82da8959dac inherit pub_static_methods_structignite_1_1binary_1_1BinaryEnumIntMinNull"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structignite_1_1binary_1_1BinaryEnumIntMinNull.html#aa30c2ef446330641dccec82da8959dac">IsNull</a> (const T &amp;val)</td></tr>
<tr class="memdesc:aa30c2ef446330641dccec82da8959dac inherit pub_static_methods_structignite_1_1binary_1_1BinaryEnumIntMinNull"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether passed binary object should be interpreted as NULL.  <a href="structignite_1_1binary_1_1BinaryEnumIntMinNull.html#aa30c2ef446330641dccec82da8959dac">More...</a><br /></td></tr>
<tr class="separator:aa30c2ef446330641dccec82da8959dac inherit pub_static_methods_structignite_1_1binary_1_1BinaryEnumIntMinNull"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c148f58c4be44113ca334fcaa05c29b inherit pub_static_methods_structignite_1_1binary_1_1BinaryEnumIntMinNull"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structignite_1_1binary_1_1BinaryEnumIntMinNull.html#a4c148f58c4be44113ca334fcaa05c29b">GetNull</a> (T &amp;dst)</td></tr>
<tr class="memdesc:a4c148f58c4be44113ca334fcaa05c29b inherit pub_static_methods_structignite_1_1binary_1_1BinaryEnumIntMinNull"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get NULL value for the given binary type.  <a href="structignite_1_1binary_1_1BinaryEnumIntMinNull.html#a4c148f58c4be44113ca334fcaa05c29b">More...</a><br /></td></tr>
<tr class="separator:a4c148f58c4be44113ca334fcaa05c29b inherit pub_static_methods_structignite_1_1binary_1_1BinaryEnumIntMinNull"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename T&gt;<br />
struct ignite::binary::BinaryEnumDefaultAll&lt; T &gt;</h3>

<p>Default implementations of <a class="el" href="structignite_1_1binary_1_1BinaryType.html" title="Binary type structure. ">BinaryType</a> hashing functions and non-null type behaviour. </p>
</div><hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="binary__enum_8h_source.html">binary_enum.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Sep 11 2021 21:14:00 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>
