<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>src/xnm.h File Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.7.1 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> <li><a href="dirs.html"><span>Directories</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul> </div> <div class="navpath"><a class="el" href="dir_a825c5a75cd0c09c6e5bad1a80440c04.html">src</a> </div> </div> <div class="contents"> <h1>xnm.h File Reference</h1>The libxnm header file. <a href="#_details">More...</a> <p> <code>#include <glib.h></code><br> <p> <a href="xnm_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Data Structures</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structXnmValue.html">XnmValue</a></td></tr> <tr><td colspan="2"><br><h2>Enumerations</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom">{ <b>XNM_ERROR</b> = 0, <b>XNM_ERROR_SYNTAX_ERROR</b> = 1, <b>XNM_ERROR_KEY_NOT_FOUND</b> = 2 }</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#3a6586e2bc52922ca880931f68f90e84">XnmValueType</a> { <br> <b>XNM_UNKNOWN</b>, <b>XNM_TABLE</b>, <b>XNM_ARRAY</b>, <b>XNM_STRING</b>, <br> <b>XNM_BINARY</b> <br> }</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#06c3ee8df49603f2aad739d285179e06">XnmValueGetType</a> { <br> <b>XNM_GET_UINT8</b>, <b>XNM_GET_UINT16</b>, <b>XNM_GET_UINT</b>, <b>XNM_GET_UINT32</b>, <br> <b>XNM_GET_INT8</b>, <b>XNM_GET_INT16</b>, <b>XNM_GET_INT</b>, <b>XNM_GET_INT32</b>, <br> <b>XNM_GET_INT64</b>, <b>XNM_GET_FLOAT</b>, <b>XNM_GET_DOUBLE</b>, <b>XNM_GET_STRING</b>, <br> <b>XNM_GET_BOOL</b> <br> }</td></tr> <tr><td colspan="2"><br><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structXnmValue.html">XnmValue</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#144adfe0d13dc5c3dcc507491778cc41">xnm_value_new_string</a> (const gchar *s)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structXnmValue.html">XnmValue</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#936c57fd5d7d5ef0b292efcfe72cbe09">xnm_value_new_table</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structXnmValue.html">XnmValue</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#c8ca7c7c0946a5c52e00070fac2c99d2">xnm_value_new_array</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structXnmValue.html">XnmValue</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#c42ff90d826164d82eb81cf866a1354a">xnm_value_new_binary</a> (const gchar *buf, size_t size)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#cebb1c769e50dda33868b9c06f9eb23e">xnm_value_ref</a> (<a class="el" href="structXnmValue.html">XnmValue</a> *xnm_value)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#e638c66188b57521792404e4cc61c629">xnm_value_unref</a> (<a class="el" href="structXnmValue.html">XnmValue</a> *xnm_value)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">gchar * </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#ab2b28f893e053a5ab3ca9fe0afdd59a">xnm_value_export_to_string</a> (<a class="el" href="structXnmValue.html">XnmValue</a> *xnm_value)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#200b9e0ba79c5fb95e53c7c1a5869a76">xnm_value_get</a> (<a class="el" href="structXnmValue.html">XnmValue</a> *xnm_value_tree, const char *key, <a class="el" href="structXnmValue.html">XnmValue</a> **xnm_value)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#a5c81a90fe1ad55f71699c5f5734a51e">xnm_value_get_string</a> (<a class="el" href="structXnmValue.html">XnmValue</a> *xnm_value, const char *key, gchar **string_val)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#22eb29b840b66863d87bad4bb1a62314">xnm_value_get_const_string</a> (<a class="el" href="structXnmValue.html">XnmValue</a> *xnm_value_tree, const char *key, const gchar **const_val_string)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#cf6a2568f7d910e67e3e8323d8b61f8d">xnm_value_get_int</a> (<a class="el" href="structXnmValue.html">XnmValue</a> *xnm_value, const char *key, int *val_int)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#8dd500e7727fa2efc6b167c774451ffb">xnm_value_get_bool</a> (<a class="el" href="structXnmValue.html">XnmValue</a> *xnm_value, const char *key, gboolean *val_bool)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#72bd5015e3e6b9c853abfc4ecdabb48b">xnm_value_array_push_value</a> (<a class="el" href="structXnmValue.html">XnmValue</a> *xnm_value_array, <a class="el" href="structXnmValue.html">XnmValue</a> *value)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#89dcf69f95cdea22b248e1ad8a3ab581">xnm_value_array_push_string</a> (<a class="el" href="structXnmValue.html">XnmValue</a> *xnm_value_array, const gchar *string)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#6433fc5b4afb59ca8ed7d4592238eec7">xnm_value_array_push_int</a> (<a class="el" href="structXnmValue.html">XnmValue</a> *xnm_value_array, int value_int)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#d6c05af0da1af59b59de87b79ecc5d3f">xnm_value_array_push_printf</a> (<a class="el" href="structXnmValue.html">XnmValue</a> *xnm_value_array, const gchar *format,...)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#8be4e6e56710a5865fdfb4003f167b0a">xnm_value_table_set_key_value</a> (<a class="el" href="structXnmValue.html">XnmValue</a> *xnm_value_tree, const gchar *key, <a class="el" href="structXnmValue.html">XnmValue</a> *xnm_value)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#9161807d2bf248d29af7e172169d1b6a">xnm_value_table_set_key_value_string</a> (<a class="el" href="structXnmValue.html">XnmValue</a> *xnm_value_parent, const gchar *key, const gchar *string)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#eef96b7ef63c8b66a8d11ab90ac20792">xnm_value_set_key_value_printf</a> (<a class="el" href="structXnmValue.html">XnmValue</a> *xnm_value_parent, const gchar *key, const gchar *format,...)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#7343bccb1d8c50c2de232dbd429e4dfc">xnm_value_get_array_length</a> (<a class="el" href="structXnmValue.html">XnmValue</a> *xnm_value, const char *key)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#56ff15c5debd596dc1b18b4efd772d95">xnm_value_get_values</a> (<a class="el" href="structXnmValue.html">XnmValue</a> *xnm_value,...)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#23b2cd798592a48bb2025f225ae8904c">xnm_value_get_table_key_list</a> (<a class="el" href="structXnmValue.html">XnmValue</a> *xnm_value, const char *key, const GPtrArray **key_list)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#edd6feaf8fcfe69a214625750412eef0">xnm_parse_string</a> (const gchar *string, <a class="el" href="structXnmValue.html">XnmValue</a> **value, GError **error)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#6b5d134d6c3c14858ac3e6bf160251ba">xnm_parse_string_len</a> (const gchar *string, int len, <a class="el" href="structXnmValue.html">XnmValue</a> **value, GError **error)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="xnm_8h.html#e2514b5cba985458cfc51c3eec10cab3">xnm_parse_file</a> (const gchar *filenam, <a class="el" href="structXnmValue.html">XnmValue</a> **xnm_value, GError **error)</td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> The libxnm header file. <p> <dl class="author" compact><dt><b>Author:</b></dt><dd>Dov Grobgeld <<a href="mailto:dov.grobgeld@gmail.com">dov.grobgeld@gmail.com</a>> </dd></dl> <dl class="date" compact><dt><b>Date:</b></dt><dd>Fri Jan 12 09:23:04 2007</dd></dl> The libxnm library stores the xnm data in a tree of XnmValue's where each <a class="el" href="structXnmValue.html">XnmValue</a> dynamically may contain a string, a binary buffer, an array or a table.<p> Values are accessed by their keys which is a slash separated path description from the root to a value. Tables are dereferenced by the key name, and arrays by the array index enclosed in square brackets.<p> Given a xnm structure that looks like:<p> <div class="fragment"><pre class="fragment"> gaim => { gtk=> { browsers=> { place=>F command=><span class="stringliteral">"xterm -e lynx %s"</span> browser=>firefox new_window=>F } plugins => [ <span class="stringliteral">'/usr/lib/gaim/gaimrc.so'</span> <span class="stringliteral">'/usr/lib/gaim/ssl-nss.so'</span> <span class="stringliteral">'/usr/lib/gaim/ssl.so'</span> ] } pos => [ {x=>0 y=>0} {x=>100 y=0} {x=>100 y=>50 } ] } </pre></div><p> Here are a couple of valid keys<p> <ul> <li>gaim/gtk/browser/command</li><li>gaim/pos/[0]/x</li></ul> <p> Most commands are made to ignore undefined keys.<p> libxnm provides several methods for extracting values from an xnm tree that all start with xnm_get . <hr><h2>Enumeration Type Documentation</h2> <a class="anchor" name="06fc87d81c62e9abb8790b6e5713c55b"></a><!-- doxytag: member="xnm.h::@0" ref="06fc87d81c62e9abb8790b6e5713c55b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">anonymous enum </td> </tr> </table> </div> <div class="memdoc"> <p> Error definitions </div> </div><p> <a class="anchor" name="06c3ee8df49603f2aad739d285179e06"></a><!-- doxytag: member="xnm.h::XnmValueGetType" ref="06c3ee8df49603f2aad739d285179e06" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="xnm_8h.html#06c3ee8df49603f2aad739d285179e06">XnmValueGetType</a> </td> </tr> </table> </div> <div class="memdoc"> <p> Values used when retrieving. Note that binary values may not be extracted this way, as they need to have the length of them returned as well. </div> </div><p> <a class="anchor" name="3a6586e2bc52922ca880931f68f90e84"></a><!-- doxytag: member="xnm.h::XnmValueType" ref="3a6586e2bc52922ca880931f68f90e84" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="xnm_8h.html#3a6586e2bc52922ca880931f68f90e84">XnmValueType</a> </td> </tr> </table> </div> <div class="memdoc"> <p> The possible types of a <a class="el" href="structXnmValue.html">XnmValue</a>. </div> </div><p> <hr><h2>Function Documentation</h2> <a class="anchor" name="e2514b5cba985458cfc51c3eec10cab3"></a><!-- doxytag: member="xnm.h::xnm_parse_file" ref="e2514b5cba985458cfc51c3eec10cab3" args="(const gchar *filenam, XnmValue **xnm_value, GError **error)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int xnm_parse_file </td> <td>(</td> <td class="paramtype">const gchar * </td> <td class="paramname"> <em>filenam</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> ** </td> <td class="paramname"> <em>xnm_value</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">GError ** </td> <td class="paramname"> <em>error</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Read a file and parse it.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>filenam</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>xnm_value</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>error</em> </td><td></td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd></dd></dl> </div> </div><p> <a class="anchor" name="edd6feaf8fcfe69a214625750412eef0"></a><!-- doxytag: member="xnm.h::xnm_parse_string" ref="edd6feaf8fcfe69a214625750412eef0" args="(const gchar *string, XnmValue **value, GError **error)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int xnm_parse_string </td> <td>(</td> <td class="paramtype">const gchar * </td> <td class="paramname"> <em>string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> ** </td> <td class="paramname"> <em>value</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">GError ** </td> <td class="paramname"> <em>error</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Parse a string in XNM syntax.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>string</em> </td><td>A string in xnm format </td></tr> </table> </dl> <dl compact><dt><b>Return values:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>A newly allocated <a class="el" href="structXnmValue.html">XnmValue</a> if the parsing was successful. </td></tr> <tr><td valign="top"></td><td valign="top"><em>error</em> </td><td>Error if parsing failed.</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd></dd></dl> </div> </div><p> <a class="anchor" name="6b5d134d6c3c14858ac3e6bf160251ba"></a><!-- doxytag: member="xnm.h::xnm_parse_string_len" ref="6b5d134d6c3c14858ac3e6bf160251ba" args="(const gchar *string, int len, XnmValue **value, GError **error)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int xnm_parse_string_len </td> <td>(</td> <td class="paramtype">const gchar * </td> <td class="paramname"> <em>string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>len</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> ** </td> <td class="paramname"> <em>value</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">GError ** </td> <td class="paramname"> <em>error</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Parse a string in asf format with a given len.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>string</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>error</em> </td><td></td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd></dd></dl> </div> </div><p> <a class="anchor" name="6433fc5b4afb59ca8ed7d4592238eec7"></a><!-- doxytag: member="xnm.h::xnm_value_array_push_int" ref="6433fc5b4afb59ca8ed7d4592238eec7" args="(XnmValue *xnm_value_array, int value_int)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int xnm_value_array_push_int </td> <td>(</td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> * </td> <td class="paramname"> <em>xnm_value_array</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>value_int</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Push an integer value into an xnm value of type array.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>xnm_value_array</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>value_int</em> </td><td></td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd></dd></dl> </div> </div><p> <a class="anchor" name="d6c05af0da1af59b59de87b79ecc5d3f"></a><!-- doxytag: member="xnm.h::xnm_value_array_push_printf" ref="d6c05af0da1af59b59de87b79ecc5d3f" args="(XnmValue *xnm_value_array, const gchar *format,...)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int xnm_value_array_push_printf </td> <td>(</td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> * </td> <td class="paramname"> <em>xnm_value_array</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"> <em>format</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"> <em>...</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Formatted addition to an array. Use e.g. for doubles.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>xnm_value_array</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>format</em> </td><td></td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd></dd></dl> </div> </div><p> <a class="anchor" name="89dcf69f95cdea22b248e1ad8a3ab581"></a><!-- doxytag: member="xnm.h::xnm_value_array_push_string" ref="89dcf69f95cdea22b248e1ad8a3ab581" args="(XnmValue *xnm_value_array, const gchar *string)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int xnm_value_array_push_string </td> <td>(</td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> * </td> <td class="paramname"> <em>xnm_value_array</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"> <em>string</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Push a string into an xnm value of type array.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>xnm_value_array</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>string</em> </td><td></td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd></dd></dl> </div> </div><p> <a class="anchor" name="72bd5015e3e6b9c853abfc4ecdabb48b"></a><!-- doxytag: member="xnm.h::xnm_value_array_push_value" ref="72bd5015e3e6b9c853abfc4ecdabb48b" args="(XnmValue *xnm_value_array, XnmValue *value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int xnm_value_array_push_value </td> <td>(</td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> * </td> <td class="paramname"> <em>xnm_value_array</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> * </td> <td class="paramname"> <em>value</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Add an xnm_value into an <a class="el" href="structXnmValue.html">XnmValue</a> of type array.<p> <dl class="return" compact><dt><b>Returns:</b></dt><dd></dd></dl> </div> </div><p> <a class="anchor" name="ab2b28f893e053a5ab3ca9fe0afdd59a"></a><!-- doxytag: member="xnm.h::xnm_value_export_to_string" ref="ab2b28f893e053a5ab3ca9fe0afdd59a" args="(XnmValue *xnm_value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">gchar* xnm_value_export_to_string </td> <td>(</td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> * </td> <td class="paramname"> <em>xnm_value</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Allocate a new string containing a serialized representation of xnm_value.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>xnm_value</em> </td><td></td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd></dd></dl> </div> </div><p> <a class="anchor" name="200b9e0ba79c5fb95e53c7c1a5869a76"></a><!-- doxytag: member="xnm.h::xnm_value_get" ref="200b9e0ba79c5fb95e53c7c1a5869a76" args="(XnmValue *xnm_value_tree, const char *key, XnmValue **xnm_value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int xnm_value_get </td> <td>(</td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> * </td> <td class="paramname"> <em>xnm_value_tree</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>key</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> ** </td> <td class="paramname"> <em>xnm_value</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Retrieve an xnm value from an xnm_value_tree. If the key is not found then the value is not assigned. If the key is found then xnm_value is assigned the corresponding string.<p> Note that xnm_value_get does *not* dereference xnm_value before overwriting it with a new value.<p> The returned xnm_value points into the xnm_value_tree with an increased reference count.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>xnm_value_tree</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>xnm_value</em> </td><td></td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if value retrieved, -1 if value not found, -2 if key syntax error. </dd></dl> </div> </div><p> <a class="anchor" name="7343bccb1d8c50c2de232dbd429e4dfc"></a><!-- doxytag: member="xnm.h::xnm_value_get_array_length" ref="7343bccb1d8c50c2de232dbd429e4dfc" args="(XnmValue *xnm_value, const char *key)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int xnm_value_get_array_length </td> <td>(</td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> * </td> <td class="paramname"> <em>xnm_value</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>key</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Retrive the length of a <a class="el" href="structXnmValue.html">XnmValue</a> array.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>xnm_value</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td></td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>Length of array if node found. -1 if key not found or if xnm_value is not an array. </dd></dl> </div> </div><p> <a class="anchor" name="8dd500e7727fa2efc6b167c774451ffb"></a><!-- doxytag: member="xnm.h::xnm_value_get_bool" ref="8dd500e7727fa2efc6b167c774451ffb" args="(XnmValue *xnm_value, const char *key, gboolean *val_bool)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int xnm_value_get_bool </td> <td>(</td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> * </td> <td class="paramname"> <em>xnm_value</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>key</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gboolean * </td> <td class="paramname"> <em>val_bool</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Retrieve a boolean value from an xnm_value. The boolean value is considered true if it starts with 't','T','y','Y', or 1. Everything else is false. </div> </div><p> <a class="anchor" name="22eb29b840b66863d87bad4bb1a62314"></a><!-- doxytag: member="xnm.h::xnm_value_get_const_string" ref="22eb29b840b66863d87bad4bb1a62314" args="(XnmValue *xnm_value_tree, const char *key, const gchar **const_val_string)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int xnm_value_get_const_string </td> <td>(</td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> * </td> <td class="paramname"> <em>xnm_value_tree</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>key</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar ** </td> <td class="paramname"> <em>const_val_string</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> This value retrieves a const pointer to the string within the xnm_value_tree.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>xnm_value_tree</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td></td></tr> </table> </dl> <dl compact><dt><b>Return values:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>const_val_string</em> </td><td></td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if value retrieved, -1 if value not found, -2 if key syntax error. </dd></dl> </div> </div><p> <a class="anchor" name="cf6a2568f7d910e67e3e8323d8b61f8d"></a><!-- doxytag: member="xnm.h::xnm_value_get_int" ref="cf6a2568f7d910e67e3e8323d8b61f8d" args="(XnmValue *xnm_value, const char *key, int *val_int)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int xnm_value_get_int </td> <td>(</td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> * </td> <td class="paramname"> <em>xnm_value</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>key</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int * </td> <td class="paramname"> <em>val_int</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> This value retrieves a value from an xnm_value and turns it into an integer with atoi().<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>xnm_value</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td></td></tr> </table> </dl> <dl compact><dt><b>Return values:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>val_int</em> </td><td></td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if value retrieved, -1 if value not found, -2 if key syntax error. </dd></dl> </div> </div><p> <a class="anchor" name="a5c81a90fe1ad55f71699c5f5734a51e"></a><!-- doxytag: member="xnm.h::xnm_value_get_string" ref="a5c81a90fe1ad55f71699c5f5734a51e" args="(XnmValue *xnm_value, const char *key, gchar **string_val)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int xnm_value_get_string </td> <td>(</td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> * </td> <td class="paramname"> <em>xnm_value</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>key</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">gchar ** </td> <td class="paramname"> <em>string_val</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> This value retrieves a string from an xnm_value_tree. If the key is found then string_value is freed, and the string is copied into string_val. Otherwise, string_val is left untouched.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>xnm_value</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>string_val</em> </td><td></td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if value retrieved, -1 if value not found, -2 if key syntax error. </dd></dl> </div> </div><p> <a class="anchor" name="23b2cd798592a48bb2025f225ae8904c"></a><!-- doxytag: member="xnm.h::xnm_value_get_table_key_list" ref="23b2cd798592a48bb2025f225ae8904c" args="(XnmValue *xnm_value, const char *key, const GPtrArray **key_list)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int xnm_value_get_table_key_list </td> <td>(</td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> * </td> <td class="paramname"> <em>xnm_value</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>key</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const GPtrArray ** </td> <td class="paramname"> <em>key_list</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Get a list of all keys of a table.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>xnm_value</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>key_list</em> </td><td></td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd></dd></dl> </div> </div><p> <a class="anchor" name="56ff15c5debd596dc1b18b4efd772d95"></a><!-- doxytag: member="xnm.h::xnm_value_get_values" ref="56ff15c5debd596dc1b18b4efd772d95" args="(XnmValue *xnm_value,...)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int xnm_value_get_values </td> <td>(</td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> * </td> <td class="paramname"> <em>xnm_value</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"> <em>...</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Get a list of values in one call. This function is very convenient for extracting multiple values in one call. It takes as argument a NULL terminated vararg list, where each value extraction is controlled by three arguments:<p> <ul> <li>The key - A still containing the path to the node to get info from</li><li>The type the third argument. This value is of type |XnmValueGetType|.</li><li>A pointer to where to store the value.</li></ul> <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>xnm_value</em> </td><td></td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd></dd></dl> </div> </div><p> <a class="anchor" name="c8ca7c7c0946a5c52e00070fac2c99d2"></a><!-- doxytag: member="xnm.h::xnm_value_new_array" ref="c8ca7c7c0946a5c52e00070fac2c99d2" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structXnmValue.html">XnmValue</a>* xnm_value_new_array </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Allocate a new <a class="el" href="structXnmValue.html">XnmValue</a> with the type XNM_ARRAY.<p> <dl class="return" compact><dt><b>Returns:</b></dt><dd></dd></dl> </div> </div><p> <a class="anchor" name="c42ff90d826164d82eb81cf866a1354a"></a><!-- doxytag: member="xnm.h::xnm_value_new_binary" ref="c42ff90d826164d82eb81cf866a1354a" args="(const gchar *buf, size_t size)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structXnmValue.html">XnmValue</a>* xnm_value_new_binary </td> <td>(</td> <td class="paramtype">const gchar * </td> <td class="paramname"> <em>buf</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>size</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Allocate a new <a class="el" href="structXnmValue.html">XnmValue</a> with the type binary and initiate it with the data in buf. </div> </div><p> <a class="anchor" name="144adfe0d13dc5c3dcc507491778cc41"></a><!-- doxytag: member="xnm.h::xnm_value_new_string" ref="144adfe0d13dc5c3dcc507491778cc41" args="(const gchar *s)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structXnmValue.html">XnmValue</a>* xnm_value_new_string </td> <td>(</td> <td class="paramtype">const gchar * </td> <td class="paramname"> <em>s</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Allocate a new <a class="el" href="structXnmValue.html">XnmValue</a> with the type string. The string is initialized to a copy of s.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td></td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>Newly allocated <a class="el" href="structXnmValue.html">XnmValue</a> </dd></dl> </div> </div><p> <a class="anchor" name="936c57fd5d7d5ef0b292efcfe72cbe09"></a><!-- doxytag: member="xnm.h::xnm_value_new_table" ref="936c57fd5d7d5ef0b292efcfe72cbe09" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structXnmValue.html">XnmValue</a>* xnm_value_new_table </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Allocate a new <a class="el" href="structXnmValue.html">XnmValue</a> with the type XNM_TABLE.<p> <dl class="return" compact><dt><b>Returns:</b></dt><dd></dd></dl> </div> </div><p> <a class="anchor" name="cebb1c769e50dda33868b9c06f9eb23e"></a><!-- doxytag: member="xnm.h::xnm_value_ref" ref="cebb1c769e50dda33868b9c06f9eb23e" args="(XnmValue *xnm_value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void xnm_value_ref </td> <td>(</td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> * </td> <td class="paramname"> <em>xnm_value</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Increase the reference count of xnm_value.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>xnm_value</em> </td><td></td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="eef96b7ef63c8b66a8d11ab90ac20792"></a><!-- doxytag: member="xnm.h::xnm_value_set_key_value_printf" ref="eef96b7ef63c8b66a8d11ab90ac20792" args="(XnmValue *xnm_value_parent, const gchar *key, const gchar *format,...)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int xnm_value_set_key_value_printf </td> <td>(</td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> * </td> <td class="paramname"> <em>xnm_value_parent</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"> <em>key</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"> <em>format</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"> <em>...</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Set a key value which is formatted with printf.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>xnm_value_parent</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>format</em> </td><td></td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd></dd></dl> </div> </div><p> <a class="anchor" name="8be4e6e56710a5865fdfb4003f167b0a"></a><!-- doxytag: member="xnm.h::xnm_value_table_set_key_value" ref="8be4e6e56710a5865fdfb4003f167b0a" args="(XnmValue *xnm_value_tree, const gchar *key, XnmValue *xnm_value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int xnm_value_table_set_key_value </td> <td>(</td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> * </td> <td class="paramname"> <em>xnm_value_tree</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"> <em>key</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> * </td> <td class="paramname"> <em>xnm_value</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Add a xnm_value to a xnm table. This function increases the reference count of the xnm_value.<p> Note! This function does not yet support hierarchical keys. To set an a key that is not a direct parent of xnm_value_tree, the leaf xnm_value table must first be retrieved, and this function then called on that value.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>xnm_value_tree</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>xnm_value</em> </td><td></td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd></dd></dl> </div> </div><p> <a class="anchor" name="9161807d2bf248d29af7e172169d1b6a"></a><!-- doxytag: member="xnm.h::xnm_value_table_set_key_value_string" ref="9161807d2bf248d29af7e172169d1b6a" args="(XnmValue *xnm_value_parent, const gchar *key, const gchar *string)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int xnm_value_table_set_key_value_string </td> <td>(</td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> * </td> <td class="paramname"> <em>xnm_value_parent</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"> <em>key</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const gchar * </td> <td class="paramname"> <em>string</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Convenience function for setting a string key value. If the key already exists in xnm_value_parent, then it is freed and replaced by the new svalue.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>xnm_value_parent</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td></td></tr> <tr><td valign="top"></td><td valign="top"><em>string</em> </td><td></td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd></dd></dl> </div> </div><p> <a class="anchor" name="e638c66188b57521792404e4cc61c629"></a><!-- doxytag: member="xnm.h::xnm_value_unref" ref="e638c66188b57521792404e4cc61c629" args="(XnmValue *xnm_value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void xnm_value_unref </td> <td>(</td> <td class="paramtype"><a class="el" href="structXnmValue.html">XnmValue</a> * </td> <td class="paramname"> <em>xnm_value</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Decrease the reference count on an xnm_value. If the reference count goes down to 0, the value is destroyed.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>xnm_value</em> </td><td></td></tr> </table> </dl> </div> </div><p> </div> <hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 25 10:36:27 2008 by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.7.1 </small></address> </body> </html>