<?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__data__structures" kind="group">
    <compoundname>data_structures</compoundname>
    <title>(Abstract) Data Structures</title>
    <innerfile refid="array_8h">array.h</innerfile>
    <innerfile refid="datastructures_2basic_8h">basic.h</innerfile>
    <innerfile refid="datastructures_2dp__matrices_8h">dp_matrices.h</innerfile>
    <innerclass refid="structvrna__basepair__t" prot="public">vrna_basepair_t</innerclass>
    <innerclass refid="structvrna__bp__stack__t" prot="public">vrna_bp_stack_t</innerclass>
    <innerclass refid="structpu__contrib" prot="public">pu_contrib</innerclass>
    <innerclass refid="structinteract" prot="public">interact</innerclass>
    <innerclass refid="structpu__out" prot="public">pu_out</innerclass>
    <innerclass refid="structconstrain" prot="public">constrain</innerclass>
    <innerclass refid="structduplexT" prot="public">duplexT</innerclass>
    <innerclass refid="structnode" prot="public">node</innerclass>
    <innerclass refid="structsnoopT" prot="public">snoopT</innerclass>
    <innerclass refid="structdupVar" prot="public">dupVar</innerclass>
    <innergroup refid="group__fold__compound">The Fold Compound</innergroup>
    <innergroup refid="group__dp__matrices">The Dynamic Programming Matrices</innergroup>
    <innergroup refid="group__data__structures__bt">Backtracking-related Structures</innergroup>
    <innergroup refid="group__hash__table__utils">Hash Tables</innergroup>
    <innergroup refid="group__heap__utils">Heaps</innergroup>
    <innergroup refid="group__strings">Strings</innergroup>
    <innergroup refid="group__array__utils">Arrays</innergroup>
    <innergroup refid="group__buffer__utils">Buffers</innergroup>
    <sectiondef kind="typedef">
      <memberdef kind="typedef" id="group__data__structures_1ga5bd6f0d16685b1249b7c3b73049dd5dc" prot="public" static="no">
        <type>struct <ref refid="structvrna__elem__prob__s" kindref="compound">vrna_elem_prob_s</ref></type>
        <definition>typedef struct vrna_elem_prob_s vrna_plist_t</definition>
        <argsstring></argsstring>
        <name>vrna_plist_t</name>
        <briefdescription>
<para>Typename for the base pair list repesenting data structure <ref refid="structvrna__elem__prob__s" kindref="compound">vrna_elem_prob_s</ref>. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/basic.h" line="18" column="31" bodyfile="ViennaRNA/datastructures/basic.h" bodystart="18" bodyend="-1"/>
      </memberdef>
      <memberdef kind="typedef" id="group__data__structures_1gae4fc91141cc69c6d8eaf1332cb991ecc" prot="public" static="no">
        <type>struct <ref refid="structvrna__cpair__s" kindref="compound">vrna_cpair_s</ref></type>
        <definition>typedef struct vrna_cpair_s vrna_cpair_t</definition>
        <argsstring></argsstring>
        <name>vrna_cpair_t</name>
        <briefdescription>
<para>Typename for data structure <ref refid="structvrna__cpair__s" kindref="compound">vrna_cpair_s</ref>. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/basic.h" line="21" column="27" bodyfile="ViennaRNA/datastructures/basic.h" bodystart="21" bodyend="-1"/>
      </memberdef>
      <memberdef kind="typedef" id="group__data__structures_1gaab843d6cdafd5433e3f6fa3b834d12f9" prot="public" static="no">
        <type>struct <ref refid="structvrna__data__linear__s" kindref="compound">vrna_data_linear_s</ref></type>
        <definition>typedef struct vrna_data_linear_s vrna_data_lin_t</definition>
        <argsstring></argsstring>
        <name>vrna_data_lin_t</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/basic.h" line="23" column="33" bodyfile="ViennaRNA/datastructures/basic.h" bodystart="23" bodyend="-1"/>
      </memberdef>
      <memberdef kind="typedef" id="group__data__structures_1gaed93ddf2ef6b26141a89f9a65b9426b9" prot="public" static="no">
        <type>struct <ref refid="structvrna__color__s" kindref="compound">vrna_color_s</ref></type>
        <definition>typedef struct vrna_color_s vrna_color_t</definition>
        <argsstring></argsstring>
        <name>vrna_color_t</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/basic.h" line="25" column="27" bodyfile="ViennaRNA/datastructures/basic.h" bodystart="25" bodyend="-1"/>
      </memberdef>
      <memberdef kind="typedef" id="group__data__structures_1ga31125aeace516926bf7f251f759b6126" prot="public" static="no">
        <type>double</type>
        <definition>typedef double FLT_OR_DBL</definition>
        <argsstring></argsstring>
        <name>FLT_OR_DBL</name>
        <briefdescription>
<para>Typename for floating point number in partition function computations. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/basic.h" line="31" column="16" bodyfile="ViennaRNA/datastructures/basic.h" bodystart="31" bodyend="-1"/>
      </memberdef>
      <memberdef kind="typedef" id="group__data__structures_1ga4381025ffbd692e54189b2c679c79c99" prot="public" static="no">
        <type>struct <ref refid="structvrna__basepair__s" kindref="compound">vrna_basepair_s</ref></type>
        <definition>typedef struct vrna_basepair_s PAIR</definition>
        <argsstring></argsstring>
        <name>PAIR</name>
        <briefdescription>
<para>Old typename of <ref refid="structvrna__basepair__s" kindref="compound">vrna_basepair_s</ref>. </para>
        </briefdescription>
        <detaileddescription>
<para><xrefsect id="deprecated_1_deprecated000138"><xreftitle>Deprecated</xreftitle><xrefdescription><para>Use <ref refid="structvrna__basepair__t" kindref="compound">vrna_basepair_t</ref> instead! </para>
</xrefdescription></xrefsect></para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/basic.h" line="59" column="30" bodyfile="ViennaRNA/datastructures/basic.h" bodystart="59" bodyend="-1"/>
      </memberdef>
      <memberdef kind="typedef" id="group__data__structures_1ga9608eed021ebfbdd7a901cfdc446c8e9" prot="public" static="no">
        <type>struct <ref refid="structvrna__elem__prob__s" kindref="compound">vrna_elem_prob_s</ref></type>
        <definition>typedef struct vrna_elem_prob_s plist</definition>
        <argsstring></argsstring>
        <name>plist</name>
        <briefdescription>
<para>Old typename of <ref refid="structvrna__elem__prob__s" kindref="compound">vrna_elem_prob_s</ref>. </para>
        </briefdescription>
        <detaileddescription>
<para><xrefsect id="deprecated_1_deprecated000139"><xreftitle>Deprecated</xreftitle><xrefdescription><para>Use <ref refid="group__struct__utils__plist_1gab9ac98ab55ded9fb90043b024b915aca" kindref="member">vrna_ep_t</ref> or <ref refid="structvrna__elem__prob__s" kindref="compound">vrna_elem_prob_s</ref> instead! </para>
</xrefdescription></xrefsect></para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/basic.h" line="65" column="31" bodyfile="ViennaRNA/datastructures/basic.h" bodystart="65" bodyend="-1"/>
      </memberdef>
      <memberdef kind="typedef" id="group__data__structures_1ga8412f116a2eb07b59ade9e14ca7c5ef1" prot="public" static="no">
        <type>struct <ref refid="structvrna__cpair__s" kindref="compound">vrna_cpair_s</ref></type>
        <definition>typedef struct vrna_cpair_s cpair</definition>
        <argsstring></argsstring>
        <name>cpair</name>
        <briefdescription>
<para>Old typename of <ref refid="structvrna__cpair__s" kindref="compound">vrna_cpair_s</ref>. </para>
        </briefdescription>
        <detaileddescription>
<para><xrefsect id="deprecated_1_deprecated000140"><xreftitle>Deprecated</xreftitle><xrefdescription><para>Use <ref refid="group__data__structures_1gae4fc91141cc69c6d8eaf1332cb991ecc" kindref="member">vrna_cpair_t</ref> instead! </para>
</xrefdescription></xrefsect></para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/basic.h" line="70" column="27" bodyfile="ViennaRNA/datastructures/basic.h" bodystart="70" bodyend="-1"/>
      </memberdef>
      <memberdef kind="typedef" id="group__data__structures_1gaaacedee1f05d3d45aa6764eca51a8876" prot="public" static="no">
        <type>struct <ref refid="structvrna__sect__s" kindref="compound">vrna_sect_s</ref></type>
        <definition>typedef struct vrna_sect_s sect</definition>
        <argsstring></argsstring>
        <name>sect</name>
        <briefdescription>
<para>Old typename of <ref refid="structvrna__sect__s" kindref="compound">vrna_sect_s</ref>. </para>
        </briefdescription>
        <detaileddescription>
<para><xrefsect id="deprecated_1_deprecated000141"><xreftitle>Deprecated</xreftitle><xrefdescription><para>Use <ref refid="group__data__structures__bt_1gacc9cdae790dac75a7024e7069c0d4400" kindref="member">vrna_sect_t</ref> instead! </para>
</xrefdescription></xrefsect></para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/basic.h" line="76" column="26" bodyfile="ViennaRNA/datastructures/basic.h" bodystart="76" bodyend="-1"/>
      </memberdef>
      <memberdef kind="typedef" id="group__data__structures_1ga6114174c02666861dc12e1f8db32a17e" prot="public" static="no">
        <type><ref refid="structvrna__bp__stack__t" kindref="compound">vrna_bp_stack_t</ref></type>
        <definition>typedef vrna_bp_stack_t bondT</definition>
        <argsstring></argsstring>
        <name>bondT</name>
        <briefdescription>
<para>Old typename of #vrna_bp_stack_s. </para>
        </briefdescription>
        <detaileddescription>
<para><xrefsect id="deprecated_1_deprecated000142"><xreftitle>Deprecated</xreftitle><xrefdescription><para>Use <ref refid="structvrna__bp__stack__t" kindref="compound">vrna_bp_stack_t</ref> instead! </para>
</xrefdescription></xrefsect></para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/basic.h" line="82" column="25" bodyfile="ViennaRNA/datastructures/basic.h" bodystart="82" bodyend="-1"/>
      </memberdef>
      <memberdef kind="typedef" id="group__data__structures_1ga8f28b2ff98fb3f7a139c50fda3d01a77" prot="public" static="no">
        <type>struct pu_contrib</type>
        <definition>typedef struct pu_contrib pu_contrib</definition>
        <argsstring></argsstring>
        <name>pu_contrib</name>
        <briefdescription>
<para>contributions to p_u </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/basic.h" line="190" column="12"/>
      </memberdef>
      <memberdef kind="typedef" id="group__data__structures_1ga2d25e7fc868ebb4fa8b5bfec1c5eb771" prot="public" static="no">
        <type>struct interact</type>
        <definition>typedef struct interact interact</definition>
        <argsstring></argsstring>
        <name>interact</name>
        <briefdescription>
<para>interaction data structure for RNAup </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/basic.h" line="206" column="10"/>
      </memberdef>
      <memberdef kind="typedef" id="group__data__structures_1gabc7a2003605bb458e161a391be3f2cbd" prot="public" static="no">
        <type>struct pu_out</type>
        <definition>typedef struct pu_out pu_out</definition>
        <argsstring></argsstring>
        <name>pu_out</name>
        <briefdescription>
<para>Collection of all free_energy of beeing unpaired values for output. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/basic.h" line="217" column="8"/>
      </memberdef>
      <memberdef kind="typedef" id="group__data__structures_1ga77624181a1c5caa27e9cf9f1da33604f" prot="public" static="no">
        <type>struct constrain</type>
        <definition>typedef struct constrain constrain</definition>
        <argsstring></argsstring>
        <name>constrain</name>
        <briefdescription>
<para>constraints for cofolding </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/basic.h" line="225" column="11"/>
      </memberdef>
      <memberdef kind="typedef" id="group__data__structures_1ga520389d6980cd4ce9f2450e93e270944" prot="public" static="no">
        <type>struct <ref refid="structnode" kindref="compound">node</ref></type>
        <definition>typedef struct node folden</definition>
        <argsstring></argsstring>
        <name>folden</name>
        <briefdescription>
<para>Data structure for RNAsnoop (fold energy list). </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/basic.h" line="268" column="8"/>
      </memberdef>
      <memberdef kind="typedef" id="group__data__structures_1gaa527b6c15d607e89f7107bbb24e70c4c" prot="public" static="no">
        <type>struct dupVar</type>
        <definition>typedef struct dupVar dupVar</definition>
        <argsstring></argsstring>
        <name>dupVar</name>
        <briefdescription>
<para>Data structure used in RNApkplex. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/basic.h" line="319" column="8"/>
      </memberdef>
    </sectiondef>
    <sectiondef kind="func">
      <memberdef kind="function" id="group__data__structures_1ga21744ae2d6a17309f9327d3547cef0cb" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void vrna_C11_features</definition>
        <argsstring>(void)</argsstring>
        <name>vrna_C11_features</name>
        <param>
          <type>void</type>
        </param>
        <briefdescription>
<para>Dummy symbol to check whether the library was build using C11/C++11 features. </para>
        </briefdescription>
        <detaileddescription>
<para>By default, several data structures of our new v3.0 API use C11/C++11 features, such as unnamed unions, unnamed structs. However, these features can be deactivated at compile time to allow building the library and executables with compilers that do not support these features.</para>
<para>Now, the problem arises that once our static library is compiled and a third-party application is supposed to link against it, it needs to know, at compile time, how to correctly address particular data structures. This is usually implicitely taken care of through the API exposed in our header files. Unfortunately, we had some preprocessor directives in our header files that changed the API depending on the capabilities of the compiler the third-party application is build with. This in turn prohibited the use of an RNAlib compiled without C11/C++11 support in a program that compiles/links with enabled C11/C++11 support and vice-versa.</para>
<para>Therefore, we introduce this dummy symbol which can be used to check, whether the static library was build with C11/C++11 features.</para>
<para><simplesect kind="note"><para>If the symbol is present, the library was build with enabled C11/C++11 features support and no action is required. However, if the symbol is missing in RNAlib &gt;= 2.2.9, programs that link to RNAlib must define a pre-processor identifier <emphasis>VRNA_DISABLE_C11_FEATURES</emphasis> before including any ViennaRNA Package header file, for instance by adding a <emphasis>CPPFLAG</emphasis> <programlisting><codeline><highlight class="normal">CPPFLAGS+=-DVRNA_DISABLE_C11_FEATURES</highlight></codeline>
</programlisting></para>
</simplesect>
<simplesect kind="since"><para>v2.2.9 </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/datastructures/basic.h" line="569" column="6" declfile="ViennaRNA/datastructures/basic.h" declline="569" declcolumn="6"/>
      </memberdef>
    </sectiondef>
    <briefdescription>
    </briefdescription>
    <detaileddescription>
    </detaileddescription>
  </compounddef>
</doxygen>
