Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > 87b89b73c41f4440bb86afd421c7548f > files > 133

libnl-devel-1.1-14.fc14.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>libnl: Abstract Data</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.7.3 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">libnl&#160;<span id="projectnumber">1.1</span></div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="headertitle">
<h1>Abstract Data</h1>  </div>
<div class="ingroups"><a class="el" href="group__utils.html">Utilities</a></div></div>
<div class="contents">
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="member-group"></a>
General</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct nl_data *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__data.html#gafd58c229c0e4dd4dcea07c8d8493c144">nl_data_alloc</a> (void *buf, size_t size)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a new abstract data object.  <a href="#gafd58c229c0e4dd4dcea07c8d8493c144"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct nl_data *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__data.html#ga64967fcb4916f66a2bd1a82292350e74">nl_data_clone</a> (struct nl_data *src)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Clone an abstract data object.  <a href="#ga64967fcb4916f66a2bd1a82292350e74"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__data.html#ga81b8ad4a0fd04f8d80bafecc323f2a35">nl_data_append</a> (struct nl_data *data, void *buf, size_t size)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Append data to an abstract data object.  <a href="#ga81b8ad4a0fd04f8d80bafecc323f2a35"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__data.html#ga35cbd02038e7abf0be6da4cb2a34189e">nl_data_free</a> (struct nl_data *data)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Free an abstract data object.  <a href="#ga35cbd02038e7abf0be6da4cb2a34189e"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Attribute Access</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__data.html#ga1ca4b5ea3a92643c2fe94dd4eeef072b">nl_data_get</a> (struct nl_data *data)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get data buffer of abstract data object.  <a href="#ga1ca4b5ea3a92643c2fe94dd4eeef072b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__data.html#ga6dbaf24a42f29514e30665c9e42a3d1c">nl_data_get_size</a> (struct nl_data *data)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get size of data buffer of abstract data object.  <a href="#ga6dbaf24a42f29514e30665c9e42a3d1c"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Misc</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__data.html#ga232b75513b2aa66e91d5eb51e2a22b12">nl_data_cmp</a> (struct nl_data *a, struct nl_data *b)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare two abstract data objects.  <a href="#ga232b75513b2aa66e91d5eb51e2a22b12"></a><br/></td></tr>
</table>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="gafd58c229c0e4dd4dcea07c8d8493c144"></a><!-- doxytag: member="data.c::nl_data_alloc" ref="gafd58c229c0e4dd4dcea07c8d8493c144" args="(void *buf, size_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct nl_data* nl_data_alloc </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">buf</td><td>Data buffer containing the actual data. </td></tr>
    <tr><td class="paramname">size</td><td>Size of data buffer.</td></tr>
  </table>
  </dd>
</dl>
<p>Allocates a new abstract data and copies the specified data buffer into the new handle.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>Newly allocated data handle or NULL </dd></dl>

<p>Definition at line <a class="el" href="data_8c_source.html#l00038">38</a> of file <a class="el" href="data_8c_source.html">data.c</a>.</p>

<p>Referenced by <a class="el" href="data_8c_source.html#l00069">nl_data_clone()</a>, and <a class="el" href="attr_8c_source.html#l00777">nla_get_data()</a>.</p>
<div class="fragment"><pre class="fragment">{
        <span class="keyword">struct </span>nl_data *data;

        data = calloc(1, <span class="keyword">sizeof</span>(*data));
        <span class="keywordflow">if</span> (!data)
                <span class="keywordflow">goto</span> errout;

        data-&gt;d_data = calloc(1, size);
        <span class="keywordflow">if</span> (!data-&gt;d_data) {
                free(data);
                <span class="keywordflow">goto</span> errout;
        }

        data-&gt;d_size = size;

        <span class="keywordflow">if</span> (buf)
                memcpy(data-&gt;d_data, buf, size);

        <span class="keywordflow">return</span> data;
errout:
        nl_errno(ENOMEM);
        <span class="keywordflow">return</span> NULL;
}
</pre></div>
</div>
</div>
<a class="anchor" id="ga64967fcb4916f66a2bd1a82292350e74"></a><!-- doxytag: member="data.c::nl_data_clone" ref="ga64967fcb4916f66a2bd1a82292350e74" args="(struct nl_data *src)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct nl_data* nl_data_clone </td>
          <td>(</td>
          <td class="paramtype">struct nl_data *&#160;</td>
          <td class="paramname"><em>src</em></td><td>)</td>
          <td><code> [read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">src</td><td>Abstract data object</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Cloned object or NULL </dd></dl>

<p>Definition at line <a class="el" href="data_8c_source.html#l00069">69</a> of file <a class="el" href="data_8c_source.html">data.c</a>.</p>

<p>References <a class="el" href="data_8c_source.html#l00038">nl_data_alloc()</a>.</p>
<div class="fragment"><pre class="fragment">{
        <span class="keywordflow">return</span> <a class="code" href="group__data.html#gafd58c229c0e4dd4dcea07c8d8493c144" title="Allocate a new abstract data object.">nl_data_alloc</a>(src-&gt;d_data, src-&gt;d_size);
}
</pre></div>
</div>
</div>
<a class="anchor" id="ga81b8ad4a0fd04f8d80bafecc323f2a35"></a><!-- doxytag: member="data.c::nl_data_append" ref="ga81b8ad4a0fd04f8d80bafecc323f2a35" args="(struct nl_data *data, void *buf, size_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nl_data_append </td>
          <td>(</td>
          <td class="paramtype">struct nl_data *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">data</td><td>Abstract data object. </td></tr>
    <tr><td class="paramname">buf</td><td>Data buffer containing the data to be appended. </td></tr>
    <tr><td class="paramname">size</td><td>Size of data to be apppended.</td></tr>
  </table>
  </dd>
</dl>
<p>Reallocates an abstract data and copies the specified data buffer into the new handle.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success or a negative error code </dd></dl>

<p>Definition at line <a class="el" href="data_8c_source.html#l00085">85</a> of file <a class="el" href="data_8c_source.html">data.c</a>.</p>

<p>Referenced by <a class="el" href="u32_8c_source.html#l00470">rtnl_u32_add_key()</a>.</p>
<div class="fragment"><pre class="fragment">{
        <span class="keywordflow">if</span> (size &lt; 0)
                BUG();

        <span class="keywordflow">if</span> (size &gt; 0) {
                data-&gt;d_data = realloc(data-&gt;d_data, data-&gt;d_size + size);
                <span class="keywordflow">if</span> (!data-&gt;d_data)
                        <span class="keywordflow">return</span> nl_errno(ENOMEM);

                <span class="keywordflow">if</span> (buf)
                        memcpy(data-&gt;d_data + data-&gt;d_size, buf, size);
                <span class="keywordflow">else</span>
                        memset(data-&gt;d_data + data-&gt;d_size, 0, size);

                data-&gt;d_size += size;
        }

        <span class="keywordflow">return</span> 0;
}
</pre></div>
</div>
</div>
<a class="anchor" id="ga35cbd02038e7abf0be6da4cb2a34189e"></a><!-- doxytag: member="data.c::nl_data_free" ref="ga35cbd02038e7abf0be6da4cb2a34189e" args="(struct nl_data *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nl_data_free </td>
          <td>(</td>
          <td class="paramtype">struct nl_data *&#160;</td>
          <td class="paramname"><em>data</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">data</td><td>Abstract data object. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="data_8c_source.html#l00110">110</a> of file <a class="el" href="data_8c_source.html">data.c</a>.</p>
<div class="fragment"><pre class="fragment">{
        <span class="keywordflow">if</span> (data)
                free(data-&gt;d_data);

        free(data);
}
</pre></div>
</div>
</div>
<a class="anchor" id="ga1ca4b5ea3a92643c2fe94dd4eeef072b"></a><!-- doxytag: member="data.c::nl_data_get" ref="ga1ca4b5ea3a92643c2fe94dd4eeef072b" args="(struct nl_data *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* nl_data_get </td>
          <td>(</td>
          <td class="paramtype">struct nl_data *&#160;</td>
          <td class="paramname"><em>data</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">data</td><td>Abstract data object. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Data buffer or NULL if empty. </dd></dl>

<p>Definition at line <a class="el" href="data_8c_source.html#l00130">130</a> of file <a class="el" href="data_8c_source.html">data.c</a>.</p>

<p>Referenced by <a class="el" href="data_8c_source.html#l00160">nl_data_cmp()</a>, and <a class="el" href="attr_8c_source.html#l00624">nla_put_data()</a>.</p>
<div class="fragment"><pre class="fragment">{
        <span class="keywordflow">return</span> data-&gt;d_size &gt; 0 ? data-&gt;d_data : NULL;
}
</pre></div>
</div>
</div>
<a class="anchor" id="ga6dbaf24a42f29514e30665c9e42a3d1c"></a><!-- doxytag: member="data.c::nl_data_get_size" ref="ga6dbaf24a42f29514e30665c9e42a3d1c" args="(struct nl_data *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t nl_data_get_size </td>
          <td>(</td>
          <td class="paramtype">struct nl_data *&#160;</td>
          <td class="paramname"><em>data</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">data</td><td>Abstract data object. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Size of data buffer. </dd></dl>

<p>Definition at line <a class="el" href="data_8c_source.html#l00140">140</a> of file <a class="el" href="data_8c_source.html">data.c</a>.</p>

<p>Referenced by <a class="el" href="data_8c_source.html#l00160">nl_data_cmp()</a>, and <a class="el" href="attr_8c_source.html#l00624">nla_put_data()</a>.</p>
<div class="fragment"><pre class="fragment">{
        <span class="keywordflow">return</span> data-&gt;d_size;
}
</pre></div>
</div>
</div>
<a class="anchor" id="ga232b75513b2aa66e91d5eb51e2a22b12"></a><!-- doxytag: member="data.c::nl_data_cmp" ref="ga232b75513b2aa66e91d5eb51e2a22b12" args="(struct nl_data *a, struct nl_data *b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nl_data_cmp </td>
          <td>(</td>
          <td class="paramtype">struct nl_data *&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct nl_data *&#160;</td>
          <td class="paramname"><em>b</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">a</td><td>Abstract data object. </td></tr>
    <tr><td class="paramname">b</td><td>Another abstract data object. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>An integer less than, equal to, or greater than zero if a is found, respectively, to be less than, to match, or be greater than b. </dd></dl>

<p>Definition at line <a class="el" href="data_8c_source.html#l00160">160</a> of file <a class="el" href="data_8c_source.html">data.c</a>.</p>

<p>References <a class="el" href="data_8c_source.html#l00130">nl_data_get()</a>, and <a class="el" href="data_8c_source.html#l00140">nl_data_get_size()</a>.</p>
<div class="fragment"><pre class="fragment">{
        <span class="keywordtype">void</span> *a_ = <a class="code" href="group__data.html#ga1ca4b5ea3a92643c2fe94dd4eeef072b" title="Get data buffer of abstract data object.">nl_data_get</a>(a);
        <span class="keywordtype">void</span> *b_ = <a class="code" href="group__data.html#ga1ca4b5ea3a92643c2fe94dd4eeef072b" title="Get data buffer of abstract data object.">nl_data_get</a>(b);

        <span class="keywordflow">if</span> (a_ &amp;&amp; b_)
                <span class="keywordflow">return</span> memcmp(a_, b_, <a class="code" href="group__data.html#ga6dbaf24a42f29514e30665c9e42a3d1c" title="Get size of data buffer of abstract data object.">nl_data_get_size</a>(a));
        <span class="keywordflow">else</span>
                <span class="keywordflow">return</span> -1;
}
</pre></div>
</div>
</div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Mar 21 2011 for libnl by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address>
</body>
</html>