<?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.15.0" xml:lang="en-US">
  <compounddef id="group__hash__table__utils" kind="group">
    <compoundname>hash_table_utils</compoundname>
    <title>Hash Tables</title>
    <innerfile refid="hash__tables_8h">hash_tables.h</innerfile>
    <innerclass refid="structvrna__ht__entry__db__t" prot="public">vrna_ht_entry_db_t</innerclass>
    <sectiondef kind="user-defined">
      <header>Abstract interface</header>
      <memberdef kind="typedef" id="group__hash__table__utils_1gabc7c6f41b718c8e23929e528891a89c4" prot="public" static="no">
        <type>struct vrna_hash_table_s *</type>
        <definition>typedef struct vrna_hash_table_s* vrna_hash_table_t</definition>
        <argsstring></argsstring>
        <name>vrna_hash_table_t</name>
        <briefdescription>
<para>A hash table object. </para>
        </briefdescription>
        <detaileddescription>
<para><simplesect kind="see"><para><ref refid="group__hash__table__utils_1gaa15b43574b54d1e8d4309b18c29834d6" kindref="member">vrna_ht_init()</ref>, <ref refid="group__hash__table__utils_1ga479db024c70437aa2576d60b373c5262" kindref="member">vrna_ht_free()</ref> </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/hash_tables.h" line="43" column="32" bodyfile="ViennaRNA/datastructures/hash_tables.h" bodystart="43" bodyend="-1"/>
      </memberdef>
      <memberdef kind="typedef" id="group__hash__table__utils_1ga746d82b4363fda6a7997b83f49b7478d" prot="public" static="no">
        <type>int(*</type>
        <definition>typedef int(* vrna_ht_cmp_f) (void *x, void *y)</definition>
        <argsstring>)(void *x, void *y)</argsstring>
        <name>vrna_ht_cmp_f</name>
        <briefdescription>
<para>Callback function to compare two hash table entries. </para>
        </briefdescription>
        <detaileddescription>
<para><simplesect kind="see"><para><ref refid="group__hash__table__utils_1gaa15b43574b54d1e8d4309b18c29834d6" kindref="member">vrna_ht_init()</ref>, <ref refid="group__hash__table__utils_1gac4ec0b8372d50d7347a63f140f340962" kindref="member">vrna_ht_db_comp()</ref></para>
</simplesect>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>x</parametername>
</parameternamelist>
<parameterdescription>
<para>A hash table entry </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>y</parametername>
</parameternamelist>
<parameterdescription>
<para>A hash table entry </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>-1 if x is smaller, +1 if x is larger than y. 0 if <formula id="64">$x == y $</formula> </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/hash_tables.h" line="55" column="9" bodyfile="ViennaRNA/datastructures/hash_tables.h" bodystart="55" bodyend="-1"/>
      </memberdef>
      <memberdef kind="typedef" id="group__hash__table__utils_1ga670f1a5c31aec72aa7bf8da08dc3957b" prot="public" static="no">
        <type>int</type>
        <definition>typedef int vrna_callback_ht_compare_entries(void *x, void *y)</definition>
        <argsstring>(void *x, void *y)</argsstring>
        <name>vrna_callback_ht_compare_entries</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/hash_tables.h" line="60" column="10" bodyfile="ViennaRNA/datastructures/hash_tables.h" bodystart="60" bodyend="-1"/>
      </memberdef>
      <memberdef kind="typedef" id="group__hash__table__utils_1gaf6e2d97e439b129651c95f28232215fb" prot="public" static="no">
        <type>unsigned int(*</type>
        <definition>typedef unsigned int(* vrna_ht_hashfunc_f) (void *x, unsigned long hashtable_size)</definition>
        <argsstring>)(void *x, unsigned long hashtable_size)</argsstring>
        <name>vrna_ht_hashfunc_f</name>
        <briefdescription>
<para>Callback function to generate a hash key, i.e. hash function. </para>
        </briefdescription>
        <detaileddescription>
<para><simplesect kind="see"><para><ref refid="group__hash__table__utils_1gaa15b43574b54d1e8d4309b18c29834d6" kindref="member">vrna_ht_init()</ref>, <ref refid="group__hash__table__utils_1gad133721a3cd2f8ca259fe315d86035a7" kindref="member">vrna_ht_db_hash_func()</ref></para>
</simplesect>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>x</parametername>
</parameternamelist>
<parameterdescription>
<para>A hash table entry </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>hashtable_size</parametername>
</parameternamelist>
<parameterdescription>
<para>The size of the hash table </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>The hash table key for entry <computeroutput>x</computeroutput> </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/hash_tables.h" line="73" column="18" bodyfile="ViennaRNA/datastructures/hash_tables.h" bodystart="73" bodyend="-1"/>
      </memberdef>
      <memberdef kind="typedef" id="group__hash__table__utils_1gaf8d9ef458a24374103ff23a6851fa975" prot="public" static="no">
        <type>unsigned int</type>
        <definition>typedef unsigned int vrna_callback_ht_hash_function(void *x, unsigned long hashtable_size)</definition>
        <argsstring>(void *x, unsigned long hashtable_size)</argsstring>
        <name>vrna_callback_ht_hash_function</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/hash_tables.h" line="78" column="19" bodyfile="ViennaRNA/datastructures/hash_tables.h" bodystart="78" bodyend="-1"/>
      </memberdef>
      <memberdef kind="typedef" id="group__hash__table__utils_1ga306abe71fe6a6515b6f2eba5e27187ca" prot="public" static="no">
        <type>int(*</type>
        <definition>typedef int(* vrna_ht_free_f) (void *x)</definition>
        <argsstring>)(void *x)</argsstring>
        <name>vrna_ht_free_f</name>
        <briefdescription>
<para>Callback function to free a hash table entry. </para>
        </briefdescription>
        <detaileddescription>
<para><simplesect kind="see"><para><ref refid="group__hash__table__utils_1gaa15b43574b54d1e8d4309b18c29834d6" kindref="member">vrna_ht_init()</ref>, <ref refid="group__hash__table__utils_1gabcdcd0d070b3dfd2634a09e7838acf66" kindref="member">vrna_ht_db_free_entry()</ref></para>
</simplesect>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>x</parametername>
</parameternamelist>
<parameterdescription>
<para>A hash table entry </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>0 on success </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/hash_tables.h" line="89" column="9" bodyfile="ViennaRNA/datastructures/hash_tables.h" bodystart="89" bodyend="-1"/>
      </memberdef>
      <memberdef kind="typedef" id="group__hash__table__utils_1gab6e52ca06c3867e85ee754807c23923e" prot="public" static="no">
        <type>int</type>
        <definition>typedef int vrna_callback_ht_free_entry(void *x)</definition>
        <argsstring>(void *x)</argsstring>
        <name>vrna_callback_ht_free_entry</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/hash_tables.h" line="92" column="10" bodyfile="ViennaRNA/datastructures/hash_tables.h" bodystart="92" bodyend="-1"/>
      </memberdef>
      <memberdef kind="function" id="group__hash__table__utils_1gaa15b43574b54d1e8d4309b18c29834d6" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type><ref refid="group__hash__table__utils_1gabc7c6f41b718c8e23929e528891a89c4" kindref="member">vrna_hash_table_t</ref></type>
        <definition>vrna_hash_table_t vrna_ht_init</definition>
        <argsstring>(unsigned int b, vrna_ht_cmp_f compare_function, vrna_ht_hashfunc_f hash_function, vrna_ht_free_f free_hash_entry)</argsstring>
        <name>vrna_ht_init</name>
        <param>
          <type>unsigned int</type>
          <declname>b</declname>
        </param>
        <param>
          <type><ref refid="group__hash__table__utils_1ga746d82b4363fda6a7997b83f49b7478d" kindref="member">vrna_ht_cmp_f</ref></type>
          <declname>compare_function</declname>
        </param>
        <param>
          <type><ref refid="group__hash__table__utils_1gaf6e2d97e439b129651c95f28232215fb" kindref="member">vrna_ht_hashfunc_f</ref></type>
          <declname>hash_function</declname>
        </param>
        <param>
          <type><ref refid="group__hash__table__utils_1ga306abe71fe6a6515b6f2eba5e27187ca" kindref="member">vrna_ht_free_f</ref></type>
          <declname>free_hash_entry</declname>
        </param>
        <briefdescription>
<para>Get an initialized hash table. </para>
        </briefdescription>
        <detaileddescription>
<para>This function returns a ready-to-use hash table with pre-allocated memory for a particular number of entries.</para>
<para><simplesect kind="note"><para><parblock><para>If all function pointers are <computeroutput>NULL</computeroutput>, this function initializes the hash table with <emphasis>default functions</emphasis>, i.e.<itemizedlist>
<listitem><para><ref refid="group__hash__table__utils_1gac4ec0b8372d50d7347a63f140f340962" kindref="member">vrna_ht_db_comp()</ref> for the <computeroutput>compare_function</computeroutput>,</para>
</listitem><listitem><para><ref refid="group__hash__table__utils_1gad133721a3cd2f8ca259fe315d86035a7" kindref="member">vrna_ht_db_hash_func()</ref> for the <computeroutput>hash_function</computeroutput>, and</para>
</listitem><listitem><para><ref refid="group__hash__table__utils_1gabcdcd0d070b3dfd2634a09e7838acf66" kindref="member">vrna_ht_db_free_entry()</ref> for the <computeroutput>free_hash_entry</computeroutput> </para>
</listitem></itemizedlist>
</para>
<para>arguments. </para>
</parblock></para>
</simplesect>
</para>
<para><simplesect kind="warning"><para>If <computeroutput>hash_bits</computeroutput> is larger than 27 you have to compile it with the flag gcc -mcmodel=large.</para>
</simplesect>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>b</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of bits for the hash table. This determines the size ( <formula id="65">$2^b -1$</formula>). </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>compare_function</parametername>
</parameternamelist>
<parameterdescription>
<para>A function pointer to compare any two entries in the hash table (may be <computeroutput>NULL</computeroutput>) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>hash_function</parametername>
</parameternamelist>
<parameterdescription>
<para>A function pointer to retrieve the hash value of any entry (may be <computeroutput>NULL</computeroutput>) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>free_hash_entry</parametername>
</parameternamelist>
<parameterdescription>
<para>A function pointer to free the memory occupied by any entry (may be <computeroutput>NULL</computeroutput>) </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>An initialized, empty hash table, or <computeroutput>NULL</computeroutput> on any error </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/hash_tables.h" line="122" column="1" declfile="ViennaRNA/datastructures/hash_tables.h" declline="122" declcolumn="1"/>
      </memberdef>
      <memberdef kind="function" id="group__hash__table__utils_1ga1d7a50bb20b32275e742ec575966412b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>unsigned long</type>
        <definition>unsigned long vrna_ht_size</definition>
        <argsstring>(vrna_hash_table_t ht)</argsstring>
        <name>vrna_ht_size</name>
        <param>
          <type><ref refid="group__hash__table__utils_1gabc7c6f41b718c8e23929e528891a89c4" kindref="member">vrna_hash_table_t</ref></type>
          <declname>ht</declname>
        </param>
        <briefdescription>
<para>Get the size of the hash table. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>ht</parametername>
</parameternamelist>
<parameterdescription>
<para>The hash table </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>The size of the hash table, i.e. the maximum number of entries </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/hash_tables.h" line="135" column="1" declfile="ViennaRNA/datastructures/hash_tables.h" declline="135" declcolumn="1"/>
      </memberdef>
      <memberdef kind="function" id="group__hash__table__utils_1ga928e7a27a9d34d254ce3855f1ab1d190" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>unsigned long</type>
        <definition>unsigned long vrna_ht_collisions</definition>
        <argsstring>(struct vrna_hash_table_s *ht)</argsstring>
        <name>vrna_ht_collisions</name>
        <param>
          <type>struct vrna_hash_table_s *</type>
          <declname>ht</declname>
        </param>
        <briefdescription>
<para>Get the number of collisions in the hash table. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>ht</parametername>
</parameternamelist>
<parameterdescription>
<para>The hash table </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>The number of collisions in the hash table </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/hash_tables.h" line="145" column="1" declfile="ViennaRNA/datastructures/hash_tables.h" declline="145" declcolumn="1"/>
      </memberdef>
      <memberdef kind="function" id="group__hash__table__utils_1gab26d769afd466d93e042fa9c29334edf" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void *</type>
        <definition>void * vrna_ht_get</definition>
        <argsstring>(vrna_hash_table_t ht, void *x)</argsstring>
        <name>vrna_ht_get</name>
        <param>
          <type><ref refid="group__hash__table__utils_1gabc7c6f41b718c8e23929e528891a89c4" kindref="member">vrna_hash_table_t</ref></type>
          <declname>ht</declname>
        </param>
        <param>
          <type>void *</type>
          <declname>x</declname>
        </param>
        <briefdescription>
<para>Get an element from the hash table. </para>
        </briefdescription>
        <detaileddescription>
<para>This function takes an object <computeroutput>x</computeroutput> and performs a look-up whether the object is stored within the hash table <computeroutput>ht</computeroutput>. If the object is already stored in <computeroutput>ht</computeroutput>, the function simply returns the entry, otherwise it returns <computeroutput>NULL</computeroutput>.</para>
<para><simplesect kind="see"><para><ref refid="group__hash__table__utils_1ga4d2189ce8048f031a15ca5e4b290d494" kindref="member">vrna_ht_insert()</ref>, vrna_hash_delete(), <ref refid="group__hash__table__utils_1gaa15b43574b54d1e8d4309b18c29834d6" kindref="member">vrna_ht_init()</ref></para>
</simplesect>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>ht</parametername>
</parameternamelist>
<parameterdescription>
<para>The hash table </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>x</parametername>
</parameternamelist>
<parameterdescription>
<para>The hash entry to look-up </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>The entry <computeroutput>x</computeroutput> if it is stored in <computeroutput>ht</computeroutput>, <computeroutput>NULL</computeroutput> otherwise </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/hash_tables.h" line="163" column="1" declfile="ViennaRNA/datastructures/hash_tables.h" declline="163" declcolumn="1"/>
      </memberdef>
      <memberdef kind="function" id="group__hash__table__utils_1ga4d2189ce8048f031a15ca5e4b290d494" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>int vrna_ht_insert</definition>
        <argsstring>(vrna_hash_table_t ht, void *x)</argsstring>
        <name>vrna_ht_insert</name>
        <param>
          <type><ref refid="group__hash__table__utils_1gabc7c6f41b718c8e23929e528891a89c4" kindref="member">vrna_hash_table_t</ref></type>
          <declname>ht</declname>
        </param>
        <param>
          <type>void *</type>
          <declname>x</declname>
        </param>
        <briefdescription>
<para>Insert an object into a hash table. </para>
        </briefdescription>
        <detaileddescription>
<para>Writes the pointer to your hash entry into the table.</para>
<para><simplesect kind="warning"><para>In case of collisions, this function simply increments the hash key until a free entry in the hash table is found.</para>
</simplesect>
<simplesect kind="see"><para><ref refid="group__hash__table__utils_1gaa15b43574b54d1e8d4309b18c29834d6" kindref="member">vrna_ht_init()</ref>, vrna_hash_delete(), <ref refid="group__hash__table__utils_1gab90583f8f7395e735c865ad2ebdb3c29" kindref="member">vrna_ht_clear()</ref></para>
</simplesect>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>ht</parametername>
</parameternamelist>
<parameterdescription>
<para>The hash table </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>x</parametername>
</parameternamelist>
<parameterdescription>
<para>The hash entry </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>0 on success, 1 if the value is already in the hash table, -1 on error. </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/hash_tables.h" line="183" column="1" declfile="ViennaRNA/datastructures/hash_tables.h" declline="183" declcolumn="1"/>
      </memberdef>
      <memberdef kind="function" id="group__hash__table__utils_1ga1162aa0d1bd82af7420bb727a87d3e2f" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void vrna_ht_remove</definition>
        <argsstring>(vrna_hash_table_t ht, void *x)</argsstring>
        <name>vrna_ht_remove</name>
        <param>
          <type><ref refid="group__hash__table__utils_1gabc7c6f41b718c8e23929e528891a89c4" kindref="member">vrna_hash_table_t</ref></type>
          <declname>ht</declname>
        </param>
        <param>
          <type>void *</type>
          <declname>x</declname>
        </param>
        <briefdescription>
<para>Remove an object from the hash table. </para>
        </briefdescription>
        <detaileddescription>
<para>Deletes the pointer to your hash entry from the table.</para>
<para><simplesect kind="note"><para>This function doesn&apos;t free any memory occupied by the hash entry.</para>
</simplesect>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>ht</parametername>
</parameternamelist>
<parameterdescription>
<para>The hash table </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>x</parametername>
</parameternamelist>
<parameterdescription>
<para>The hash entry </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/hash_tables.h" line="199" column="1" declfile="ViennaRNA/datastructures/hash_tables.h" declline="199" declcolumn="1"/>
      </memberdef>
      <memberdef kind="function" id="group__hash__table__utils_1gab90583f8f7395e735c865ad2ebdb3c29" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void vrna_ht_clear</definition>
        <argsstring>(vrna_hash_table_t ht)</argsstring>
        <name>vrna_ht_clear</name>
        <param>
          <type><ref refid="group__hash__table__utils_1gabc7c6f41b718c8e23929e528891a89c4" kindref="member">vrna_hash_table_t</ref></type>
          <declname>ht</declname>
        </param>
        <briefdescription>
<para>Clear the hash table. </para>
        </briefdescription>
        <detaileddescription>
<para>This function removes all entries from the hash table and automatically free&apos;s the memory occupied by each entry using the bound <ref refid="group__hash__table__utils_1ga306abe71fe6a6515b6f2eba5e27187ca" kindref="member">vrna_ht_free_f()</ref> function.</para>
<para><simplesect kind="see"><para><ref refid="group__hash__table__utils_1ga479db024c70437aa2576d60b373c5262" kindref="member">vrna_ht_free()</ref>, <ref refid="group__hash__table__utils_1gaa15b43574b54d1e8d4309b18c29834d6" kindref="member">vrna_ht_init()</ref></para>
</simplesect>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>ht</parametername>
</parameternamelist>
<parameterdescription>
<para>The hash table </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/hash_tables.h" line="215" column="1" declfile="ViennaRNA/datastructures/hash_tables.h" declline="215" declcolumn="1"/>
      </memberdef>
      <memberdef kind="function" id="group__hash__table__utils_1ga479db024c70437aa2576d60b373c5262" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void vrna_ht_free</definition>
        <argsstring>(vrna_hash_table_t ht)</argsstring>
        <name>vrna_ht_free</name>
        <param>
          <type><ref refid="group__hash__table__utils_1gabc7c6f41b718c8e23929e528891a89c4" kindref="member">vrna_hash_table_t</ref></type>
          <declname>ht</declname>
        </param>
        <briefdescription>
<para>Free all memory occupied by the hash table. </para>
        </briefdescription>
        <detaileddescription>
<para>This function removes all entries from the hash table by calling the <ref refid="group__hash__table__utils_1ga306abe71fe6a6515b6f2eba5e27187ca" kindref="member">vrna_ht_free_f()</ref> function for each entry. Finally, the memory occupied by the hash table itself is free&apos;d as well.</para>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>ht</parametername>
</parameternamelist>
<parameterdescription>
<para>The hash table </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/hash_tables.h" line="229" column="1" declfile="ViennaRNA/datastructures/hash_tables.h" declline="229" declcolumn="1"/>
      </memberdef>
    </sectiondef>
    <sectiondef kind="user-defined">
      <header>Dot-Bracket / Free Energy entries</header>
      <memberdef kind="function" id="group__hash__table__utils_1gac4ec0b8372d50d7347a63f140f340962" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>int vrna_ht_db_comp</definition>
        <argsstring>(void *x, void *y)</argsstring>
        <name>vrna_ht_db_comp</name>
        <param>
          <type>void *</type>
          <declname>x</declname>
        </param>
        <param>
          <type>void *</type>
          <declname>y</declname>
        </param>
        <briefdescription>
<para>Default hash table entry comparison. </para>
        </briefdescription>
        <detaileddescription>
<para>This is the default comparison function for hash table entries. It assumes the both entries <computeroutput>x</computeroutput> and <computeroutput>y</computeroutput> are of type <ref refid="structvrna__ht__entry__db__t" kindref="compound">vrna_ht_entry_db_t</ref> and compares the <computeroutput>structure</computeroutput> attribute of both entries</para>
<para><simplesect kind="see"><para><ref refid="structvrna__ht__entry__db__t" kindref="compound">vrna_ht_entry_db_t</ref>, <ref refid="group__hash__table__utils_1gaa15b43574b54d1e8d4309b18c29834d6" kindref="member">vrna_ht_init()</ref>, <ref refid="group__hash__table__utils_1gad133721a3cd2f8ca259fe315d86035a7" kindref="member">vrna_ht_db_hash_func()</ref>, <ref refid="group__hash__table__utils_1gabcdcd0d070b3dfd2634a09e7838acf66" kindref="member">vrna_ht_db_free_entry()</ref></para>
</simplesect>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>x</parametername>
</parameternamelist>
<parameterdescription>
<para>A hash table entry of type <ref refid="structvrna__ht__entry__db__t" kindref="compound">vrna_ht_entry_db_t</ref> </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>y</parametername>
</parameternamelist>
<parameterdescription>
<para>A hash table entry of type <ref refid="structvrna__ht__entry__db__t" kindref="compound">vrna_ht_entry_db_t</ref> </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>-1 if x is smaller, +1 if x is larger than y. 0 if both are equal. </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/hash_tables.h" line="265" column="1" declfile="ViennaRNA/datastructures/hash_tables.h" declline="265" declcolumn="1"/>
      </memberdef>
      <memberdef kind="function" id="group__hash__table__utils_1gad133721a3cd2f8ca259fe315d86035a7" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>unsigned int</type>
        <definition>unsigned int vrna_ht_db_hash_func</definition>
        <argsstring>(void *x, unsigned long hashtable_size)</argsstring>
        <name>vrna_ht_db_hash_func</name>
        <param>
          <type>void *</type>
          <declname>x</declname>
        </param>
        <param>
          <type>unsigned long</type>
          <declname>hashtable_size</declname>
        </param>
        <briefdescription>
<para>Default hash function. </para>
        </briefdescription>
        <detaileddescription>
<para>This is the default hash function for hash table insertion/lookup. It assumes that entries are of type <ref refid="structvrna__ht__entry__db__t" kindref="compound">vrna_ht_entry_db_t</ref> and uses the Bob Jenkins 1996 mix function to create a hash key from the <computeroutput>structure</computeroutput> attribute of the hash entry.</para>
<para><simplesect kind="see"><para><ref refid="structvrna__ht__entry__db__t" kindref="compound">vrna_ht_entry_db_t</ref>, <ref refid="group__hash__table__utils_1gaa15b43574b54d1e8d4309b18c29834d6" kindref="member">vrna_ht_init()</ref>, <ref refid="group__hash__table__utils_1gac4ec0b8372d50d7347a63f140f340962" kindref="member">vrna_ht_db_comp()</ref>, <ref refid="group__hash__table__utils_1gabcdcd0d070b3dfd2634a09e7838acf66" kindref="member">vrna_ht_db_free_entry()</ref></para>
</simplesect>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>x</parametername>
</parameternamelist>
<parameterdescription>
<para>A hash table entry to compute the key for </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>hashtable_size</parametername>
</parameternamelist>
<parameterdescription>
<para>The size of the hash table </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>The hash key for entry <computeroutput>x</computeroutput> </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/hash_tables.h" line="284" column="1" declfile="ViennaRNA/datastructures/hash_tables.h" declline="284" declcolumn="1"/>
      </memberdef>
      <memberdef kind="function" id="group__hash__table__utils_1gabcdcd0d070b3dfd2634a09e7838acf66" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>int vrna_ht_db_free_entry</definition>
        <argsstring>(void *hash_entry)</argsstring>
        <name>vrna_ht_db_free_entry</name>
        <param>
          <type>void *</type>
          <declname>hash_entry</declname>
        </param>
        <briefdescription>
<para>Default function to free memory occupied by a hash entry. </para>
        </briefdescription>
        <detaileddescription>
<para>This function assumes that hash entries are of type <ref refid="structvrna__ht__entry__db__t" kindref="compound">vrna_ht_entry_db_t</ref> and free&apos;s the memory occupied by that entry.</para>
<para><simplesect kind="see"><para><ref refid="structvrna__ht__entry__db__t" kindref="compound">vrna_ht_entry_db_t</ref>, <ref refid="group__hash__table__utils_1gaa15b43574b54d1e8d4309b18c29834d6" kindref="member">vrna_ht_init()</ref>, <ref refid="group__hash__table__utils_1gac4ec0b8372d50d7347a63f140f340962" kindref="member">vrna_ht_db_comp()</ref>, <ref refid="group__hash__table__utils_1gad133721a3cd2f8ca259fe315d86035a7" kindref="member">vrna_ht_db_hash_func()</ref></para>
</simplesect>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>hash_entry</parametername>
</parameternamelist>
<parameterdescription>
<para>The hash entry to remove from memory </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>0 on success </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/hash_tables.h" line="299" column="5" declfile="ViennaRNA/datastructures/hash_tables.h" declline="299" declcolumn="5"/>
      </memberdef>
    </sectiondef>
    <briefdescription>
    </briefdescription>
    <detaileddescription>
    </detaileddescription>
  </compounddef>
</doxygen>
