<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Heimdal wind library</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<p>
<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
</p>
<!-- end of header marker -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">Heimdal wind library</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gacd005d89adeb764c77c97f1c4d2e1d82"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#gacd005d89adeb764c77c97f1c4d2e1d82">wind_punycode_label_toascii</a> (const uint32_t *in, size_t in_len, char *out, size_t *out_len)</td></tr>
<tr class="separator:gacd005d89adeb764c77c97f1c4d2e1d82"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gadc7260aad792625f5e4d59f5d645bfaa"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#gadc7260aad792625f5e4d59f5d645bfaa">wind_stringprep</a> (const uint32_t *in, size_t in_len, uint32_t *out, size_t *out_len, wind_profile_flags flags)</td></tr>
<tr class="separator:gadc7260aad792625f5e4d59f5d645bfaa"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaa4d80a988cf7d0cc8c15c1652516ec72"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#gaa4d80a988cf7d0cc8c15c1652516ec72">wind_profile</a> (const char *name, wind_profile_flags *flags)</td></tr>
<tr class="separator:gaa4d80a988cf7d0cc8c15c1652516ec72"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga31f62f5e3ca885bd8afce415c9e83c4c"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#ga31f62f5e3ca885bd8afce415c9e83c4c">wind_utf8ucs4</a> (const char *in, uint32_t *out, size_t *out_len)</td></tr>
<tr class="separator:ga31f62f5e3ca885bd8afce415c9e83c4c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gabeccc02ed5f1f90684b10a6f892e89d3"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#gabeccc02ed5f1f90684b10a6f892e89d3">wind_utf8ucs4_length</a> (const char *in, size_t *out_len)</td></tr>
<tr class="separator:gabeccc02ed5f1f90684b10a6f892e89d3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga502199d8981249373095da43bb5d256d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#ga502199d8981249373095da43bb5d256d">wind_ucs4utf8</a> (const uint32_t *in, size_t in_len, char *out, size_t *out_len)</td></tr>
<tr class="separator:ga502199d8981249373095da43bb5d256d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga44d8951aee3e12f1812ef193bad738ef"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#ga44d8951aee3e12f1812ef193bad738ef">wind_ucs4utf8_length</a> (const uint32_t *in, size_t in_len, size_t *out_len)</td></tr>
<tr class="separator:ga44d8951aee3e12f1812ef193bad738ef"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga15a41f929d8b1be8528e3ecbdf8264f0"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#ga15a41f929d8b1be8528e3ecbdf8264f0">wind_ucs2read</a> (const void *ptr, size_t len, unsigned int *flags, uint16_t *out, size_t *out_len)</td></tr>
<tr class="separator:ga15a41f929d8b1be8528e3ecbdf8264f0"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga20668242d9ab39011edbcae295ee9348"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#ga20668242d9ab39011edbcae295ee9348">wind_ucs2write</a> (const uint16_t *in, size_t in_len, unsigned int *flags, void *ptr, size_t *out_len)</td></tr>
<tr class="separator:ga20668242d9ab39011edbcae295ee9348"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga736f8b06adc2b70bd32ce2ed2397b5f5"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#ga736f8b06adc2b70bd32ce2ed2397b5f5">wind_utf8ucs2</a> (const char *in, uint16_t *out, size_t *out_len)</td></tr>
<tr class="separator:ga736f8b06adc2b70bd32ce2ed2397b5f5"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga4d94c57c6fc46b7af71d37d507bcdbf8"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#ga4d94c57c6fc46b7af71d37d507bcdbf8">wind_utf8ucs2_length</a> (const char *in, size_t *out_len)</td></tr>
<tr class="separator:ga4d94c57c6fc46b7af71d37d507bcdbf8"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga2e43e4a99781db965162b9a9c6333307"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#ga2e43e4a99781db965162b9a9c6333307">wind_ucs2utf8</a> (const uint16_t *in, size_t in_len, char *out, size_t *out_len)</td></tr>
<tr class="separator:ga2e43e4a99781db965162b9a9c6333307"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga53b8caa6437d7f903d819c76450be3c1"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#ga53b8caa6437d7f903d819c76450be3c1">wind_ucs2utf8_length</a> (const uint16_t *in, size_t in_len, size_t *out_len)</td></tr>
<tr class="separator:ga53b8caa6437d7f903d819c76450be3c1"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<h2 class="groupheader">Function Documentation</h2>
<a id="gaa4d80a988cf7d0cc8c15c1652516ec72"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa4d80a988cf7d0cc8c15c1652516ec72">◆ </a></span>wind_profile()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int wind_profile </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">wind_profile_flags * </td>
<td class="paramname"><em>flags</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Try to find the profile given a name.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>name of the profile. </td></tr>
<tr><td class="paramname">flags</td><td>the resulting profile.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
</div>
</div>
<a id="gacd005d89adeb764c77c97f1c4d2e1d82"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacd005d89adeb764c77c97f1c4d2e1d82">◆ </a></span>wind_punycode_label_toascii()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int wind_punycode_label_toascii </td>
<td>(</td>
<td class="paramtype">const uint32_t * </td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>in_len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char * </td>
<td class="paramname"><em>out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t * </td>
<td class="paramname"><em>out_len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert an UCS4 string to a puny-coded DNS label string suitable when combined with delimiters and other labels for DNS lookup.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">in</td><td>an UCS4 string to convert </td></tr>
<tr><td class="paramname">in_len</td><td>the length of in. </td></tr>
<tr><td class="paramname">out</td><td>the resulting puny-coded string. The string is not NUL terminatied. </td></tr>
<tr><td class="paramname">out_len</td><td>before processing out_len should be the length of the out variable, after processing it will be the length of the out string.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
</div>
</div>
<a id="gadc7260aad792625f5e4d59f5d645bfaa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gadc7260aad792625f5e4d59f5d645bfaa">◆ </a></span>wind_stringprep()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int wind_stringprep </td>
<td>(</td>
<td class="paramtype">const uint32_t * </td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>in_len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t * </td>
<td class="paramname"><em>out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t * </td>
<td class="paramname"><em>out_len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">wind_profile_flags </td>
<td class="paramname"><em>flags</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Process a input UCS4 string according a string-prep profile.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">in</td><td>input UCS4 string to process </td></tr>
<tr><td class="paramname">in_len</td><td>length of the input string </td></tr>
<tr><td class="paramname">out</td><td>output UCS4 string </td></tr>
<tr><td class="paramname">out_len</td><td>length of the output string. </td></tr>
<tr><td class="paramname">flags</td><td>stringprep profile.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
</div>
</div>
<a id="ga15a41f929d8b1be8528e3ecbdf8264f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga15a41f929d8b1be8528e3ecbdf8264f0">◆ </a></span>wind_ucs2read()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int wind_ucs2read </td>
<td>(</td>
<td class="paramtype">const void * </td>
<td class="paramname"><em>ptr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int * </td>
<td class="paramname"><em>flags</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t * </td>
<td class="paramname"><em>out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t * </td>
<td class="paramname"><em>out_len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Read in an UCS2 from a buffer.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ptr</td><td>The input buffer to read from. </td></tr>
<tr><td class="paramname">len</td><td>the length of the input buffer. </td></tr>
<tr><td class="paramname">flags</td><td>Flags to control the behavior of the function. </td></tr>
<tr><td class="paramname">out</td><td>the output UCS2, the array must be at least out/2 long. </td></tr>
<tr><td class="paramname">out_len</td><td>the output length</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns 0 on success, an wind error code otherwise. </dd></dl>
<p>if len is zero, flags are unchanged</p>
<p>if len is odd, WIND_ERR_LENGTH_NOT_MOD2 is returned</p>
<p>If the flags WIND_RW_BOM is set, check for BOM. If not BOM is found, check is LE/BE flag is already and use that otherwise fail with WIND_ERR_NO_BOM. When done, clear WIND_RW_BOM and the LE/BE flag and set the resulting LE/BE flag.</p>
</div>
</div>
<a id="ga2e43e4a99781db965162b9a9c6333307"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2e43e4a99781db965162b9a9c6333307">◆ </a></span>wind_ucs2utf8()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int wind_ucs2utf8 </td>
<td>(</td>
<td class="paramtype">const uint16_t * </td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>in_len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char * </td>
<td class="paramname"><em>out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t * </td>
<td class="paramname"><em>out_len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert an UCS2 string to a UTF-8 string.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">in</td><td>an UCS2 string to convert. </td></tr>
<tr><td class="paramname">in_len</td><td>the length of the in UCS2 string. </td></tr>
<tr><td class="paramname">out</td><td>the resulting UTF-8 strint, must be at least <a class="el" href="group__wind.html#ga53b8caa6437d7f903d819c76450be3c1">wind_ucs2utf8_length()</a> long. If out is NULL, the function will calculate the needed space for the out variable (just like <a class="el" href="group__wind.html#ga53b8caa6437d7f903d819c76450be3c1">wind_ucs2utf8_length()</a>). </td></tr>
<tr><td class="paramname">out_len</td><td>before processing out_len should be the length of the out variable, after processing it will be the length of the out string.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
</div>
</div>
<a id="ga53b8caa6437d7f903d819c76450be3c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga53b8caa6437d7f903d819c76450be3c1">◆ </a></span>wind_ucs2utf8_length()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int wind_ucs2utf8_length </td>
<td>(</td>
<td class="paramtype">const uint16_t * </td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>in_len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t * </td>
<td class="paramname"><em>out_len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculate the length of from converting a UCS2 string to an UTF-8 string.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">in</td><td>an UCS2 string to convert. </td></tr>
<tr><td class="paramname">in_len</td><td>an UCS2 string length to convert. </td></tr>
<tr><td class="paramname">out_len</td><td>the length of the resulting UTF-8 string.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
</div>
</div>
<a id="ga20668242d9ab39011edbcae295ee9348"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga20668242d9ab39011edbcae295ee9348">◆ </a></span>wind_ucs2write()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int wind_ucs2write </td>
<td>(</td>
<td class="paramtype">const uint16_t * </td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>in_len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int * </td>
<td class="paramname"><em>flags</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"><em>ptr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t * </td>
<td class="paramname"><em>out_len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Write an UCS2 string to a buffer.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">in</td><td>The input UCS2 string. </td></tr>
<tr><td class="paramname">in_len</td><td>the length of the input buffer. </td></tr>
<tr><td class="paramname">flags</td><td>Flags to control the behavior of the function. </td></tr>
<tr><td class="paramname">ptr</td><td>The input buffer to write to, the array must be at least (in + 1) * 2 bytes long. </td></tr>
<tr><td class="paramname">out_len</td><td>the output length</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns 0 on success, an wind error code otherwise. </dd></dl>
<p>If in buffer is not of length be mod 2, WIND_ERR_LENGTH_NOT_MOD2 is returned</p>
<p>On zero input length, flags are preserved</p>
<p>If flags have WIND_RW_BOM set, the byte order mark is written first to the output data</p>
<p>If the output wont fit into out_len, WIND_ERR_OVERRUN is returned</p>
</div>
</div>
<a id="ga502199d8981249373095da43bb5d256d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga502199d8981249373095da43bb5d256d">◆ </a></span>wind_ucs4utf8()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int wind_ucs4utf8 </td>
<td>(</td>
<td class="paramtype">const uint32_t * </td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>in_len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char * </td>
<td class="paramname"><em>out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t * </td>
<td class="paramname"><em>out_len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert an UCS4 string to a UTF-8 string.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">in</td><td>an UCS4 string to convert. </td></tr>
<tr><td class="paramname">in_len</td><td>the length input array.</td></tr>
<tr><td class="paramname">out</td><td>the resulting UTF-8 strint, must be at least <a class="el" href="group__wind.html#ga44d8951aee3e12f1812ef193bad738ef">wind_ucs4utf8_length()</a> + 1 long (the extra char for the NUL). If out is NULL, the function will calculate the needed space for the out variable (just like <a class="el" href="group__wind.html#ga44d8951aee3e12f1812ef193bad738ef">wind_ucs4utf8_length()</a>).</td></tr>
<tr><td class="paramname">out_len</td><td>before processing out_len should be the length of the out variable, after processing it will be the length of the out string.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
</div>
</div>
<a id="ga44d8951aee3e12f1812ef193bad738ef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga44d8951aee3e12f1812ef193bad738ef">◆ </a></span>wind_ucs4utf8_length()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int wind_ucs4utf8_length </td>
<td>(</td>
<td class="paramtype">const uint32_t * </td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>in_len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t * </td>
<td class="paramname"><em>out_len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculate the length of from converting a UCS4 string to an UTF-8 string.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">in</td><td>an UCS4 string to convert. </td></tr>
<tr><td class="paramname">in_len</td><td>the length of UCS4 string to convert. </td></tr>
<tr><td class="paramname">out_len</td><td>the length of the resulting UTF-8 string.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
</div>
</div>
<a id="ga736f8b06adc2b70bd32ce2ed2397b5f5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga736f8b06adc2b70bd32ce2ed2397b5f5">◆ </a></span>wind_utf8ucs2()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int wind_utf8ucs2 </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t * </td>
<td class="paramname"><em>out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t * </td>
<td class="paramname"><em>out_len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert an UTF-8 string to an UCS2 string.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">in</td><td>an UTF-8 string to convert. </td></tr>
<tr><td class="paramname">out</td><td>the resulting UCS2 strint, must be at least <a class="el" href="group__wind.html#ga4d94c57c6fc46b7af71d37d507bcdbf8">wind_utf8ucs2_length()</a> long. If out is NULL, the function will calculate the needed space for the out variable (just like <a class="el" href="group__wind.html#ga4d94c57c6fc46b7af71d37d507bcdbf8">wind_utf8ucs2_length()</a>). </td></tr>
<tr><td class="paramname">out_len</td><td>before processing out_len should be the length of the out variable, after processing it will be the length of the out string.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
</div>
</div>
<a id="ga4d94c57c6fc46b7af71d37d507bcdbf8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4d94c57c6fc46b7af71d37d507bcdbf8">◆ </a></span>wind_utf8ucs2_length()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int wind_utf8ucs2_length </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t * </td>
<td class="paramname"><em>out_len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculate the length of from converting a UTF-8 string to a UCS2 string.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">in</td><td>an UTF-8 string to convert. </td></tr>
<tr><td class="paramname">out_len</td><td>the length of the resulting UCS4 string.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
</div>
</div>
<a id="ga31f62f5e3ca885bd8afce415c9e83c4c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga31f62f5e3ca885bd8afce415c9e83c4c">◆ </a></span>wind_utf8ucs4()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int wind_utf8ucs4 </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t * </td>
<td class="paramname"><em>out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t * </td>
<td class="paramname"><em>out_len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert an UTF-8 string to an UCS4 string.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">in</td><td>an UTF-8 string to convert. </td></tr>
<tr><td class="paramname">out</td><td>the resulting UCS4 strint, must be at least <a class="el" href="group__wind.html#gabeccc02ed5f1f90684b10a6f892e89d3">wind_utf8ucs4_length()</a> long. If out is NULL, the function will calculate the needed space for the out variable (just like <a class="el" href="group__wind.html#gabeccc02ed5f1f90684b10a6f892e89d3">wind_utf8ucs4_length()</a>). </td></tr>
<tr><td class="paramname">out_len</td><td>before processing out_len should be the length of the out variable, after processing it will be the length of the out string.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
</div>
</div>
<a id="gabeccc02ed5f1f90684b10a6f892e89d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabeccc02ed5f1f90684b10a6f892e89d3">◆ </a></span>wind_utf8ucs4_length()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int wind_utf8ucs4_length </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t * </td>
<td class="paramname"><em>out_len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculate the length of from converting a UTF-8 string to a UCS4 string.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">in</td><td>an UTF-8 string to convert. </td></tr>
<tr><td class="paramname">out_len</td><td>the length of the resulting UCS4 string.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
</div>
</div>
</div><!-- contents -->
<hr size="1"><address style="text-align: right;"><small>
Generated on Tue Nov 15 2022 14:04:26 for Heimdal wind library by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.9.1</small></address>
</body>
</html>