<!-- This comment will put IE 6, 7 and 8 in quirks mode --> <!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>FreeTDS API: Dynamic string functions</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javaScript" src="search/search.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body onload='searchBox.OnSelectItem(0);'> <!-- Generated by Doxygen 1.6.3 --> <script type="text/javascript"><!-- var searchBox = new SearchBox("searchBox", "search",false,'Search'); --></script> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li> <div id="MSearchBox" class="MSearchBoxInactive"> <img id="MSearchSelect" src="search/search.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/> <input type="text" id="MSearchField" value="Search" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> </div> </li> </ul> </div> </div> <div class="contents"> <h1>Dynamic string functions<br/> <small> [<a class="el" href="a00305.html">LibTDS API</a>]</small> </h1> <p>Handle dynamic string. <a href="#_details">More...</a></p> <table border="0" cellpadding="0" cellspacing="0"> <tr><td colspan="2"><h2>Defines</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac8f285afaf69f0484490bb2f14c85209"></a><!-- doxytag: member="dstring::tds_dstr_buf" ref="gac8f285afaf69f0484490bb2f14c85209" args="(s)" --> #define </td><td class="memItemRight" valign="bottom"><b>tds_dstr_buf</b>(s) ((s)->dstr_s)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2a392bcd7cde3707f817a304eeccd656"></a><!-- doxytag: member="dstring::tds_dstr_cstr" ref="ga2a392bcd7cde3707f817a304eeccd656" args="(s)" --> #define </td><td class="memItemRight" valign="bottom"><b>tds_dstr_cstr</b>(s) ((const char* ) tds_dstr_buf(s))</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacd1cdcff8bce3a76e63240798edc9dcb"></a><!-- doxytag: member="dstring::tds_dstr_init" ref="gacd1cdcff8bce3a76e63240798edc9dcb" args="(s)" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00303.html#gacd1cdcff8bce3a76e63240798edc9dcb">tds_dstr_init</a>(s) do { <a class="el" href="a00100.html">DSTR</a> *_tds_s = (s); _tds_s->dstr_size = 0; _tds_s->dstr_s = (char*) tds_str_empty; } while(0)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">init a string with empty <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaefed660833fb5beb2b5c7998c565a76c"></a><!-- doxytag: member="dstring::tds_dstr_isempty" ref="gaefed660833fb5beb2b5c7998c565a76c" args="(s)" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00303.html#gaefed660833fb5beb2b5c7998c565a76c">tds_dstr_isempty</a>(s) ((s)->dstr_size == 0)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">test if string is empty <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gace8da9c35a72230925e729fb4975cc97"></a><!-- doxytag: member="dstring::tds_dstr_len" ref="gace8da9c35a72230925e729fb4975cc97" args="(s)" --> #define </td><td class="memItemRight" valign="bottom"><b>tds_dstr_len</b>(s) ((s)->dstr_size)</td></tr> <tr><td colspan="2"><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00100.html">DSTR</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00303.html#ga6aa14b8b717b51afcfb65bd55143689d">tds_dstr_alloc</a> (<a class="el" href="a00100.html">DSTR</a> *s, size_t length)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">allocate space for length char <a href="#ga6aa14b8b717b51afcfb65bd55143689d"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00100.html">DSTR</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00303.html#gad96366d9fa93bfc283cef1299fbe97ab">tds_dstr_copy</a> (<a class="el" href="a00100.html">DSTR</a> *s, const char *src)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">copy a string from another <a href="#gad96366d9fa93bfc283cef1299fbe97ab"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00100.html">DSTR</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00303.html#ga656718f240d7403f986ae887d84a6ca1">tds_dstr_copyn</a> (<a class="el" href="a00100.html">DSTR</a> *s, const char *src, size_t length)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set string to a given buffer of characters. <a href="#ga656718f240d7403f986ae887d84a6ca1"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4e6d9fa6f9b9551a5a3390e10a5322e6"></a><!-- doxytag: member="dstring::tds_dstr_dup" ref="ga4e6d9fa6f9b9551a5a3390e10a5322e6" args="(DSTR *s, const DSTR *src)" --> <a class="el" href="a00100.html">DSTR</a> * </td><td class="memItemRight" valign="bottom"><b>tds_dstr_dup</b> (<a class="el" href="a00100.html">DSTR</a> *s, const <a class="el" href="a00100.html">DSTR</a> *src)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaccd1c1c8ff938813578123963212388c"></a><!-- doxytag: member="dstring::tds_dstr_free" ref="gaccd1c1c8ff938813578123963212388c" args="(DSTR *s)" --> void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00303.html#gaccd1c1c8ff938813578123963212388c">tds_dstr_free</a> (<a class="el" href="a00100.html">DSTR</a> *s)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">free string <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00100.html">DSTR</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00303.html#gab78cc59b110df2817b00f9bed74c6ff1">tds_dstr_set</a> (<a class="el" href="a00100.html">DSTR</a> *s, char *src)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">set a string from another buffer. <a href="#gab78cc59b110df2817b00f9bed74c6ff1"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00100.html">DSTR</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00303.html#ga0cd7863ba7c2d2da4a193234472a3d14">tds_dstr_setlen</a> (<a class="el" href="a00100.html">DSTR</a> *s, size_t length)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">limit length of string, MUST be <= current length <a href="#ga0cd7863ba7c2d2da4a193234472a3d14"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga339ba30216e2bd5bd076aa9dcd26f3c4"></a><!-- doxytag: member="dstring::tds_dstr_zero" ref="ga339ba30216e2bd5bd076aa9dcd26f3c4" args="(DSTR *s)" --> void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00303.html#ga339ba30216e2bd5bd076aa9dcd26f3c4">tds_dstr_zero</a> (<a class="el" href="a00100.html">DSTR</a> *s)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">clear all string filling with zeroes (mainly for security reason) <br/></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>Handle dynamic string. </p> <p>In this string are always valid (you don't have NULL pointer, only empty string) </p> <hr/><h2>Function Documentation</h2> <a class="anchor" id="ga6aa14b8b717b51afcfb65bd55143689d"></a><!-- doxytag: member="tdsstring.c::tds_dstr_alloc" ref="ga6aa14b8b717b51afcfb65bd55143689d" args="(DSTR *s, size_t length)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00100.html">DSTR</a> * tds_dstr_alloc </td> <td>(</td> <td class="paramtype"><a class="el" href="a00100.html">DSTR</a> * </td> <td class="paramname"> <em>s</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>length</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>allocate space for length char </p> <dl><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>dynamic string </td></tr> <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>new length </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>string allocated or NULL on memory error </dd></dl> </div> </div> <a class="anchor" id="gad96366d9fa93bfc283cef1299fbe97ab"></a><!-- doxytag: member="tdsstring.c::tds_dstr_copy" ref="gad96366d9fa93bfc283cef1299fbe97ab" args="(DSTR *s, const char *src)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00100.html">DSTR</a> * tds_dstr_copy </td> <td>(</td> <td class="paramtype"><a class="el" href="a00100.html">DSTR</a> * </td> <td class="paramname"> <em>s</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>src</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>copy a string from another </p> <dl><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>dynamic string </td></tr> <tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>source buffer </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>string copied or NULL on memory error </dd></dl> </div> </div> <a class="anchor" id="ga656718f240d7403f986ae887d84a6ca1"></a><!-- doxytag: member="tdsstring.c::tds_dstr_copyn" ref="ga656718f240d7403f986ae887d84a6ca1" args="(DSTR *s, const char *src, size_t length)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00100.html">DSTR</a> * tds_dstr_copyn </td> <td>(</td> <td class="paramtype"><a class="el" href="a00100.html">DSTR</a> * </td> <td class="paramname"> <em>s</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>src</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>length</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Set string to a given buffer of characters. </p> <dl><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>dynamic string </td></tr> <tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>source buffer </td></tr> <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>length of source buffer </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>string copied or NULL on memory error </dd></dl> </div> </div> <a class="anchor" id="gab78cc59b110df2817b00f9bed74c6ff1"></a><!-- doxytag: member="tdsstring.c::tds_dstr_set" ref="gab78cc59b110df2817b00f9bed74c6ff1" args="(DSTR *s, char *src)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00100.html">DSTR</a> * tds_dstr_set </td> <td>(</td> <td class="paramtype"><a class="el" href="a00100.html">DSTR</a> * </td> <td class="paramname"> <em>s</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char * </td> <td class="paramname"> <em>src</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 string from another buffer. </p> <p>The string will use the supplied buffer (it not copy the string), so it should be a pointer returned by malloc. </p> <dl><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>dynamic string </td></tr> <tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>source buffer </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>string copied or NULL on memory error </dd></dl> </div> </div> <a class="anchor" id="ga0cd7863ba7c2d2da4a193234472a3d14"></a><!-- doxytag: member="tdsstring.c::tds_dstr_setlen" ref="ga0cd7863ba7c2d2da4a193234472a3d14" args="(DSTR *s, size_t length)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00100.html">DSTR</a> * tds_dstr_setlen </td> <td>(</td> <td class="paramtype"><a class="el" href="a00100.html">DSTR</a> * </td> <td class="paramname"> <em>s</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>length</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>limit length of string, MUST be <= current length </p> <dl><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>dynamic string </td></tr> <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>new length </td></tr> </table> </dd> </dl> </div> </div> </div> <!--- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Aug 17 22:22:32 2011 for FreeTDS API by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address> </body> </html>