Sophie

Sophie

distrib > Mandriva > current > x86_64 > by-pkgid > 3736f276bb1ccfbcee6cb2d27b25d981 > files > 561

openscap-devel-0.5.7-1mdv2010.1.x86_64.rpm

<!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>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Open SCAP Library: /home/pvrabec/openscap/openscap-0.5.7/src/common/util.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>/home/pvrabec/openscap/openscap-0.5.7/src/common/util.h File Reference</h1>
<p>Common openscap utilities.  
<a href="#_details">More...</a></p>
<code>#include &lt;stdbool.h&gt;</code><br/>
<code>#include &lt;assert.h&gt;</code><br/>
<code>#include &quot;<a class="el" href="oscap_8h_source.html">public/oscap.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="alloc_8h_source.html">public/alloc.h</a>&quot;</code><br/>

<p><a href="util_8h_source.html">Go to the source code of this file.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structoscap__string__map.html">oscap_string_map</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Define mapping between symbolic constant and its string representation.  <a href="structoscap__string__map.html#_details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1babff1afca81ac7c0fed50144d104fe"></a><!-- doxytag: member="util.h::__attribute__nonnull__" ref="a1babff1afca81ac7c0fed50144d104fe" args="(x)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__attribute__nonnull__</b>(x)&nbsp;&nbsp;&nbsp;assert((x) != NULL)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a563cdd8c1ef729ddb0efdcebb4d8454e"></a><!-- doxytag: member="util.h::OSCAP_HIDDEN_START" ref="a563cdd8c1ef729ddb0efdcebb4d8454e" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>OSCAP_HIDDEN_START</b>&nbsp;&nbsp;&nbsp;_Pragma(&quot;GCC visibility push(hidden)&quot;)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af782b788db57b27e85421ab639b2b107"></a><!-- doxytag: member="util.h::OSCAP_HIDDEN_END" ref="af782b788db57b27e85421ab639b2b107" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>OSCAP_HIDDEN_END</b>&nbsp;&nbsp;&nbsp;_Pragma(&quot;GCC visibility pop&quot;)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#a07984eadc1820caddf5fb09f8cc5f461">OSCAP_GENERIC_GETTER_CONV</a>(RTYPE, CONV, SNAME, MNAME, MEXP)&nbsp;&nbsp;&nbsp;RTYPE SNAME##_get_##MNAME(const struct SNAME* item) { return (CONV(item-&gt;MEXP)); }</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generate a getter function with an optional conversion.  <a href="#a07984eadc1820caddf5fb09f8cc5f461"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#a6537fbd7378c67b0a5cd34fbbb46cf32">OSCAP_GENERIC_GETTER</a>(RTYPE, SNAME, MNAME, MEXP)&nbsp;&nbsp;&nbsp;OSCAP_GENERIC_GETTER_CONV(RTYPE,,SNAME,MNAME,MEXP)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generate a getter function.  <a href="#a6537fbd7378c67b0a5cd34fbbb46cf32"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#a2b5200ab726de57e775442cd5e6ea1c5">OSCAP_GENERIC_GETTER_FORCE</a>(RTYPE, SNAME, MNAME, MEXP)&nbsp;&nbsp;&nbsp;OSCAP_GENERIC_GETTER_CONV(RTYPE,(RTYPE),SNAME,MNAME,MEXP)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generate a getter function with an explicit conversion to the target data type.  <a href="#a2b5200ab726de57e775442cd5e6ea1c5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#a5b75e45a0f724a333b5da13bde0686ef">OSCAP_GETTER_FORCE</a>(RTYPE, SNAME, MNAME)&nbsp;&nbsp;&nbsp;OSCAP_GENERIC_GETTER_FORCE(RTYPE,SNAME,MNAME,MNAME)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generate a getter function with an explicit conversion to the target data type.  <a href="#a5b75e45a0f724a333b5da13bde0686ef"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#af0a2de3832f32a04e83b9fbfb5073541">OSCAP_GETTER</a>(RTYPE, SNAME, MNAME)&nbsp;&nbsp;&nbsp;OSCAP_GENERIC_GETTER(RTYPE,SNAME,MNAME,MNAME)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generate a getter function.  <a href="#af0a2de3832f32a04e83b9fbfb5073541"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a54330470d99c66955d018842686a4c08"></a><!-- doxytag: member="util.h::ITERATOR_CAST" ref="a54330470d99c66955d018842686a4c08" args="(x)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>ITERATOR_CAST</b>(x)&nbsp;&nbsp;&nbsp;((struct <a class="el" href="structoscap__iterator.html">oscap_iterator</a>*)(x))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac231feffce19c6fb9e99436e078390a"></a><!-- doxytag: member="util.h::OSCAP_ITERATOR" ref="aac231feffce19c6fb9e99436e078390a" args="(n)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>OSCAP_ITERATOR</b>(n)&nbsp;&nbsp;&nbsp;struct n##_iterator*</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fd8671683f834ec3286535ab8c81bc6"></a><!-- doxytag: member="util.h::OSCAP_ITERATOR_FWD" ref="a5fd8671683f834ec3286535ab8c81bc6" args="(n)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>OSCAP_ITERATOR_FWD</b>(n)&nbsp;&nbsp;&nbsp;struct n##_iterator;</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf61d6175a466da3de64df35f19d30ec"></a><!-- doxytag: member="util.h::OSCAP_ITERATOR_HAS_MORE" ref="abf61d6175a466da3de64df35f19d30ec" args="(n)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>OSCAP_ITERATOR_HAS_MORE</b>(n)&nbsp;&nbsp;&nbsp;bool n##_iterator_has_more(OSCAP_ITERATOR(n) it) { return oscap_iterator_has_more(ITERATOR_CAST(it)); }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f9a4599b8e4866cfacf0f59ddd24cb4"></a><!-- doxytag: member="util.h::OSCAP_ITERATOR_NEXT" ref="a7f9a4599b8e4866cfacf0f59ddd24cb4" args="(t, n)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>OSCAP_ITERATOR_NEXT</b>(t, n)&nbsp;&nbsp;&nbsp;t n##_iterator_next(OSCAP_ITERATOR(n) it) { return oscap_iterator_next(ITERATOR_CAST(it)); }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afff4ae659802be92738f58c424fde14c"></a><!-- doxytag: member="util.h::OSCAP_ITERATOR_FREE" ref="afff4ae659802be92738f58c424fde14c" args="(n)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>OSCAP_ITERATOR_FREE</b>(n)&nbsp;&nbsp;&nbsp;void n##_iterator_free(OSCAP_ITERATOR(n) it) { oscap_iterator_free(ITERATOR_CAST(it)); }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aafffc0febb60e765fe00d2950dba3bb6"></a><!-- doxytag: member="util.h::OSCAP_ITERATOR_DETACH" ref="aafffc0febb60e765fe00d2950dba3bb6" args="(t, n)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>OSCAP_ITERATOR_DETACH</b>(t, n)&nbsp;&nbsp;&nbsp;t n##_iterator_detach(OSCAP_ITERATOR(n) it) { return oscap_iterator_detach(ITERATOR_CAST(it)); }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1c4f57de05949b06d112ca41a3a5c160"></a><!-- doxytag: member="util.h::OSCAP_ITERATOR_GEN_T" ref="a1c4f57de05949b06d112ca41a3a5c160" args="(t, n)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>OSCAP_ITERATOR_GEN_T</b>(t, n)&nbsp;&nbsp;&nbsp;OSCAP_ITERATOR_FWD(n) OSCAP_ITERATOR_HAS_MORE(n) OSCAP_ITERATOR_NEXT(t,n) OSCAP_ITERATOR_FREE(n)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0dc22293c244079fc760a27d92b8eb51"></a><!-- doxytag: member="util.h::OSCAP_ITERATOR_GEN" ref="a0dc22293c244079fc760a27d92b8eb51" args="(n)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>OSCAP_ITERATOR_GEN</b>(n)&nbsp;&nbsp;&nbsp;OSCAP_ITERATOR_GEN_T(struct n*,n)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a212d6a0fb2878b1c4b41cc4c6ee446e7"></a><!-- doxytag: member="util.h::OSCAP_ITERATOR_REMOVE_T" ref="a212d6a0fb2878b1c4b41cc4c6ee446e7" args="(t, n, destructor)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>OSCAP_ITERATOR_REMOVE_T</b>(t, n, destructor)&nbsp;&nbsp;&nbsp;void n##_iterator_remove(OSCAP_ITERATOR(n) it) { destructor(oscap_iterator_detach(ITERATOR_CAST(it))); }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa484850de2f761f4e26f31d65c2dc174"></a><!-- doxytag: member="util.h::OSCAP_ITERATOR_REMOVE" ref="aa484850de2f761f4e26f31d65c2dc174" args="(n, destructor)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>OSCAP_ITERATOR_REMOVE</b>(n, destructor)&nbsp;&nbsp;&nbsp;OSCAP_ITERATOR_REMOVE_T(struct n*,n,destructor)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acd8134519d2874ad5cd90c088bf19e5a"></a><!-- doxytag: member="util.h::OSCAP_ITERATOR_REMOVE_F" ref="acd8134519d2874ad5cd90c088bf19e5a" args="(n)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>OSCAP_ITERATOR_REMOVE_F</b>(n)&nbsp;&nbsp;&nbsp;OSCAP_ITERATOR_REMOVE(n, n##_free)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#aa9ea17012a7a5a4a4823e7ada948d930">OSCAP_IGETTER_CONV</a>(ITYPE, SNAME, MNAME, CONV)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generate an iterator getter function.  <a href="#aa9ea17012a7a5a4a4823e7ada948d930"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#a2634e36b767ff8f1a538e5067842dc6a">OSCAP_IGETTER</a>(ITYPE, SNAME, MNAME)&nbsp;&nbsp;&nbsp;OSCAP_IGETTER_CONV(ITYPE,SNAME,MNAME,)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generate an iterator getter function.  <a href="#a2634e36b767ff8f1a538e5067842dc6a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#aa383eae0670f01c7b9d8f9780aedb9d1">OSCAP_IGETTER_GEN</a>(ITYPE, SNAME, MNAME)&nbsp;&nbsp;&nbsp;OSCAP_IGETTER(ITYPE,SNAME,MNAME) OSCAP_ITERATOR_GEN(ITYPE)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generate an iterator and its getter.  <a href="#aa383eae0670f01c7b9d8f9780aedb9d1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#a1c95b2ccc329b8e3a1c7abd2cd5fee59">OSCAP_HGETTER_EXP</a>(RTYPE, SNAME, MNAME, MEXP)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generete a geter function from a hash table.  <a href="#a1c95b2ccc329b8e3a1c7abd2cd5fee59"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#a830fc8c9d39d3004e3f28b69f7c43450">OSCAP_HGETTER</a>(RTYPE, SNAME, MNAME)&nbsp;&nbsp;&nbsp;OSCAP_HGETTER_EXP(RTYPE,SNAME,MNAME,MNAME)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generete a geter function from a hash table.  <a href="#a830fc8c9d39d3004e3f28b69f7c43450"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#a8fe541399a78b234cbda8eb1532c12a1">OSCAP_HGETTER_STRUCT</a>(RTYPE, SNAME, MNAME)&nbsp;&nbsp;&nbsp;OSCAP_HGETTER_EXP(struct RTYPE*,SNAME,MNAME,MNAME)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generete a geter function from a hash table.  <a href="#a8fe541399a78b234cbda8eb1532c12a1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8d61176e91cfd82a052770db1383340"></a><!-- doxytag: member="util.h::OSCAP_SETTER_HEADER" ref="aa8d61176e91cfd82a052770db1383340" args="(SNAME, MTYPE, MNAME)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>OSCAP_SETTER_HEADER</b>(SNAME, MTYPE, MNAME)&nbsp;&nbsp;&nbsp;bool SNAME##_set_##MNAME(struct SNAME *obj, MTYPE item)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#a98964606cf2ab84d093c1e4dae18f101">OSCAP_SETTER_GENERIC_CHECK</a>(SNAME, MTYPE, MNAME, CHECK, DELETER, ASSIGNER)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generete a setter function with a check.  <a href="#a98964606cf2ab84d093c1e4dae18f101"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#a452283d465fda2043dd6f80ba43a35b3">OSCAP_SETTER_GENERIC</a>(SNAME, MTYPE, MNAME, DELETER, ASSIGNER)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generete a setter function without a check.  <a href="#a452283d465fda2043dd6f80ba43a35b3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#a94ff3491fb52ba23c0c66e1ca8afe115">OSCAP_SETTER_GENERIC_NODELETE</a>(SNAME, MTYPE, MNAME, ASSIGNER)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generete a setter function without a check that does not delete the previous value.  <a href="#a94ff3491fb52ba23c0c66e1ca8afe115"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#a596f918f3ca6cbc014ec148262ba2d5c">OSCAP_SETTER_SIMPLE</a>(SNAME, MTYPE, MNAME)&nbsp;&nbsp;&nbsp;OSCAP_SETTER_GENERIC_NODELETE(SNAME, MTYPE, MNAME, )</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generete a setter function using a simple assignment.  <a href="#a596f918f3ca6cbc014ec148262ba2d5c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#a5f7f57c665211b0589af75b5e558ccf1">OSCAP_SETTER_STRING</a>(SNAME, MNAME)&nbsp;&nbsp;&nbsp;OSCAP_SETTER_GENERIC(SNAME, const char *, MNAME, free, oscap_strdup)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assign a string value to a structure member.  <a href="#a5f7f57c665211b0589af75b5e558ccf1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade0c5f5243684c8b21023c02b2e7073f"></a><!-- doxytag: member="util.h::OSCAP_ACCESSOR_STRING" ref="ade0c5f5243684c8b21023c02b2e7073f" args="(SNAME, MNAME)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#ade0c5f5243684c8b21023c02b2e7073f">OSCAP_ACCESSOR_STRING</a>(SNAME, MNAME)&nbsp;&nbsp;&nbsp;OSCAP_SETTER_STRING(SNAME, MNAME) OSCAP_GETTER(const char*, SNAME, MNAME)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Define both, getter and setter for a string structure member. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b0299d8e4ca40797a73fd82c502e8a9"></a><!-- doxytag: member="util.h::OSCAP_ACCESSOR_SIMPLE" ref="a3b0299d8e4ca40797a73fd82c502e8a9" args="(MTYPE, SNAME, MNAME)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#a3b0299d8e4ca40797a73fd82c502e8a9">OSCAP_ACCESSOR_SIMPLE</a>(MTYPE, SNAME, MNAME)&nbsp;&nbsp;&nbsp;OSCAP_SETTER_SIMPLE(SNAME, MTYPE, MNAME) OSCAP_GETTER(MTYPE, SNAME, MNAME)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Define both, getter and setter for a structure member using simple get/set. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#a58a4f69509578fe726d273e47feadee9">OSCAP_INSERTER</a>(SNAME, FNAME, MTYPE, MNAME)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generate function to insert an item into a list.  <a href="#a58a4f69509578fe726d273e47feadee9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16b17690bb73f4419a3490ad834ba444"></a><!-- doxytag: member="util.h::OSCAP_IGETINS" ref="a16b17690bb73f4419a3490ad834ba444" args="(ITYPE, SNAME, MNAME, FNAME)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>OSCAP_IGETINS</b>(ITYPE, SNAME, MNAME, FNAME)&nbsp;&nbsp;&nbsp;OSCAP_IGETTER(ITYPE, SNAME, MNAME) OSCAP_INSERTER(SNAME, FNAME, ITYPE, MNAME)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17d23d9f0d184388cd700d4773639c54"></a><!-- doxytag: member="util.h::OSCAP_IGETINS_GEN" ref="a17d23d9f0d184388cd700d4773639c54" args="(ITYPE, SNAME, MNAME, FNAME)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>OSCAP_IGETINS_GEN</b>(ITYPE, SNAME, MNAME, FNAME)&nbsp;&nbsp;&nbsp;OSCAP_IGETTER_GEN(ITYPE, SNAME, MNAME) OSCAP_INSERTER(SNAME, FNAME, ITYPE, MNAME)</td></tr>
<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2a4648e28ae682b86489ac8be3a22fc"></a><!-- doxytag: member="util.h::oscap_destruct_func" ref="ad2a4648e28ae682b86489ac8be3a22fc" args=")(void *)" -->
typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#ad2a4648e28ae682b86489ac8be3a22fc">oscap_destruct_func</a> )(void *)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Function pointer to an object destructor. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac32fc75588117050825915e52af52992"></a><!-- doxytag: member="util.h::oscap_consumer_func" ref="ac32fc75588117050825915e52af52992" args=")(void *, void *)" -->
typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#ac32fc75588117050825915e52af52992">oscap_consumer_func</a> )(void *, void *)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Function pointer to an object consumer. <br/></td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#a6b16df3c5b6a73bb8e7ca890a5bcbbbf">oscap_strdup</a> (const char *str)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Use strdup on string, if string is NULL, return NULL.  <a href="#a6b16df3c5b6a73bb8e7ca890a5bcbbbf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8h.html#aa7e2b327cb6228bbe863ce31048a8808">oscap_strsep</a> (char **str, const char *delim)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Use strsep on string We can't use strsep from string.h because of compatibility issues.  <a href="#aa7e2b327cb6228bbe863ce31048a8808"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Common openscap utilities. </p>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="a6537fbd7378c67b0a5cd34fbbb46cf32"></a><!-- doxytag: member="util.h::OSCAP_GENERIC_GETTER" ref="a6537fbd7378c67b0a5cd34fbbb46cf32" args="(RTYPE, SNAME, MNAME, MEXP)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OSCAP_GENERIC_GETTER</td>
          <td>(</td>
          <td class="paramtype">RTYPE, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">SNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MEXP&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;OSCAP_GENERIC_GETTER_CONV(RTYPE,,SNAME,MNAME,MEXP)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Generate a getter function. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>RTYPE</em>&nbsp;</td><td>return type </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SNAME</em>&nbsp;</td><td>name of the structure of which we are getting a member </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>MNAME</em>&nbsp;</td><td>member name affects how the resultant function will be called </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>MEXP</em>&nbsp;</td><td>expression to get the member </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="util_8h.html#a07984eadc1820caddf5fb09f8cc5f461" title="Generate a getter function with an optional conversion.">OSCAP_GENERIC_GETTER_CONV</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a07984eadc1820caddf5fb09f8cc5f461"></a><!-- doxytag: member="util.h::OSCAP_GENERIC_GETTER_CONV" ref="a07984eadc1820caddf5fb09f8cc5f461" args="(RTYPE, CONV, SNAME, MNAME, MEXP)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OSCAP_GENERIC_GETTER_CONV</td>
          <td>(</td>
          <td class="paramtype">RTYPE, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CONV, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">SNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MEXP&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;RTYPE SNAME##_get_##MNAME(const struct SNAME* item) { return (CONV(item-&gt;MEXP)); }</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Generate a getter function with an optional conversion. </p>
<p>Header of the generated function will look like this (substitute the capital letter sequences with the actual parametres): </p>
<div class="fragment"><pre class="fragment"> RTYPE SNAME_MNAME(<span class="keyword">const</span> <span class="keyword">struct</span> SNAME*); 
</pre></div> <dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>RTYPE</em>&nbsp;</td><td>return type </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>CONV</em>&nbsp;</td><td>conversion expression, i.e. either a type conversion of form '(type)' or an unary function identifier </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SNAME</em>&nbsp;</td><td>name of the structure of which we are getting a member (without the struct keyword) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>MNAME</em>&nbsp;</td><td>member name affects how the resultant function will be called </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>MEXP</em>&nbsp;</td><td>expression to get the member </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a2b5200ab726de57e775442cd5e6ea1c5"></a><!-- doxytag: member="util.h::OSCAP_GENERIC_GETTER_FORCE" ref="a2b5200ab726de57e775442cd5e6ea1c5" args="(RTYPE, SNAME, MNAME, MEXP)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OSCAP_GENERIC_GETTER_FORCE</td>
          <td>(</td>
          <td class="paramtype">RTYPE, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">SNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MEXP&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;OSCAP_GENERIC_GETTER_CONV(RTYPE,(RTYPE),SNAME,MNAME,MEXP)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Generate a getter function with an explicit conversion to the target data type. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>RTYPE</em>&nbsp;</td><td>return type </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SNAME</em>&nbsp;</td><td>name of the structure of which we are getting a member </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>MNAME</em>&nbsp;</td><td>member name affects how the resultant function will be called </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>MEXP</em>&nbsp;</td><td>expression to get the member </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="util_8h.html#a07984eadc1820caddf5fb09f8cc5f461" title="Generate a getter function with an optional conversion.">OSCAP_GENERIC_GETTER_CONV</a> </dd></dl>

</div>
</div>
<a class="anchor" id="af0a2de3832f32a04e83b9fbfb5073541"></a><!-- doxytag: member="util.h::OSCAP_GETTER" ref="af0a2de3832f32a04e83b9fbfb5073541" args="(RTYPE, SNAME, MNAME)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OSCAP_GETTER</td>
          <td>(</td>
          <td class="paramtype">RTYPE, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">SNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MNAME&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;OSCAP_GENERIC_GETTER(RTYPE,SNAME,MNAME,MNAME)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Generate a getter function. </p>
<p>Member name and second part of the generated function's name must match. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>RTYPE</em>&nbsp;</td><td>return type </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SNAME</em>&nbsp;</td><td>name of the structure of which we are getting a member </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>MNAME</em>&nbsp;</td><td>member name affects how the resultant function will be called </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>MEXP</em>&nbsp;</td><td>expression to get the member </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="util_8h.html#a6537fbd7378c67b0a5cd34fbbb46cf32" title="Generate a getter function.">OSCAP_GENERIC_GETTER</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a5b75e45a0f724a333b5da13bde0686ef"></a><!-- doxytag: member="util.h::OSCAP_GETTER_FORCE" ref="a5b75e45a0f724a333b5da13bde0686ef" args="(RTYPE, SNAME, MNAME)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OSCAP_GETTER_FORCE</td>
          <td>(</td>
          <td class="paramtype">RTYPE, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">SNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MNAME&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;OSCAP_GENERIC_GETTER_FORCE(RTYPE,SNAME,MNAME,MNAME)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Generate a getter function with an explicit conversion to the target data type. </p>
<p>Member name and second part of the generated function's name must match. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>RTYPE</em>&nbsp;</td><td>return type </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SNAME</em>&nbsp;</td><td>name of the structure of which we are getting a member </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>MNAME</em>&nbsp;</td><td>member name affects how the resultant function will be called </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>MEXP</em>&nbsp;</td><td>expression to get the member </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="util_8h.html#a2b5200ab726de57e775442cd5e6ea1c5" title="Generate a getter function with an explicit conversion to the target data type.">OSCAP_GENERIC_GETTER_FORCE</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a830fc8c9d39d3004e3f28b69f7c43450"></a><!-- doxytag: member="util.h::OSCAP_HGETTER" ref="a830fc8c9d39d3004e3f28b69f7c43450" args="(RTYPE, SNAME, MNAME)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OSCAP_HGETTER</td>
          <td>(</td>
          <td class="paramtype">RTYPE, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">SNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MNAME&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;OSCAP_HGETTER_EXP(RTYPE,SNAME,MNAME,MNAME)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Generete a geter function from a hash table. </p>
<p>Signature of the generated function will be as follows (substitute uppercase strings with actual params): </p>
<div class="fragment"><pre class="fragment"> RTYPE SNAME_MNAME(<span class="keyword">const</span> <span class="keyword">struct</span> SNAME* item, <span class="keyword">const</span> <span class="keywordtype">char</span>* key); 
</pre></div> <dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>RTYPE</em>&nbsp;</td><td>type of the hash table item </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SNAME</em>&nbsp;</td><td>name of the structure </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>MNAME</em>&nbsp;</td><td>structure member name </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a1c95b2ccc329b8e3a1c7abd2cd5fee59"></a><!-- doxytag: member="util.h::OSCAP_HGETTER_EXP" ref="a1c95b2ccc329b8e3a1c7abd2cd5fee59" args="(RTYPE, SNAME, MNAME, MEXP)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OSCAP_HGETTER_EXP</td>
          <td>(</td>
          <td class="paramtype">RTYPE, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">SNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MEXP&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">RTYPE SNAME##_get_##MNAME(<span class="keyword">const</span> <span class="keyword">struct</span> SNAME* item, <span class="keyword">const</span> <span class="keywordtype">char</span>* key) \
        { <span class="keywordflow">return</span> oscap_htable_get(item-&gt;MEXP, key); }
</pre></div>
<p>Generete a geter function from a hash table. </p>
<p>Signature of the generated function will be as follows (substitute uppercase strings with actual params): </p>
<div class="fragment"><pre class="fragment"> RTYPE SNAME_MNAME(<span class="keyword">const</span> <span class="keyword">struct</span> SNAME* item, <span class="keyword">const</span> <span class="keywordtype">char</span>* key); 
</pre></div> <dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>RTYPE</em>&nbsp;</td><td>type of the hash table item </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SNAME</em>&nbsp;</td><td>name of the structure </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>MNAME</em>&nbsp;</td><td>structure member name </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>MEXP</em>&nbsp;</td><td>expression to get the member variable (i.e. the hash table) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a8fe541399a78b234cbda8eb1532c12a1"></a><!-- doxytag: member="util.h::OSCAP_HGETTER_STRUCT" ref="a8fe541399a78b234cbda8eb1532c12a1" args="(RTYPE, SNAME, MNAME)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OSCAP_HGETTER_STRUCT</td>
          <td>(</td>
          <td class="paramtype">RTYPE, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">SNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MNAME&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;OSCAP_HGETTER_EXP(struct RTYPE*,SNAME,MNAME,MNAME)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Generete a geter function from a hash table. </p>
<p>Signature of the generated function will be as follows (substitute uppercase strings with actual params): </p>
<div class="fragment"><pre class="fragment"> <span class="keyword">struct </span>RTYPE* SNAME_MNAME(<span class="keyword">const</span> <span class="keyword">struct</span> SNAME* item, <span class="keyword">const</span> <span class="keywordtype">char</span>* key); 
</pre></div> <dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>RTYPE</em>&nbsp;</td><td>type of the hash table item </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SNAME</em>&nbsp;</td><td>name of the structure </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>MNAME</em>&nbsp;</td><td>structure member name </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a2634e36b767ff8f1a538e5067842dc6a"></a><!-- doxytag: member="util.h::OSCAP_IGETTER" ref="a2634e36b767ff8f1a538e5067842dc6a" args="(ITYPE, SNAME, MNAME)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OSCAP_IGETTER</td>
          <td>(</td>
          <td class="paramtype">ITYPE, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">SNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MNAME&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;OSCAP_IGETTER_CONV(ITYPE,SNAME,MNAME,)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Generate an iterator getter function. </p>
<p>Signature of the generated function will be as follows (substitute uppercase strings with actual params): </p>
<div class="fragment"><pre class="fragment"> <span class="keyword">struct </span>ITYPE_iterator* SNAME_MNAME(<span class="keyword">const</span> <span class="keyword">struct</span> SNAME*); 
</pre></div> <dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ITYPE</em>&nbsp;</td><td>iterator type (without the '_iterator' suffix) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SNAME</em>&nbsp;</td><td>name of type the structure containing the list </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>MANME</em>&nbsp;</td><td>list itself </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aa9ea17012a7a5a4a4823e7ada948d930"></a><!-- doxytag: member="util.h::OSCAP_IGETTER_CONV" ref="aa9ea17012a7a5a4a4823e7ada948d930" args="(ITYPE, SNAME, MNAME, CONV)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OSCAP_IGETTER_CONV</td>
          <td>(</td>
          <td class="paramtype">ITYPE, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">SNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CONV&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keyword">struct </span>ITYPE##_iterator* SNAME##_get_##MNAME(<span class="keyword">const</span> <span class="keyword">struct</span> SNAME* item) \
        { <span class="keywordflow">return</span> oscap_iterator_new((CONV(item))-&gt;MNAME); }
</pre></div>
<p>Generate an iterator getter function. </p>
<p>Signature of the generated function will be as follows (substitute uppercase strings with actual params): </p>
<div class="fragment"><pre class="fragment"> <span class="keyword">struct </span>ITYPE_iterator* SNAME_MNAME(<span class="keyword">const</span> <span class="keyword">struct</span> SNAME*); 
</pre></div> <dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ITYPE</em>&nbsp;</td><td>iterator type (without the '_iterator' suffix) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>SNAME</em>&nbsp;</td><td>name of type the structure containing the list </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>MANME</em>&nbsp;</td><td>list itself </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>CONV</em>&nbsp;</td><td>convert expression </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aa383eae0670f01c7b9d8f9780aedb9d1"></a><!-- doxytag: member="util.h::OSCAP_IGETTER_GEN" ref="aa383eae0670f01c7b9d8f9780aedb9d1" args="(ITYPE, SNAME, MNAME)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OSCAP_IGETTER_GEN</td>
          <td>(</td>
          <td class="paramtype">ITYPE, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">SNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MNAME&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;OSCAP_IGETTER(ITYPE,SNAME,MNAME) OSCAP_ITERATOR_GEN(ITYPE)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Generate an iterator and its getter. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="util_8h.html#a2634e36b767ff8f1a538e5067842dc6a" title="Generate an iterator getter function.">OSCAP_IGETTER</a> </dd>
<dd>
OSCAP_ITERATOR_GEN </dd></dl>

</div>
</div>
<a class="anchor" id="a58a4f69509578fe726d273e47feadee9"></a><!-- doxytag: member="util.h::OSCAP_INSERTER" ref="a58a4f69509578fe726d273e47feadee9" args="(SNAME, FNAME, MTYPE, MNAME)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OSCAP_INSERTER</td>
          <td>(</td>
          <td class="paramtype">SNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">FNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MTYPE, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MNAME&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordtype">bool</span> SNAME##_add_##FNAME(<span class="keyword">struct</span> SNAME *obj, <span class="keyword">struct</span> MTYPE *item) \
        { oscap_list_add(obj-&gt;MNAME, item); <span class="keywordflow">return</span> <span class="keyword">true</span>; }
</pre></div>
<p>Generate function to insert an item into a list. </p>
<p>Signature of the generated function will be as follows (substitute uppercase strings with actual params): </p>
<div class="fragment"><pre class="fragment"> <span class="keywordtype">bool</span> SNAME_add_FNAME(<span class="keyword">struct</span> SNAME *obj, <span class="keyword">struct</span> MTYPE *item); 
</pre></div> <dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>SNAME</em>&nbsp;</td><td>structure typename (w/o the struct keyword) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>FNAME</em>&nbsp;</td><td>how should function name part after the _add_ look like </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>MTYPE</em>&nbsp;</td><td>list member type </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>MNAME</em>&nbsp;</td><td>name of the list within the structure </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a452283d465fda2043dd6f80ba43a35b3"></a><!-- doxytag: member="util.h::OSCAP_SETTER_GENERIC" ref="a452283d465fda2043dd6f80ba43a35b3" args="(SNAME, MTYPE, MNAME, DELETER, ASSIGNER)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OSCAP_SETTER_GENERIC</td>
          <td>(</td>
          <td class="paramtype">SNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MTYPE, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">DELETER, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ASSIGNER&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">OSCAP_SETTER_HEADER(SNAME, MTYPE, MNAME) \
        { DELETER(obj-&gt;MNAME); obj-&gt;MNAME = ASSIGNER(item); <span class="keywordflow">return</span> <span class="keyword">true</span>; }
</pre></div>
<p>Generete a setter function without a check. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="util_8h.html#a98964606cf2ab84d093c1e4dae18f101" title="Generete a setter function with a check.">OSCAP_SETTER_GENERIC_CHECK</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a98964606cf2ab84d093c1e4dae18f101"></a><!-- doxytag: member="util.h::OSCAP_SETTER_GENERIC_CHECK" ref="a98964606cf2ab84d093c1e4dae18f101" args="(SNAME, MTYPE, MNAME, CHECK, DELETER, ASSIGNER)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OSCAP_SETTER_GENERIC_CHECK</td>
          <td>(</td>
          <td class="paramtype">SNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MTYPE, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CHECK, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">DELETER, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ASSIGNER&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">OSCAP_SETTER_HEADER(SNAME, MTYPE, MNAME) \
        { <span class="keywordflow">if</span> (!(CHECK)) <span class="keywordflow">return</span> <span class="keyword">false</span>; DELETER(obj-&gt;MNAME); obj-&gt;MNAME = ASSIGNER(item); <span class="keywordflow">return</span> <span class="keyword">true</span>; }
</pre></div>
<p>Generete a setter function with a check. </p>
<p>Signature of the generated function will be as follows (substitute uppercase strings with actual params): </p>
<div class="fragment"><pre class="fragment"> <span class="keywordtype">bool</span> SNAME_get_MNAME(<span class="keyword">struct</span> SNAME *obj, MTYPE *item); 
</pre></div> <dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>SNAME</em>&nbsp;</td><td>Name of the structure. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>MTYPE</em>&nbsp;</td><td>Type of the member item to set. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>MNAME</em>&nbsp;</td><td>Name of the member item to set. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>CHECK</em>&nbsp;</td><td>Code to check validity of the assignment (you can use obj and item variables here). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>DELETER</em>&nbsp;</td><td>Function used to delete the old value (or empty string). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ASSIGNER</em>&nbsp;</td><td>Function used to assign value to the item. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a94ff3491fb52ba23c0c66e1ca8afe115"></a><!-- doxytag: member="util.h::OSCAP_SETTER_GENERIC_NODELETE" ref="a94ff3491fb52ba23c0c66e1ca8afe115" args="(SNAME, MTYPE, MNAME, ASSIGNER)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OSCAP_SETTER_GENERIC_NODELETE</td>
          <td>(</td>
          <td class="paramtype">SNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MTYPE, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ASSIGNER&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">OSCAP_SETTER_HEADER(SNAME, MTYPE, MNAME) \
        { obj-&gt;MNAME = ASSIGNER(item); <span class="keywordflow">return</span> <span class="keyword">true</span>; }
</pre></div>
<p>Generete a setter function without a check that does not delete the previous value. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="util_8h.html#a98964606cf2ab84d093c1e4dae18f101" title="Generete a setter function with a check.">OSCAP_SETTER_GENERIC_CHECK</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a596f918f3ca6cbc014ec148262ba2d5c"></a><!-- doxytag: member="util.h::OSCAP_SETTER_SIMPLE" ref="a596f918f3ca6cbc014ec148262ba2d5c" args="(SNAME, MTYPE, MNAME)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OSCAP_SETTER_SIMPLE</td>
          <td>(</td>
          <td class="paramtype">SNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MTYPE, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MNAME&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;OSCAP_SETTER_GENERIC_NODELETE(SNAME, MTYPE, MNAME, )</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Generete a setter function using a simple assignment. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="util_8h.html#a98964606cf2ab84d093c1e4dae18f101" title="Generete a setter function with a check.">OSCAP_SETTER_GENERIC_CHECK</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a5f7f57c665211b0589af75b5e558ccf1"></a><!-- doxytag: member="util.h::OSCAP_SETTER_STRING" ref="a5f7f57c665211b0589af75b5e558ccf1" args="(SNAME, MNAME)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OSCAP_SETTER_STRING</td>
          <td>(</td>
          <td class="paramtype">SNAME, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MNAME&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;OSCAP_SETTER_GENERIC(SNAME, const char *, MNAME, free, oscap_strdup)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Assign a string value to a structure member. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>SNAME</em>&nbsp;</td><td>Structure name </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>MNAME</em>&nbsp;</td><td>Name of structure member containing the string to be set. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="a6b16df3c5b6a73bb8e7ca890a5bcbbbf"></a><!-- doxytag: member="util.h::oscap_strdup" ref="a6b16df3c5b6a73bb8e7ca890a5bcbbbf" args="(const char *str)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* oscap_strdup </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>str</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Use strdup on string, if string is NULL, return NULL. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>String we want to duplicate </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aa7e2b327cb6228bbe863ce31048a8808"></a><!-- doxytag: member="util.h::oscap_strsep" ref="aa7e2b327cb6228bbe863ce31048a8808" args="(char **str, const char *delim)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* oscap_strsep </td>
          <td>(</td>
          <td class="paramtype">char **&nbsp;</td>
          <td class="paramname"> <em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>delim</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Use strsep on string We can't use strsep from string.h because of compatibility issues. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>String we want to split </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>delim</em>&nbsp;</td><td>Delimiter of string parts </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on 26 Feb 2010 for Open SCAP Library by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>