<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14">
  <compounddef id="hash_8h" kind="file" language="C++">
    <compoundname>hash.h</compoundname>
    <includes local="no">cstddef</includes>
    <includes local="no">vector</includes>
    <includedby refid="types_8h" local="yes">/Users/classner/git/forpy/include/forpy/types.h</includedby>
    <incdepgraph>
      <node id="1294">
        <label>/Users/classner/git/forpy/include/forpy/util/hash.h</label>
        <link refid="hash_8h"/>
        <childnode refid="1295" relation="include">
        </childnode>
        <childnode refid="1296" relation="include">
        </childnode>
      </node>
      <node id="1296">
        <label>vector</label>
      </node>
      <node id="1295">
        <label>cstddef</label>
      </node>
    </incdepgraph>
    <invincdepgraph>
      <node id="1308">
        <label>/Users/classner/git/forpy/include/forpy/threshold_optimizers/ithreshopt.h</label>
        <link refid="ithreshopt_8h"/>
        <childnode refid="1305" relation="include">
        </childnode>
        <childnode refid="1309" relation="include">
        </childnode>
        <childnode refid="1313" relation="include">
        </childnode>
        <childnode refid="1314" relation="include">
        </childnode>
        <childnode refid="1315" relation="include">
        </childnode>
        <childnode refid="1316" relation="include">
        </childnode>
      </node>
      <node id="1321">
        <label>/Users/classner/git/forpy/include/forpy/impurities/renyientropy.h</label>
        <link refid="renyientropy_8h"/>
        <childnode refid="1322" relation="include">
        </childnode>
      </node>
      <node id="1323">
        <label>/Users/classner/git/forpy/include/forpy/gains/entropygain.h</label>
        <link refid="entropygain_8h"/>
        <childnode refid="1324" relation="include">
        </childnode>
      </node>
      <node id="1313">
        <label>/Users/classner/git/forpy/include/forpy/threshold_optimizers/classification_opt.h</label>
        <link refid="classification__opt_8h"/>
        <childnode refid="1314" relation="include">
        </childnode>
        <childnode refid="1315" relation="include">
        </childnode>
      </node>
      <node id="1327">
        <label>/Users/classner/git/forpy/include/forpy/impurities/classificationerror.h</label>
        <link refid="classificationerror_8h"/>
        <childnode refid="1322" relation="include">
        </childnode>
        <childnode refid="1321" relation="include">
        </childnode>
      </node>
      <node id="1301">
        <label>/Users/classner/git/forpy/include/forpy/forpy.h</label>
        <link refid="forpy_8h"/>
      </node>
      <node id="1299">
        <label>/Users/classner/git/forpy/include/forpy/data_providers/fastdprov.h</label>
        <link refid="fastdprov_8h"/>
        <childnode refid="1300" relation="include">
        </childnode>
        <childnode refid="1302" relation="include">
        </childnode>
      </node>
      <node id="1307">
        <label>/Users/classner/git/forpy/include/forpy/deciders/deciders.h</label>
        <link refid="deciders_8h"/>
        <childnode refid="1301" relation="include">
        </childnode>
      </node>
      <node id="1324">
        <label>/Users/classner/git/forpy/include/forpy/gains/gains.h</label>
        <link refid="gains_8h"/>
        <childnode refid="1301" relation="include">
        </childnode>
      </node>
      <node id="1311">
        <label>/Users/classner/git/forpy/include/forpy/leafs/leafs.h</label>
        <link refid="leafs_8h"/>
        <childnode refid="1301" relation="include">
        </childnode>
      </node>
      <node id="1305">
        <label>/Users/classner/git/forpy/include/forpy/deciders/idecider.h</label>
        <link refid="idecider_8h"/>
        <childnode refid="1306" relation="include">
        </childnode>
        <childnode refid="1307" relation="include">
        </childnode>
        <childnode refid="1302" relation="include">
        </childnode>
      </node>
      <node id="1314">
        <label>/Users/classner/git/forpy/include/forpy/threshold_optimizers/fastclassopt.h</label>
        <link refid="fastclassopt_8h"/>
        <childnode refid="1303" relation="include">
        </childnode>
        <childnode refid="1315" relation="include">
        </childnode>
      </node>
      <node id="1317">
        <label>/Users/classner/git/forpy/include/forpy/util/desk.h</label>
        <link refid="desk_8h"/>
        <childnode refid="1306" relation="include">
        </childnode>
        <childnode refid="1308" relation="include">
        </childnode>
        <childnode refid="1305" relation="include">
        </childnode>
        <childnode refid="1314" relation="include">
        </childnode>
        <childnode refid="1313" relation="include">
        </childnode>
        <childnode refid="1302" relation="include">
        </childnode>
        <childnode refid="1318" relation="include">
        </childnode>
        <childnode refid="1316" relation="include">
        </childnode>
        <childnode refid="1301" relation="include">
        </childnode>
      </node>
      <node id="1302">
        <label>/Users/classner/git/forpy/include/forpy/tree.h</label>
        <link refid="tree_8h"/>
        <childnode refid="1303" relation="include">
        </childnode>
        <childnode refid="1301" relation="include">
        </childnode>
      </node>
      <node id="1310">
        <label>/Users/classner/git/forpy/include/forpy/leafs/classificationleaf.h</label>
        <link refid="classificationleaf_8h"/>
        <childnode refid="1303" relation="include">
        </childnode>
        <childnode refid="1311" relation="include">
        </childnode>
      </node>
      <node id="1297">
        <label>/Users/classner/git/forpy/include/forpy/util/hash.h</label>
        <link refid="hash_8h"/>
        <childnode refid="1298" relation="include">
        </childnode>
      </node>
      <node id="1328">
        <label>/Users/classner/git/forpy/include/forpy/gains/igaincalculator.h</label>
        <link refid="igaincalculator_8h"/>
        <childnode refid="1324" relation="include">
        </childnode>
        <childnode refid="1323" relation="include">
        </childnode>
      </node>
      <node id="1315">
        <label>/Users/classner/git/forpy/include/forpy/threshold_optimizers/threshold_optimizers.h</label>
        <link refid="threshold__optimizers_8h"/>
        <childnode refid="1301" relation="include">
        </childnode>
      </node>
      <node id="1325">
        <label>/Users/classner/git/forpy/include/forpy/impurities/tsallisentropy.h</label>
        <link refid="tsallisentropy_8h"/>
        <childnode refid="1322" relation="include">
        </childnode>
      </node>
      <node id="1320">
        <label>/Users/classner/git/forpy/include/forpy/impurities/shannonentropy.h</label>
        <link refid="shannonentropy_8h"/>
        <childnode refid="1314" relation="include">
        </childnode>
        <childnode refid="1321" relation="include">
        </childnode>
        <childnode refid="1322" relation="include">
        </childnode>
        <childnode refid="1325" relation="include">
        </childnode>
      </node>
      <node id="1316">
        <label>/Users/classner/git/forpy/include/forpy/threshold_optimizers/regression_opt.h</label>
        <link refid="regression__opt_8h"/>
        <childnode refid="1315" relation="include">
        </childnode>
      </node>
      <node id="1319">
        <label>/Users/classner/git/forpy/include/forpy/impurities/ientropyfunction.h</label>
        <link refid="ientropyfunction_8h"/>
        <childnode refid="1314" relation="include">
        </childnode>
        <childnode refid="1320" relation="include">
        </childnode>
        <childnode refid="1313" relation="include">
        </childnode>
        <childnode refid="1326" relation="include">
        </childnode>
        <childnode refid="1327" relation="include">
        </childnode>
        <childnode refid="1322" relation="include">
        </childnode>
        <childnode refid="1321" relation="include">
        </childnode>
        <childnode refid="1325" relation="include">
        </childnode>
        <childnode refid="1312" relation="include">
        </childnode>
      </node>
      <node id="1322">
        <label>/Users/classner/git/forpy/include/forpy/impurities/impurities.h</label>
        <link refid="impurities_8h"/>
        <childnode refid="1323" relation="include">
        </childnode>
        <childnode refid="1301" relation="include">
        </childnode>
      </node>
      <node id="1312">
        <label>/Users/classner/git/forpy/include/forpy/leafs/regressionleaf.h</label>
        <link refid="regressionleaf_8h"/>
        <childnode refid="1311" relation="include">
        </childnode>
      </node>
      <node id="1303">
        <label>/Users/classner/git/forpy/include/forpy/forest.h</label>
        <link refid="forest_8h"/>
        <childnode refid="1301" relation="include">
        </childnode>
      </node>
      <node id="1304">
        <label>/Users/classner/git/forpy/include/forpy/data_providers/idataprovider.h</label>
        <link refid="idataprovider_8h"/>
        <childnode refid="1299" relation="include">
        </childnode>
        <childnode refid="1300" relation="include">
        </childnode>
        <childnode refid="1305" relation="include">
        </childnode>
        <childnode refid="1308" relation="include">
        </childnode>
        <childnode refid="1303" relation="include">
        </childnode>
        <childnode refid="1310" relation="include">
        </childnode>
        <childnode refid="1309" relation="include">
        </childnode>
        <childnode refid="1302" relation="include">
        </childnode>
        <childnode refid="1312" relation="include">
        </childnode>
      </node>
      <node id="1300">
        <label>/Users/classner/git/forpy/include/forpy/data_providers/data_providers.h</label>
        <link refid="data__providers_8h"/>
        <childnode refid="1301" relation="include">
        </childnode>
      </node>
      <node id="1326">
        <label>/Users/classner/git/forpy/include/forpy/impurities/inducedentropy.h</label>
        <link refid="inducedentropy_8h"/>
        <childnode refid="1313" relation="include">
        </childnode>
        <childnode refid="1322" relation="include">
        </childnode>
        <childnode refid="1321" relation="include">
        </childnode>
        <childnode refid="1325" relation="include">
        </childnode>
      </node>
      <node id="1309">
        <label>/Users/classner/git/forpy/include/forpy/leafs/ileaf.h</label>
        <link refid="ileaf_8h"/>
        <childnode refid="1310" relation="include">
        </childnode>
        <childnode refid="1302" relation="include">
        </childnode>
        <childnode refid="1311" relation="include">
        </childnode>
        <childnode refid="1312" relation="include">
        </childnode>
      </node>
      <node id="1298">
        <label>/Users/classner/git/forpy/include/forpy/types.h</label>
        <link refid="types_8h"/>
        <childnode refid="1299" relation="include">
        </childnode>
        <childnode refid="1304" relation="include">
        </childnode>
        <childnode refid="1306" relation="include">
        </childnode>
        <childnode refid="1317" relation="include">
        </childnode>
        <childnode refid="1308" relation="include">
        </childnode>
        <childnode refid="1305" relation="include">
        </childnode>
        <childnode refid="1310" relation="include">
        </childnode>
        <childnode refid="1309" relation="include">
        </childnode>
        <childnode refid="1319" relation="include">
        </childnode>
        <childnode refid="1320" relation="include">
        </childnode>
        <childnode refid="1314" relation="include">
        </childnode>
        <childnode refid="1313" relation="include">
        </childnode>
        <childnode refid="1302" relation="include">
        </childnode>
        <childnode refid="1303" relation="include">
        </childnode>
        <childnode refid="1318" relation="include">
        </childnode>
        <childnode refid="1301" relation="include">
        </childnode>
        <childnode refid="1328" relation="include">
        </childnode>
        <childnode refid="1321" relation="include">
        </childnode>
        <childnode refid="1325" relation="include">
        </childnode>
        <childnode refid="1312" relation="include">
        </childnode>
        <childnode refid="1316" relation="include">
        </childnode>
      </node>
      <node id="1306">
        <label>/Users/classner/git/forpy/include/forpy/deciders/fastdecider.h</label>
        <link refid="fastdecider_8h"/>
        <childnode refid="1307" relation="include">
        </childnode>
        <childnode refid="1303" relation="include">
        </childnode>
      </node>
      <node id="1318">
        <label>/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h</label>
        <link refid="ctpl_8h"/>
        <childnode refid="1303" relation="include">
        </childnode>
      </node>
    </invincdepgraph>
    <innerclass refid="structforpy_1_1vector__hasher" prot="public">forpy::vector_hasher</innerclass>
    <innernamespace refid="namespaceforpy">forpy</innernamespace>
      <sectiondef kind="define">
      <memberdef kind="define" id="hash_8h_1a07c92d7d238b1b94aa5e7d205f816829" prot="public" static="no">
        <name>FORPY_UTIL_HASH_H_</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/util/hash.h" line="3" column="9" bodyfile="/Users/classner/git/forpy/include/forpy/util/hash.h" bodystart="3" bodyend="-1"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
    </briefdescription>
    <detaileddescription>
    </detaileddescription>
    <programlisting>
<codeline lineno="1"><highlight class="preprocessor">#pragma<sp/>once</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="2"><highlight class="normal"></highlight><highlight class="preprocessor">#ifndef<sp/>FORPY_UTIL_HASH_H_</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="3" refid="hash_8h_1a07c92d7d238b1b94aa5e7d205f816829" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>FORPY_UTIL_HASH_H_</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="4"><highlight class="normal"></highlight></codeline>
<codeline lineno="5"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;cstddef&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="6"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;vector&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="7"><highlight class="normal"></highlight></codeline>
<codeline lineno="8"><highlight class="normal"></highlight><highlight class="keyword">namespace<sp/></highlight><highlight class="normal"><ref refid="namespaceforpy" kindref="compound">forpy</ref><sp/>{</highlight></codeline>
<codeline lineno="20" refid="namespaceforpy_1ab10595711c4ff6f178a44243b70b1e81" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><ref refid="namespaceforpy_1ab10595711c4ff6f178a44243b70b1e81" kindref="member">hash_fnv_1a</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">unsigned</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*key,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>&amp;len)<sp/>{</highlight></codeline>
<codeline lineno="21"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>hash<sp/>=<sp/>offset_basis</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="22"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>h<sp/>=<sp/>14695981039346656037ULL;</highlight></codeline>
<codeline lineno="23"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>for<sp/>each<sp/>octet_of_data<sp/>to<sp/>be<sp/>hashed</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="24"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/>len;<sp/>++i)<sp/>{</highlight></codeline>
<codeline lineno="25"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>hash<sp/>=<sp/>hash<sp/>xor<sp/>octet_of_data</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="26"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>hash<sp/>=<sp/>hash<sp/>*<sp/>FNV_prime</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="27"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>h<sp/>=<sp/>(h<sp/>^<sp/>key[<sp/>i<sp/>])<sp/>*<sp/>1099511628211;</highlight></codeline>
<codeline lineno="28"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="29"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>return<sp/>hash</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="30"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>h;</highlight></codeline>
<codeline lineno="31"><highlight class="normal"><sp/><sp/>};</highlight></codeline>
<codeline lineno="32"><highlight class="normal"></highlight></codeline>
<codeline lineno="34" refid="structforpy_1_1vector__hasher" refkind="compound"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structforpy_1_1vector__hasher" kindref="compound">vector_hasher</ref><sp/>{</highlight></codeline>
<codeline lineno="36" refid="structforpy_1_1vector__hasher_1a783c4e708c6ef61a59dee0f7d0f6f087" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><ref refid="structforpy_1_1vector__hasher_1a783c4e708c6ef61a59dee0f7d0f6f087" kindref="member">operator()</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::vector&lt;size_t&gt;<sp/>&amp;t)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
<codeline lineno="37"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(t.empty())<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>0;</highlight></codeline>
<codeline lineno="38"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="namespaceforpy_1ab10595711c4ff6f178a44243b70b1e81" kindref="member">hash_fnv_1a</ref>(reinterpret_cast&lt;const<sp/>unsigned<sp/>char<sp/>*&gt;(&amp;t[0]),</highlight></codeline>
<codeline lineno="39"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>t.size()<sp/>*<sp/></highlight><highlight class="keyword">sizeof</highlight><highlight class="normal">(size_t)<sp/>/<sp/></highlight><highlight class="keyword">sizeof</highlight><highlight class="normal">(</highlight><highlight class="keywordtype">unsigned</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">));</highlight></codeline>
<codeline lineno="40"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="41"><highlight class="normal"><sp/><sp/>};</highlight></codeline>
<codeline lineno="42"><highlight class="normal">}<sp/></highlight><highlight class="comment">//<sp/>namespace<sp/>forpy</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="43"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/>//<sp/>FORPY_UTIL_HASH_H_</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="44"><highlight class="normal"></highlight></codeline>
    </programlisting>
    <location file="/Users/classner/git/forpy/include/forpy/util/hash.h"/>
  </compounddef>
</doxygen>
