2
0
mirror of https://github.com/boostorg/nowide.git synced 2026-01-19 04:22:12 +00:00

Add doc/html

This commit is contained in:
Peter Dimov
2019-12-04 16:32:38 +02:00
parent 878baf173f
commit 36794503ce
85 changed files with 8870 additions and 0 deletions

74
doc/html/annotated.html Normal file
View File

@@ -0,0 +1,74 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: Class List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Class List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>boost</b></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboost_1_1nowide.html" target="_self">nowide</a></td><td class="desc">This namespace includes implementation of the standard library functios such that they accept UTF-8 strings on Windows. On other platforms it is just an alias of std namespace (i.e. not on Windows) </td></tr>
<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboost_1_1nowide_1_1args.html" target="_self">args</a></td><td class="desc">Args is a class that fixes standard main() function arguments and changes them to UTF-8 under Microsoft Windows </td></tr>
<tr id="row_0_0_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html" target="_self">basic_filebuf</a></td><td class="desc">This forward declaration defined the <a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html" title="This forward declaration defined the basic_filebuf type. ">basic_filebuf</a> type </td></tr>
<tr id="row_0_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html" target="_self">basic_filebuf&lt; char &gt;</a></td><td class="desc">This is implementation of std::filebuf </td></tr>
<tr id="row_0_0_3_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboost_1_1nowide_1_1basic__fstream.html" target="_self">basic_fstream</a></td><td class="desc">Same as std::basic_fstream&lt;char&gt; but accepts UTF-8 strings under Windows </td></tr>
<tr id="row_0_0_4_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html" target="_self">basic_ifstream</a></td><td class="desc">Same as std::basic_ifstream&lt;char&gt; but accepts UTF-8 strings under Windows </td></tr>
<tr id="row_0_0_5_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html" target="_self">basic_ofstream</a></td><td class="desc">Same as std::basic_ofstream&lt;char&gt; but accepts UTF-8 strings under Windows </td></tr>
<tr id="row_0_0_6_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html" target="_self">basic_stackstring</a></td><td class="desc">A class that allows to create a temporary wide or narrow UTF strings from wide or narrow UTF source </td></tr>
<tr id="row_0_0_7_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt.html" target="_self">utf8_codecvt</a></td><td class="desc"></td></tr>
<tr id="row_0_0_8_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html" target="_self">utf8_codecvt&lt; CharType, 2 &gt;</a></td><td class="desc"></td></tr>
<tr id="row_0_0_9_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html" target="_self">utf8_codecvt&lt; CharType, 4 &gt;</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,210 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost/nowide/args.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c8984f1860c11f62f47abb6761e46c1e.html">boost</a></li><li class="navelem"><a class="el" href="dir_cba7cd329d8f45cf06543cd3b730d485.html">nowide</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">args.hpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// Copyright (c) 2012 Artyom Beilis (Tonkikh)</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Distributed under the Boost Software License, Version 1.0. (See</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// accompanying file LICENSE_1_0.txt or copy at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef BOOST_NOWIDE_ARGS_HPP_INCLUDED</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define BOOST_NOWIDE_ARGS_HPP_INCLUDED</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;boost/config.hpp&gt;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;boost/nowide/stackstring.hpp&gt;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifdef BOOST_WINDOWS</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &lt;boost/nowide/windows.hpp&gt;</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="keyword">namespace </span>boost {</div>
<div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html"> 19</a></span>&#160;<span class="keyword">namespace </span>nowide {</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor"> #if !defined(BOOST_WINDOWS) &amp;&amp; !defined(BOOST_NOWIDE_DOXYGEN)</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">class </span><a class="code" href="classboost_1_1nowide_1_1args.html">args</a> {</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <a class="code" href="classboost_1_1nowide_1_1args.html#a3ff755fe4f03cc192f31121d5ea78d7d">args</a>(<span class="keywordtype">int</span> &amp;,<span class="keywordtype">char</span> **&amp;) {}</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="classboost_1_1nowide_1_1args.html#a3ff755fe4f03cc192f31121d5ea78d7d">args</a>(<span class="keywordtype">int</span> &amp;,<span class="keywordtype">char</span> **&amp;,<span class="keywordtype">char</span> **&amp;){}</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="classboost_1_1nowide_1_1args.html#a78a61e8fe5bb40884f8b3038b98762b2">~args</a>() {}</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; };</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor"> #else</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classboost_1_1nowide_1_1args.html"> 42</a></span>&#160; <span class="keyword">class </span><a class="code" href="classboost_1_1nowide_1_1args.html">args</a> {</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; </div>
<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classboost_1_1nowide_1_1args.html#a3ff755fe4f03cc192f31121d5ea78d7d"> 48</a></span>&#160; <a class="code" href="classboost_1_1nowide_1_1args.html#a3ff755fe4f03cc192f31121d5ea78d7d">args</a>(<span class="keywordtype">int</span> &amp;argc,<span class="keywordtype">char</span> **&amp;argv) :</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; old_argc_(argc),</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; old_argv_(argv),</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; old_env_(0),</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; old_argc_ptr_(&amp;argc),</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; old_argv_ptr_(&amp;argv),</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; old_env_ptr_(0)</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; fix_args(argc,argv);</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div>
<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classboost_1_1nowide_1_1args.html#ad0a127015e74d6d72986f646f76a15c3"> 61</a></span>&#160; <a class="code" href="classboost_1_1nowide_1_1args.html#ad0a127015e74d6d72986f646f76a15c3">args</a>(<span class="keywordtype">int</span> &amp;argc,<span class="keywordtype">char</span> **&amp;argv,<span class="keywordtype">char</span> **&amp;en) :</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; old_argc_(argc),</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; old_argv_(argv),</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; old_env_(en),</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; old_argc_ptr_(&amp;argc),</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; old_argv_ptr_(&amp;argv),</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; old_env_ptr_(&amp;en)</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; fix_args(argc,argv);</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; fix_env(en);</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div>
<div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classboost_1_1nowide_1_1args.html#a78a61e8fe5bb40884f8b3038b98762b2"> 75</a></span>&#160; <a class="code" href="classboost_1_1nowide_1_1args.html#a78a61e8fe5bb40884f8b3038b98762b2">~args</a>()</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span>(old_argc_ptr_)</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; *old_argc_ptr_ = old_argc_;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">if</span>(old_argv_ptr_)</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; *old_argv_ptr_ = old_argv_;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">if</span>(old_env_ptr_) </div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; *old_env_ptr_ = old_env_;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">private</span>: </div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">void</span> fix_args(<span class="keywordtype">int</span> &amp;argc,<span class="keywordtype">char</span> **&amp;argv)</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; {</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordtype">int</span> wargc;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">wchar_t</span> **wargv = CommandLineToArgvW(GetCommandLineW(),&amp;wargc);</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span>(!wargv) {</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; argc = 0;</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">static</span> <span class="keywordtype">char</span> *dummy = 0;</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; argv = &amp;dummy;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">try</span>{ </div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; args_.resize(wargc+1,0);</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; arg_values_.resize(wargc);</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;wargc;i++) {</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">if</span>(!arg_values_[i].convert(wargv[i])) {</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; wargc = i;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; args_[i] = arg_values_[i].c_str();</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; argc = wargc;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; argv = &amp;args_[0];</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">catch</span>(...) {</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; LocalFree(wargv);</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">throw</span>;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; LocalFree(wargv);</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordtype">void</span> fix_env(<span class="keywordtype">char</span> **&amp;en)</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keyword">static</span> <span class="keywordtype">char</span> *dummy = 0;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; en = &amp;dummy;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">wchar_t</span> *wstrings = GetEnvironmentStringsW();</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span>(!wstrings)</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">try</span> {</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordtype">wchar_t</span> *wstrings_end = 0;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordtype">int</span> count = 0;</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">for</span>(wstrings_end = wstrings;*wstrings_end;wstrings_end+=wcslen(wstrings_end)+1)</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; count++;</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">if</span>(env_.convert(wstrings,wstrings_end)) {</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; envp_.resize(count+1,0);</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordtype">char</span> *p=env_.c_str();</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordtype">int</span> pos = 0;</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;count;i++) {</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">if</span>(*p!=<span class="charliteral">&#39;=&#39;</span>)</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; envp_[pos++] = p;</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; p+=strlen(p)+1;</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; en = &amp;envp_[0];</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">catch</span>(...) {</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; FreeEnvironmentStringsW(wstrings);</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">throw</span>;</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; FreeEnvironmentStringsW(wstrings);</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; std::vector&lt;char *&gt; args_;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; std::vector&lt;short_stackstring&gt; arg_values_;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="namespaceboost_1_1nowide.html#acd4c19d4e98ae3e50b08ef2ef5056a12">stackstring</a> env_;</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; std::vector&lt;char *&gt; envp_;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordtype">int</span> old_argc_;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordtype">char</span> **old_argv_;</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordtype">char</span> **old_env_;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordtype">int</span> *old_argc_ptr_;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordtype">char</span> ***old_argv_ptr_;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordtype">char</span> ***old_env_ptr_;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; };</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;} <span class="comment">// nowide</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;} <span class="comment">// namespace boost</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment">// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4</span></div>
<div class="ttc" id="classboost_1_1nowide_1_1args_html_ad0a127015e74d6d72986f646f76a15c3"><div class="ttname"><a href="classboost_1_1nowide_1_1args.html#ad0a127015e74d6d72986f646f76a15c3">boost::nowide::args::args</a></div><div class="ttdeci">args(int &amp;argc, char **&amp;argv, char **&amp;en)</div><div class="ttdef"><b>Definition:</b> args.hpp:61</div></div>
<div class="ttc" id="classboost_1_1nowide_1_1args_html"><div class="ttname"><a href="classboost_1_1nowide_1_1args.html">boost::nowide::args</a></div><div class="ttdoc">args is a class that fixes standard main() function arguments and changes them to UTF-8 under Microso...</div><div class="ttdef"><b>Definition:</b> args.hpp:42</div></div>
<div class="ttc" id="classboost_1_1nowide_1_1args_html_a3ff755fe4f03cc192f31121d5ea78d7d"><div class="ttname"><a href="classboost_1_1nowide_1_1args.html#a3ff755fe4f03cc192f31121d5ea78d7d">boost::nowide::args::args</a></div><div class="ttdeci">args(int &amp;argc, char **&amp;argv)</div><div class="ttdef"><b>Definition:</b> args.hpp:48</div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_acd4c19d4e98ae3e50b08ef2ef5056a12"><div class="ttname"><a href="namespaceboost_1_1nowide.html#acd4c19d4e98ae3e50b08ef2ef5056a12">boost::nowide::stackstring</a></div><div class="ttdeci">basic_stackstring&lt; char, wchar_t, 256 &gt; stackstring</div><div class="ttdef"><b>Definition:</b> stackstring.hpp:138</div></div>
<div class="ttc" id="classboost_1_1nowide_1_1args_html_a78a61e8fe5bb40884f8b3038b98762b2"><div class="ttname"><a href="classboost_1_1nowide_1_1args.html#a78a61e8fe5bb40884f8b3038b98762b2">boost::nowide::args::~args</a></div><div class="ttdeci">~args()</div><div class="ttdef"><b>Definition:</b> args.hpp:75</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

BIN
doc/html/bc_s.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B

BIN
doc/html/bdwn.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

View File

@@ -0,0 +1,175 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost/nowide/cenv.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c8984f1860c11f62f47abb6761e46c1e.html">boost</a></li><li class="navelem"><a class="el" href="dir_cba7cd329d8f45cf06543cd3b730d485.html">nowide</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">cenv.hpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// Copyright (c) 2012 Artyom Beilis (Tonkikh)</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Distributed under the Boost Software License, Version 1.0. (See</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// accompanying file LICENSE_1_0.txt or copy at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef BOOST_NOWIDE_CENV_H_INCLUDED</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define BOOST_NOWIDE_CENV_H_INCLUDED</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;stdexcept&gt;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &lt;boost/config.hpp&gt;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &lt;boost/nowide/stackstring.hpp&gt;</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#ifdef BOOST_WINDOWS</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;boost/nowide/windows.hpp&gt;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">namespace </span>boost {</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">namespace </span>nowide {</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"> #if !defined(BOOST_WINDOWS) &amp;&amp; !defined(BOOST_NOWIDE_DOXYGEN)</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; using ::getenv;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; using ::setenv;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; using ::unsetenv;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; using ::putenv;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor"> #else</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">char</span> *<a class="code" href="namespaceboost_1_1nowide.html#a6644397c539754076b11e95c535be192">getenv</a>(<span class="keywordtype">char</span> <span class="keyword">const</span> *key)</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceboost_1_1nowide.html#acd4c19d4e98ae3e50b08ef2ef5056a12">stackstring</a> value;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; </div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="namespaceboost_1_1nowide.html#a8369c10c0df6e36cd10cb9f9beb3149d">wshort_stackstring</a> name;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">if</span>(!name.convert(key))</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> buf_size = 64;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">wchar_t</span> buf[buf_size];</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; std::vector&lt;wchar_t&gt; tmp;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">wchar_t</span> *ptr = buf;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">size_t</span> n = GetEnvironmentVariableW(name.c_str(),buf,buf_size);</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">if</span>(n == 0 &amp;&amp; GetLastError() == 203) <span class="comment">// ERROR_ENVVAR_NOT_FOUND</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">if</span>(n &gt;= buf_size) {</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; tmp.resize(n+1,L<span class="charliteral">&#39;\0&#39;</span>);</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; n = GetEnvironmentVariableW(name.c_str(),&amp;tmp[0],<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(tmp.size() - 1));</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">// The size may have changed</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span>(n &gt;= tmp.size() - 1)</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; ptr = &amp;tmp[0];</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">if</span>(!value.convert(ptr))</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">return</span> value.c_str();</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div>
<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#a19d4925ea2c77e0b2abd8f5d045a8af2"> 68</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1nowide.html#a19d4925ea2c77e0b2abd8f5d045a8af2">setenv</a>(<span class="keywordtype">char</span> <span class="keyword">const</span> *key,<span class="keywordtype">char</span> <span class="keyword">const</span> *value,<span class="keywordtype">int</span> <span class="keyword">override</span>)</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">wshort_stackstring</a> name;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">if</span>(!name.convert(key))</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span>(!<span class="keyword">override</span>) {</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">wchar_t</span> unused[2];</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span>(!(GetEnvironmentVariableW(name.c_str(),unused,2)==0 &amp;&amp; GetLastError() == 203)) <span class="comment">// ERROR_ENVVAR_NOT_FOUND</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">wstackstring</a> wval;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">if</span>(!wval.convert(value))</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">if</span>(SetEnvironmentVariableW(name.c_str(),wval.c_str()))</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div>
<div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#a61c3e97d5b8fd9c9a1812e2004ef7db6"> 88</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1nowide.html#a61c3e97d5b8fd9c9a1812e2004ef7db6">unsetenv</a>(<span class="keywordtype">char</span> <span class="keyword">const</span> *key)</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">wshort_stackstring</a> name;</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span>(!name.convert(key))</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span>(SetEnvironmentVariableW(name.c_str(),0))</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div>
<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#ad42e1fc3dd7ac556a551fbac3fa553e3"> 100</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1nowide.html#ad42e1fc3dd7ac556a551fbac3fa553e3">putenv</a>(<span class="keywordtype">char</span> *<span class="keywordtype">string</span>)</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordtype">char</span> <span class="keyword">const</span> *key = string;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">char</span> <span class="keyword">const</span> *key_end = string;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">while</span>(*key_end!=<span class="charliteral">&#39;=&#39;</span> &amp;&amp; key_end!=<span class="charliteral">&#39;\0&#39;</span>)</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; key_end++;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span>(*key_end == <span class="charliteral">&#39;\0&#39;</span>)</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">wshort_stackstring</a> wkey;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">if</span>(!wkey.convert(key,key_end))</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; </div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">wstackstring</a> wvalue;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">if</span>(!wvalue.convert(key_end+1))</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span>(SetEnvironmentVariableW(wkey.c_str(),wvalue.c_str()))</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;} <span class="comment">// nowide</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;} <span class="comment">// namespace boost</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment">// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4</span></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_a8369c10c0df6e36cd10cb9f9beb3149d"><div class="ttname"><a href="namespaceboost_1_1nowide.html#a8369c10c0df6e36cd10cb9f9beb3149d">boost::nowide::wshort_stackstring</a></div><div class="ttdeci">basic_stackstring&lt; wchar_t, char, 16 &gt; wshort_stackstring</div><div class="ttdef"><b>Definition:</b> stackstring.hpp:142</div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_a19d4925ea2c77e0b2abd8f5d045a8af2"><div class="ttname"><a href="namespaceboost_1_1nowide.html#a19d4925ea2c77e0b2abd8f5d045a8af2">boost::nowide::setenv</a></div><div class="ttdeci">int setenv(char const *key, char const *value, int override)</div><div class="ttdoc">UTF-8 aware setenv, key - the variable name, value is a new UTF-8 value,. </div><div class="ttdef"><b>Definition:</b> cenv.hpp:68</div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_ad42e1fc3dd7ac556a551fbac3fa553e3"><div class="ttname"><a href="namespaceboost_1_1nowide.html#ad42e1fc3dd7ac556a551fbac3fa553e3">boost::nowide::putenv</a></div><div class="ttdeci">int putenv(char *string)</div><div class="ttdoc">UTF-8 aware putenv implementation, expects string in format KEY=VALUE. </div><div class="ttdef"><b>Definition:</b> cenv.hpp:100</div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_a61c3e97d5b8fd9c9a1812e2004ef7db6"><div class="ttname"><a href="namespaceboost_1_1nowide.html#a61c3e97d5b8fd9c9a1812e2004ef7db6">boost::nowide::unsetenv</a></div><div class="ttdeci">int unsetenv(char const *key)</div><div class="ttdoc">Remove enviroment variable key. </div><div class="ttdef"><b>Definition:</b> cenv.hpp:88</div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_a6644397c539754076b11e95c535be192"><div class="ttname"><a href="namespaceboost_1_1nowide.html#a6644397c539754076b11e95c535be192">boost::nowide::getenv</a></div><div class="ttdeci">char * getenv(char const *key)</div><div class="ttdoc">UTF-8 aware getenv. Returns 0 if the variable is not set. </div><div class="ttdef"><b>Definition:</b> cenv.hpp:35</div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_acd4c19d4e98ae3e50b08ef2ef5056a12"><div class="ttname"><a href="namespaceboost_1_1nowide.html#acd4c19d4e98ae3e50b08ef2ef5056a12">boost::nowide::stackstring</a></div><div class="ttdeci">basic_stackstring&lt; char, wchar_t, 256 &gt; stackstring</div><div class="ttdef"><b>Definition:</b> stackstring.hpp:138</div></div>
<div class="ttc" id="classboost_1_1nowide_1_1basic__stackstring_html"><div class="ttname"><a href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring</a></div><div class="ttdoc">A class that allows to create a temporary wide or narrow UTF strings from wide or narrow UTF source...</div><div class="ttdef"><b>Definition:</b> stackstring.hpp:25</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,68 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>boost</b></li><li class="navelem"><a class="el" href="namespaceboost_1_1nowide.html">nowide</a></li><li class="navelem"><a class="el" href="classboost_1_1nowide_1_1args.html">args</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">boost::nowide::args Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classboost_1_1nowide_1_1args.html">boost::nowide::args</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classboost_1_1nowide_1_1args.html#a3ff755fe4f03cc192f31121d5ea78d7d">args</a>(int &amp;argc, char **&amp;argv)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1args.html">boost::nowide::args</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classboost_1_1nowide_1_1args.html#ad0a127015e74d6d72986f646f76a15c3">args</a>(int &amp;argc, char **&amp;argv, char **&amp;en)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1args.html">boost::nowide::args</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classboost_1_1nowide_1_1args.html#a78a61e8fe5bb40884f8b3038b98762b2">~args</a>()</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1args.html">boost::nowide::args</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,189 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost::nowide::args Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>boost</b></li><li class="navelem"><a class="el" href="namespaceboost_1_1nowide.html">nowide</a></li><li class="navelem"><a class="el" href="classboost_1_1nowide_1_1args.html">args</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classboost_1_1nowide_1_1args-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">boost::nowide::args Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>args is a class that fixes standard main() function arguments and changes them to UTF-8 under Microsoft Windows.
<a href="classboost_1_1nowide_1_1args.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="args_8hpp_source.html">boost/nowide/args.hpp</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a3ff755fe4f03cc192f31121d5ea78d7d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1nowide_1_1args.html#a3ff755fe4f03cc192f31121d5ea78d7d">args</a> (int &amp;argc, char **&amp;argv)</td></tr>
<tr class="separator:a3ff755fe4f03cc192f31121d5ea78d7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0a127015e74d6d72986f646f76a15c3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1nowide_1_1args.html#ad0a127015e74d6d72986f646f76a15c3">args</a> (int &amp;argc, char **&amp;argv, char **&amp;en)</td></tr>
<tr class="separator:ad0a127015e74d6d72986f646f76a15c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78a61e8fe5bb40884f8b3038b98762b2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1nowide_1_1args.html#a78a61e8fe5bb40884f8b3038b98762b2">~args</a> ()</td></tr>
<tr class="separator:a78a61e8fe5bb40884f8b3038b98762b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>args is a class that fixes standard main() function arguments and changes them to UTF-8 under Microsoft Windows. </p>
<p>The class uses <code>GetCommandLineW()</code>, <code>CommandLineToArgvW()</code> and <code>GetEnvironmentStringsW()</code> in order to obtain the information. It does not relates to actual values of argc,argv and env under Windows.</p>
<p>It restores the original values in its destructor</p>
<dl class="section note"><dt>Note</dt><dd>the class owns the memory of the newly allocated strings </dd></dl>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a3ff755fe4f03cc192f31121d5ea78d7d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boost::nowide::args::args </td>
<td>(</td>
<td class="paramtype">int &amp;&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char **&amp;&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Fix command line agruments </p>
</div>
</div>
<a class="anchor" id="ad0a127015e74d6d72986f646f76a15c3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boost::nowide::args::args </td>
<td>(</td>
<td class="paramtype">int &amp;&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char **&amp;&#160;</td>
<td class="paramname"><em>argv</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char **&amp;&#160;</td>
<td class="paramname"><em>en</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Fix command line agruments and environment </p>
</div>
</div>
<a class="anchor" id="a78a61e8fe5bb40884f8b3038b98762b2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boost::nowide::args::~args </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Restore original argc,argv,env values, if changed </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>boost/nowide/<a class="el" href="args_8hpp_source.html">args.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,76 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost::nowide::basic_filebuf&lt; CharType, Traits &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>boost</b></li><li class="navelem"><a class="el" href="namespaceboost_1_1nowide.html">nowide</a></li><li class="navelem"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">boost::nowide::basic_filebuf&lt; CharType, Traits &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>This forward declaration defined the <a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html" title="This forward declaration defined the basic_filebuf type. ">basic_filebuf</a> type.
<a href="classboost_1_1nowide_1_1basic__filebuf.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="filebuf_8hpp_source.html">boost/nowide/filebuf.hpp</a>&gt;</code></p>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename CharType, typename Traits = std::char_traits&lt;CharType&gt;&gt;<br />
class boost::nowide::basic_filebuf&lt; CharType, Traits &gt;</h3>
<p>This forward declaration defined the <a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html" title="This forward declaration defined the basic_filebuf type. ">basic_filebuf</a> type. </p>
<p>it is implemented and specialized for CharType = char, it behaves implements std::filebuf over standard C I/O </p>
</div><hr/>The documentation for this class was generated from the following file:<ul>
<li>boost/nowide/<a class="el" href="filebuf_8hpp_source.html">filebuf.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,78 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>boost</b></li><li class="navelem"><a class="el" href="namespaceboost_1_1nowide.html">nowide</a></li><li class="navelem"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">basic_filebuf< char ></a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">boost::nowide::basic_filebuf&lt; char &gt; Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#acb60c4ffe2ba0d574f348ee4e7c02029">basic_filebuf</a>()</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a5d28c29a18add5fbcd0456e75be753a6">close</a>()</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a23b677285f14f7f1619d5652e043bc06">is_open</a>() const </td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a1e5de49ebc04817924f64687c709b876">open</a>(std::string const &amp;s, std::ios_base::openmode mode)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a72533238e5f64668fca85fa9655360df">open</a>(char const *s, std::ios_base::openmode mode)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>overflow</b>(int c) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pbackfail</b>(int) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>seekoff</b>(std::streamoff off, std::ios_base::seekdir seekdir, std::ios_base::openmode) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>seekpos</b>(std::streampos off, std::ios_base::openmode m) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>setbuf</b>(char *s, std::streamsize n) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>sync</b>() (defined in <a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>underflow</b>() (defined in <a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~basic_filebuf</b>() (defined in <a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,270 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost::nowide::basic_filebuf&lt; char &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>boost</b></li><li class="navelem"><a class="el" href="namespaceboost_1_1nowide.html">nowide</a></li><li class="navelem"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">basic_filebuf< char ></a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">boost::nowide::basic_filebuf&lt; char &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>This is implementation of std::filebuf.
<a href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="filebuf_8hpp_source.html">boost/nowide/filebuf.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for boost::nowide::basic_filebuf&lt; char &gt;:</div>
<div class="dyncontent">
<div class="center">
<img src="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.png" usemap="#boost::nowide::basic_filebuf&lt; char &gt;_map" alt=""/>
<map id="boost::nowide::basic_filebuf&lt; char &gt;_map" name="boost::nowide::basic_filebuf&lt; char &gt;_map">
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:acb60c4ffe2ba0d574f348ee4e7c02029"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#acb60c4ffe2ba0d574f348ee4e7c02029">basic_filebuf</a> ()</td></tr>
<tr class="separator:acb60c4ffe2ba0d574f348ee4e7c02029"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e5de49ebc04817924f64687c709b876"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a1e5de49ebc04817924f64687c709b876">open</a> (std::string const &amp;s, std::ios_base::openmode mode)</td></tr>
<tr class="separator:a1e5de49ebc04817924f64687c709b876"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a72533238e5f64668fca85fa9655360df"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a72533238e5f64668fca85fa9655360df">open</a> (char const *s, std::ios_base::openmode mode)</td></tr>
<tr class="separator:a72533238e5f64668fca85fa9655360df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d28c29a18add5fbcd0456e75be753a6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a5d28c29a18add5fbcd0456e75be753a6">close</a> ()</td></tr>
<tr class="separator:a5d28c29a18add5fbcd0456e75be753a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23b677285f14f7f1619d5652e043bc06"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a23b677285f14f7f1619d5652e043bc06">is_open</a> () const </td></tr>
<tr class="separator:a23b677285f14f7f1619d5652e043bc06"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:aaf3b52f821e0c5cd86e0b881ad0e2a3f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf3b52f821e0c5cd86e0b881ad0e2a3f"></a>
virtual std::streambuf *&#160;</td><td class="memItemRight" valign="bottom"><b>setbuf</b> (char *s, std::streamsize n)</td></tr>
<tr class="separator:aaf3b52f821e0c5cd86e0b881ad0e2a3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10eaeb8546c3d0621941cef00f308c69"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a10eaeb8546c3d0621941cef00f308c69"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>overflow</b> (int c)</td></tr>
<tr class="separator:a10eaeb8546c3d0621941cef00f308c69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4fb38d739605d0e0f7f1ef303f91330"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4fb38d739605d0e0f7f1ef303f91330"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>sync</b> ()</td></tr>
<tr class="separator:ab4fb38d739605d0e0f7f1ef303f91330"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5831d7380742eff8c237d504d0d1e034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5831d7380742eff8c237d504d0d1e034"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>underflow</b> ()</td></tr>
<tr class="separator:a5831d7380742eff8c237d504d0d1e034"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0841be6da0826d44391fde59e83f7d38"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0841be6da0826d44391fde59e83f7d38"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>pbackfail</b> (int)</td></tr>
<tr class="separator:a0841be6da0826d44391fde59e83f7d38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e762649c5007092164266547edd0e8e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e762649c5007092164266547edd0e8e"></a>
std::streampos&#160;</td><td class="memItemRight" valign="bottom"><b>seekoff</b> (std::streamoff off, std::ios_base::seekdir seekdir, std::ios_base::openmode)</td></tr>
<tr class="separator:a9e762649c5007092164266547edd0e8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4b7da7ee4ac530aa8475bc411c74080"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4b7da7ee4ac530aa8475bc411c74080"></a>
std::streampos&#160;</td><td class="memItemRight" valign="bottom"><b>seekpos</b> (std::streampos off, std::ios_base::openmode m)</td></tr>
<tr class="separator:ab4b7da7ee4ac530aa8475bc411c74080"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;&gt;<br />
class boost::nowide::basic_filebuf&lt; char &gt;</h3>
<p>This is implementation of std::filebuf. </p>
<p>it is implemented and specialized for CharType = char, it behaves implements std::filebuf over standard C I/O </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="acb60c4ffe2ba0d574f348ee4e7c02029"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">boost::nowide::basic_filebuf</a>&lt; char &gt;::<a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates new filebuf </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a5d28c29a18add5fbcd0456e75be753a6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf</a>* <a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">boost::nowide::basic_filebuf</a>&lt; char &gt;::close </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Same as std::filebuf::close() </p>
</div>
</div>
<a class="anchor" id="a23b677285f14f7f1619d5652e043bc06"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">boost::nowide::basic_filebuf</a>&lt; char &gt;::is_open </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Same as std::filebuf::is_open() </p>
</div>
</div>
<a class="anchor" id="a1e5de49ebc04817924f64687c709b876"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf</a>* <a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">boost::nowide::basic_filebuf</a>&lt; char &gt;::open </td>
<td>(</td>
<td class="paramtype">std::string const &amp;&#160;</td>
<td class="paramname"><em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::ios_base::openmode&#160;</td>
<td class="paramname"><em>mode</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Same as std::filebuf::open but s is UTF-8 string </p>
</div>
</div>
<a class="anchor" id="a72533238e5f64668fca85fa9655360df"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf</a>* <a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">boost::nowide::basic_filebuf</a>&lt; char &gt;::open </td>
<td>(</td>
<td class="paramtype">char const *&#160;</td>
<td class="paramname"><em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::ios_base::openmode&#160;</td>
<td class="paramname"><em>mode</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Same as std::filebuf::open but s is UTF-8 string </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>boost/nowide/<a class="el" href="filebuf_8hpp_source.html">filebuf.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 791 B

View File

@@ -0,0 +1,77 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>boost</b></li><li class="navelem"><a class="el" href="namespaceboost_1_1nowide.html">nowide</a></li><li class="navelem"><a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">basic_fstream</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">boost::nowide::basic_fstream&lt; CharType, Traits &gt; Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>basic_fstream</b>() (defined in <a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>basic_fstream</b>(char const *file_name, std::ios_base::openmode mode=std::ios_base::out|std::ios_base::in) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>basic_fstream</b>(std::string const &amp;file_name, std::ios_base::openmode mode=std::ios_base::out|std::ios_base::in) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>close</b>() (defined in <a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_buffer_type</b> typedef (defined in <a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>internal_stream_type</b> typedef (defined in <a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_open</b>() (defined in <a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>is_open</b>() const (defined in <a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>open</b>(std::string const &amp;file_name, std::ios_base::openmode mode=std::ios_base::out|std::ios_base::out) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>open</b>(char const *file_name, std::ios_base::openmode mode=std::ios_base::out|std::ios_base::out) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>rdbuf</b>() const (defined in <a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>~basic_fstream</b>() (defined in <a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,126 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost::nowide::basic_fstream&lt; CharType, Traits &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>boost</b></li><li class="navelem"><a class="el" href="namespaceboost_1_1nowide.html">nowide</a></li><li class="navelem"><a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">basic_fstream</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classboost_1_1nowide_1_1basic__fstream-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">boost::nowide::basic_fstream&lt; CharType, Traits &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Same as std::basic_fstream&lt;char&gt; but accepts UTF-8 strings under Windows.
<a href="classboost_1_1nowide_1_1basic__fstream.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="fstream_8hpp_source.html">boost/nowide/fstream.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for boost::nowide::basic_fstream&lt; CharType, Traits &gt;:</div>
<div class="dyncontent">
<div class="center">
<img src="classboost_1_1nowide_1_1basic__fstream.png" usemap="#boost::nowide::basic_fstream&lt; CharType, Traits &gt;_map" alt=""/>
<map id="boost::nowide::basic_fstream&lt; CharType, Traits &gt;_map" name="boost::nowide::basic_fstream&lt; CharType, Traits &gt;_map">
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a65e45af4ab7298c95e95f2dec07ce48b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65e45af4ab7298c95e95f2dec07ce48b"></a>
typedef <a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf</a><br class="typebreak" />
&lt; CharType, Traits &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>internal_buffer_type</b></td></tr>
<tr class="separator:a65e45af4ab7298c95e95f2dec07ce48b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab69bc2f61761c28f98f7840021181eb8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab69bc2f61761c28f98f7840021181eb8"></a>
typedef std::basic_iostream<br class="typebreak" />
&lt; CharType, Traits &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>internal_stream_type</b></td></tr>
<tr class="separator:ab69bc2f61761c28f98f7840021181eb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a3e9a6fda84ba88793887a44095bec9a9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3e9a6fda84ba88793887a44095bec9a9"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>basic_fstream</b> (char const *file_name, std::ios_base::openmode mode=std::ios_base::out|std::ios_base::in)</td></tr>
<tr class="separator:a3e9a6fda84ba88793887a44095bec9a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4eba7dd4f5c5c6a67237411c2ee1bd78"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4eba7dd4f5c5c6a67237411c2ee1bd78"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>basic_fstream</b> (std::string const &amp;file_name, std::ios_base::openmode mode=std::ios_base::out|std::ios_base::in)</td></tr>
<tr class="separator:a4eba7dd4f5c5c6a67237411c2ee1bd78"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbfd359ba6ae29fcaed675efbf2d885f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbfd359ba6ae29fcaed675efbf2d885f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>open</b> (std::string const &amp;file_name, std::ios_base::openmode mode=std::ios_base::out|std::ios_base::out)</td></tr>
<tr class="separator:afbfd359ba6ae29fcaed675efbf2d885f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6f0c691615162e58e0217c9cb49cd1c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa6f0c691615162e58e0217c9cb49cd1c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>open</b> (char const *file_name, std::ios_base::openmode mode=std::ios_base::out|std::ios_base::out)</td></tr>
<tr class="separator:aa6f0c691615162e58e0217c9cb49cd1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99b26c7562e376975c008f52d34ee2b5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99b26c7562e376975c008f52d34ee2b5"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>is_open</b> ()</td></tr>
<tr class="separator:a99b26c7562e376975c008f52d34ee2b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab50ba0b0f46bc57b8b82971ec331b7c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab50ba0b0f46bc57b8b82971ec331b7c7"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>is_open</b> () const </td></tr>
<tr class="separator:ab50ba0b0f46bc57b8b82971ec331b7c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a281b5fa212668ed97de84294cb7ebd27"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a281b5fa212668ed97de84294cb7ebd27"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>close</b> ()</td></tr>
<tr class="separator:a281b5fa212668ed97de84294cb7ebd27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae02afa89e0b38ca68532dd19efb50e4b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae02afa89e0b38ca68532dd19efb50e4b"></a>
<a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">internal_buffer_type</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>rdbuf</b> () const </td></tr>
<tr class="separator:ae02afa89e0b38ca68532dd19efb50e4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename CharType, typename Traits = std::char_traits&lt;CharType&gt;&gt;<br />
class boost::nowide::basic_fstream&lt; CharType, Traits &gt;</h3>
<p>Same as std::basic_fstream&lt;char&gt; but accepts UTF-8 strings under Windows. </p>
</div><hr/>The documentation for this class was generated from the following file:<ul>
<li>boost/nowide/<a class="el" href="fstream_8hpp_source.html">fstream.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,77 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>boost</b></li><li class="navelem"><a class="el" href="namespaceboost_1_1nowide.html">nowide</a></li><li class="navelem"><a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">basic_ifstream</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">boost::nowide::basic_ifstream&lt; CharType, Traits &gt; Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>basic_ifstream</b>() (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>basic_ifstream</b>(char const *file_name, std::ios_base::openmode mode=std::ios_base::in) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>basic_ifstream</b>(std::string const &amp;file_name, std::ios_base::openmode mode=std::ios_base::in) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>close</b>() (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_buffer_type</b> typedef (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>internal_stream_type</b> typedef (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_open</b>() (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>is_open</b>() const (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>open</b>(std::string const &amp;file_name, std::ios_base::openmode mode=std::ios_base::in) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>open</b>(char const *file_name, std::ios_base::openmode mode=std::ios_base::in) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>rdbuf</b>() const (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>~basic_ifstream</b>() (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,126 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost::nowide::basic_ifstream&lt; CharType, Traits &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>boost</b></li><li class="navelem"><a class="el" href="namespaceboost_1_1nowide.html">nowide</a></li><li class="navelem"><a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">basic_ifstream</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classboost_1_1nowide_1_1basic__ifstream-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">boost::nowide::basic_ifstream&lt; CharType, Traits &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Same as std::basic_ifstream&lt;char&gt; but accepts UTF-8 strings under Windows.
<a href="classboost_1_1nowide_1_1basic__ifstream.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="fstream_8hpp_source.html">boost/nowide/fstream.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for boost::nowide::basic_ifstream&lt; CharType, Traits &gt;:</div>
<div class="dyncontent">
<div class="center">
<img src="classboost_1_1nowide_1_1basic__ifstream.png" usemap="#boost::nowide::basic_ifstream&lt; CharType, Traits &gt;_map" alt=""/>
<map id="boost::nowide::basic_ifstream&lt; CharType, Traits &gt;_map" name="boost::nowide::basic_ifstream&lt; CharType, Traits &gt;_map">
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a805946f9d6875232f6d1be547affd12b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a805946f9d6875232f6d1be547affd12b"></a>
typedef <a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf</a><br class="typebreak" />
&lt; CharType, Traits &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>internal_buffer_type</b></td></tr>
<tr class="separator:a805946f9d6875232f6d1be547affd12b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad8aefbed1a6e2f95e383f5212ef4ec6f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8aefbed1a6e2f95e383f5212ef4ec6f"></a>
typedef std::basic_istream<br class="typebreak" />
&lt; CharType, Traits &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>internal_stream_type</b></td></tr>
<tr class="separator:ad8aefbed1a6e2f95e383f5212ef4ec6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a3339c0400ec58d93027adeebed5d4faa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3339c0400ec58d93027adeebed5d4faa"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>basic_ifstream</b> (char const *file_name, std::ios_base::openmode mode=std::ios_base::in)</td></tr>
<tr class="separator:a3339c0400ec58d93027adeebed5d4faa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9fa3ed83ef93c573ef527e0437f65c60"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9fa3ed83ef93c573ef527e0437f65c60"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>basic_ifstream</b> (std::string const &amp;file_name, std::ios_base::openmode mode=std::ios_base::in)</td></tr>
<tr class="separator:a9fa3ed83ef93c573ef527e0437f65c60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9a2c7f9131606c1d3ff8f5815bd896f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af9a2c7f9131606c1d3ff8f5815bd896f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>open</b> (std::string const &amp;file_name, std::ios_base::openmode mode=std::ios_base::in)</td></tr>
<tr class="separator:af9a2c7f9131606c1d3ff8f5815bd896f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a42dde63042b7acf46c7a44b59f7367"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0a42dde63042b7acf46c7a44b59f7367"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>open</b> (char const *file_name, std::ios_base::openmode mode=std::ios_base::in)</td></tr>
<tr class="separator:a0a42dde63042b7acf46c7a44b59f7367"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a102075535d2b5face310631e5925a589"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a102075535d2b5face310631e5925a589"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>is_open</b> ()</td></tr>
<tr class="separator:a102075535d2b5face310631e5925a589"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a007151517eea9da7c0eca2ce6d3b3f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a007151517eea9da7c0eca2ce6d3b3f"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>is_open</b> () const </td></tr>
<tr class="separator:a6a007151517eea9da7c0eca2ce6d3b3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99a1159f9346c4f506c7dfb2c4df30d4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99a1159f9346c4f506c7dfb2c4df30d4"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>close</b> ()</td></tr>
<tr class="separator:a99a1159f9346c4f506c7dfb2c4df30d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a606af26639fc7c168a942f83a729cbc2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a606af26639fc7c168a942f83a729cbc2"></a>
<a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">internal_buffer_type</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>rdbuf</b> () const </td></tr>
<tr class="separator:a606af26639fc7c168a942f83a729cbc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename CharType, typename Traits = std::char_traits&lt;CharType&gt;&gt;<br />
class boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</h3>
<p>Same as std::basic_ifstream&lt;char&gt; but accepts UTF-8 strings under Windows. </p>
</div><hr/>The documentation for this class was generated from the following file:<ul>
<li>boost/nowide/<a class="el" href="fstream_8hpp_source.html">fstream.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,77 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>boost</b></li><li class="navelem"><a class="el" href="namespaceboost_1_1nowide.html">nowide</a></li><li class="navelem"><a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">basic_ofstream</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">boost::nowide::basic_ofstream&lt; CharType, Traits &gt; Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>basic_ofstream</b>() (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>basic_ofstream</b>(char const *file_name, std::ios_base::openmode mode=std::ios_base::out) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>basic_ofstream</b>(std::string const &amp;file_name, std::ios_base::openmode mode=std::ios_base::out) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>close</b>() (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_buffer_type</b> typedef (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>internal_stream_type</b> typedef (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_open</b>() (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>is_open</b>() const (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>open</b>(std::string const &amp;file_name, std::ios_base::openmode mode=std::ios_base::out) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>open</b>(char const *file_name, std::ios_base::openmode mode=std::ios_base::out) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>rdbuf</b>() const (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>~basic_ofstream</b>() (defined in <a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,126 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost::nowide::basic_ofstream&lt; CharType, Traits &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>boost</b></li><li class="navelem"><a class="el" href="namespaceboost_1_1nowide.html">nowide</a></li><li class="navelem"><a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">basic_ofstream</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classboost_1_1nowide_1_1basic__ofstream-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">boost::nowide::basic_ofstream&lt; CharType, Traits &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Same as std::basic_ofstream&lt;char&gt; but accepts UTF-8 strings under Windows.
<a href="classboost_1_1nowide_1_1basic__ofstream.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="fstream_8hpp_source.html">boost/nowide/fstream.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for boost::nowide::basic_ofstream&lt; CharType, Traits &gt;:</div>
<div class="dyncontent">
<div class="center">
<img src="classboost_1_1nowide_1_1basic__ofstream.png" usemap="#boost::nowide::basic_ofstream&lt; CharType, Traits &gt;_map" alt=""/>
<map id="boost::nowide::basic_ofstream&lt; CharType, Traits &gt;_map" name="boost::nowide::basic_ofstream&lt; CharType, Traits &gt;_map">
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a9483f7ab7dc4920a0a7f645b47e0a11b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9483f7ab7dc4920a0a7f645b47e0a11b"></a>
typedef <a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf</a><br class="typebreak" />
&lt; CharType, Traits &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>internal_buffer_type</b></td></tr>
<tr class="separator:a9483f7ab7dc4920a0a7f645b47e0a11b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6690c8de5c23675fd37b9be1cbded1ba"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6690c8de5c23675fd37b9be1cbded1ba"></a>
typedef std::basic_ostream<br class="typebreak" />
&lt; CharType, Traits &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>internal_stream_type</b></td></tr>
<tr class="separator:a6690c8de5c23675fd37b9be1cbded1ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:af441b54c77e46745f8d411af735da96c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af441b54c77e46745f8d411af735da96c"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>basic_ofstream</b> (char const *file_name, std::ios_base::openmode mode=std::ios_base::out)</td></tr>
<tr class="separator:af441b54c77e46745f8d411af735da96c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeefd2bc1b0bceee383172d5676272de4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeefd2bc1b0bceee383172d5676272de4"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>basic_ofstream</b> (std::string const &amp;file_name, std::ios_base::openmode mode=std::ios_base::out)</td></tr>
<tr class="separator:aeefd2bc1b0bceee383172d5676272de4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31a4ace2599e614da6c92b8e2eef72dd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31a4ace2599e614da6c92b8e2eef72dd"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>open</b> (std::string const &amp;file_name, std::ios_base::openmode mode=std::ios_base::out)</td></tr>
<tr class="separator:a31a4ace2599e614da6c92b8e2eef72dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ab591645dbb282cc7bb1d501e0e9074"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2ab591645dbb282cc7bb1d501e0e9074"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>open</b> (char const *file_name, std::ios_base::openmode mode=std::ios_base::out)</td></tr>
<tr class="separator:a2ab591645dbb282cc7bb1d501e0e9074"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae78067907a7c69b30e896b50d1b5914"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aae78067907a7c69b30e896b50d1b5914"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>is_open</b> ()</td></tr>
<tr class="separator:aae78067907a7c69b30e896b50d1b5914"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67e1fb82015df2a4bf8e45cdbcb895f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67e1fb82015df2a4bf8e45cdbcb895f6"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>is_open</b> () const </td></tr>
<tr class="separator:a67e1fb82015df2a4bf8e45cdbcb895f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adff8dc82bdb38cd6d371d412195dadae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adff8dc82bdb38cd6d371d412195dadae"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>close</b> ()</td></tr>
<tr class="separator:adff8dc82bdb38cd6d371d412195dadae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf098f06f4581bc144341aae7f9f62e6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf098f06f4581bc144341aae7f9f62e6"></a>
<a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">internal_buffer_type</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>rdbuf</b> () const </td></tr>
<tr class="separator:abf098f06f4581bc144341aae7f9f62e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename CharType, typename Traits = std::char_traits&lt;CharType&gt;&gt;<br />
class boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</h3>
<p>Same as std::basic_ofstream&lt;char&gt; but accepts UTF-8 strings under Windows. </p>
</div><hr/>The documentation for this class was generated from the following file:<ul>
<li>boost/nowide/<a class="el" href="fstream_8hpp_source.html">fstream.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,78 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>boost</b></li><li class="navelem"><a class="el" href="namespaceboost_1_1nowide.html">nowide</a></li><li class="navelem"><a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt; Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>basic_stackstring</b>(basic_stackstring const &amp;other) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>basic_stackstring</b>() (defined in <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>buffer_size</b> (defined in <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>c_str</b>() (defined in <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>c_str</b>() const (defined in <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>clear</b>() (defined in <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>convert</b>(input_char const *input) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>convert</b>(input_char const *begin, input_char const *end) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_char</b> typedef (defined in <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(basic_stackstring const &amp;other) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>output_char</b> typedef (defined in <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>swap</b>(basic_stackstring &amp;other) (defined in <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~basic_stackstring</b>() (defined in <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,124 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>boost</b></li><li class="navelem"><a class="el" href="namespaceboost_1_1nowide.html">nowide</a></li><li class="navelem"><a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="classboost_1_1nowide_1_1basic__stackstring-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>A class that allows to create a temporary wide or narrow UTF strings from wide or narrow UTF source.
<a href="classboost_1_1nowide_1_1basic__stackstring.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="stackstring_8hpp_source.html">boost/nowide/stackstring.hpp</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:ad27c75b77f7e09b224f2240241eb1d8e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad27c75b77f7e09b224f2240241eb1d8e"></a>
typedef CharOut&#160;</td><td class="memItemRight" valign="bottom"><b>output_char</b></td></tr>
<tr class="separator:ad27c75b77f7e09b224f2240241eb1d8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd442d8c9d38808af529e17d379b17a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abd442d8c9d38808af529e17d379b17a2"></a>
typedef CharIn&#160;</td><td class="memItemRight" valign="bottom"><b>input_char</b></td></tr>
<tr class="separator:abd442d8c9d38808af529e17d379b17a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ad6b398a3f803b153b8cf8b111b8b2967"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad6b398a3f803b153b8cf8b111b8b2967"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>basic_stackstring</b> (<a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a> const &amp;other)</td></tr>
<tr class="separator:ad6b398a3f803b153b8cf8b111b8b2967"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6082cc10b391eff5bbcfd67acfb4ae0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac6082cc10b391eff5bbcfd67acfb4ae0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>swap</b> (<a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a> &amp;other)</td></tr>
<tr class="separator:ac6082cc10b391eff5bbcfd67acfb4ae0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4cf4ee22e156848aab42e12a7ce3949d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4cf4ee22e156848aab42e12a7ce3949d"></a>
<a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (<a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a> const &amp;other)</td></tr>
<tr class="separator:a4cf4ee22e156848aab42e12a7ce3949d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab09df500c6f874efc3ffc5ea91c8b7a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab09df500c6f874efc3ffc5ea91c8b7a2"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>convert</b> (input_char const *input)</td></tr>
<tr class="separator:ab09df500c6f874efc3ffc5ea91c8b7a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afeb2d3c8504a3044064dff431e7f53ce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afeb2d3c8504a3044064dff431e7f53ce"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>convert</b> (input_char const *begin, input_char const *end)</td></tr>
<tr class="separator:afeb2d3c8504a3044064dff431e7f53ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a577091bdcf754dc76da14c1dadde6b97"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a577091bdcf754dc76da14c1dadde6b97"></a>
output_char *&#160;</td><td class="memItemRight" valign="bottom"><b>c_str</b> ()</td></tr>
<tr class="separator:a577091bdcf754dc76da14c1dadde6b97"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a89c460d961da28aceaeba748cb4071b3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a89c460d961da28aceaeba748cb4071b3"></a>
output_char const *&#160;</td><td class="memItemRight" valign="bottom"><b>c_str</b> () const </td></tr>
<tr class="separator:a89c460d961da28aceaeba748cb4071b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9e4f5f8bc365195606c2b64bc3d4838"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9e4f5f8bc365195606c2b64bc3d4838"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>clear</b> ()</td></tr>
<tr class="separator:aa9e4f5f8bc365195606c2b64bc3d4838"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a0f17260e76c6ec6202febd67723335ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f17260e76c6ec6202febd67723335ff"></a>
static const size_t&#160;</td><td class="memItemRight" valign="bottom"><b>buffer_size</b> = BufferSize</td></tr>
<tr class="separator:a0f17260e76c6ec6202febd67723335ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename CharOut = wchar_t, typename CharIn = char, size_t BufferSize = 256&gt;<br />
class boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</h3>
<p>A class that allows to create a temporary wide or narrow UTF strings from wide or narrow UTF source. </p>
<p>It uses on stack buffer of the string is short enough and allocated a buffer on the heap if the size of the buffer is too small </p>
</div><hr/>The documentation for this class was generated from the following file:<ul>
<li>boost/nowide/<a class="el" href="stackstring_8hpp_source.html">stackstring.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,65 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost::nowide::utf8_codecvt&lt; CharType, CharSize &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>boost</b></li><li class="navelem"><a class="el" href="namespaceboost_1_1nowide.html">nowide</a></li><li class="navelem"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt.html">utf8_codecvt</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">boost::nowide::utf8_codecvt&lt; CharType, CharSize &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<hr/>The documentation for this class was generated from the following file:<ul>
<li>boost/nowide/<a class="el" href="utf8__codecvt_8hpp_source.html">utf8_codecvt.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,74 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>boost</b></li><li class="navelem"><a class="el" href="namespaceboost_1_1nowide.html">nowide</a></li><li class="navelem"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">utf8_codecvt< CharType, 2 ></a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt; Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>do_always_noconv</b>() const (defined in <a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>do_encoding</b>() const (defined in <a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>do_in</b>(std::mbstate_t &amp;std_state, char const *from, char const *from_end, char const *&amp;from_next, uchar *to, uchar *to_end, uchar *&amp;to_next) const (defined in <a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>do_length</b>(std::mbstate_t &amp;std_state, char const *from, char const *from_end, size_t max) const (defined in <a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>do_max_length</b>() const (defined in <a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>do_out</b>(std::mbstate_t &amp;std_state, uchar const *from, uchar const *from_end, uchar const *&amp;from_next, char *to, char *to_end, char *&amp;to_next) const (defined in <a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>do_unshift</b>(std::mbstate_t &amp;s, char *from, char *, char *&amp;next) const (defined in <a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>uchar</b> typedef (defined in <a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>utf8_codecvt</b>(size_t refs=0) (defined in <a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,115 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost::nowide::utf8_codecvt&lt; CharType, 2 &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>boost</b></li><li class="navelem"><a class="el" href="namespaceboost_1_1nowide.html">nowide</a></li><li class="navelem"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">utf8_codecvt< CharType, 2 ></a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-types">Protected Types</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;:</div>
<div class="dyncontent">
<div class="center">
<img src="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.png" usemap="#boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;_map" alt=""/>
<map id="boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;_map" name="boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;_map">
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a8f8251cd85c221a3366f84ad2be5bdcf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8f8251cd85c221a3366f84ad2be5bdcf"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>utf8_codecvt</b> (size_t refs=0)</td></tr>
<tr class="separator:a8f8251cd85c221a3366f84ad2be5bdcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
Protected Types</h2></td></tr>
<tr class="memitem:a65dd1476aaa08bd455c3248bc7db8416"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65dd1476aaa08bd455c3248bc7db8416"></a>
typedef CharType&#160;</td><td class="memItemRight" valign="bottom"><b>uchar</b></td></tr>
<tr class="separator:a65dd1476aaa08bd455c3248bc7db8416"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:aedf46bc5b51562f2c7bb129725e343dc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aedf46bc5b51562f2c7bb129725e343dc"></a>
virtual std::codecvt_base::result&#160;</td><td class="memItemRight" valign="bottom"><b>do_unshift</b> (std::mbstate_t &amp;s, char *from, char *, char *&amp;next) const </td></tr>
<tr class="separator:aedf46bc5b51562f2c7bb129725e343dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a176d1c3a88c80e7ab925713ea6e51b4b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a176d1c3a88c80e7ab925713ea6e51b4b"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>do_encoding</b> () const throw ()</td></tr>
<tr class="separator:a176d1c3a88c80e7ab925713ea6e51b4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7af69c1cd0cf8b72f4419dd2fff0b11d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7af69c1cd0cf8b72f4419dd2fff0b11d"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>do_max_length</b> () const throw ()</td></tr>
<tr class="separator:a7af69c1cd0cf8b72f4419dd2fff0b11d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2c55b46344a0561dec9fcb1c3073dbb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae2c55b46344a0561dec9fcb1c3073dbb"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>do_always_noconv</b> () const throw ()</td></tr>
<tr class="separator:ae2c55b46344a0561dec9fcb1c3073dbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adcf8e69d97496259b7ecb05f342e7aaa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adcf8e69d97496259b7ecb05f342e7aaa"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>do_length</b> (std::mbstate_t &amp;std_state, char const *from, char const *from_end, size_t max) const </td></tr>
<tr class="separator:adcf8e69d97496259b7ecb05f342e7aaa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac49f945502e7a080c1bc3726c7228a8f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac49f945502e7a080c1bc3726c7228a8f"></a>
virtual std::codecvt_base::result&#160;</td><td class="memItemRight" valign="bottom"><b>do_in</b> (std::mbstate_t &amp;std_state, char const *from, char const *from_end, char const *&amp;from_next, uchar *to, uchar *to_end, uchar *&amp;to_next) const </td></tr>
<tr class="separator:ac49f945502e7a080c1bc3726c7228a8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf814458425322bb71778beed7abf277"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf814458425322bb71778beed7abf277"></a>
virtual std::codecvt_base::result&#160;</td><td class="memItemRight" valign="bottom"><b>do_out</b> (std::mbstate_t &amp;std_state, uchar const *from, uchar const *from_end, uchar const *&amp;from_next, char *to, char *to_end, char *&amp;to_next) const </td></tr>
<tr class="separator:acf814458425322bb71778beed7abf277"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>boost/nowide/<a class="el" href="utf8__codecvt_8hpp_source.html">utf8_codecvt.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,74 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>boost</b></li><li class="navelem"><a class="el" href="namespaceboost_1_1nowide.html">nowide</a></li><li class="navelem"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">utf8_codecvt< CharType, 4 ></a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt; Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>do_always_noconv</b>() const (defined in <a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>do_encoding</b>() const (defined in <a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>do_in</b>(std::mbstate_t &amp;, char const *from, char const *from_end, char const *&amp;from_next, uchar *to, uchar *to_end, uchar *&amp;to_next) const (defined in <a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>do_length</b>(std::mbstate_t &amp;, char const *from, char const *from_end, size_t max) const (defined in <a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>do_max_length</b>() const (defined in <a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>do_out</b>(std::mbstate_t &amp;std_state, uchar const *from, uchar const *from_end, uchar const *&amp;from_next, char *to, char *to_end, char *&amp;to_next) const (defined in <a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>do_unshift</b>(std::mbstate_t &amp;, char *from, char *, char *&amp;next) const (defined in <a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>uchar</b> typedef (defined in <a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>utf8_codecvt</b>(size_t refs=0) (defined in <a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;</a>)</td><td class="entry"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,115 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost::nowide::utf8_codecvt&lt; CharType, 4 &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>boost</b></li><li class="navelem"><a class="el" href="namespaceboost_1_1nowide.html">nowide</a></li><li class="navelem"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">utf8_codecvt< CharType, 4 ></a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-types">Protected Types</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;:</div>
<div class="dyncontent">
<div class="center">
<img src="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.png" usemap="#boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;_map" alt=""/>
<map id="boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;_map" name="boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;_map">
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ada2ba88dc55dd5c9f3ef168d563ee77d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada2ba88dc55dd5c9f3ef168d563ee77d"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>utf8_codecvt</b> (size_t refs=0)</td></tr>
<tr class="separator:ada2ba88dc55dd5c9f3ef168d563ee77d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
Protected Types</h2></td></tr>
<tr class="memitem:ac98739f22f5d8dcc5b80b02ad0daa3b7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac98739f22f5d8dcc5b80b02ad0daa3b7"></a>
typedef CharType&#160;</td><td class="memItemRight" valign="bottom"><b>uchar</b></td></tr>
<tr class="separator:ac98739f22f5d8dcc5b80b02ad0daa3b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a0ebd47dd3c0d8fabbe1456527f840bf3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0ebd47dd3c0d8fabbe1456527f840bf3"></a>
virtual std::codecvt_base::result&#160;</td><td class="memItemRight" valign="bottom"><b>do_unshift</b> (std::mbstate_t &amp;, char *from, char *, char *&amp;next) const </td></tr>
<tr class="separator:a0ebd47dd3c0d8fabbe1456527f840bf3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f6534d714b52b218c1bb83a441ec799"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8f6534d714b52b218c1bb83a441ec799"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>do_encoding</b> () const throw ()</td></tr>
<tr class="separator:a8f6534d714b52b218c1bb83a441ec799"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e21d80c2bd8709ef137ba99d38f0e31"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7e21d80c2bd8709ef137ba99d38f0e31"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>do_max_length</b> () const throw ()</td></tr>
<tr class="separator:a7e21d80c2bd8709ef137ba99d38f0e31"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a39140605a9cd51646ee6a46a7e559b83"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39140605a9cd51646ee6a46a7e559b83"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>do_always_noconv</b> () const throw ()</td></tr>
<tr class="separator:a39140605a9cd51646ee6a46a7e559b83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed4e49c29989ab3952e55b6d5a90ead8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed4e49c29989ab3952e55b6d5a90ead8"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>do_length</b> (std::mbstate_t &amp;, char const *from, char const *from_end, size_t max) const </td></tr>
<tr class="separator:aed4e49c29989ab3952e55b6d5a90ead8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1048a5db29fd2f2b3604d55d261027d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af1048a5db29fd2f2b3604d55d261027d"></a>
virtual std::codecvt_base::result&#160;</td><td class="memItemRight" valign="bottom"><b>do_in</b> (std::mbstate_t &amp;, char const *from, char const *from_end, char const *&amp;from_next, uchar *to, uchar *to_end, uchar *&amp;to_next) const </td></tr>
<tr class="separator:af1048a5db29fd2f2b3604d55d261027d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a917d59787f10f0e200028c520742fa57"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a917d59787f10f0e200028c520742fa57"></a>
virtual std::codecvt_base::result&#160;</td><td class="memItemRight" valign="bottom"><b>do_out</b> (std::mbstate_t &amp;std_state, uchar const *from, uchar const *from_end, uchar const *&amp;from_next, char *to, char *to_end, char *&amp;to_next) const </td></tr>
<tr class="separator:a917d59787f10f0e200028c520742fa57"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>boost/nowide/<a class="el" href="utf8__codecvt_8hpp_source.html">utf8_codecvt.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

72
doc/html/classes.html Normal file
View File

@@ -0,0 +1,72 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: Class Index</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Class Index</div> </div>
</div><!--header-->
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_A">A</a>&#160;|&#160;<a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_U">U</a></div>
<table style="margin: 10px; white-space: nowrap;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
<tr><td rowspan="2" valign="bottom"><a name="letter_a"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;a&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">basic_filebuf&lt; char &gt;</a> (<a class="el" href="namespaceboost_1_1nowide.html">boost::nowide</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a> (<a class="el" href="namespaceboost_1_1nowide.html">boost::nowide</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">utf8_codecvt&lt; CharType, 2 &gt;</a> (<a class="el" href="namespaceboost_1_1nowide.html">boost::nowide</a>)&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">basic_fstream</a> (<a class="el" href="namespaceboost_1_1nowide.html">boost::nowide</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_u"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;u&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">utf8_codecvt&lt; CharType, 4 &gt;</a> (<a class="el" href="namespaceboost_1_1nowide.html">boost::nowide</a>)&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="classboost_1_1nowide_1_1args.html">args</a> (<a class="el" href="namespaceboost_1_1nowide.html">boost::nowide</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">basic_ifstream</a> (<a class="el" href="namespaceboost_1_1nowide.html">boost::nowide</a>)&#160;&#160;&#160;</td><td></td></tr>
<tr><td rowspan="2" valign="bottom"><a name="letter_b"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;b&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">basic_ofstream</a> (<a class="el" href="namespaceboost_1_1nowide.html">boost::nowide</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt.html">utf8_codecvt</a> (<a class="el" href="namespaceboost_1_1nowide.html">boost::nowide</a>)&#160;&#160;&#160;</td><td></td></tr>
<tr><td></td><td></td><td></td></tr>
<tr><td valign="top"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf</a> (<a class="el" href="namespaceboost_1_1nowide.html">boost::nowide</a>)&#160;&#160;&#160;</td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td></tr>
</table>
<div class="qindex"><a class="qindex" href="#letter_A">A</a>&#160;|&#160;<a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_U">U</a></div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

BIN
doc/html/closed.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

View File

@@ -0,0 +1,114 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost/nowide/config.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c8984f1860c11f62f47abb6761e46c1e.html">boost</a></li><li class="navelem"><a class="el" href="dir_cba7cd329d8f45cf06543cd3b730d485.html">nowide</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">config.hpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// Copyright (c) 2012 Artyom Beilis (Tonkikh)</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Distributed under the Boost Software License, Version 1.0. (See</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// accompanying file LICENSE_1_0.txt or copy at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef BOOST_NOWIDE_CONFIG_HPP_INCLUDED</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define BOOST_NOWIDE_CONFIG_HPP_INCLUDED</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;boost/config.hpp&gt;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#ifndef BOOST_SYMBOL_VISIBLE</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor"># define BOOST_SYMBOL_VISIBLE</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifdef BOOST_HAS_DECLSPEC </span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor"># if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_NOWIDE_DYN_LINK)</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor"># ifdef BOOST_NOWIDE_SOURCE</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor"># define BOOST_NOWIDE_DECL BOOST_SYMBOL_EXPORT</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor"># else</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor"># define BOOST_NOWIDE_DECL BOOST_SYMBOL_IMPORT</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor"># endif // BOOST_NOWIDE_SOURCE</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"># endif // DYN_LINK</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#endif // BOOST_HAS_DECLSPEC</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#ifndef BOOST_NOWIDE_DECL</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor"># define BOOST_NOWIDE_DECL</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">// Automatically link to the correct build variant where possible. </span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#if !defined(BOOST_ALL_NO_LIB) &amp;&amp; !defined(BOOST_NOWIDE_NO_LIB) &amp;&amp; !defined(BOOST_NOWIDE_SOURCE)</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment">// Set the name of our library, this will get undef&#39;ed by auto_link.hpp</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">// once it&#39;s done with it:</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#define BOOST_LIB_NAME boost_nowide</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment">// If we&#39;re importing code from a dll, then tell auto_link.hpp about it:</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_NOWIDE_DYN_LINK)</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor"># define BOOST_DYN_LINK</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment">// And include the header that does the work:</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &lt;boost/config/auto_link.hpp&gt;</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#endif // auto-linking disabled</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#endif // boost/nowide/config.hpp</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment">// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,157 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost/nowide/convert.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c8984f1860c11f62f47abb6761e46c1e.html">boost</a></li><li class="navelem"><a class="el" href="dir_cba7cd329d8f45cf06543cd3b730d485.html">nowide</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">convert.hpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// Copyright (c) 2012 Artyom Beilis (Tonkikh)</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Distributed under the Boost Software License, Version 1.0. (See</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// accompanying file LICENSE_1_0.txt or copy at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef BOOST_NOWIDE_CONVERT_H_INCLUDED</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define BOOST_NOWIDE_CONVERT_H_INCLUDED</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;boost/locale/encoding_utf.hpp&gt;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="keyword">namespace </span>boost {</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keyword">namespace </span>nowide {</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharOut,<span class="keyword">typename</span> CharIn&gt;</div>
<div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#a5816b009227ad8cd668881dfb5429ece"> 26</a></span>&#160; CharOut *<a class="code" href="namespaceboost_1_1nowide.html#a5816b009227ad8cd668881dfb5429ece">basic_convert</a>(CharOut *buffer,<span class="keywordtype">size_t</span> buffer_size,CharIn <span class="keyword">const</span> *source_begin,CharIn <span class="keyword">const</span> *source_end)</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; {</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; CharOut *rv = buffer;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">if</span>(buffer_size == 0)</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; buffer_size --;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">while</span>(source_begin!=source_end) {</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">using namespace </span>boost::locale::utf;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; code_point c = utf_traits&lt;CharIn&gt;::template decode&lt;CharIn const *&gt;(source_begin,source_end);</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">if</span>(c==illegal || c==incomplete) {</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; rv = 0;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; }</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">size_t</span> width = utf_traits&lt;CharOut&gt;::width(c);</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">if</span>(buffer_size &lt; width) {</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; rv=0;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; }</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; buffer = utf_traits&lt;CharOut&gt;::template encode&lt;CharOut *&gt;(c,buffer);</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; buffer_size -= width;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; *buffer++ = 0;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">return</span> rv;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">namespace </span>details {</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="comment">// wcslen defined only in C99... So we will not use it</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Char&gt;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; Char <span class="keyword">const</span> *basic_strend(Char <span class="keyword">const</span> *s)</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">while</span>(*s)</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; s++;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> s;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div>
<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#ac2b772caed760a75f611c2dc24153e4a"> 73</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">char</span> *<a class="code" href="namespaceboost_1_1nowide.html#ac2b772caed760a75f611c2dc24153e4a">narrow</a>(<span class="keywordtype">char</span> *output,<span class="keywordtype">size_t</span> output_size,<span class="keywordtype">wchar_t</span> <span class="keyword">const</span> *source)</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1nowide.html#a5816b009227ad8cd668881dfb5429ece">basic_convert</a>(output,output_size,source,details::basic_strend(source));</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div>
<div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#a26caaed23d4adf0aa1ed0c1e218fad61"> 84</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">char</span> *<a class="code" href="namespaceboost_1_1nowide.html#ac2b772caed760a75f611c2dc24153e4a">narrow</a>(<span class="keywordtype">char</span> *output,<span class="keywordtype">size_t</span> output_size,<span class="keywordtype">wchar_t</span> <span class="keyword">const</span> *begin,<span class="keywordtype">wchar_t</span> <span class="keyword">const</span> *end)</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1nowide.html#a5816b009227ad8cd668881dfb5429ece">basic_convert</a>(output,output_size,begin,end);</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div>
<div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#a6baacc1bb80c134a2ce37f13977b5500"> 95</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">wchar_t</span> *<a class="code" href="namespaceboost_1_1nowide.html#a6baacc1bb80c134a2ce37f13977b5500">widen</a>(<span class="keywordtype">wchar_t</span> *output,<span class="keywordtype">size_t</span> output_size,<span class="keywordtype">char</span> <span class="keyword">const</span> *source)</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1nowide.html#a5816b009227ad8cd668881dfb5429ece">basic_convert</a>(output,output_size,source,details::basic_strend(source));</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div>
<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#a8bbb3c99ae08169220f3ba02ddf53a80"> 106</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">wchar_t</span> *<a class="code" href="namespaceboost_1_1nowide.html#a6baacc1bb80c134a2ce37f13977b5500">widen</a>(<span class="keywordtype">wchar_t</span> *output,<span class="keywordtype">size_t</span> output_size,<span class="keywordtype">char</span> <span class="keyword">const</span> *begin,<span class="keywordtype">char</span> <span class="keyword">const</span> *end)</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1nowide.html#a5816b009227ad8cd668881dfb5429ece">basic_convert</a>(output,output_size,begin,end);</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div>
<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#a13b4f6f7f97f889ec858dde2d367b130"> 117</a></span>&#160; <span class="keyword">inline</span> std::string <a class="code" href="namespaceboost_1_1nowide.html#ac2b772caed760a75f611c2dc24153e4a">narrow</a>(<span class="keywordtype">wchar_t</span> <span class="keyword">const</span> *s)</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> boost::locale::conv::utf_to_utf&lt;char&gt;(s);</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div>
<div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#aa914b18890c98fe5b9d1f1f9db53410a"> 126</a></span>&#160; <span class="keyword">inline</span> std::wstring <a class="code" href="namespaceboost_1_1nowide.html#a6baacc1bb80c134a2ce37f13977b5500">widen</a>(<span class="keywordtype">char</span> <span class="keyword">const</span> *s)</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">return</span> boost::locale::conv::utf_to_utf&lt;wchar_t&gt;(s);</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div>
<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#a3b237483918f54bc0ee7b0d750811fc6"> 135</a></span>&#160; <span class="keyword">inline</span> std::string <a class="code" href="namespaceboost_1_1nowide.html#ac2b772caed760a75f611c2dc24153e4a">narrow</a>(std::wstring <span class="keyword">const</span> &amp;s) </div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> boost::locale::conv::utf_to_utf&lt;char&gt;(s);</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div>
<div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#a478fc384f85c7fb53158d741d3cc066c"> 144</a></span>&#160; <span class="keyword">inline</span> std::wstring <a class="code" href="namespaceboost_1_1nowide.html#a6baacc1bb80c134a2ce37f13977b5500">widen</a>(std::string <span class="keyword">const</span> &amp;s) </div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; {</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">return</span> boost::locale::conv::utf_to_utf&lt;wchar_t&gt;(s);</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;} <span class="comment">// nowide</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;} <span class="comment">// namespace boost</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment">// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4</span></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_ac2b772caed760a75f611c2dc24153e4a"><div class="ttname"><a href="namespaceboost_1_1nowide.html#ac2b772caed760a75f611c2dc24153e4a">boost::nowide::narrow</a></div><div class="ttdeci">char * narrow(char *output, size_t output_size, wchar_t const *source)</div><div class="ttdef"><b>Definition:</b> convert.hpp:73</div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_a6baacc1bb80c134a2ce37f13977b5500"><div class="ttname"><a href="namespaceboost_1_1nowide.html#a6baacc1bb80c134a2ce37f13977b5500">boost::nowide::widen</a></div><div class="ttdeci">wchar_t * widen(wchar_t *output, size_t output_size, char const *source)</div><div class="ttdef"><b>Definition:</b> convert.hpp:95</div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_a5816b009227ad8cd668881dfb5429ece"><div class="ttname"><a href="namespaceboost_1_1nowide.html#a5816b009227ad8cd668881dfb5429ece">boost::nowide::basic_convert</a></div><div class="ttdeci">CharOut * basic_convert(CharOut *buffer, size_t buffer_size, CharIn const *source_begin, CharIn const *source_end)</div><div class="ttdoc">Template function that converts a buffer of UTF sequences in range [source_begin,source_end) to the o...</div><div class="ttdef"><b>Definition:</b> convert.hpp:26</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,144 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost/nowide/cstdio.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c8984f1860c11f62f47abb6761e46c1e.html">boost</a></li><li class="navelem"><a class="el" href="dir_cba7cd329d8f45cf06543cd3b730d485.html">nowide</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">cstdio.hpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// Copyright (c) 2012 Artyom Beilis (Tonkikh)</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Distributed under the Boost Software License, Version 1.0. (See</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// accompanying file LICENSE_1_0.txt or copy at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef BOOST_NOWIDE_CSTDIO_H_INCLUDED</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define BOOST_NOWIDE_CSTDIO_H_INCLUDED</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;cstdio&gt;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;boost/config.hpp&gt;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &lt;boost/nowide/convert.hpp&gt;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &lt;boost/nowide/stackstring.hpp&gt;</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &lt;errno.h&gt;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#ifdef BOOST_MSVC</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor"># pragma warning(push)</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor"># pragma warning(disable : 4996)</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">namespace </span>boost {</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">namespace </span>nowide {</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#if !defined(BOOST_WINDOWS) &amp;&amp; !defined(BOOST_NOWIDE_DOXYGEN)</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">using</span> std::fopen;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">using</span> std::freopen;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">using</span> std::remove;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">using</span> std::rename;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#adfd128693c677a8ad1266ee7b4cbdb41"> 38</a></span>&#160;<span class="keyword">inline</span> FILE *<a class="code" href="namespaceboost_1_1nowide.html#adfd128693c677a8ad1266ee7b4cbdb41">freopen</a>(<span class="keywordtype">char</span> <span class="keyword">const</span> *file_name,<span class="keywordtype">char</span> <span class="keyword">const</span> *mode,FILE *stream)</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">wstackstring</a> wname;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">wshort_stackstring</a> wmode;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">if</span>(!wname.convert(file_name) || !wmode.convert(mode)) {</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; errno = EINVAL;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">return</span> _wfreopen(wname.c_str(),wmode.c_str(),stream);</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;}</div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#a45d432e5684010f865702af97d47f087"> 53</a></span>&#160;<span class="keyword">inline</span> FILE *<a class="code" href="namespaceboost_1_1nowide.html#a45d432e5684010f865702af97d47f087">fopen</a>(<span class="keywordtype">char</span> <span class="keyword">const</span> *file_name,<span class="keywordtype">char</span> <span class="keyword">const</span> *mode)</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;{</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">wstackstring</a> wname;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">wshort_stackstring</a> wmode;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">if</span>(!wname.convert(file_name) || !wmode.convert(mode)) {</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; errno = EINVAL;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> _wfopen(wname.c_str(),wmode.c_str());</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div>
<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#abc7aa6b5fa4b6bbb9eead9e12efc967b"> 68</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1nowide.html#abc7aa6b5fa4b6bbb9eead9e12efc967b">rename</a>(<span class="keywordtype">char</span> <span class="keyword">const</span> *old_name,<span class="keywordtype">char</span> <span class="keyword">const</span> *new_name)</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;{</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">wstackstring</a> wold,wnew;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">if</span>(!wold.convert(old_name) || !wnew.convert(new_name)) {</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; errno = EINVAL;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> _wrename(wold.c_str(),wnew.c_str());</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;}</div>
<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#ae499659be3b7b42ede7f0674b953efaf"> 82</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> <span class="keyword">remove</span>(<span class="keywordtype">char</span> <span class="keyword">const</span> *name)</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;{</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">wstackstring</a> wname;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">if</span>(!wname.convert(name)) {</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; errno = EINVAL;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> _wremove(wname.c_str());</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;}</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;} <span class="comment">// nowide</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;} <span class="comment">// namespace boost</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor">#ifdef BOOST_MSVC</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="preprocessor">#pragma warning(pop)</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment">// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4</span></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_abc7aa6b5fa4b6bbb9eead9e12efc967b"><div class="ttname"><a href="namespaceboost_1_1nowide.html#abc7aa6b5fa4b6bbb9eead9e12efc967b">boost::nowide::rename</a></div><div class="ttdeci">int rename(char const *old_name, char const *new_name)</div><div class="ttdoc">Same as rename but old_name and new_name are UTF-8 strings. </div><div class="ttdef"><b>Definition:</b> cstdio.hpp:68</div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_adfd128693c677a8ad1266ee7b4cbdb41"><div class="ttname"><a href="namespaceboost_1_1nowide.html#adfd128693c677a8ad1266ee7b4cbdb41">boost::nowide::freopen</a></div><div class="ttdeci">FILE * freopen(char const *file_name, char const *mode, FILE *stream)</div><div class="ttdoc">Same as freopen but file_name and mode are UTF-8 strings. </div><div class="ttdef"><b>Definition:</b> cstdio.hpp:38</div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_a45d432e5684010f865702af97d47f087"><div class="ttname"><a href="namespaceboost_1_1nowide.html#a45d432e5684010f865702af97d47f087">boost::nowide::fopen</a></div><div class="ttdeci">FILE * fopen(char const *file_name, char const *mode)</div><div class="ttdoc">Same as fopen but file_name and mode are UTF-8 strings. </div><div class="ttdef"><b>Definition:</b> cstdio.hpp:53</div></div>
<div class="ttc" id="classboost_1_1nowide_1_1basic__stackstring_html"><div class="ttname"><a href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring</a></div><div class="ttdoc">A class that allows to create a temporary wide or narrow UTF strings from wide or narrow UTF source...</div><div class="ttdef"><b>Definition:</b> stackstring.hpp:25</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,75 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost/nowide/cstdlib.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c8984f1860c11f62f47abb6761e46c1e.html">boost</a></li><li class="navelem"><a class="el" href="dir_cba7cd329d8f45cf06543cd3b730d485.html">nowide</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">cstdlib.hpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// Copyright (c) 2012 Artyom Beilis (Tonkikh)</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Distributed under the Boost Software License, Version 1.0. (See</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// accompanying file LICENSE_1_0.txt or copy at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef BOOST_NOWIDE_CSTDLIB_HPP_INCLUDED</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define BOOST_NOWIDE_CSTDLIB_HPP_INCLUDED</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;boost/nowide/cenv.hpp&gt;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;boost/nowide/system.hpp&gt;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,61 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost/nowide/integration Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c8984f1860c11f62f47abb6761e46c1e.html">boost</a></li><li class="navelem"><a class="el" href="dir_cba7cd329d8f45cf06543cd3b730d485.html">nowide</a></li><li class="navelem"><a class="el" href="dir_ab6683690fd4be124cf09c612930f7a9.html">integration</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">integration Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:filesystem_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>filesystem.hpp</b> <a href="filesystem_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,61 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c8984f1860c11f62f47abb6761e46c1e.html">boost</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">boost Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
Directories</h2></td></tr>
<tr class="memitem:dir_cba7cd329d8f45cf06543cd3b730d485"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_cba7cd329d8f45cf06543cd3b730d485.html">nowide</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,90 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost/nowide Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c8984f1860c11f62f47abb6761e46c1e.html">boost</a></li><li class="navelem"><a class="el" href="dir_cba7cd329d8f45cf06543cd3b730d485.html">nowide</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">nowide Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
Directories</h2></td></tr>
<tr class="memitem:dir_ab6683690fd4be124cf09c612930f7a9"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_ab6683690fd4be124cf09c612930f7a9.html">integration</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:args_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>args.hpp</b> <a href="args_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:cenv_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>cenv.hpp</b> <a href="cenv_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:config_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>config.hpp</b> <a href="config_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:convert_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>convert.hpp</b> <a href="convert_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:cstdio_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>cstdio.hpp</b> <a href="cstdio_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:cstdlib_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>cstdlib.hpp</b> <a href="cstdlib_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:filebuf_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>filebuf.hpp</b> <a href="filebuf_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:fstream_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>fstream.hpp</b> <a href="fstream_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:iostream_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>iostream.hpp</b> <a href="iostream_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:stackstring_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>stackstring.hpp</b> <a href="stackstring_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:system_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>system.hpp</b> <a href="system_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:utf8__codecvt_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>utf8_codecvt.hpp</b> <a href="utf8__codecvt_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:windows_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>windows.hpp</b> <a href="windows_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

1440
doc/html/doxygen.css Normal file

File diff suppressed because it is too large Load Diff

BIN
doc/html/doxygen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

97
doc/html/dynsections.js Normal file
View File

@@ -0,0 +1,97 @@
function toggleVisibility(linkObj)
{
var base = $(linkObj).attr('id');
var summary = $('#'+base+'-summary');
var content = $('#'+base+'-content');
var trigger = $('#'+base+'-trigger');
var src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.hide();
summary.show();
$(linkObj).addClass('closed').removeClass('opened');
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
content.show();
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
}
return false;
}
function updateStripes()
{
$('table.directory tr').
removeClass('even').filter(':visible:even').addClass('even');
}
function toggleLevel(level)
{
$('table.directory tr').each(function() {
var l = this.id.split('_').length-1;
var i = $('#img'+this.id.substring(3));
var a = $('#arr'+this.id.substring(3));
if (l<level+1) {
i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
a.html('&#9660;');
$(this).show();
} else if (l==level+1) {
i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
a.html('&#9658;');
$(this).show();
} else {
$(this).hide();
}
});
updateStripes();
}
function toggleFolder(id)
{
// the clicked row
var currentRow = $('#row_'+id);
// all rows after the clicked row
var rows = currentRow.nextAll("tr");
var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
// only match elements AFTER this one (can't hide elements before)
var childRows = rows.filter(function() { return this.id.match(re); });
// first row is visible we are HIDING
if (childRows.filter(':first').is(':visible')===true) {
// replace down arrow by right arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
currentRowSpans.filter(".arrow").html('&#9658;');
rows.filter("[id^=row_"+id+"]").hide(); // hide all children
} else { // we are SHOWING
// replace right arrow by down arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
currentRowSpans.filter(".arrow").html('&#9660;');
// replace down arrows by right arrows for child rows
var childRowsSpans = childRows.find("span");
childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
childRowsSpans.filter(".arrow").html('&#9658;');
childRows.show(); //show all children
}
updateStripes();
}
function toggleInherit(id)
{
var rows = $('tr.inherit.'+id);
var img = $('tr.inherit_header.'+id+' img');
var src = $(img).attr('src');
if (rows.filter(':first').is(':visible')===true) {
rows.css('display','none');
$(img).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
rows.css('display','table-row'); // using show() causes jump in firefox
$(img).attr('src',src.substring(0,src.length-10)+'open.png');
}
}

View File

@@ -0,0 +1,455 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost/nowide/filebuf.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c8984f1860c11f62f47abb6761e46c1e.html">boost</a></li><li class="navelem"><a class="el" href="dir_cba7cd329d8f45cf06543cd3b730d485.html">nowide</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">filebuf.hpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// Copyright (c) 2012 Artyom Beilis (Tonkikh)</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Distributed under the Boost Software License, Version 1.0. (See</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// accompanying file LICENSE_1_0.txt or copy at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef BOOST_NOWIDE_FILEBUF_HPP</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define BOOST_NOWIDE_FILEBUF_HPP</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;iosfwd&gt;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;boost/config.hpp&gt;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;boost/nowide/stackstring.hpp&gt;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &lt;fstream&gt;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &lt;streambuf&gt;</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#ifdef BOOST_MSVC</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor"># pragma warning(push)</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor"># pragma warning(disable : 4996 4244 4800)</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">namespace </span>boost {</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">namespace </span>nowide {</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#if !defined(BOOST_WINDOWS) &amp;&amp; !defined(BOOST_NOWIDE_FSTREAM_TESTS) &amp;&amp; !defined(BOOST_NOWIDE_DOXYGEN)</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">using</span> std::basic_filebuf;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">using</span> std::filebuf;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#else // Windows</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType,<span class="keyword">typename</span> Traits = std::<span class="keywordtype">char</span>_traits&lt;CharType&gt; &gt;</div>
<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classboost_1_1nowide_1_1basic__filebuf.html"> 38</a></span>&#160; <span class="keyword">class </span><a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf</a>;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; </div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">template</span>&lt;&gt;</div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html"> 47</a></span>&#160; <span class="keyword">class </span><a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf</a>&lt;char&gt; : <span class="keyword">public</span> std::basic_streambuf&lt;char&gt; {</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#acb60c4ffe2ba0d574f348ee4e7c02029"> 52</a></span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#acb60c4ffe2ba0d574f348ee4e7c02029">basic_filebuf</a>() : </div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; buffer_size_(4),</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; buffer_(0),</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; file_(0),</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; own_(true),</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; mode_(std::ios::in | std::ios::out)</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; setg(0,0,0);</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; setp(0,0);</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; </div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf</a>()</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">if</span>(file_) {</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; ::fclose(file_);</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; file_ = 0;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">if</span>(own_ &amp;&amp; buffer_)</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">delete</span> [] buffer_;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; </div>
<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a1e5de49ebc04817924f64687c709b876"> 76</a></span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf</a> *<a class="code" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a1e5de49ebc04817924f64687c709b876">open</a>(std::string <span class="keyword">const</span> &amp;s,std::ios_base::openmode mode)</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> open(s.c_str(),mode);</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div>
<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a72533238e5f64668fca85fa9655360df"> 83</a></span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf</a> *<a class="code" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a72533238e5f64668fca85fa9655360df">open</a>(<span class="keywordtype">char</span> <span class="keyword">const</span> *s,std::ios_base::openmode mode)</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">if</span>(file_) {</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; sync();</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; ::fclose(file_);</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; file_ = 0;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordtype">bool</span> ate = bool(mode &amp; std::ios_base::ate);</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span>(ate)</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; mode = mode ^ std::ios_base::ate;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordtype">wchar_t</span> <span class="keyword">const</span> *smode = get_mode(mode);</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span>(!smode)</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">wstackstring</a> name;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">if</span>(!name.convert(s)) </div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor"> #ifdef BOOST_NOWIDE_FSTREAM_TESTS</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; FILE *f = <a class="code" href="namespaceboost_1_1nowide.html#a45d432e5684010f865702af97d47f087">::fopen</a>(s,boost::nowide::convert(smode).c_str());</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="preprocessor"> #else</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; FILE *f = ::_wfopen(name.c_str(),smode);</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span>(!f)</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span>(ate &amp;&amp; fseek(f,0,SEEK_END)!=0) {</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; fclose(f);</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; file_ = f;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">return</span> <span class="keyword">this</span>;</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div>
<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a5d28c29a18add5fbcd0456e75be753a6"> 116</a></span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf</a> *<a class="code" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a5d28c29a18add5fbcd0456e75be753a6">close</a>()</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">bool</span> res = sync() == 0;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span>(file_) {</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span>(::fclose(file_)!=0)</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; res = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; file_ = 0;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> res ? <span class="keyword">this</span> : 0;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div>
<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a23b677285f14f7f1619d5652e043bc06"> 129</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a23b677285f14f7f1619d5652e043bc06">is_open</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">return</span> file_ != 0;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordtype">void</span> make_buffer()</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span>(buffer_)</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">if</span>(buffer_size_ &gt; 0) {</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; buffer_ = <span class="keyword">new</span> <span class="keywordtype">char</span> [buffer_size_];</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; own_ = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; </div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keyword">virtual</span> std::streambuf *setbuf(<span class="keywordtype">char</span> *s,std::streamsize n)</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">if</span>(!buffer_ &amp;&amp; n&gt;=0) {</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; buffer_ = s;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; buffer_size_ = n;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; own_ = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> <span class="keyword">this</span>;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; </div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="preprocessor">#ifdef BOOST_NOWIDE_DEBUG_FILEBUF</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordtype">void</span> print_buf(<span class="keywordtype">char</span> *b,<span class="keywordtype">char</span> *p,<span class="keywordtype">char</span> *e)</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; std::cerr &lt;&lt; <span class="stringliteral">&quot;-- Is Null: &quot;</span> &lt;&lt; (b==0) &lt;&lt; std::endl;; </div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">if</span>(b==0)</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">if</span>(e != 0)</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; std::cerr &lt;&lt; <span class="stringliteral">&quot;-- Total: &quot;</span> &lt;&lt; e - b &lt;&lt;<span class="stringliteral">&quot; offset from start &quot;</span> &lt;&lt; p - b &lt;&lt; std::endl;</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; std::cerr &lt;&lt; <span class="stringliteral">&quot;-- Total: &quot;</span> &lt;&lt; p - b &lt;&lt; std::endl;</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; </div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; std::cerr &lt;&lt; <span class="stringliteral">&quot;-- [&quot;</span>;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">char</span> *ptr = b;ptr&lt;p;ptr++)</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; std::cerr &lt;&lt; *ptr;</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">if</span>(e!=0) {</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; std::cerr &lt;&lt; <span class="stringliteral">&quot;|&quot;</span>;</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">char</span> *ptr = p;ptr&lt;e;ptr++)</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; std::cerr &lt;&lt; *ptr;</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; std::cerr &lt;&lt; <span class="stringliteral">&quot;]&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; </div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; </div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordtype">void</span> print_state()</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; {</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; std::cerr &lt;&lt; <span class="stringliteral">&quot;- Output:&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; print_buf(pbase(),pptr(),0);</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; std::cerr &lt;&lt; <span class="stringliteral">&quot;- Input:&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; print_buf(eback(),gptr(),egptr());</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; std::cerr &lt;&lt; <span class="stringliteral">&quot;- fpos: &quot;</span> &lt;&lt; (file_ ? ftell(file_) : -1L) &lt;&lt; std::endl;</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; </div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keyword">struct </span>print_guard</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; {</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; print_guard(basic_filebuf *p,<span class="keywordtype">char</span> <span class="keyword">const</span> *func)</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; {</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keyword">self</span> = p;</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; f=func;</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; std::cerr &lt;&lt; <span class="stringliteral">&quot;In: &quot;</span> &lt;&lt; f &lt;&lt; std::endl;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keyword">self</span>-&gt;print_state();</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; ~print_guard()</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; std::cerr &lt;&lt; <span class="stringliteral">&quot;Out: &quot;</span> &lt;&lt; f &lt;&lt; std::endl;</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keyword">self</span>-&gt;print_state();</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; basic_filebuf *<span class="keyword">self</span>;</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordtype">char</span> <span class="keyword">const</span> *f;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; };</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="preprocessor">#endif </span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; </div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordtype">int</span> overflow(<span class="keywordtype">int</span> c)</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; {</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="preprocessor">#ifdef BOOST_NOWIDE_DEBUG_FILEBUF</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; print_guard g(<span class="keyword">this</span>,__FUNCTION__);</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="preprocessor">#endif </span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">if</span>(!file_)</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">return</span> EOF;</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; </div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">if</span>(fixg() &lt; 0)</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> EOF;</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordtype">size_t</span> n = pptr() - pbase();</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">if</span>(n &gt; 0) {</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span>(::fwrite(pbase(),1,n,file_) &lt; n)</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; fflush(file_);</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span>(buffer_size_ &gt; 0) {</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; make_buffer();</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; setp(buffer_,buffer_+buffer_size_);</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span>(c!=EOF)</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; sputc(c);</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(c!=EOF) {</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">if</span>(::fputc(c,file_)==EOF)</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">return</span> EOF;</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; fflush(file_);</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; </div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; </div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordtype">int</span> sync()</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; {</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span> overflow(EOF);</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordtype">int</span> underflow()</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; {</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="preprocessor">#ifdef BOOST_NOWIDE_DEBUG_FILEBUF</span></div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; print_guard g(<span class="keyword">this</span>,__FUNCTION__);</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="preprocessor">#endif </span></div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">if</span>(!file_)</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> EOF;</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">if</span>(fixp() &lt; 0)</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">return</span> EOF;</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">if</span>(buffer_size_ == 0) {</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordtype">int</span> c = ::fgetc(file_);</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span>(c==EOF) {</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">return</span> EOF;</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; last_char_ = c;</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; setg(&amp;last_char_,&amp;last_char_,&amp;last_char_ + 1);</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">return</span> c;</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; }</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; make_buffer();</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordtype">size_t</span> n = ::fread(buffer_,1,buffer_size_,file_);</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; setg(buffer_,buffer_,buffer_+n);</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">if</span>(n == 0)</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">return</span> EOF;</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">return</span> std::char_traits&lt;char&gt;::to_int_type(*gptr());</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; }</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordtype">int</span> pbackfail(<span class="keywordtype">int</span>)</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; {</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">return</span> pubseekoff(-1,std::ios::cur);</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; std::streampos seekoff(std::streamoff off,</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; std::ios_base::seekdir seekdir,</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; std::ios_base::openmode <span class="comment">/*m*/</span>)</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="preprocessor">#ifdef BOOST_NOWIDE_DEBUG_FILEBUF</span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; print_guard g(<span class="keyword">this</span>,__FUNCTION__);</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="preprocessor">#endif </span></div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">if</span>(!file_)</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span> EOF;</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">if</span>(fixp() &lt; 0 || fixg() &lt; 0)</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">return</span> EOF;</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">if</span>(seekdir == std::ios_base::cur) {</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">if</span>( ::fseek(file_,off,SEEK_CUR) &lt; 0)</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> EOF;</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(seekdir == std::ios_base::beg) {</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">if</span>( ::fseek(file_,off,SEEK_SET) &lt; 0)</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">return</span> EOF;</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(seekdir == std::ios_base::end) {</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">if</span>( ::fseek(file_,off,SEEK_END) &lt; 0)</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">return</span> EOF;</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">return</span> ftell(file_);</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; std::streampos seekpos(std::streampos off,std::ios_base::openmode m)</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; {</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">return</span> seekoff(std::streamoff(off),std::ios_base::beg,m);</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordtype">int</span> fixg()</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; {</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">if</span>(gptr()!=egptr()) {</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; std::streamsize off = gptr() - egptr();</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; setg(0,0,0);</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">if</span>(fseek(file_,off,SEEK_CUR) != 0)</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; setg(0,0,0);</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; </div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordtype">int</span> fixp()</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; {</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">if</span>(pptr()!=0) {</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordtype">int</span> r = sync();</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; setp(0,0);</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">return</span> r;</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordtype">void</span> reset(FILE *f = 0)</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; sync();</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">if</span>(file_) {</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; fclose(file_);</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; file_ = 0;</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; }</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; file_ = f;</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; }</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; </div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; </div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keyword">static</span> <span class="keywordtype">wchar_t</span> <span class="keyword">const</span> *get_mode(std::ios_base::openmode mode)</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; {</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="comment">// done according to n2914 table 106 27.9.1.4</span></div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="comment">// note can&#39;t use switch case as overload operator can&#39;t be used</span></div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="comment">// in constant expression</span></div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">if</span>(mode == (std::ios_base::out))</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">return</span> L<span class="stringliteral">&quot;w&quot;</span>;</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">if</span>(mode == (std::ios_base::out | std::ios_base::app))</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">return</span> L<span class="stringliteral">&quot;a&quot;</span>;</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">if</span>(mode == (std::ios_base::app))</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> L<span class="stringliteral">&quot;a&quot;</span>;</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">if</span>(mode == (std::ios_base::out | std::ios_base::trunc))</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">return</span> L<span class="stringliteral">&quot;w&quot;</span>;</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">if</span>(mode == (std::ios_base::in))</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">return</span> L<span class="stringliteral">&quot;r&quot;</span>;</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">if</span>(mode == (std::ios_base::in | std::ios_base::out))</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">return</span> L<span class="stringliteral">&quot;r+&quot;</span>;</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">if</span>(mode == (std::ios_base::in | std::ios_base::out | std::ios_base::trunc))</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">return</span> L<span class="stringliteral">&quot;w+&quot;</span>;</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">if</span>(mode == (std::ios_base::in | std::ios_base::out | std::ios_base::app))</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">return</span> L<span class="stringliteral">&quot;a+&quot;</span>;</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">if</span>(mode == (std::ios_base::in | std::ios_base::app))</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">return</span> L<span class="stringliteral">&quot;a+&quot;</span>;</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">if</span>(mode == (std::ios_base::binary | std::ios_base::out))</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">return</span> L<span class="stringliteral">&quot;wb&quot;</span>;</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">if</span>(mode == (std::ios_base::binary | std::ios_base::out | std::ios_base::app))</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">return</span> L<span class="stringliteral">&quot;ab&quot;</span>;</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">if</span>(mode == (std::ios_base::binary | std::ios_base::app))</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">return</span> L<span class="stringliteral">&quot;ab&quot;</span>;</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">if</span>(mode == (std::ios_base::binary | std::ios_base::out | std::ios_base::trunc))</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">return</span> L<span class="stringliteral">&quot;wb&quot;</span>;</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">if</span>(mode == (std::ios_base::binary | std::ios_base::in))</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">return</span> L<span class="stringliteral">&quot;rb&quot;</span>;</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">if</span>(mode == (std::ios_base::binary | std::ios_base::in | std::ios_base::out))</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">return</span> L<span class="stringliteral">&quot;r+b&quot;</span>;</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">if</span>(mode == (std::ios_base::binary | std::ios_base::in | std::ios_base::out | std::ios_base::trunc))</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">return</span> L<span class="stringliteral">&quot;w+b&quot;</span>;</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">if</span>(mode == (std::ios_base::binary | std::ios_base::in | std::ios_base::out | std::ios_base::app))</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">return</span> L<span class="stringliteral">&quot;a+b&quot;</span>;</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">if</span>(mode == (std::ios_base::binary | std::ios_base::in | std::ios_base::app))</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">return</span> L<span class="stringliteral">&quot;a+b&quot;</span>;</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">return</span> 0; </div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; }</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; </div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordtype">size_t</span> buffer_size_;</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordtype">char</span> *buffer_;</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; FILE *file_;</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordtype">bool</span> own_;</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordtype">char</span> last_char_;</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; std::ios::openmode mode_;</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; };</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; </div>
<div class="line"><a name="l00401"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#aa2709df55bd08ca25c97f047afec0ba0"> 401</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">basic_filebuf&lt;char&gt;</a> <a class="code" href="namespaceboost_1_1nowide.html#aa2709df55bd08ca25c97f047afec0ba0">filebuf</a>;</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; </div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="preprocessor"> #endif // windows</span></div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; </div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;} <span class="comment">// nowide</span></div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;} <span class="comment">// namespace boost</span></div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;<span class="preprocessor">#ifdef BOOST_MSVC</span></div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="preprocessor"># pragma warning(pop)</span></div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="comment">// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4</span></div>
<div class="ttc" id="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4_html_a5d28c29a18add5fbcd0456e75be753a6"><div class="ttname"><a href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a5d28c29a18add5fbcd0456e75be753a6">boost::nowide::basic_filebuf&lt; char &gt;::close</a></div><div class="ttdeci">basic_filebuf * close()</div><div class="ttdef"><b>Definition:</b> filebuf.hpp:116</div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_a45d432e5684010f865702af97d47f087"><div class="ttname"><a href="namespaceboost_1_1nowide.html#a45d432e5684010f865702af97d47f087">boost::nowide::fopen</a></div><div class="ttdeci">FILE * fopen(char const *file_name, char const *mode)</div><div class="ttdoc">Same as fopen but file_name and mode are UTF-8 strings. </div><div class="ttdef"><b>Definition:</b> cstdio.hpp:53</div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_aa2709df55bd08ca25c97f047afec0ba0"><div class="ttname"><a href="namespaceboost_1_1nowide.html#aa2709df55bd08ca25c97f047afec0ba0">boost::nowide::filebuf</a></div><div class="ttdeci">basic_filebuf&lt; char &gt; filebuf</div><div class="ttdoc">Convinience typedef. </div><div class="ttdef"><b>Definition:</b> filebuf.hpp:401</div></div>
<div class="ttc" id="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4_html_a23b677285f14f7f1619d5652e043bc06"><div class="ttname"><a href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a23b677285f14f7f1619d5652e043bc06">boost::nowide::basic_filebuf&lt; char &gt;::is_open</a></div><div class="ttdeci">bool is_open() const </div><div class="ttdef"><b>Definition:</b> filebuf.hpp:129</div></div>
<div class="ttc" id="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4_html_a72533238e5f64668fca85fa9655360df"><div class="ttname"><a href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a72533238e5f64668fca85fa9655360df">boost::nowide::basic_filebuf&lt; char &gt;::open</a></div><div class="ttdeci">basic_filebuf * open(char const *s, std::ios_base::openmode mode)</div><div class="ttdef"><b>Definition:</b> filebuf.hpp:83</div></div>
<div class="ttc" id="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4_html_acb60c4ffe2ba0d574f348ee4e7c02029"><div class="ttname"><a href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#acb60c4ffe2ba0d574f348ee4e7c02029">boost::nowide::basic_filebuf&lt; char &gt;::basic_filebuf</a></div><div class="ttdeci">basic_filebuf()</div><div class="ttdef"><b>Definition:</b> filebuf.hpp:52</div></div>
<div class="ttc" id="classboost_1_1nowide_1_1basic__filebuf_html"><div class="ttname"><a href="classboost_1_1nowide_1_1basic__filebuf.html">boost::nowide::basic_filebuf</a></div><div class="ttdoc">This forward declaration defined the basic_filebuf type. </div><div class="ttdef"><b>Definition:</b> filebuf.hpp:38</div></div>
<div class="ttc" id="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4_html"><div class="ttname"><a href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a></div><div class="ttdoc">This is implementation of std::filebuf. </div><div class="ttdef"><b>Definition:</b> filebuf.hpp:47</div></div>
<div class="ttc" id="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4_html_a1e5de49ebc04817924f64687c709b876"><div class="ttname"><a href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a1e5de49ebc04817924f64687c709b876">boost::nowide::basic_filebuf&lt; char &gt;::open</a></div><div class="ttdeci">basic_filebuf * open(std::string const &amp;s, std::ios_base::openmode mode)</div><div class="ttdef"><b>Definition:</b> filebuf.hpp:76</div></div>
<div class="ttc" id="classboost_1_1nowide_1_1basic__stackstring_html"><div class="ttname"><a href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring</a></div><div class="ttdoc">A class that allows to create a temporary wide or narrow UTF strings from wide or narrow UTF source...</div><div class="ttdef"><b>Definition:</b> stackstring.hpp:25</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

77
doc/html/files.html Normal file
View File

@@ -0,0 +1,77 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: File List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">File List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')">&#160;</span><a class="el" href="dir_c8984f1860c11f62f47abb6761e46c1e.html" target="_self">boost</a></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9660;</span><span id="img_0_0_" class="iconfopen" onclick="toggleFolder('0_0_')">&#160;</span><a class="el" href="dir_cba7cd329d8f45cf06543cd3b730d485.html" target="_self">nowide</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_0_0_" class="arrow" onclick="toggleFolder('0_0_0_')">&#9660;</span><span id="img_0_0_0_" class="iconfopen" onclick="toggleFolder('0_0_0_')">&#160;</span><a class="el" href="dir_ab6683690fd4be124cf09c612930f7a9.html" target="_self">integration</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_0_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="filesystem_8hpp_source.html"><span class="icondoc"></span></a><b>filesystem.hpp</b></td><td class="desc"></td></tr>
<tr id="row_0_0_1_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="args_8hpp_source.html"><span class="icondoc"></span></a><b>args.hpp</b></td><td class="desc"></td></tr>
<tr id="row_0_0_2_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="cenv_8hpp_source.html"><span class="icondoc"></span></a><b>cenv.hpp</b></td><td class="desc"></td></tr>
<tr id="row_0_0_3_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="config_8hpp_source.html"><span class="icondoc"></span></a><b>config.hpp</b></td><td class="desc"></td></tr>
<tr id="row_0_0_4_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="convert_8hpp_source.html"><span class="icondoc"></span></a><b>convert.hpp</b></td><td class="desc"></td></tr>
<tr id="row_0_0_5_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="cstdio_8hpp_source.html"><span class="icondoc"></span></a><b>cstdio.hpp</b></td><td class="desc"></td></tr>
<tr id="row_0_0_6_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="cstdlib_8hpp_source.html"><span class="icondoc"></span></a><b>cstdlib.hpp</b></td><td class="desc"></td></tr>
<tr id="row_0_0_7_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="filebuf_8hpp_source.html"><span class="icondoc"></span></a><b>filebuf.hpp</b></td><td class="desc"></td></tr>
<tr id="row_0_0_8_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="fstream_8hpp_source.html"><span class="icondoc"></span></a><b>fstream.hpp</b></td><td class="desc"></td></tr>
<tr id="row_0_0_9_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="iostream_8hpp_source.html"><span class="icondoc"></span></a><b>iostream.hpp</b></td><td class="desc"></td></tr>
<tr id="row_0_0_10_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="stackstring_8hpp_source.html"><span class="icondoc"></span></a><b>stackstring.hpp</b></td><td class="desc"></td></tr>
<tr id="row_0_0_11_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="system_8hpp_source.html"><span class="icondoc"></span></a><b>system.hpp</b></td><td class="desc"></td></tr>
<tr id="row_0_0_12_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="utf8__codecvt_8hpp_source.html"><span class="icondoc"></span></a><b>utf8_codecvt.hpp</b></td><td class="desc"></td></tr>
<tr id="row_0_0_13_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="windows_8hpp_source.html"><span class="icondoc"></span></a><b>windows.hpp</b></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,86 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost/nowide/integration/filesystem.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c8984f1860c11f62f47abb6761e46c1e.html">boost</a></li><li class="navelem"><a class="el" href="dir_cba7cd329d8f45cf06543cd3b730d485.html">nowide</a></li><li class="navelem"><a class="el" href="dir_ab6683690fd4be124cf09c612930f7a9.html">integration</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">filesystem.hpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// Copyright (c) 2012 Artyom Beilis (Tonkikh)</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Distributed under the Boost Software License, Version 1.0. (See</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// accompanying file LICENSE_1_0.txt or copy at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef BOOST_NOWIDE_INTEGRATION_FILESYSTEM_HPP_INCLUDED</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define BOOST_NOWIDE_INTEGRATION_FILESYSTEM_HPP_INCLUDED</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;boost/filesystem/path.hpp&gt;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;boost/nowide/utf8_codecvt.hpp&gt;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="keyword">namespace </span>boost {</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <span class="keyword">namespace </span>nowide {</div>
<div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#a7f94a60d0a9e5534a6dcc41bbc826ee8"> 18</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1nowide.html#a7f94a60d0a9e5534a6dcc41bbc826ee8">nowide_filesystem</a>()</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; {</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; std::locale tmp = std::locale(std::locale(),<span class="keyword">new</span> <a class="code" href="classboost_1_1nowide_1_1utf8__codecvt.html">boost::nowide::utf8_codecvt&lt;wchar_t&gt;</a>());</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; boost::filesystem::path::imbue(tmp);</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; }</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; } <span class="comment">// nowide</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;} <span class="comment">// boost</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4</span></div>
<div class="ttc" id="classboost_1_1nowide_1_1utf8__codecvt_html"><div class="ttname"><a href="classboost_1_1nowide_1_1utf8__codecvt.html">boost::nowide::utf8_codecvt</a></div><div class="ttdef"><b>Definition:</b> utf8_codecvt.hpp:30</div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_a7f94a60d0a9e5534a6dcc41bbc826ee8"><div class="ttname"><a href="namespaceboost_1_1nowide.html#a7f94a60d0a9e5534a6dcc41bbc826ee8">boost::nowide::nowide_filesystem</a></div><div class="ttdeci">void nowide_filesystem()</div><div class="ttdef"><b>Definition:</b> filesystem.hpp:18</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,326 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost/nowide/fstream.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c8984f1860c11f62f47abb6761e46c1e.html">boost</a></li><li class="navelem"><a class="el" href="dir_cba7cd329d8f45cf06543cd3b730d485.html">nowide</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">fstream.hpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// Copyright (c) 2012 Artyom Beilis (Tonkikh)</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Distributed under the Boost Software License, Version 1.0. (See</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// accompanying file LICENSE_1_0.txt or copy at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef BOOST_NOWIDE_FSTREAM_INCLUDED_HPP</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define BOOST_NOWIDE_FSTREAM_INCLUDED_HPP</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;iosfwd&gt;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;boost/config.hpp&gt;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;boost/nowide/convert.hpp&gt;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &lt;boost/scoped_ptr.hpp&gt;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &lt;fstream&gt;</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;boost/nowide/filebuf.hpp&gt;</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="keyword">namespace </span>boost {</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">namespace </span>nowide {</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#if !defined(BOOST_WINDOWS) &amp;&amp; !defined(BOOST_NOWIDE_FSTREAM_TESTS) &amp;&amp; !defined(BOOST_NOWIDE_DOXYGEN)</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">using</span> std::basic_ifstream;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">using</span> std::basic_ofstream;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">using</span> std::basic_fstream;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">using</span> std::ifstream;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">using</span> std::ofstream;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">using</span> std::fstream;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType,<span class="keyword">typename</span> Traits = std::<span class="keywordtype">char</span>_traits&lt;CharType&gt; &gt;</div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classboost_1_1nowide_1_1basic__ifstream.html"> 40</a></span>&#160; <span class="keyword">class </span><a class="code" href="classboost_1_1nowide_1_1basic__ifstream.html">basic_ifstream</a> : <span class="keyword">public</span> std::basic_istream&lt;CharType,Traits&gt;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf&lt;CharType,Traits&gt;</a> <a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">internal_buffer_type</a>;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">typedef</span> std::basic_istream&lt;CharType,Traits&gt; internal_stream_type;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__ifstream.html">basic_ifstream</a>() : </div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; internal_stream_type(0)</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; buf_.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">internal_buffer_type</a>());</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; std::ios::rdbuf(buf_.get());</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; }</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; </div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classboost_1_1nowide_1_1basic__ifstream.html">basic_ifstream</a>(<span class="keywordtype">char</span> <span class="keyword">const</span> *file_name,std::ios_base::openmode mode = std::ios_base::in) : </div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; internal_stream_type(0) </div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; buf_.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">internal_buffer_type</a>());</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; std::ios::rdbuf(buf_.get());</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; open(file_name,mode);</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classboost_1_1nowide_1_1basic__ifstream.html">basic_ifstream</a>(std::string <span class="keyword">const</span> &amp;file_name,std::ios_base::openmode mode = std::ios_base::in) : </div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; internal_stream_type(0) </div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; buf_.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">internal_buffer_type</a>());</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; std::ios::rdbuf(buf_.get());</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; open(file_name,mode);</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; </div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">void</span> open(std::string <span class="keyword">const</span> &amp;file_name,std::ios_base::openmode mode = std::ios_base::in)</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; open(file_name.c_str(),mode);</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">void</span> open(<span class="keywordtype">char</span> <span class="keyword">const</span> *file_name,std::ios_base::openmode mode = std::ios_base::in)</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span>(!buf_-&gt;open(file_name,mode | std::ios_base::in)) {</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; this-&gt;setstate(std::ios_base::failbit);</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; this-&gt;clear();</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">bool</span> is_open()</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> buf_-&gt;is_open();</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordtype">bool</span> is_open()<span class="keyword"> const</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> buf_-&gt;is_open();</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">void</span> close()</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span>(!buf_-&gt;close())</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; this-&gt;setstate(std::ios_base::failbit);</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; this-&gt;clear();</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">internal_buffer_type</a> *rdbuf()<span class="keyword"> const</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> buf_.get();</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; ~<a class="code" href="classboost_1_1nowide_1_1basic__ifstream.html">basic_ifstream</a>()</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; {</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; buf_-&gt;close();</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; </div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; boost::scoped_ptr&lt;internal_buffer_type&gt; buf_;</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; };</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType,<span class="keyword">typename</span> Traits = std::<span class="keywordtype">char</span>_traits&lt;CharType&gt; &gt;</div>
<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classboost_1_1nowide_1_1basic__ofstream.html"> 117</a></span>&#160; <span class="keyword">class </span><a class="code" href="classboost_1_1nowide_1_1basic__ofstream.html">basic_ofstream</a> : <span class="keyword">public</span> std::basic_ostream&lt;CharType,Traits&gt;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf&lt;CharType,Traits&gt;</a> <a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">internal_buffer_type</a>;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">typedef</span> std::basic_ostream&lt;CharType,Traits&gt; internal_stream_type;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__ofstream.html">basic_ofstream</a>() : </div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; internal_stream_type(0)</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; buf_.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">internal_buffer_type</a>());</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; std::ios::rdbuf(buf_.get());</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classboost_1_1nowide_1_1basic__ofstream.html">basic_ofstream</a>(<span class="keywordtype">char</span> <span class="keyword">const</span> *file_name,std::ios_base::openmode mode = std::ios_base::out) :</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; internal_stream_type(0)</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; buf_.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">internal_buffer_type</a>());</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; std::ios::rdbuf(buf_.get());</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; open(file_name,mode);</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classboost_1_1nowide_1_1basic__ofstream.html">basic_ofstream</a>(std::string <span class="keyword">const</span> &amp;file_name,std::ios_base::openmode mode = std::ios_base::out) :</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; internal_stream_type(0)</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; {</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; buf_.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">internal_buffer_type</a>());</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; std::ios::rdbuf(buf_.get());</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; open(file_name,mode);</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordtype">void</span> open(std::string <span class="keyword">const</span> &amp;file_name,std::ios_base::openmode mode = std::ios_base::out)</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; {</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; open(file_name.c_str(),mode);</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordtype">void</span> open(<span class="keywordtype">char</span> <span class="keyword">const</span> *file_name,std::ios_base::openmode mode = std::ios_base::out)</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">if</span>(!buf_-&gt;open(file_name,mode | std::ios_base::out)) {</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; this-&gt;setstate(std::ios_base::failbit);</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; this-&gt;clear();</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordtype">bool</span> is_open()</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; {</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">return</span> buf_-&gt;is_open();</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordtype">bool</span> is_open()<span class="keyword"> const</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">return</span> buf_-&gt;is_open();</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordtype">void</span> close()</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">if</span>(!buf_-&gt;close())</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; this-&gt;setstate(std::ios_base::failbit);</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; this-&gt;clear();</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">internal_buffer_type</a> *rdbuf()<span class="keyword"> const</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">return</span> buf_.get();</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; ~<a class="code" href="classboost_1_1nowide_1_1basic__ofstream.html">basic_ofstream</a>()</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; {</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; buf_-&gt;close();</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; </div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; boost::scoped_ptr&lt;internal_buffer_type&gt; buf_;</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; };</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType,<span class="keyword">typename</span> Traits = std::<span class="keywordtype">char</span>_traits&lt;CharType&gt; &gt;</div>
<div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classboost_1_1nowide_1_1basic__fstream.html"> 190</a></span>&#160; <span class="keyword">class </span><a class="code" href="classboost_1_1nowide_1_1basic__fstream.html">basic_fstream</a> : <span class="keyword">public</span> std::basic_iostream&lt;CharType,Traits&gt;</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; {</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf&lt;CharType,Traits&gt;</a> <a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">internal_buffer_type</a>;</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keyword">typedef</span> std::basic_iostream&lt;CharType,Traits&gt; internal_stream_type;</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__fstream.html">basic_fstream</a>() : </div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; internal_stream_type(0)</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; {</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; buf_.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">internal_buffer_type</a>());</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; std::ios::rdbuf(buf_.get());</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classboost_1_1nowide_1_1basic__fstream.html">basic_fstream</a>(<span class="keywordtype">char</span> <span class="keyword">const</span> *file_name,std::ios_base::openmode mode = std::ios_base::out | std::ios_base::in) :</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; internal_stream_type(0)</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; {</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; buf_.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">internal_buffer_type</a>());</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; std::ios::rdbuf(buf_.get());</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; open(file_name,mode);</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; }</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classboost_1_1nowide_1_1basic__fstream.html">basic_fstream</a>(std::string <span class="keyword">const</span> &amp;file_name,std::ios_base::openmode mode = std::ios_base::out | std::ios_base::in) :</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; internal_stream_type(0)</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; {</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; buf_.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">internal_buffer_type</a>());</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; std::ios::rdbuf(buf_.get());</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; open(file_name,mode);</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordtype">void</span> open(std::string <span class="keyword">const</span> &amp;file_name,std::ios_base::openmode mode = std::ios_base::out | std::ios_base::out)</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; {</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; open(file_name.c_str(),mode);</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordtype">void</span> open(<span class="keywordtype">char</span> <span class="keyword">const</span> *file_name,std::ios_base::openmode mode = std::ios_base::out | std::ios_base::out)</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; {</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span>(!buf_-&gt;open(file_name,mode)) {</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; this-&gt;setstate(std::ios_base::failbit);</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; this-&gt;clear();</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; }</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordtype">bool</span> is_open()</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; {</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">return</span> buf_-&gt;is_open();</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordtype">bool</span> is_open()<span class="keyword"> const</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">return</span> buf_-&gt;is_open();</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordtype">void</span> close()</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; {</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">if</span>(!buf_-&gt;close())</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; this-&gt;setstate(std::ios_base::failbit);</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; this-&gt;clear();</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__filebuf.html">internal_buffer_type</a> *rdbuf()<span class="keyword"> const</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> buf_.get();</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; ~<a class="code" href="classboost_1_1nowide_1_1basic__fstream.html">basic_fstream</a>()</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; buf_-&gt;close();</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; }</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; </div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; boost::scoped_ptr&lt;internal_buffer_type&gt; buf_;</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; };</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">basic_filebuf&lt;char&gt;</a> <a class="code" href="namespaceboost_1_1nowide.html#aa2709df55bd08ca25c97f047afec0ba0">filebuf</a>;</div>
<div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#a9b2fe88d2c896641bf2ac9913ab5dc83"> 266</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classboost_1_1nowide_1_1basic__ifstream.html">basic_ifstream&lt;char&gt;</a> <a class="code" href="namespaceboost_1_1nowide.html#a9b2fe88d2c896641bf2ac9913ab5dc83">ifstream</a>;</div>
<div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#a547c43290e3c142116f8713c233e3662"> 270</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classboost_1_1nowide_1_1basic__ofstream.html">basic_ofstream&lt;char&gt;</a> <a class="code" href="namespaceboost_1_1nowide.html#a547c43290e3c142116f8713c233e3662">ofstream</a>;</div>
<div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#ab750bb37dd7f652f1222180f8f00f475"> 274</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classboost_1_1nowide_1_1basic__fstream.html">basic_fstream&lt;char&gt;</a> <a class="code" href="namespaceboost_1_1nowide.html#ab750bb37dd7f652f1222180f8f00f475">fstream</a>;</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;} <span class="comment">// nowide</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;} <span class="comment">// namespace boost</span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="comment">// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4</span></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_a9b2fe88d2c896641bf2ac9913ab5dc83"><div class="ttname"><a href="namespaceboost_1_1nowide.html#a9b2fe88d2c896641bf2ac9913ab5dc83">boost::nowide::ifstream</a></div><div class="ttdeci">basic_ifstream&lt; char &gt; ifstream</div><div class="ttdef"><b>Definition:</b> fstream.hpp:266</div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_aa2709df55bd08ca25c97f047afec0ba0"><div class="ttname"><a href="namespaceboost_1_1nowide.html#aa2709df55bd08ca25c97f047afec0ba0">boost::nowide::filebuf</a></div><div class="ttdeci">basic_filebuf&lt; char &gt; filebuf</div><div class="ttdoc">Convinience typedef. </div><div class="ttdef"><b>Definition:</b> filebuf.hpp:401</div></div>
<div class="ttc" id="classboost_1_1nowide_1_1basic__ifstream_html"><div class="ttname"><a href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::basic_ifstream</a></div><div class="ttdoc">Same as std::basic_ifstream<char> but accepts UTF-8 strings under Windows. </div><div class="ttdef"><b>Definition:</b> fstream.hpp:40</div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_a547c43290e3c142116f8713c233e3662"><div class="ttname"><a href="namespaceboost_1_1nowide.html#a547c43290e3c142116f8713c233e3662">boost::nowide::ofstream</a></div><div class="ttdeci">basic_ofstream&lt; char &gt; ofstream</div><div class="ttdef"><b>Definition:</b> fstream.hpp:270</div></div>
<div class="ttc" id="classboost_1_1nowide_1_1basic__filebuf_html"><div class="ttname"><a href="classboost_1_1nowide_1_1basic__filebuf.html">boost::nowide::basic_filebuf</a></div><div class="ttdoc">This forward declaration defined the basic_filebuf type. </div><div class="ttdef"><b>Definition:</b> filebuf.hpp:38</div></div>
<div class="ttc" id="classboost_1_1nowide_1_1basic__fstream_html"><div class="ttname"><a href="classboost_1_1nowide_1_1basic__fstream.html">boost::nowide::basic_fstream</a></div><div class="ttdoc">Same as std::basic_fstream<char> but accepts UTF-8 strings under Windows. </div><div class="ttdef"><b>Definition:</b> fstream.hpp:190</div></div>
<div class="ttc" id="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4_html"><div class="ttname"><a href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">boost::nowide::basic_filebuf&lt; char &gt;</a></div><div class="ttdoc">This is implementation of std::filebuf. </div><div class="ttdef"><b>Definition:</b> filebuf.hpp:47</div></div>
<div class="ttc" id="classboost_1_1nowide_1_1basic__ofstream_html"><div class="ttname"><a href="classboost_1_1nowide_1_1basic__ofstream.html">boost::nowide::basic_ofstream</a></div><div class="ttdoc">Same as std::basic_ofstream<char> but accepts UTF-8 strings under Windows. </div><div class="ttdef"><b>Definition:</b> fstream.hpp:117</div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_ab750bb37dd7f652f1222180f8f00f475"><div class="ttname"><a href="namespaceboost_1_1nowide.html#ab750bb37dd7f652f1222180f8f00f475">boost::nowide::fstream</a></div><div class="ttdeci">basic_fstream&lt; char &gt; fstream</div><div class="ttdef"><b>Definition:</b> fstream.hpp:274</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

BIN
doc/html/ftv2blank.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

BIN
doc/html/ftv2doc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

BIN
doc/html/ftv2folderopen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

BIN
doc/html/ftv2lastnode.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

BIN
doc/html/ftv2link.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

BIN
doc/html/ftv2mlastnode.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

BIN
doc/html/ftv2mnode.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

BIN
doc/html/ftv2node.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

BIN
doc/html/ftv2plastnode.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

BIN
doc/html/ftv2pnode.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

BIN
doc/html/ftv2splitbar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

BIN
doc/html/ftv2vertline.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

80
doc/html/functions.html Normal file
View File

@@ -0,0 +1,80 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: Class Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li class="current"><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="functions.html"><span>All</span></a></li>
<li><a href="functions_func.html"><span>Functions</span></a></li>
</ul>
</div>
</div><!-- top -->
<div class="contents">
<div class="textblock">Here is a list of all documented class members with links to the class documentation for each member:</div><ul>
<li>args()
: <a class="el" href="classboost_1_1nowide_1_1args.html#a3ff755fe4f03cc192f31121d5ea78d7d">boost::nowide::args</a>
</li>
<li>basic_filebuf()
: <a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#acb60c4ffe2ba0d574f348ee4e7c02029">boost::nowide::basic_filebuf&lt; char &gt;</a>
</li>
<li>close()
: <a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a5d28c29a18add5fbcd0456e75be753a6">boost::nowide::basic_filebuf&lt; char &gt;</a>
</li>
<li>is_open()
: <a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a23b677285f14f7f1619d5652e043bc06">boost::nowide::basic_filebuf&lt; char &gt;</a>
</li>
<li>open()
: <a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a1e5de49ebc04817924f64687c709b876">boost::nowide::basic_filebuf&lt; char &gt;</a>
</li>
<li>~args()
: <a class="el" href="classboost_1_1nowide_1_1args.html#a78a61e8fe5bb40884f8b3038b98762b2">boost::nowide::args</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,80 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: Class Members - Functions</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li class="current"><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="functions.html"><span>All</span></a></li>
<li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
</ul>
</div>
</div><!-- top -->
<div class="contents">
&#160;<ul>
<li>args()
: <a class="el" href="classboost_1_1nowide_1_1args.html#a3ff755fe4f03cc192f31121d5ea78d7d">boost::nowide::args</a>
</li>
<li>basic_filebuf()
: <a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#acb60c4ffe2ba0d574f348ee4e7c02029">boost::nowide::basic_filebuf&lt; char &gt;</a>
</li>
<li>close()
: <a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a5d28c29a18add5fbcd0456e75be753a6">boost::nowide::basic_filebuf&lt; char &gt;</a>
</li>
<li>is_open()
: <a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a23b677285f14f7f1619d5652e043bc06">boost::nowide::basic_filebuf&lt; char &gt;</a>
</li>
<li>open()
: <a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#a1e5de49ebc04817924f64687c709b876">boost::nowide::basic_filebuf&lt; char &gt;</a>
</li>
<li>~args()
: <a class="el" href="classboost_1_1nowide_1_1args.html#a78a61e8fe5bb40884f8b3038b98762b2">boost::nowide::args</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

78
doc/html/hierarchy.html Normal file
View File

@@ -0,0 +1,78 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: Class Hierarchy</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li class="current"><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Class Hierarchy</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboost_1_1nowide_1_1args.html" target="_self">boost::nowide::args</a></td><td class="desc">Args is a class that fixes standard main() function arguments and changes them to UTF-8 under Microsoft Windows </td></tr>
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html" target="_self">boost::nowide::basic_filebuf&lt; CharType, Traits &gt;</a></td><td class="desc">This forward declaration defined the <a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html" title="This forward declaration defined the basic_filebuf type. ">basic_filebuf</a> type </td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="toggleFolder('2_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>basic_iostream</b></td><td class="desc"></td></tr>
<tr id="row_2_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboost_1_1nowide_1_1basic__fstream.html" target="_self">boost::nowide::basic_fstream&lt; CharType, Traits &gt;</a></td><td class="desc">Same as std::basic_fstream&lt;char&gt; but accepts UTF-8 strings under Windows </td></tr>
<tr id="row_3_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_3_" class="arrow" onclick="toggleFolder('3_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>basic_istream</b></td><td class="desc"></td></tr>
<tr id="row_3_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html" target="_self">boost::nowide::basic_ifstream&lt; CharType, Traits &gt;</a></td><td class="desc">Same as std::basic_ifstream&lt;char&gt; but accepts UTF-8 strings under Windows </td></tr>
<tr id="row_4_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_4_" class="arrow" onclick="toggleFolder('4_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>basic_ostream</b></td><td class="desc"></td></tr>
<tr id="row_4_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html" target="_self">boost::nowide::basic_ofstream&lt; CharType, Traits &gt;</a></td><td class="desc">Same as std::basic_ofstream&lt;char&gt; but accepts UTF-8 strings under Windows </td></tr>
<tr id="row_5_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html" target="_self">boost::nowide::basic_stackstring&lt; CharOut, CharIn, BufferSize &gt;</a></td><td class="desc">A class that allows to create a temporary wide or narrow UTF strings from wide or narrow UTF source </td></tr>
<tr id="row_6_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html" target="_self">boost::nowide::basic_stackstring&lt; char, wchar_t, 256 &gt;</a></td><td class="desc"></td></tr>
<tr id="row_7_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_7_" class="arrow" onclick="toggleFolder('7_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>basic_streambuf</b></td><td class="desc"></td></tr>
<tr id="row_7_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html" target="_self">boost::nowide::basic_filebuf&lt; char &gt;</a></td><td class="desc">This is implementation of std::filebuf </td></tr>
<tr id="row_8_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_8_" class="arrow" onclick="toggleFolder('8_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>codecvt</b></td><td class="desc"></td></tr>
<tr id="row_8_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html" target="_self">boost::nowide::utf8_codecvt&lt; CharType, 2 &gt;</a></td><td class="desc"></td></tr>
<tr id="row_8_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html" target="_self">boost::nowide::utf8_codecvt&lt; CharType, 4 &gt;</a></td><td class="desc"></td></tr>
<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt.html" target="_self">boost::nowide::utf8_codecvt&lt; CharType, CharSize &gt;</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

309
doc/html/index.html Normal file
View File

@@ -0,0 +1,309 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: Boost.Nowide</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Boost.Nowide </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Table of Contents:</p>
<ul>
<li><a class="el" href="index.html#main">What is Boost.Nowide</a></li>
<li><a class="el" href="index.html#main_rationale">Rationale</a><ul>
<li><a class="el" href="index.html#main_the_problem">The Problem</a></li>
<li><a class="el" href="index.html#main_the_solution">The Solution</a></li>
<li><a class="el" href="index.html#main_wide">Why Not Narrow and Wide?</a></li>
<li><a class="el" href="index.html#main_reading">Further Reading</a></li>
</ul>
</li>
<li><a class="el" href="index.html#using">Using The Library</a><ul>
<li><a class="el" href="index.html#using_standard">Standard Features</a></li>
<li><a class="el" href="index.html#using_custom">Custom API</a></li>
<li><a class="el" href="index.html#using_integration">Integration with Boost.Filesystem</a></li>
</ul>
</li>
<li><a class="el" href="index.html#technical">Technical Details</a><ul>
<li><a class="el" href="index.html#technical_imple">Windows vs POSIX</a></li>
<li><a class="el" href="index.html#technical_cio">Console I/O</a></li>
</ul>
</li>
<li><a class="el" href="index.html#qna">Q &amp; A</a></li>
<li><a class="el" href="index.html#standalone_version">Standalone Version</a></li>
<li><a class="el" href="index.html#sources">Sources and Downloads</a></li>
</ul>
<h1><a class="anchor" id="main"></a>
What is Boost.Nowide</h1>
<p>Boost.Nowide is a library implemented by Artyom Beilis that makes cross platform Unicode aware programming easier.</p>
<p>The library provides an implementation of standard C and C++ library functions, such that their inputs are UTF-8 aware on Windows without requiring to use Wide API.</p>
<h1><a class="anchor" id="main_rationale"></a>
Rationale</h1>
<h2><a class="anchor" id="main_the_problem"></a>
The Problem</h2>
<p>Consider a simple application that splits a big file into chunks, such that they can be sent by e-mail. It requires doing a few very simple tasks:</p>
<ul>
<li>Access command line arguments: <code>int main(int argc,char **argv)</code></li>
<li>Open an input file, open several output files: <code>std::fstream::open(char const *,std::ios::openmode m)</code></li>
<li>Remove the files in case of fault: <code>std::remove(char const *file)</code></li>
<li>Print a progress report onto the console: <code>std::cout &lt;&lt; file_name </code></li>
</ul>
<p>Unfortunately it is impossible to implement this simple task in plain C++ if the file names contain non-ASCII characters.</p>
<p>The simple program that uses the API would work on the systems that use UTF-8 internally &ndash; the vast majority of Unix-Line operating systems: Linux, Mac OS X, Solaris, BSD. But it would fail on files like <code>War and Peace - Война и мир - מלחמה ושלום.zip</code> under Microsoft Windows because the native Windows Unicode aware API is Wide-API &ndash; UTF-16.</p>
<p>This incredibly trivial task is very hard to implement in a cross platform manner.</p>
<h2><a class="anchor" id="main_the_solution"></a>
The Solution</h2>
<p>Boost.Nowide provides a set of standard library functions that are UTF-8 aware and makes Unicode aware programming easier.</p>
<p>The library provides:</p>
<ul>
<li>Easy to use functions for converting UTF-8 to/from UTF-16</li>
<li>A class to make the <code>argc</code>, <code>argc</code> and <code>env</code> parameters of <code>main</code> use UTF-8</li>
<li>UTF-8 aware functions<ul>
<li><code>stdio.h</code> functions:<ul>
<li><code>fopen</code> </li>
<li><code>freopen</code> </li>
<li><code>remove</code> </li>
<li><code>rename</code> </li>
</ul>
</li>
<li><code>stdlib.h</code> functions:<ul>
<li><code>system</code> </li>
<li><code>getenv</code> </li>
<li><code>setenv</code> </li>
<li><code>unsetenv</code> </li>
<li><code>putenv</code> </li>
</ul>
</li>
<li><code>fstream</code> <ul>
<li><code>filebuf</code> </li>
<li><code>fstream/ofstream/ifstream</code> </li>
</ul>
</li>
<li><code>iostream</code> <ul>
<li><code>cout</code> </li>
<li><code>cerr</code> </li>
<li><code>clog</code> </li>
<li><code>cin</code> </li>
</ul>
</li>
</ul>
</li>
</ul>
<h2><a class="anchor" id="main_wide"></a>
Why Not Narrow and Wide?</h2>
<p>Why not provide both Wide and Narrow implementations so the developer can choose to use Wide characters on Unix-like platforms?</p>
<p>Several reasons:</p>
<ul>
<li><code>wchar_t</code> is not really portable, it can be 2 bytes, 4 bytes or even 1 byte making Unicode aware programming harder</li>
<li>The C and C++ standard libraries use narrow strings for OS interactions. This library follows the same general rule. There is no such thing as <code>fopen(wchar_t const *,wchar_t const *)</code> in the standard library, so it is better to stick to the standards rather than re-implement Wide API in "Microsoft Windows Style"</li>
</ul>
<h2><a class="anchor" id="main_reading"></a>
Further Reading</h2>
<ul>
<li><a href="http://www.utf8everywhere.org/">www.utf8everywhere.org</a></li>
<li><a href="http://alfps.wordpress.com/2011/11/22/unicode-part-1-windows-console-io-approaches/">Windows console i/o approaches</a></li>
</ul>
<h1><a class="anchor" id="using"></a>
Using The Library</h1>
<h2><a class="anchor" id="using_standard"></a>
Standard Features</h2>
<p>The library is mostly header only, only console I/O requires separate compilation under Windows.</p>
<p>As a developer you are expected to use <code><a class="el" href="namespaceboost_1_1nowide.html" title="This namespace includes implementation of the standard library functios such that they accept UTF-8 s...">boost::nowide</a></code> functions instead of the functions available in the <code>std</code> namespace.</p>
<p>For example, here is a Unicode unaware implementation of a line counter: </p><div class="fragment"><div class="line"><span class="preprocessor">#include &lt;fstream&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;iostream&gt;</span></div>
<div class="line"></div>
<div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keywordtype">char</span> **argv)</div>
<div class="line">{</div>
<div class="line"> <span class="keywordflow">if</span>(argc!=2) {</div>
<div class="line"> std::cerr &lt;&lt; <span class="stringliteral">&quot;Usage: file_name&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"> <span class="keywordflow">return</span> 1;</div>
<div class="line"> }</div>
<div class="line"></div>
<div class="line"> std::ifstream f(argv[1]);</div>
<div class="line"> <span class="keywordflow">if</span>(!f) {</div>
<div class="line"> std::cerr &lt;&lt; <span class="stringliteral">&quot;Can&#39;t open &quot;</span> &lt;&lt; argv[1] &lt;&lt; std::endl;</div>
<div class="line"> <span class="keywordflow">return</span> 1;</div>
<div class="line"> }</div>
<div class="line"> <span class="keywordtype">int</span> total_lines = 0;</div>
<div class="line"> <span class="keywordflow">while</span>(f) {</div>
<div class="line"> <span class="keywordflow">if</span>(f.get() == <span class="charliteral">&#39;\n&#39;</span>)</div>
<div class="line"> total_lines++;</div>
<div class="line"> }</div>
<div class="line"> f.close();</div>
<div class="line"> std::cout &lt;&lt; <span class="stringliteral">&quot;File &quot;</span> &lt;&lt; argv[1] &lt;&lt; <span class="stringliteral">&quot; has &quot;</span> &lt;&lt; total_lines &lt;&lt; <span class="stringliteral">&quot; lines&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"> <span class="keywordflow">return</span> 0;</div>
<div class="line">}</div>
</div><!-- fragment --><p>To make this program handle Unicode properly, we do the following changes:</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;boost/nowide/args.hpp&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;boost/nowide/fstream.hpp&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;boost/nowide/iostream.hpp&gt;</span></div>
<div class="line"></div>
<div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keywordtype">char</span> **argv)</div>
<div class="line">{</div>
<div class="line"> <a class="code" href="classboost_1_1nowide_1_1args.html">boost::nowide::args</a> a(argc,argv); <span class="comment">// Fix arguments - make them UTF-8</span></div>
<div class="line"> <span class="keywordflow">if</span>(argc!=2) {</div>
<div class="line"> <a class="code" href="namespaceboost_1_1nowide.html#a1c43cbf142f4e42edb0fea6044d40bcb">boost::nowide::cerr</a> &lt;&lt; <span class="stringliteral">&quot;Usage: file_name&quot;</span> &lt;&lt; std::endl; <span class="comment">// Unicode aware console</span></div>
<div class="line"> <span class="keywordflow">return</span> 1;</div>
<div class="line"> }</div>
<div class="line"></div>
<div class="line"> <a class="code" href="classboost_1_1nowide_1_1basic__ifstream.html">boost::nowide::ifstream</a> f(argv[1]); <span class="comment">// argv[1] - is UTF-8</span></div>
<div class="line"> <span class="keywordflow">if</span>(!f) {</div>
<div class="line"> <span class="comment">// the console can display UTF-8</span></div>
<div class="line"> <a class="code" href="namespaceboost_1_1nowide.html#a1c43cbf142f4e42edb0fea6044d40bcb">boost::nowide::cerr</a> &lt;&lt; <span class="stringliteral">&quot;Can&#39;t open &quot;</span> &lt;&lt; argv[1] &lt;&lt; std::endl;</div>
<div class="line"> <span class="keywordflow">return</span> 1;</div>
<div class="line"> }</div>
<div class="line"> <span class="keywordtype">int</span> total_lines = 0;</div>
<div class="line"> <span class="keywordflow">while</span>(f) {</div>
<div class="line"> <span class="keywordflow">if</span>(f.get() == <span class="charliteral">&#39;\n&#39;</span>)</div>
<div class="line"> total_lines++;</div>
<div class="line"> }</div>
<div class="line"> f.close();</div>
<div class="line"> <span class="comment">// the console can display UTF-8</span></div>
<div class="line"> <a class="code" href="namespaceboost_1_1nowide.html#a3150e32a8082927f4843791c1dbc3587">boost::nowide::cout</a> &lt;&lt; <span class="stringliteral">&quot;File &quot;</span> &lt;&lt; argv[1] &lt;&lt; <span class="stringliteral">&quot; has &quot;</span> &lt;&lt; total_lines &lt;&lt; <span class="stringliteral">&quot; lines&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"> <span class="keywordflow">return</span> 0;</div>
<div class="line">}</div>
</div><!-- fragment --><p>This very simple and straightforward approach helps writing Unicode aware programs.</p>
<h2><a class="anchor" id="using_custom"></a>
Custom API</h2>
<p>Of course, this simple set of functions does not cover all needs. If you need to access Wide API from a Windows application that uses UTF-8 internally you can use functions like <code><a class="el" href="namespaceboost_1_1nowide.html#a6baacc1bb80c134a2ce37f13977b5500">boost::nowide::widen</a></code> and <code><a class="el" href="namespaceboost_1_1nowide.html#ac2b772caed760a75f611c2dc24153e4a">boost::nowide::narrow</a></code>.</p>
<p>For example: </p><div class="fragment"><div class="line">CopyFileW( <a class="code" href="namespaceboost_1_1nowide.html#a6baacc1bb80c134a2ce37f13977b5500">boost::nowide::widen</a>(existing_file).c_str(),</div>
<div class="line"> <a class="code" href="namespaceboost_1_1nowide.html#a6baacc1bb80c134a2ce37f13977b5500">boost::nowide::widen</a>(new_file).c_str(),</div>
<div class="line"> TRUE);</div>
</div><!-- fragment --><p>The conversion is done at the last stage, and you continue using UTF-8 strings everywhere else. You only switch to the Wide API at glue points.</p>
<p><code><a class="el" href="namespaceboost_1_1nowide.html#a6baacc1bb80c134a2ce37f13977b5500">boost::nowide::widen</a></code> returns <code>std::string</code>. Sometimes it is useful to prevent allocation and use on-stack buffers instead. Boost.Nowide provides the <code><a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html" title="A class that allows to create a temporary wide or narrow UTF strings from wide or narrow UTF source...">boost::nowide::basic_stackstring</a></code> class for this purpose.</p>
<p>The example above could be rewritten as:</p>
<div class="fragment"><div class="line"><a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring&lt;wchar_t,char,64&gt;</a> wexisting_file,wnew_file;</div>
<div class="line"><span class="keywordflow">if</span>(!wexisting_file.convert(existing_file) || !wnew_file.convert(new_file)) {</div>
<div class="line"> <span class="comment">// invalid UTF-8</span></div>
<div class="line"> <span class="keywordflow">return</span> -1;</div>
<div class="line">}</div>
<div class="line"></div>
<div class="line">CopyFileW(wexisting_file.c_str(),wnew_file.c_str(),TRUE);</div>
</div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>There are a few convenience typedefs: <code>stackstring</code> and <code>wstackstring</code> using 256-character buffers, and <code>short_stackstring</code> and <code>wshort_stackstring</code> using 16-character buffers. If the string is longer, they fall back to memory allocation.</dd></dl>
<h2><a class="anchor" id="using_windows_h"></a>
The windows.h header</h2>
<p>The library does not include the <code>windows.h</code> in order to prevent namespace pollution with numerous defines and types. Instead, the library defines the prototypes of the Win32 API functions.</p>
<p>However, you may request to use the <code>windows.h</code> header by defining <code>BOOST_NOWIDE_USE_WINDOWS_H</code> before including any of the Boost.Nowide headers</p>
<h2><a class="anchor" id="using_integration"></a>
Integration with Boost.Filesystem</h2>
<p>Boost.Filesystem supports selection of narrow encoding. Unfortunatelly the default narrow encoding on Windows isn't UTF-8, you can enable UTF-8 as default encoding on Boost.Filesystem by calling <code><a class="el" href="namespaceboost_1_1nowide.html#a7f94a60d0a9e5534a6dcc41bbc826ee8">boost::nowide::nowide_filesystem()</a></code> in the beginning of your program</p>
<h1><a class="anchor" id="technical"></a>
Technical Details</h1>
<h2><a class="anchor" id="technical_imple"></a>
Windows vs POSIX</h2>
<p>For Microsoft Windows, the library provides UTF-8 aware variants of some <code>std:</code>: functions in the <code><a class="el" href="namespaceboost_1_1nowide.html" title="This namespace includes implementation of the standard library functios such that they accept UTF-8 s...">boost::nowide</a></code> namespace. For example, <code>std::fopen</code> becomes <code><a class="el" href="namespaceboost_1_1nowide.html#a45d432e5684010f865702af97d47f087" title="Same as fopen but file_name and mode are UTF-8 strings. ">boost::nowide::fopen</a></code>.</p>
<p>Under POSIX platforms, the functions in <a class="el" href="namespaceboost_1_1nowide.html" title="This namespace includes implementation of the standard library functios such that they accept UTF-8 s...">boost::nowide</a> are aliases of their standard library counterparts:</p>
<div class="fragment"><div class="line"><span class="keyword">namespace </span>boost {</div>
<div class="line"><span class="keyword">namespace </span>nowide {</div>
<div class="line"><span class="preprocessor">#ifdef BOOST_WINDOWS</span></div>
<div class="line"><span class="keyword">inline</span> FILE *<a class="code" href="namespaceboost_1_1nowide.html#a45d432e5684010f865702af97d47f087">fopen</a>(<span class="keywordtype">char</span> <span class="keyword">const</span> *name,<span class="keywordtype">char</span> <span class="keyword">const</span> *mode)</div>
<div class="line">{</div>
<div class="line"> ...</div>
<div class="line">}</div>
<div class="line"><span class="preprocessor">#else</span></div>
<div class="line"><span class="keyword">using</span> std::fopen</div>
<div class="line"><span class="preprocessor">#endif</span></div>
<div class="line">} <span class="comment">// nowide</span></div>
<div class="line">} <span class="comment">// boost</span></div>
</div><!-- fragment --><h2><a class="anchor" id="technical_cio"></a>
Console I/O</h2>
<p>Console I/O is implemented as a wrapper around ReadConsoleW/WriteConsoleW (used when the stream goes to the "real" console) and ReadFile/WriteFile (used when the stream was piped/redirected).</p>
<p>This approach eliminates a need of manual code page handling. If TrueType fonts are used the Unicode aware input and output works as intended.</p>
<h1><a class="anchor" id="qna"></a>
Q &amp; A</h1>
<p><b>Q: Why doesn't the library convert the string to/from the locale's encoding (instead of UTF-8) on POSIX systems?</b></p>
<p>A: It is inherently incorrect to convert strings to/from locale encodings on POSIX platforms.</p>
<p>You can create a file named "\xFF\xFF.txt" (invalid UTF-8), remove it, pass its name as a parameter to a program and it would work whether the current locale is UTF-8 or not. Also, changing the locale from let's say <code>en_US.UTF-8</code> to <code>en_US.ISO-8859-1</code> would not magically change all files in the OS or the strings a user may pass to the program (which is different on Windows)</p>
<p>POSIX OSs treat strings as <code>NULL</code> terminated cookies.</p>
<p>So altering their content according to the locale would actually lead to incorrect behavior.</p>
<p>For example, this is a naive implementation of a standard program "rm"</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;cstdio&gt;</span></div>
<div class="line"></div>
<div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keywordtype">char</span> **argv)</div>
<div class="line">{</div>
<div class="line"> <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=1;i&lt;argc;i++)</div>
<div class="line"> std::remove(argv[i]);</div>
<div class="line"> <span class="keywordflow">return</span> 0;</div>
<div class="line">}</div>
</div><!-- fragment --><p>It would work with ANY locale and changing the strings would lead to incorrect behavior.</p>
<p>The meaning of a locale under POSIX and Windows platforms is different and has very different effects.</p>
<h2><a class="anchor" id="standalone_version"></a>
Standalone Version</h2>
<p>It is possible to use Nowide library without having the huge Boost project as a dependency. There is a standalone version that has all the functionality in the <code>nowide</code> namespace instead of <code><a class="el" href="namespaceboost_1_1nowide.html" title="This namespace includes implementation of the standard library functios such that they accept UTF-8 s...">boost::nowide</a></code>. The example above would look like</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;nowide/args.hpp&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;nowide/fstream.hpp&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;nowide/iostream.hpp&gt;</span></div>
<div class="line"></div>
<div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keywordtype">char</span> **argv)</div>
<div class="line">{</div>
<div class="line"> nowide::args a(argc,argv); <span class="comment">// Fix arguments - make them UTF-8</span></div>
<div class="line"> <span class="keywordflow">if</span>(argc!=2) {</div>
<div class="line"> nowide::cerr &lt;&lt; <span class="stringliteral">&quot;Usage: file_name&quot;</span> &lt;&lt; std::endl; <span class="comment">// Unicode aware console</span></div>
<div class="line"> <span class="keywordflow">return</span> 1;</div>
<div class="line"> }</div>
<div class="line"></div>
<div class="line"> nowide::ifstream f(argv[1]); <span class="comment">// argv[1] - is UTF-8</span></div>
<div class="line"> <span class="keywordflow">if</span>(!f) {</div>
<div class="line"> <span class="comment">// the console can display UTF-8</span></div>
<div class="line"> nowide::cerr &lt;&lt; <span class="stringliteral">&quot;Can&#39;t open a file &quot;</span> &lt;&lt; argv[1] &lt;&lt; std::endl;</div>
<div class="line"> <span class="keywordflow">return</span> 1;</div>
<div class="line"> }</div>
<div class="line"> <span class="keywordtype">int</span> total_lines = 0;</div>
<div class="line"> <span class="keywordflow">while</span>(f) {</div>
<div class="line"> <span class="keywordflow">if</span>(f.get() == <span class="charliteral">&#39;\n&#39;</span>)</div>
<div class="line"> total_lines++;</div>
<div class="line"> }</div>
<div class="line"> f.close();</div>
<div class="line"> <span class="comment">// the console can display UTF-8</span></div>
<div class="line"> nowide::cout &lt;&lt; <span class="stringliteral">&quot;File &quot;</span> &lt;&lt; argv[1] &lt;&lt; <span class="stringliteral">&quot; has &quot;</span> &lt;&lt; total_lines &lt;&lt; <span class="stringliteral">&quot; lines&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"> <span class="keywordflow">return</span> 0;</div>
<div class="line">}</div>
</div><!-- fragment --> <h2><a class="anchor" id="sources"></a>
Sources and Downloads</h2>
<p>The upstream sources can be found at GitHub: <a href="https://github.com/boostorg/nowide">https://github.com/boostorg/nowide</a></p>
<p>You can download the latest sources there:</p>
<ul>
<li>Standard Version: <a href="https://github.com/boostorg/nowide/archive/master.zip">nowide-master.zip</a></li>
<li>Standalone Boost independent version <a href="../nowide_standalone.zip">nowide_standalone.zip</a> </li>
</ul>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,140 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost/nowide/iostream.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c8984f1860c11f62f47abb6761e46c1e.html">boost</a></li><li class="navelem"><a class="el" href="dir_cba7cd329d8f45cf06543cd3b730d485.html">nowide</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">iostream.hpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// Copyright (c) 2012 Artyom Beilis (Tonkikh)</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Distributed under the Boost Software License, Version 1.0. (See</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// accompanying file LICENSE_1_0.txt or copy at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef BOOST_NOWIDE_IOSTREAM_HPP_INCLUDED</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define BOOST_NOWIDE_IOSTREAM_HPP_INCLUDED</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;boost/nowide/config.hpp&gt;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;boost/scoped_ptr.hpp&gt;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &lt;ostream&gt;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &lt;istream&gt;</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifdef BOOST_MSVC</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor"># pragma warning(push)</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor"># pragma warning(disable : 4251)</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">namespace </span>boost {</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">namespace </span>nowide {</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"> #if !defined(BOOST_WINDOWS) &amp;&amp; !defined(BOOST_NOWIDE_DOXYGEN)</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">using</span> std::cout;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">using</span> std::cerr;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">using</span> std::cin;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">using</span> std::clog;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor"> #else</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">namespace </span>details {</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">class </span>console_output_buffer;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">class </span>console_input_buffer;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; </div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">class </span>BOOST_NOWIDE_DECL winconsole_ostream : <span class="keyword">public</span> std::ostream {</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; winconsole_ostream(winconsole_ostream <span class="keyword">const</span> &amp;);</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">void</span> operator=(winconsole_ostream <span class="keyword">const</span> &amp;);</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; winconsole_ostream(<span class="keywordtype">int</span> fd);</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; ~winconsole_ostream();</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; boost::scoped_ptr&lt;console_output_buffer&gt; d;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; };</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">class </span>BOOST_NOWIDE_DECL winconsole_istream : <span class="keyword">public</span> std::istream {</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; winconsole_istream(winconsole_istream <span class="keyword">const</span> &amp;);</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">void</span> operator=(winconsole_istream <span class="keyword">const</span> &amp;);</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; </div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; winconsole_istream();</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; ~winconsole_istream();</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">struct </span>data;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; boost::scoped_ptr&lt;console_input_buffer&gt; d;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; };</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; } <span class="comment">// details </span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; </div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keyword">extern</span> BOOST_NOWIDE_DECL details::winconsole_istream <a class="code" href="namespaceboost_1_1nowide.html#a4a173da513651d5732f28689edc82364">cin</a>;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">extern</span> BOOST_NOWIDE_DECL details::winconsole_ostream <a class="code" href="namespaceboost_1_1nowide.html#a3150e32a8082927f4843791c1dbc3587">cout</a>;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">extern</span> BOOST_NOWIDE_DECL details::winconsole_ostream <a class="code" href="namespaceboost_1_1nowide.html#a1c43cbf142f4e42edb0fea6044d40bcb">cerr</a>;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keyword">extern</span> BOOST_NOWIDE_DECL details::winconsole_ostream <a class="code" href="namespaceboost_1_1nowide.html#afe5faf4bac8b65598f69c33fcc97d4a2">clog</a>;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;} <span class="comment">// nowide</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;} <span class="comment">// namespace boost</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="preprocessor">#ifdef BOOST_MSVC</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="preprocessor"># pragma warning(pop)</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment">// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4</span></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_a3150e32a8082927f4843791c1dbc3587"><div class="ttname"><a href="namespaceboost_1_1nowide.html#a3150e32a8082927f4843791c1dbc3587">boost::nowide::cout</a></div><div class="ttdeci">details::winconsole_ostream cout</div><div class="ttdoc">Same as std::cout, but uses UTF-8. </div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_afe5faf4bac8b65598f69c33fcc97d4a2"><div class="ttname"><a href="namespaceboost_1_1nowide.html#afe5faf4bac8b65598f69c33fcc97d4a2">boost::nowide::clog</a></div><div class="ttdeci">details::winconsole_ostream clog</div><div class="ttdoc">Same as std::clog, but uses UTF-8. </div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_a4a173da513651d5732f28689edc82364"><div class="ttname"><a href="namespaceboost_1_1nowide.html#a4a173da513651d5732f28689edc82364">boost::nowide::cin</a></div><div class="ttdeci">details::winconsole_istream cin</div><div class="ttdoc">Same as std::cin, but uses UTF-8. </div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_a1c43cbf142f4e42edb0fea6044d40bcb"><div class="ttname"><a href="namespaceboost_1_1nowide.html#a1c43cbf142f4e42edb0fea6044d40bcb">boost::nowide::cerr</a></div><div class="ttdeci">details::winconsole_ostream cerr</div><div class="ttdoc">Same as std::cerr, but uses UTF-8. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

31
doc/html/jquery.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,958 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost::nowide Namespace Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="namespaces.html"><span>Namespace&#160;List</span></a></li>
<li><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>boost</b></li><li class="navelem"><a class="el" href="namespaceboost_1_1nowide.html">nowide</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">boost::nowide Namespace Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>This namespace includes implementation of the standard library functios such that they accept UTF-8 strings on Windows. On other platforms it is just an alias of std namespace (i.e. not on Windows)
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1nowide_1_1args.html">args</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">args is a class that fixes standard main() function arguments and changes them to UTF-8 under Microsoft Windows. <a href="classboost_1_1nowide_1_1args.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This forward declaration defined the <a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html" title="This forward declaration defined the basic_filebuf type. ">basic_filebuf</a> type. <a href="classboost_1_1nowide_1_1basic__filebuf.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html">basic_filebuf&lt; char &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is implementation of std::filebuf. <a href="classboost_1_1nowide_1_1basic__filebuf_3_01char_01_4.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">basic_fstream</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Same as std::basic_fstream&lt;char&gt; but accepts UTF-8 strings under Windows. <a href="classboost_1_1nowide_1_1basic__fstream.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">basic_ifstream</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Same as std::basic_ifstream&lt;char&gt; but accepts UTF-8 strings under Windows. <a href="classboost_1_1nowide_1_1basic__ifstream.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">basic_ofstream</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Same as std::basic_ofstream&lt;char&gt; but accepts UTF-8 strings under Windows. <a href="classboost_1_1nowide_1_1basic__ofstream.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A class that allows to create a temporary wide or narrow UTF strings from wide or narrow UTF source. <a href="classboost_1_1nowide_1_1basic__stackstring.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt.html">utf8_codecvt</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html">utf8_codecvt&lt; CharType, 2 &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html">utf8_codecvt&lt; CharType, 4 &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:aa2709df55bd08ca25c97f047afec0ba0"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf</a>&lt; char &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#aa2709df55bd08ca25c97f047afec0ba0">filebuf</a></td></tr>
<tr class="memdesc:aa2709df55bd08ca25c97f047afec0ba0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convinience typedef. <a href="#aa2709df55bd08ca25c97f047afec0ba0">More...</a><br /></td></tr>
<tr class="separator:aa2709df55bd08ca25c97f047afec0ba0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b2fe88d2c896641bf2ac9913ab5dc83"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">basic_ifstream</a>&lt; char &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#a9b2fe88d2c896641bf2ac9913ab5dc83">ifstream</a></td></tr>
<tr class="separator:a9b2fe88d2c896641bf2ac9913ab5dc83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a547c43290e3c142116f8713c233e3662"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">basic_ofstream</a>&lt; char &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#a547c43290e3c142116f8713c233e3662">ofstream</a></td></tr>
<tr class="separator:a547c43290e3c142116f8713c233e3662"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab750bb37dd7f652f1222180f8f00f475"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">basic_fstream</a>&lt; char &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#ab750bb37dd7f652f1222180f8f00f475">fstream</a></td></tr>
<tr class="separator:ab750bb37dd7f652f1222180f8f00f475"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad80f6180f982a07763927345660c7964"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a><br class="typebreak" />
&lt; wchar_t, char, 256 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#ad80f6180f982a07763927345660c7964">wstackstring</a></td></tr>
<tr class="separator:ad80f6180f982a07763927345660c7964"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd4c19d4e98ae3e50b08ef2ef5056a12"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a><br class="typebreak" />
&lt; char, wchar_t, 256 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#acd4c19d4e98ae3e50b08ef2ef5056a12">stackstring</a></td></tr>
<tr class="separator:acd4c19d4e98ae3e50b08ef2ef5056a12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8369c10c0df6e36cd10cb9f9beb3149d"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a><br class="typebreak" />
&lt; wchar_t, char, 16 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#a8369c10c0df6e36cd10cb9f9beb3149d">wshort_stackstring</a></td></tr>
<tr class="separator:a8369c10c0df6e36cd10cb9f9beb3149d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76cf6347917b8b29dc4140afa1d5ff2d"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a><br class="typebreak" />
&lt; char, wchar_t, 16 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#a76cf6347917b8b29dc4140afa1d5ff2d">short_stackstring</a></td></tr>
<tr class="separator:a76cf6347917b8b29dc4140afa1d5ff2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a6644397c539754076b11e95c535be192"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#a6644397c539754076b11e95c535be192">getenv</a> (char const *key)</td></tr>
<tr class="memdesc:a6644397c539754076b11e95c535be192"><td class="mdescLeft">&#160;</td><td class="mdescRight">UTF-8 aware getenv. Returns 0 if the variable is not set. <a href="#a6644397c539754076b11e95c535be192">More...</a><br /></td></tr>
<tr class="separator:a6644397c539754076b11e95c535be192"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19d4925ea2c77e0b2abd8f5d045a8af2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#a19d4925ea2c77e0b2abd8f5d045a8af2">setenv</a> (char const *key, char const *value, int override)</td></tr>
<tr class="memdesc:a19d4925ea2c77e0b2abd8f5d045a8af2"><td class="mdescLeft">&#160;</td><td class="mdescRight">UTF-8 aware setenv, <em>key</em> - the variable name, <em>value</em> is a new UTF-8 value,. <a href="#a19d4925ea2c77e0b2abd8f5d045a8af2">More...</a><br /></td></tr>
<tr class="separator:a19d4925ea2c77e0b2abd8f5d045a8af2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61c3e97d5b8fd9c9a1812e2004ef7db6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61c3e97d5b8fd9c9a1812e2004ef7db6"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#a61c3e97d5b8fd9c9a1812e2004ef7db6">unsetenv</a> (char const *key)</td></tr>
<tr class="memdesc:a61c3e97d5b8fd9c9a1812e2004ef7db6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove enviroment variable <em>key</em>. <br /></td></tr>
<tr class="separator:a61c3e97d5b8fd9c9a1812e2004ef7db6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad42e1fc3dd7ac556a551fbac3fa553e3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad42e1fc3dd7ac556a551fbac3fa553e3"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#ad42e1fc3dd7ac556a551fbac3fa553e3">putenv</a> (char *string)</td></tr>
<tr class="memdesc:ad42e1fc3dd7ac556a551fbac3fa553e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">UTF-8 aware putenv implementation, expects string in format KEY=VALUE. <br /></td></tr>
<tr class="separator:ad42e1fc3dd7ac556a551fbac3fa553e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5816b009227ad8cd668881dfb5429ece"><td class="memTemplParams" colspan="2">template&lt;typename CharOut , typename CharIn &gt; </td></tr>
<tr class="memitem:a5816b009227ad8cd668881dfb5429ece"><td class="memTemplItemLeft" align="right" valign="top">CharOut *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#a5816b009227ad8cd668881dfb5429ece">basic_convert</a> (CharOut *buffer, size_t buffer_size, CharIn const *source_begin, CharIn const *source_end)</td></tr>
<tr class="memdesc:a5816b009227ad8cd668881dfb5429ece"><td class="mdescLeft">&#160;</td><td class="mdescRight">Template function that converts a buffer of UTF sequences in range [source_begin,source_end) to the output <em>buffer</em> of size <em>buffer_size</em>. <a href="#a5816b009227ad8cd668881dfb5429ece">More...</a><br /></td></tr>
<tr class="separator:a5816b009227ad8cd668881dfb5429ece"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2b772caed760a75f611c2dc24153e4a"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#ac2b772caed760a75f611c2dc24153e4a">narrow</a> (char *output, size_t output_size, wchar_t const *source)</td></tr>
<tr class="separator:ac2b772caed760a75f611c2dc24153e4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26caaed23d4adf0aa1ed0c1e218fad61"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#a26caaed23d4adf0aa1ed0c1e218fad61">narrow</a> (char *output, size_t output_size, wchar_t const *begin, wchar_t const *end)</td></tr>
<tr class="separator:a26caaed23d4adf0aa1ed0c1e218fad61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6baacc1bb80c134a2ce37f13977b5500"><td class="memItemLeft" align="right" valign="top">wchar_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#a6baacc1bb80c134a2ce37f13977b5500">widen</a> (wchar_t *output, size_t output_size, char const *source)</td></tr>
<tr class="separator:a6baacc1bb80c134a2ce37f13977b5500"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8bbb3c99ae08169220f3ba02ddf53a80"><td class="memItemLeft" align="right" valign="top">wchar_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#a8bbb3c99ae08169220f3ba02ddf53a80">widen</a> (wchar_t *output, size_t output_size, char const *begin, char const *end)</td></tr>
<tr class="separator:a8bbb3c99ae08169220f3ba02ddf53a80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a13b4f6f7f97f889ec858dde2d367b130"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#a13b4f6f7f97f889ec858dde2d367b130">narrow</a> (wchar_t const *s)</td></tr>
<tr class="separator:a13b4f6f7f97f889ec858dde2d367b130"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa914b18890c98fe5b9d1f1f9db53410a"><td class="memItemLeft" align="right" valign="top">std::wstring&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#aa914b18890c98fe5b9d1f1f9db53410a">widen</a> (char const *s)</td></tr>
<tr class="separator:aa914b18890c98fe5b9d1f1f9db53410a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b237483918f54bc0ee7b0d750811fc6"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#a3b237483918f54bc0ee7b0d750811fc6">narrow</a> (std::wstring const &amp;s)</td></tr>
<tr class="separator:a3b237483918f54bc0ee7b0d750811fc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a478fc384f85c7fb53158d741d3cc066c"><td class="memItemLeft" align="right" valign="top">std::wstring&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#a478fc384f85c7fb53158d741d3cc066c">widen</a> (std::string const &amp;s)</td></tr>
<tr class="separator:a478fc384f85c7fb53158d741d3cc066c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adfd128693c677a8ad1266ee7b4cbdb41"><td class="memItemLeft" align="right" valign="top">FILE *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#adfd128693c677a8ad1266ee7b4cbdb41">freopen</a> (char const *file_name, char const *mode, FILE *stream)</td></tr>
<tr class="memdesc:adfd128693c677a8ad1266ee7b4cbdb41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Same as freopen but file_name and mode are UTF-8 strings. <a href="#adfd128693c677a8ad1266ee7b4cbdb41">More...</a><br /></td></tr>
<tr class="separator:adfd128693c677a8ad1266ee7b4cbdb41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45d432e5684010f865702af97d47f087"><td class="memItemLeft" align="right" valign="top">FILE *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#a45d432e5684010f865702af97d47f087">fopen</a> (char const *file_name, char const *mode)</td></tr>
<tr class="memdesc:a45d432e5684010f865702af97d47f087"><td class="mdescLeft">&#160;</td><td class="mdescRight">Same as fopen but file_name and mode are UTF-8 strings. <a href="#a45d432e5684010f865702af97d47f087">More...</a><br /></td></tr>
<tr class="separator:a45d432e5684010f865702af97d47f087"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc7aa6b5fa4b6bbb9eead9e12efc967b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#abc7aa6b5fa4b6bbb9eead9e12efc967b">rename</a> (char const *old_name, char const *new_name)</td></tr>
<tr class="memdesc:abc7aa6b5fa4b6bbb9eead9e12efc967b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Same as rename but old_name and new_name are UTF-8 strings. <a href="#abc7aa6b5fa4b6bbb9eead9e12efc967b">More...</a><br /></td></tr>
<tr class="separator:abc7aa6b5fa4b6bbb9eead9e12efc967b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae499659be3b7b42ede7f0674b953efaf"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#ae499659be3b7b42ede7f0674b953efaf">remove</a> (char const *name)</td></tr>
<tr class="memdesc:ae499659be3b7b42ede7f0674b953efaf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Same as rename but name is UTF-8 string. <a href="#ae499659be3b7b42ede7f0674b953efaf">More...</a><br /></td></tr>
<tr class="separator:ae499659be3b7b42ede7f0674b953efaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3aba4b9d7d109837ab26e7d85f77a6d9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#a3aba4b9d7d109837ab26e7d85f77a6d9">system</a> (char const *cmd)</td></tr>
<tr class="separator:a3aba4b9d7d109837ab26e7d85f77a6d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a35fcf44f20aed5c368c6e5008a7fcfff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a35fcf44f20aed5c368c6e5008a7fcfff"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>BOOST_STATIC_ASSERT</b> (sizeof(std::mbstate_t)&gt;=2)</td></tr>
<tr class="separator:a35fcf44f20aed5c368c6e5008a7fcfff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f94a60d0a9e5534a6dcc41bbc826ee8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#a7f94a60d0a9e5534a6dcc41bbc826ee8">nowide_filesystem</a> ()</td></tr>
<tr class="separator:a7f94a60d0a9e5534a6dcc41bbc826ee8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a4a173da513651d5732f28689edc82364"><td class="memItemLeft" align="right" valign="top">details::winconsole_istream&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#a4a173da513651d5732f28689edc82364">cin</a></td></tr>
<tr class="memdesc:a4a173da513651d5732f28689edc82364"><td class="mdescLeft">&#160;</td><td class="mdescRight">Same as std::cin, but uses UTF-8. <a href="#a4a173da513651d5732f28689edc82364">More...</a><br /></td></tr>
<tr class="separator:a4a173da513651d5732f28689edc82364"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3150e32a8082927f4843791c1dbc3587"><td class="memItemLeft" align="right" valign="top">details::winconsole_ostream&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#a3150e32a8082927f4843791c1dbc3587">cout</a></td></tr>
<tr class="memdesc:a3150e32a8082927f4843791c1dbc3587"><td class="mdescLeft">&#160;</td><td class="mdescRight">Same as std::cout, but uses UTF-8. <a href="#a3150e32a8082927f4843791c1dbc3587">More...</a><br /></td></tr>
<tr class="separator:a3150e32a8082927f4843791c1dbc3587"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c43cbf142f4e42edb0fea6044d40bcb"><td class="memItemLeft" align="right" valign="top">details::winconsole_ostream&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#a1c43cbf142f4e42edb0fea6044d40bcb">cerr</a></td></tr>
<tr class="memdesc:a1c43cbf142f4e42edb0fea6044d40bcb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Same as std::cerr, but uses UTF-8. <a href="#a1c43cbf142f4e42edb0fea6044d40bcb">More...</a><br /></td></tr>
<tr class="separator:a1c43cbf142f4e42edb0fea6044d40bcb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe5faf4bac8b65598f69c33fcc97d4a2"><td class="memItemLeft" align="right" valign="top">details::winconsole_ostream&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1nowide.html#afe5faf4bac8b65598f69c33fcc97d4a2">clog</a></td></tr>
<tr class="memdesc:afe5faf4bac8b65598f69c33fcc97d4a2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Same as std::clog, but uses UTF-8. <a href="#afe5faf4bac8b65598f69c33fcc97d4a2">More...</a><br /></td></tr>
<tr class="separator:afe5faf4bac8b65598f69c33fcc97d4a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This namespace includes implementation of the standard library functios such that they accept UTF-8 strings on Windows. On other platforms it is just an alias of std namespace (i.e. not on Windows) </p>
</div><h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="aa2709df55bd08ca25c97f047afec0ba0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef <a class="el" href="classboost_1_1nowide_1_1basic__filebuf.html">basic_filebuf</a>&lt; char &gt; <a class="el" href="namespaceboost_1_1nowide.html#aa2709df55bd08ca25c97f047afec0ba0">boost::nowide::filebuf</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convinience typedef. </p>
<p>Same as std::filebuf but accepts UTF-8 strings under Windows. </p>
</div>
</div>
<a class="anchor" id="ab750bb37dd7f652f1222180f8f00f475"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef <a class="el" href="classboost_1_1nowide_1_1basic__fstream.html">basic_fstream</a>&lt;char&gt; <a class="el" href="namespaceboost_1_1nowide.html#ab750bb37dd7f652f1222180f8f00f475">boost::nowide::fstream</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Same as std::fstream but accepts UTF-8 strings under Windows </p>
</div>
</div>
<a class="anchor" id="a9b2fe88d2c896641bf2ac9913ab5dc83"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef <a class="el" href="classboost_1_1nowide_1_1basic__ifstream.html">basic_ifstream</a>&lt;char&gt; <a class="el" href="namespaceboost_1_1nowide.html#a9b2fe88d2c896641bf2ac9913ab5dc83">boost::nowide::ifstream</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Same as std::ifstream but accepts UTF-8 strings under Windows </p>
</div>
</div>
<a class="anchor" id="a547c43290e3c142116f8713c233e3662"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef <a class="el" href="classboost_1_1nowide_1_1basic__ofstream.html">basic_ofstream</a>&lt;char&gt; <a class="el" href="namespaceboost_1_1nowide.html#a547c43290e3c142116f8713c233e3662">boost::nowide::ofstream</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Same as std::ofstream but accepts UTF-8 strings under Windows </p>
</div>
</div>
<a class="anchor" id="a76cf6347917b8b29dc4140afa1d5ff2d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a>&lt;char,wchar_t,16&gt; <a class="el" href="namespaceboost_1_1nowide.html#a76cf6347917b8b29dc4140afa1d5ff2d">boost::nowide::short_stackstring</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convinience typedef </p>
</div>
</div>
<a class="anchor" id="acd4c19d4e98ae3e50b08ef2ef5056a12"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a>&lt;char,wchar_t,256&gt; <a class="el" href="namespaceboost_1_1nowide.html#acd4c19d4e98ae3e50b08ef2ef5056a12">boost::nowide::stackstring</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convinience typedef </p>
</div>
</div>
<a class="anchor" id="a8369c10c0df6e36cd10cb9f9beb3149d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a>&lt;wchar_t,char,16&gt; <a class="el" href="namespaceboost_1_1nowide.html#a8369c10c0df6e36cd10cb9f9beb3149d">boost::nowide::wshort_stackstring</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convinience typedef </p>
</div>
</div>
<a class="anchor" id="ad80f6180f982a07763927345660c7964"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef <a class="el" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a>&lt;wchar_t,char,256&gt; <a class="el" href="namespaceboost_1_1nowide.html#ad80f6180f982a07763927345660c7964">boost::nowide::wstackstring</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convinience typedef </p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a5816b009227ad8cd668881dfb5429ece"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename CharOut , typename CharIn &gt; </div>
<table class="memname">
<tr>
<td class="memname">CharOut* boost::nowide::basic_convert </td>
<td>(</td>
<td class="paramtype">CharOut *&#160;</td>
<td class="paramname"><em>buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>buffer_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">CharIn const *&#160;</td>
<td class="paramname"><em>source_begin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">CharIn const *&#160;</td>
<td class="paramname"><em>source_end</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Template function that converts a buffer of UTF sequences in range [source_begin,source_end) to the output <em>buffer</em> of size <em>buffer_size</em>. </p>
<p>In case of success a NULL terminated string is returned (buffer), otherwise 0 is returned.</p>
<p>If there is not enough room in the buffer or the source sequence contains invalid UTF, 0 is returned, and the contents of the buffer are undefined. </p>
</div>
</div>
<a class="anchor" id="a45d432e5684010f865702af97d47f087"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">FILE* boost::nowide::fopen </td>
<td>(</td>
<td class="paramtype">char const *&#160;</td>
<td class="paramname"><em>file_name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char const *&#160;</td>
<td class="paramname"><em>mode</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Same as fopen but file_name and mode are UTF-8 strings. </p>
<p>If invalid UTF-8 given, NULL is returned and errno is set to EINVAL </p>
</div>
</div>
<a class="anchor" id="adfd128693c677a8ad1266ee7b4cbdb41"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">FILE* boost::nowide::freopen </td>
<td>(</td>
<td class="paramtype">char const *&#160;</td>
<td class="paramname"><em>file_name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char const *&#160;</td>
<td class="paramname"><em>mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FILE *&#160;</td>
<td class="paramname"><em>stream</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Same as freopen but file_name and mode are UTF-8 strings. </p>
<p>If invalid UTF-8 given, NULL is returned and errno is set to EINVAL </p>
</div>
</div>
<a class="anchor" id="a6644397c539754076b11e95c535be192"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">char* boost::nowide::getenv </td>
<td>(</td>
<td class="paramtype">char const *&#160;</td>
<td class="paramname"><em>key</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>UTF-8 aware getenv. Returns 0 if the variable is not set. </p>
<p>This function is not thread safe or reenterable as defined by the standard library </p>
</div>
</div>
<a class="anchor" id="ac2b772caed760a75f611c2dc24153e4a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">char* boost::nowide::narrow </td>
<td>(</td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>output_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">wchar_t const *&#160;</td>
<td class="paramname"><em>source</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert NULL terminated UTF source string to NULL terminated <em>output</em> string of size at most output_size (including NULL)</p>
<p>In case of success output is returned, if the input sequence is illegal, or there is not enough room NULL is returned </p>
</div>
</div>
<a class="anchor" id="a26caaed23d4adf0aa1ed0c1e218fad61"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">char* boost::nowide::narrow </td>
<td>(</td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>output_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">wchar_t const *&#160;</td>
<td class="paramname"><em>begin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">wchar_t const *&#160;</td>
<td class="paramname"><em>end</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert UTF text in range [begin,end) to NULL terminated <em>output</em> string of size at most output_size (including NULL)</p>
<p>In case of success output is returned, if the input sequence is illegal, or there is not enough room NULL is returned </p>
</div>
</div>
<a class="anchor" id="a13b4f6f7f97f889ec858dde2d367b130"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::string boost::nowide::narrow </td>
<td>(</td>
<td class="paramtype">wchar_t const *&#160;</td>
<td class="paramname"><em>s</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert between Wide - UTF-16/32 string and UTF-8 string.</p>
<p>boost::locale::conv::conversion_error is thrown in a case of a error </p>
</div>
</div>
<a class="anchor" id="a3b237483918f54bc0ee7b0d750811fc6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::string boost::nowide::narrow </td>
<td>(</td>
<td class="paramtype">std::wstring const &amp;&#160;</td>
<td class="paramname"><em>s</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert between Wide - UTF-16/32 string and UTF-8 string</p>
<p>boost::locale::conv::conversion_error is thrown in a case of a error </p>
</div>
</div>
<a class="anchor" id="a7f94a60d0a9e5534a6dcc41bbc826ee8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void boost::nowide::nowide_filesystem </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Instal <a class="el" href="classboost_1_1nowide_1_1utf8__codecvt.html">utf8_codecvt</a> facet into boost::filesystem::path such all char strings are interpreted as utf-8 strings </p>
</div>
</div>
<a class="anchor" id="ae499659be3b7b42ede7f0674b953efaf"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int boost::nowide::remove </td>
<td>(</td>
<td class="paramtype">char const *&#160;</td>
<td class="paramname"><em>name</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Same as rename but name is UTF-8 string. </p>
<p>If invalid UTF-8 given, -1 is returned and errno is set to EINVAL </p>
</div>
</div>
<a class="anchor" id="abc7aa6b5fa4b6bbb9eead9e12efc967b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int boost::nowide::rename </td>
<td>(</td>
<td class="paramtype">char const *&#160;</td>
<td class="paramname"><em>old_name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char const *&#160;</td>
<td class="paramname"><em>new_name</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Same as rename but old_name and new_name are UTF-8 strings. </p>
<p>If invalid UTF-8 given, -1 is returned and errno is set to EINVAL </p>
</div>
</div>
<a class="anchor" id="a19d4925ea2c77e0b2abd8f5d045a8af2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int boost::nowide::setenv </td>
<td>(</td>
<td class="paramtype">char const *&#160;</td>
<td class="paramname"><em>key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char const *&#160;</td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>override</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>UTF-8 aware setenv, <em>key</em> - the variable name, <em>value</em> is a new UTF-8 value,. </p>
<p>if override is not 0, that the old value is always overridded, otherwise, if the variable exists it remains unchanged </p>
</div>
</div>
<a class="anchor" id="a3aba4b9d7d109837ab26e7d85f77a6d9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int boost::nowide::system </td>
<td>(</td>
<td class="paramtype">char const *&#160;</td>
<td class="paramname"><em>cmd</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Same as std::system but cmd is UTF-8.</p>
<p>If the input is not valid UTF-8, -1 returned and errno set to EINVAL </p>
</div>
</div>
<a class="anchor" id="a6baacc1bb80c134a2ce37f13977b5500"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">wchar_t* boost::nowide::widen </td>
<td>(</td>
<td class="paramtype">wchar_t *&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>output_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char const *&#160;</td>
<td class="paramname"><em>source</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert NULL terminated UTF source string to NULL terminated <em>output</em> string of size at most output_size (including NULL)</p>
<p>In case of success output is returned, if the input sequence is illegal, or there is not enough room NULL is returned </p>
</div>
</div>
<a class="anchor" id="a8bbb3c99ae08169220f3ba02ddf53a80"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">wchar_t* boost::nowide::widen </td>
<td>(</td>
<td class="paramtype">wchar_t *&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>output_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char const *&#160;</td>
<td class="paramname"><em>begin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char const *&#160;</td>
<td class="paramname"><em>end</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert UTF text in range [begin,end) to NULL terminated <em>output</em> string of size at most output_size (including NULL)</p>
<p>In case of success output is returned, if the input sequence is illegal, or there is not enough room NULL is returned </p>
</div>
</div>
<a class="anchor" id="aa914b18890c98fe5b9d1f1f9db53410a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::wstring boost::nowide::widen </td>
<td>(</td>
<td class="paramtype">char const *&#160;</td>
<td class="paramname"><em>s</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert between UTF-8 and UTF-16 string, implemented only on Windows platform</p>
<p>boost::locale::conv::conversion_error is thrown in a case of a error </p>
</div>
</div>
<a class="anchor" id="a478fc384f85c7fb53158d741d3cc066c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::wstring boost::nowide::widen </td>
<td>(</td>
<td class="paramtype">std::string const &amp;&#160;</td>
<td class="paramname"><em>s</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert between UTF-8 and UTF-16 string, implemented only on Windows platform</p>
<p>boost::locale::conv::conversion_error is thrown in a case of a error </p>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a class="anchor" id="a1c43cbf142f4e42edb0fea6044d40bcb"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">details::winconsole_ostream boost::nowide::cerr</td>
</tr>
</table>
</div><div class="memdoc">
<p>Same as std::cerr, but uses UTF-8. </p>
<p>Note, the stream is not synchronized with stdio and not affected by std::ios::sync_with_stdio </p>
</div>
</div>
<a class="anchor" id="a4a173da513651d5732f28689edc82364"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">details::winconsole_istream boost::nowide::cin</td>
</tr>
</table>
</div><div class="memdoc">
<p>Same as std::cin, but uses UTF-8. </p>
<p>Note, the stream is not synchronized with stdio and not affected by std::ios::sync_with_stdio </p>
</div>
</div>
<a class="anchor" id="afe5faf4bac8b65598f69c33fcc97d4a2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">details::winconsole_ostream boost::nowide::clog</td>
</tr>
</table>
</div><div class="memdoc">
<p>Same as std::clog, but uses UTF-8. </p>
<p>Note, the stream is not synchronized with stdio and not affected by std::ios::sync_with_stdio </p>
</div>
</div>
<a class="anchor" id="a3150e32a8082927f4843791c1dbc3587"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">details::winconsole_ostream boost::nowide::cout</td>
</tr>
</table>
</div><div class="memdoc">
<p>Same as std::cout, but uses UTF-8. </p>
<p>Note, the stream is not synchronized with stdio and not affected by std::ios::sync_with_stdio </p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,200 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: Namespace Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="namespaces.html"><span>Namespace&#160;List</span></a></li>
<li class="current"><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
<li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
<li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
<li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="#index_b"><span>b</span></a></li>
<li><a href="#index_c"><span>c</span></a></li>
<li><a href="#index_f"><span>f</span></a></li>
<li><a href="#index_g"><span>g</span></a></li>
<li><a href="#index_i"><span>i</span></a></li>
<li><a href="#index_n"><span>n</span></a></li>
<li><a href="#index_o"><span>o</span></a></li>
<li><a href="#index_p"><span>p</span></a></li>
<li><a href="#index_r"><span>r</span></a></li>
<li><a href="#index_s"><span>s</span></a></li>
<li><a href="#index_u"><span>u</span></a></li>
<li class="current"><a href="#index_w"><span>w</span></a></li>
</ul>
</div>
</div><!-- top -->
<div class="contents">
<div class="textblock">Here is a list of all documented namespace members with links to the namespaces they belong to:</div>
<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
<li>basic_convert()
: <a class="el" href="namespaceboost_1_1nowide.html#a5816b009227ad8cd668881dfb5429ece">boost::nowide</a>
</li>
</ul>
<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
<li>cerr
: <a class="el" href="namespaceboost_1_1nowide.html#a1c43cbf142f4e42edb0fea6044d40bcb">boost::nowide</a>
</li>
<li>cin
: <a class="el" href="namespaceboost_1_1nowide.html#a4a173da513651d5732f28689edc82364">boost::nowide</a>
</li>
<li>clog
: <a class="el" href="namespaceboost_1_1nowide.html#afe5faf4bac8b65598f69c33fcc97d4a2">boost::nowide</a>
</li>
<li>cout
: <a class="el" href="namespaceboost_1_1nowide.html#a3150e32a8082927f4843791c1dbc3587">boost::nowide</a>
</li>
</ul>
<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
<li>filebuf
: <a class="el" href="namespaceboost_1_1nowide.html#aa2709df55bd08ca25c97f047afec0ba0">boost::nowide</a>
</li>
<li>fopen()
: <a class="el" href="namespaceboost_1_1nowide.html#a45d432e5684010f865702af97d47f087">boost::nowide</a>
</li>
<li>freopen()
: <a class="el" href="namespaceboost_1_1nowide.html#adfd128693c677a8ad1266ee7b4cbdb41">boost::nowide</a>
</li>
<li>fstream
: <a class="el" href="namespaceboost_1_1nowide.html#ab750bb37dd7f652f1222180f8f00f475">boost::nowide</a>
</li>
</ul>
<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
<li>getenv()
: <a class="el" href="namespaceboost_1_1nowide.html#a6644397c539754076b11e95c535be192">boost::nowide</a>
</li>
</ul>
<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
<li>ifstream
: <a class="el" href="namespaceboost_1_1nowide.html#a9b2fe88d2c896641bf2ac9913ab5dc83">boost::nowide</a>
</li>
</ul>
<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
<li>narrow()
: <a class="el" href="namespaceboost_1_1nowide.html#ac2b772caed760a75f611c2dc24153e4a">boost::nowide</a>
</li>
<li>nowide_filesystem()
: <a class="el" href="namespaceboost_1_1nowide.html#a7f94a60d0a9e5534a6dcc41bbc826ee8">boost::nowide</a>
</li>
</ul>
<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
<li>ofstream
: <a class="el" href="namespaceboost_1_1nowide.html#a547c43290e3c142116f8713c233e3662">boost::nowide</a>
</li>
</ul>
<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
<li>putenv()
: <a class="el" href="namespaceboost_1_1nowide.html#ad42e1fc3dd7ac556a551fbac3fa553e3">boost::nowide</a>
</li>
</ul>
<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
<li>remove()
: <a class="el" href="namespaceboost_1_1nowide.html#ae499659be3b7b42ede7f0674b953efaf">boost::nowide</a>
</li>
<li>rename()
: <a class="el" href="namespaceboost_1_1nowide.html#abc7aa6b5fa4b6bbb9eead9e12efc967b">boost::nowide</a>
</li>
</ul>
<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
<li>setenv()
: <a class="el" href="namespaceboost_1_1nowide.html#a19d4925ea2c77e0b2abd8f5d045a8af2">boost::nowide</a>
</li>
<li>short_stackstring
: <a class="el" href="namespaceboost_1_1nowide.html#a76cf6347917b8b29dc4140afa1d5ff2d">boost::nowide</a>
</li>
<li>stackstring
: <a class="el" href="namespaceboost_1_1nowide.html#acd4c19d4e98ae3e50b08ef2ef5056a12">boost::nowide</a>
</li>
<li>system()
: <a class="el" href="namespaceboost_1_1nowide.html#a3aba4b9d7d109837ab26e7d85f77a6d9">boost::nowide</a>
</li>
</ul>
<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
<li>unsetenv()
: <a class="el" href="namespaceboost_1_1nowide.html#a61c3e97d5b8fd9c9a1812e2004ef7db6">boost::nowide</a>
</li>
</ul>
<h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
<li>widen()
: <a class="el" href="namespaceboost_1_1nowide.html#a6baacc1bb80c134a2ce37f13977b5500">boost::nowide</a>
</li>
<li>wshort_stackstring
: <a class="el" href="namespaceboost_1_1nowide.html#a8369c10c0df6e36cd10cb9f9beb3149d">boost::nowide</a>
</li>
<li>wstackstring
: <a class="el" href="namespaceboost_1_1nowide.html#ad80f6180f982a07763927345660c7964">boost::nowide</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,102 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: Namespace Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="namespaces.html"><span>Namespace&#160;List</span></a></li>
<li class="current"><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="namespacemembers.html"><span>All</span></a></li>
<li class="current"><a href="namespacemembers_func.html"><span>Functions</span></a></li>
<li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
<li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
</ul>
</div>
</div><!-- top -->
<div class="contents">
&#160;<ul>
<li>basic_convert()
: <a class="el" href="namespaceboost_1_1nowide.html#a5816b009227ad8cd668881dfb5429ece">boost::nowide</a>
</li>
<li>fopen()
: <a class="el" href="namespaceboost_1_1nowide.html#a45d432e5684010f865702af97d47f087">boost::nowide</a>
</li>
<li>freopen()
: <a class="el" href="namespaceboost_1_1nowide.html#adfd128693c677a8ad1266ee7b4cbdb41">boost::nowide</a>
</li>
<li>getenv()
: <a class="el" href="namespaceboost_1_1nowide.html#a6644397c539754076b11e95c535be192">boost::nowide</a>
</li>
<li>narrow()
: <a class="el" href="namespaceboost_1_1nowide.html#ac2b772caed760a75f611c2dc24153e4a">boost::nowide</a>
</li>
<li>nowide_filesystem()
: <a class="el" href="namespaceboost_1_1nowide.html#a7f94a60d0a9e5534a6dcc41bbc826ee8">boost::nowide</a>
</li>
<li>putenv()
: <a class="el" href="namespaceboost_1_1nowide.html#ad42e1fc3dd7ac556a551fbac3fa553e3">boost::nowide</a>
</li>
<li>remove()
: <a class="el" href="namespaceboost_1_1nowide.html#ae499659be3b7b42ede7f0674b953efaf">boost::nowide</a>
</li>
<li>rename()
: <a class="el" href="namespaceboost_1_1nowide.html#abc7aa6b5fa4b6bbb9eead9e12efc967b">boost::nowide</a>
</li>
<li>setenv()
: <a class="el" href="namespaceboost_1_1nowide.html#a19d4925ea2c77e0b2abd8f5d045a8af2">boost::nowide</a>
</li>
<li>system()
: <a class="el" href="namespaceboost_1_1nowide.html#a3aba4b9d7d109837ab26e7d85f77a6d9">boost::nowide</a>
</li>
<li>unsetenv()
: <a class="el" href="namespaceboost_1_1nowide.html#a61c3e97d5b8fd9c9a1812e2004ef7db6">boost::nowide</a>
</li>
<li>widen()
: <a class="el" href="namespaceboost_1_1nowide.html#a6baacc1bb80c134a2ce37f13977b5500">boost::nowide</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,87 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: Namespace Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="namespaces.html"><span>Namespace&#160;List</span></a></li>
<li class="current"><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="namespacemembers.html"><span>All</span></a></li>
<li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
<li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
<li class="current"><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
</ul>
</div>
</div><!-- top -->
<div class="contents">
&#160;<ul>
<li>filebuf
: <a class="el" href="namespaceboost_1_1nowide.html#aa2709df55bd08ca25c97f047afec0ba0">boost::nowide</a>
</li>
<li>fstream
: <a class="el" href="namespaceboost_1_1nowide.html#ab750bb37dd7f652f1222180f8f00f475">boost::nowide</a>
</li>
<li>ifstream
: <a class="el" href="namespaceboost_1_1nowide.html#a9b2fe88d2c896641bf2ac9913ab5dc83">boost::nowide</a>
</li>
<li>ofstream
: <a class="el" href="namespaceboost_1_1nowide.html#a547c43290e3c142116f8713c233e3662">boost::nowide</a>
</li>
<li>short_stackstring
: <a class="el" href="namespaceboost_1_1nowide.html#a76cf6347917b8b29dc4140afa1d5ff2d">boost::nowide</a>
</li>
<li>stackstring
: <a class="el" href="namespaceboost_1_1nowide.html#acd4c19d4e98ae3e50b08ef2ef5056a12">boost::nowide</a>
</li>
<li>wshort_stackstring
: <a class="el" href="namespaceboost_1_1nowide.html#a8369c10c0df6e36cd10cb9f9beb3149d">boost::nowide</a>
</li>
<li>wstackstring
: <a class="el" href="namespaceboost_1_1nowide.html#ad80f6180f982a07763927345660c7964">boost::nowide</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,75 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: Namespace Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="namespaces.html"><span>Namespace&#160;List</span></a></li>
<li class="current"><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="namespacemembers.html"><span>All</span></a></li>
<li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
<li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
<li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
</ul>
</div>
</div><!-- top -->
<div class="contents">
&#160;<ul>
<li>cerr
: <a class="el" href="namespaceboost_1_1nowide.html#a1c43cbf142f4e42edb0fea6044d40bcb">boost::nowide</a>
</li>
<li>cin
: <a class="el" href="namespaceboost_1_1nowide.html#a4a173da513651d5732f28689edc82364">boost::nowide</a>
</li>
<li>clog
: <a class="el" href="namespaceboost_1_1nowide.html#afe5faf4bac8b65598f69c33fcc97d4a2">boost::nowide</a>
</li>
<li>cout
: <a class="el" href="namespaceboost_1_1nowide.html#a3150e32a8082927f4843791c1dbc3587">boost::nowide</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

63
doc/html/namespaces.html Normal file
View File

@@ -0,0 +1,63 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: Namespace List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="namespaces.html"><span>Namespace&#160;List</span></a></li>
<li><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Namespace List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all documented namespaces with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>boost</b></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboost_1_1nowide.html" target="_self">nowide</a></td><td class="desc">This namespace includes implementation of the standard library functios such that they accept UTF-8 strings on Windows. On other platforms it is just an alias of std namespace (i.e. not on Windows) </td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

BIN
doc/html/nav_f.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 B

BIN
doc/html/nav_g.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 B

BIN
doc/html/nav_h.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 B

BIN
doc/html/open.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

View File

@@ -0,0 +1,200 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost/nowide/stackstring.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c8984f1860c11f62f47abb6761e46c1e.html">boost</a></li><li class="navelem"><a class="el" href="dir_cba7cd329d8f45cf06543cd3b730d485.html">nowide</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">stackstring.hpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// Copyright (c) 2012 Artyom Beilis (Tonkikh)</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Distributed under the Boost Software License, Version 1.0. (See</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// accompanying file LICENSE_1_0.txt or copy at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef BOOST_NOWIDE_DETAILS_WIDESTR_H_INCLUDED</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define BOOST_NOWIDE_DETAILS_WIDESTR_H_INCLUDED</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &lt;boost/nowide/convert.hpp&gt;</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="keyword">namespace </span>boost {</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keyword">namespace </span>nowide {</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharOut=<span class="keywordtype">wchar_t</span>,<span class="keyword">typename</span> CharIn = <span class="keywordtype">char</span>,<span class="keywordtype">size_t</span> BufferSize = 256&gt;</div>
<div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="classboost_1_1nowide_1_1basic__stackstring.html"> 25</a></span>&#160;<span class="keyword">class </span><a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a> {</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> buffer_size = BufferSize; </div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">typedef</span> CharOut output_char;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">typedef</span> CharIn input_char;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a>(<a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a> <span class="keyword">const</span> &amp;other) : </div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; mem_buffer_(0)</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; {</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; clear();</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">if</span>(other.mem_buffer_) {</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">size_t</span> len = 0;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">while</span>(other.mem_buffer_[len])</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; len ++;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; mem_buffer_ = <span class="keyword">new</span> output_char[len + 1];</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; memcpy(mem_buffer_,other.mem_buffer_,<span class="keyword">sizeof</span>(output_char) * (len+1));</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; memcpy(buffer_,other.buffer_,buffer_size * <span class="keyword">sizeof</span>(output_char));</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; </div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">void</span> swap(<a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a> &amp;other)</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; std::swap(mem_buffer_,other.mem_buffer_);</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i=0;i&lt;buffer_size;i++)</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; std::swap(buffer_[i],other.buffer_[i]);</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a> &amp;operator=(<a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a> <span class="keyword">const</span> &amp;other)</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">this</span> != &amp;other) {</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a> tmp(other);</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; swap(tmp); </div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a>() : mem_buffer_(0)</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">bool</span> convert(input_char <span class="keyword">const</span> *input)</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">return</span> convert(input,details::basic_strend(input));</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">bool</span> convert(input_char <span class="keyword">const</span> *begin,input_char <span class="keyword">const</span> *end)</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; clear();</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">size_t</span> space = get_space(<span class="keyword">sizeof</span>(input_char),<span class="keyword">sizeof</span>(output_char),end - begin) + 1;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span>(space &lt;= buffer_size) {</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceboost_1_1nowide.html#a5816b009227ad8cd668881dfb5429ece">basic_convert</a>(buffer_,buffer_size,begin,end))</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; clear();</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; mem_buffer_ = <span class="keyword">new</span> output_char[space];</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="namespaceboost_1_1nowide.html#a5816b009227ad8cd668881dfb5429ece">basic_convert</a>(mem_buffer_,space,begin,end)) {</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; clear();</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; output_char *c_str()</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span>(mem_buffer_)</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> mem_buffer_;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">return</span> buffer_;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; output_char <span class="keyword">const</span> *c_str()<span class="keyword"> const</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">if</span>(mem_buffer_)</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> mem_buffer_;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> buffer_;</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">void</span> clear()</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; {</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">if</span>(mem_buffer_) {</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">delete</span> [] mem_buffer_;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; mem_buffer_=0;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; buffer_[0] = 0;</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; ~<a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring</a>()</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; clear();</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keyword">static</span> <span class="keywordtype">size_t</span> get_space(<span class="keywordtype">size_t</span> insize,<span class="keywordtype">size_t</span> outsize,<span class="keywordtype">size_t</span> in)</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">if</span>(insize &lt;= outsize)</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> in;</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(insize == 2 &amp;&amp; outsize == 1) </div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">return</span> 3 * in;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(insize == 4 &amp;&amp; outsize == 1) </div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> 4 * in;</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">else</span> <span class="comment">// if(insize == 4 &amp;&amp; outsize == 2) </span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> 2 * in;</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; output_char buffer_[buffer_size];</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; output_char *mem_buffer_;</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;}; <span class="comment">//basic_stackstring</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div>
<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#ad80f6180f982a07763927345660c7964"> 134</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring&lt;wchar_t,char,256&gt;</a> <a class="code" href="namespaceboost_1_1nowide.html#ad80f6180f982a07763927345660c7964">wstackstring</a>;</div>
<div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#acd4c19d4e98ae3e50b08ef2ef5056a12"> 138</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring&lt;char,wchar_t,256&gt;</a> <a class="code" href="namespaceboost_1_1nowide.html#acd4c19d4e98ae3e50b08ef2ef5056a12">stackstring</a>;</div>
<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#a8369c10c0df6e36cd10cb9f9beb3149d"> 142</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring&lt;wchar_t,char,16&gt;</a> <a class="code" href="namespaceboost_1_1nowide.html#a8369c10c0df6e36cd10cb9f9beb3149d">wshort_stackstring</a>;</div>
<div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#a76cf6347917b8b29dc4140afa1d5ff2d"> 146</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">basic_stackstring&lt;char,wchar_t,16&gt;</a> <a class="code" href="namespaceboost_1_1nowide.html#a76cf6347917b8b29dc4140afa1d5ff2d">short_stackstring</a>;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;} <span class="comment">// nowide</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;} <span class="comment">// namespace boost</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment">// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4</span></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_ad80f6180f982a07763927345660c7964"><div class="ttname"><a href="namespaceboost_1_1nowide.html#ad80f6180f982a07763927345660c7964">boost::nowide::wstackstring</a></div><div class="ttdeci">basic_stackstring&lt; wchar_t, char, 256 &gt; wstackstring</div><div class="ttdef"><b>Definition:</b> stackstring.hpp:134</div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_a8369c10c0df6e36cd10cb9f9beb3149d"><div class="ttname"><a href="namespaceboost_1_1nowide.html#a8369c10c0df6e36cd10cb9f9beb3149d">boost::nowide::wshort_stackstring</a></div><div class="ttdeci">basic_stackstring&lt; wchar_t, char, 16 &gt; wshort_stackstring</div><div class="ttdef"><b>Definition:</b> stackstring.hpp:142</div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_a76cf6347917b8b29dc4140afa1d5ff2d"><div class="ttname"><a href="namespaceboost_1_1nowide.html#a76cf6347917b8b29dc4140afa1d5ff2d">boost::nowide::short_stackstring</a></div><div class="ttdeci">basic_stackstring&lt; char, wchar_t, 16 &gt; short_stackstring</div><div class="ttdef"><b>Definition:</b> stackstring.hpp:146</div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_acd4c19d4e98ae3e50b08ef2ef5056a12"><div class="ttname"><a href="namespaceboost_1_1nowide.html#acd4c19d4e98ae3e50b08ef2ef5056a12">boost::nowide::stackstring</a></div><div class="ttdeci">basic_stackstring&lt; char, wchar_t, 256 &gt; stackstring</div><div class="ttdef"><b>Definition:</b> stackstring.hpp:138</div></div>
<div class="ttc" id="classboost_1_1nowide_1_1basic__stackstring_html"><div class="ttname"><a href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring</a></div><div class="ttdoc">A class that allows to create a temporary wide or narrow UTF strings from wide or narrow UTF source...</div><div class="ttdef"><b>Definition:</b> stackstring.hpp:25</div></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_a5816b009227ad8cd668881dfb5429ece"><div class="ttname"><a href="namespaceboost_1_1nowide.html#a5816b009227ad8cd668881dfb5429ece">boost::nowide::basic_convert</a></div><div class="ttdeci">CharOut * basic_convert(CharOut *buffer, size_t buffer_size, CharIn const *source_begin, CharIn const *source_end)</div><div class="ttdoc">Template function that converts a buffer of UTF sequences in range [source_begin,source_end) to the o...</div><div class="ttdef"><b>Definition:</b> convert.hpp:26</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

BIN
doc/html/sync_off.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 853 B

BIN
doc/html/sync_on.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 845 B

View File

@@ -0,0 +1,102 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost/nowide/system.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c8984f1860c11f62f47abb6761e46c1e.html">boost</a></li><li class="navelem"><a class="el" href="dir_cba7cd329d8f45cf06543cd3b730d485.html">nowide</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">system.hpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// Copyright (c) 2012 Artyom Beilis (Tonkikh)</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Distributed under the Boost Software License, Version 1.0. (See</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// accompanying file LICENSE_1_0.txt or copy at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef BOOST_NOWIDE_CSTDLIB_HPP</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define BOOST_NOWIDE_CSTDLIB_HPP</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;errno.h&gt;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;boost/nowide/stackstring.hpp&gt;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="keyword">namespace </span>boost {</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keyword">namespace </span>nowide {</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#if !defined(BOOST_WINDOWS) &amp;&amp; !defined(BOOST_NOWIDE_DOXYGEN)</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;using ::system;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#else // Windows</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="namespaceboost_1_1nowide.html#a3aba4b9d7d109837ab26e7d85f77a6d9"> 28</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1nowide.html#a3aba4b9d7d109837ab26e7d85f77a6d9">system</a>(<span class="keywordtype">char</span> <span class="keyword">const</span> *cmd)</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;{</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">if</span>(!cmd)</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span> _wsystem(0);</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="classboost_1_1nowide_1_1basic__stackstring.html">wstackstring</a> wcmd;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">if</span>(!wcmd.convert(cmd)) {</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; errno = EINVAL;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; }</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">return</span> _wsystem(wcmd.c_str());</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;}</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;} <span class="comment">// nowide</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;} <span class="comment">// namespace boost</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4</span></div>
<div class="ttc" id="namespaceboost_1_1nowide_html_a3aba4b9d7d109837ab26e7d85f77a6d9"><div class="ttname"><a href="namespaceboost_1_1nowide.html#a3aba4b9d7d109837ab26e7d85f77a6d9">boost::nowide::system</a></div><div class="ttdeci">int system(char const *cmd)</div><div class="ttdef"><b>Definition:</b> system.hpp:28</div></div>
<div class="ttc" id="classboost_1_1nowide_1_1basic__stackstring_html"><div class="ttname"><a href="classboost_1_1nowide_1_1basic__stackstring.html">boost::nowide::basic_stackstring</a></div><div class="ttdoc">A class that allows to create a temporary wide or narrow UTF strings from wide or narrow UTF source...</div><div class="ttdef"><b>Definition:</b> stackstring.hpp:25</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

BIN
doc/html/tab_a.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 B

BIN
doc/html/tab_b.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 B

BIN
doc/html/tab_h.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

BIN
doc/html/tab_s.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

60
doc/html/tabs.css Normal file
View File

@@ -0,0 +1,60 @@
.tabs, .tabs2, .tabs3 {
background-image: url('tab_b.png');
width: 100%;
z-index: 101;
font-size: 13px;
font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
}
.tabs2 {
font-size: 10px;
}
.tabs3 {
font-size: 9px;
}
.tablist {
margin: 0;
padding: 0;
display: table;
}
.tablist li {
float: left;
display: table-cell;
background-image: url('tab_b.png');
line-height: 36px;
list-style: none;
}
.tablist a {
display: block;
padding: 0 20px;
font-weight: bold;
background-image:url('tab_s.png');
background-repeat:no-repeat;
background-position:right;
color: #283A5D;
text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
text-decoration: none;
outline: none;
}
.tabs3 .tablist a {
padding: 0 10px;
}
.tablist a:hover {
background-image: url('tab_h.png');
background-repeat:repeat-x;
color: #fff;
text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
text-decoration: none;
}
.tablist li.current a {
background-image: url('tab_a.png');
background-repeat:repeat-x;
color: #fff;
text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
}

View File

@@ -0,0 +1,558 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost/nowide/utf8_codecvt.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c8984f1860c11f62f47abb6761e46c1e.html">boost</a></li><li class="navelem"><a class="el" href="dir_cba7cd329d8f45cf06543cd3b730d485.html">nowide</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">utf8_codecvt.hpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// Copyright (c) 2015 Artyom Beilis (Tonkikh)</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Distributed under the Boost Software License, Version 1.0. (See</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// accompanying file LICENSE_1_0.txt or copy at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef BOOST_NOWIDE_UTF8_CODECVT_HPP</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define BOOST_NOWIDE_UTF8_CODECVT_HPP</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;boost/locale/utf.hpp&gt;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;boost/cstdint.hpp&gt;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;boost/static_assert.hpp&gt;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &lt;locale&gt;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="keyword">namespace </span>boost {</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keyword">namespace </span>nowide {</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">// Make sure that mbstate can keep 16 bit of UTF-16 sequence</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;BOOST_STATIC_ASSERT(<span class="keyword">sizeof</span>(std::mbstate_t)&gt;=2);</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#if defined _MSC_VER &amp;&amp; _MSC_VER &lt; 1700</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">// MSVC do_length is non-standard it counts wide characters instead of narrow and does not change mbstate</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#define BOOST_NOWIDE_DO_LENGTH_MBSTATE_CONST</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType,<span class="keywordtype">int</span> CharSize=sizeof(CharType)&gt;</div>
<div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classboost_1_1nowide_1_1utf8__codecvt.html"> 30</a></span>&#160;<span class="keyword">class </span><a class="code" href="classboost_1_1nowide_1_1utf8__codecvt.html">utf8_codecvt</a>;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt;</div>
<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_012_01_4.html"> 33</a></span>&#160;<span class="keyword">class </span><a class="code" href="classboost_1_1nowide_1_1utf8__codecvt.html">utf8_codecvt</a>&lt;CharType,2&gt; : <span class="keyword">public</span> std::codecvt&lt;CharType,char,std::mbstate_t&gt;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="classboost_1_1nowide_1_1utf8__codecvt.html">utf8_codecvt</a>(<span class="keywordtype">size_t</span> refs = 0) : std::codecvt&lt;CharType,char,std::mbstate_t&gt;(refs)</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; {</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; }</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">typedef</span> CharType uchar;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">virtual</span> std::codecvt_base::result do_unshift(std::mbstate_t &amp;s,<span class="keywordtype">char</span> *from,<span class="keywordtype">char</span> * <span class="comment">/*to*/</span>,<span class="keywordtype">char</span> *&amp;next)<span class="keyword"> const</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; boost::uint16_t &amp;state = *<span class="keyword">reinterpret_cast&lt;</span>boost::uint16_t *<span class="keyword">&gt;</span>(&amp;s);</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#ifdef DEBUG_CODECVT</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;Entering unshift &quot;</span> &lt;&lt; std::hex &lt;&lt; state &lt;&lt; std::dec &lt;&lt; std::endl;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">if</span>(state != 0)</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">return</span> std::codecvt_base::error;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; next=from;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> std::codecvt_base::ok;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> do_encoding() <span class="keyword">const</span> <span class="keywordflow">throw</span>()</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> do_max_length() <span class="keyword">const</span> <span class="keywordflow">throw</span>()</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">return</span> 4;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> do_always_noconv() <span class="keyword">const</span> <span class="keywordflow">throw</span>()</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; do_length( std::mbstate_t</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; #ifdef BOOST_NOWIDE_DO_LENGTH_MBSTATE_CONST</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">const</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; #endif</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; &amp;std_state,</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">char</span> <span class="keyword">const</span> *from,</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">char</span> <span class="keyword">const</span> *from_end,</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">size_t</span> max)<span class="keyword"> const</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor"> #ifndef BOOST_NOWIDE_DO_LENGTH_MBSTATE_CONST</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">char</span> <span class="keyword">const</span> *save_from = from;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; boost::uint16_t &amp;state = *<span class="keyword">reinterpret_cast&lt;</span>boost::uint16_t *<span class="keyword">&gt;</span>(&amp;std_state);</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor"> #else</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordtype">size_t</span> save_max = max;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; boost::uint16_t state = *<span class="keyword">reinterpret_cast&lt;</span>boost::uint16_t <span class="keyword">const </span>*<span class="keyword">&gt;</span>(&amp;std_state);</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">while</span>(max &gt; 0 &amp;&amp; from &lt; from_end){</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">char</span> <span class="keyword">const</span> *prev_from = from;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; boost::uint32_t ch=boost::locale::utf::utf_traits&lt;char&gt;::decode(from,from_end);</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span>(ch==boost::locale::utf::incomplete || ch==boost::locale::utf::illegal) {</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; from = prev_from;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; max --;</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">if</span>(ch &gt; 0xFFFF) {</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span>(state == 0) {</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; from = prev_from;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; state = 1;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; state = 0;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor"> #ifndef BOOST_NOWIDE_DO_LENGTH_MBSTATE_CONST</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">return</span> from - save_from;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="preprocessor"> #else</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> save_max - max;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">virtual</span> std::codecvt_base::result</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; do_in( std::mbstate_t &amp;std_state,</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordtype">char</span> <span class="keyword">const</span> *from,</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordtype">char</span> <span class="keyword">const</span> *from_end,</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordtype">char</span> <span class="keyword">const</span> *&amp;from_next,</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; uchar *to,</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; uchar *to_end,</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; uchar *&amp;to_next)<span class="keyword"> const</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; std::codecvt_base::result r=std::codecvt_base::ok;</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="comment">// mbstate_t is POD type and should be initialized to 0 (i.a. state = stateT())</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="comment">// according to standard. We use it to keep a flag 0/1 for surrogate pair writing</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="comment">// if 0 no code above &gt;0xFFFF observed, of 1 a code above 0xFFFF observerd</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="comment">// and first pair is written, but no input consumed</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; boost::uint16_t &amp;state = *<span class="keyword">reinterpret_cast&lt;</span>boost::uint16_t *<span class="keyword">&gt;</span>(&amp;std_state);</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">while</span>(to &lt; to_end &amp;&amp; from &lt; from_end)</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="preprocessor">#ifdef DEBUG_CODECVT</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;Entering IN--------------&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;State &quot;</span> &lt;&lt; std::hex &lt;&lt; state &lt;&lt;std::endl;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;Left in &quot;</span> &lt;&lt; std::dec &lt;&lt; from_end - from &lt;&lt; <span class="stringliteral">&quot; out &quot;</span> &lt;&lt; to_end -to &lt;&lt; std::endl;</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordtype">char</span> <span class="keyword">const</span> *from_saved = from;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; uint32_t ch=boost::locale::utf::utf_traits&lt;char&gt;::decode(from,from_end);</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">if</span>(ch==boost::locale::utf::illegal) {</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; from = from_saved;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; r=std::codecvt_base::error;</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">if</span>(ch==boost::locale::utf::incomplete) {</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; from = from_saved;</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; r=std::codecvt_base::partial;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="comment">// Normal codepoints go direcly to stream</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">if</span>(ch &lt;= 0xFFFF) {</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; *to++=ch;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="comment">// for other codepoints we do following</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="comment">// 1. We can&#39;t consume our input as we may find ourselfs</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="comment">// in state where all input consumed but not all output written,i.e. only</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="comment">// 1st pair is written</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="comment">// 2. We only write first pair and mark this in the state, we also revert back</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="comment">// the from pointer in order to make sure this codepoint would be read</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="comment">// once again and then we would consume our input together with writing</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="comment">// second surrogate pair</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; ch-=0x10000;</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; boost::uint16_t vh = ch &gt;&gt; 10;</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; boost::uint16_t vl = ch &amp; 0x3FF;</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; boost::uint16_t w1 = vh + 0xD800;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; boost::uint16_t w2 = vl + 0xDC00;</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">if</span>(state == 0) {</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; from = from_saved;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; *to++ = w1;</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; state = 1;</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; }</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; *to++ = w2;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; state = 0;</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; from_next=from;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; to_next=to;</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">if</span>(r == std::codecvt_base::ok &amp;&amp; (from!=from_end || state!=0))</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; r = std::codecvt_base::partial;</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="preprocessor">#ifdef DEBUG_CODECVT</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;Returning &quot;</span>;</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">switch</span>(r) {</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">case</span> std::codecvt_base::ok:</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;ok&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">case</span> std::codecvt_base::partial:</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;partial&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">case</span> std::codecvt_base::error:</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;error&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;other&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;State &quot;</span> &lt;&lt; std::hex &lt;&lt; state &lt;&lt;std::endl;</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;Left in &quot;</span> &lt;&lt; std::dec &lt;&lt; from_end - from &lt;&lt; <span class="stringliteral">&quot; out &quot;</span> &lt;&lt; to_end -to &lt;&lt; std::endl;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">return</span> r;</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keyword">virtual</span> std::codecvt_base::result</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; do_out( std::mbstate_t &amp;std_state,</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; uchar <span class="keyword">const</span> *from,</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; uchar <span class="keyword">const</span> *from_end,</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; uchar <span class="keyword">const</span> *&amp;from_next,</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordtype">char</span> *to,</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordtype">char</span> *to_end,</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordtype">char</span> *&amp;to_next)<span class="keyword"> const</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; std::codecvt_base::result r=std::codecvt_base::ok;</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// mbstate_t is POD type and should be initialized to 0 (i.a. state = stateT())</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="comment">// according to standard. We assume that sizeof(mbstate_t) &gt;=2 in order</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="comment">// to be able to store first observerd surrogate pair</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="comment">// State: state!=0 - a first surrogate pair was observerd (state = first pair),</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="comment">// we expect the second one to come and then zero the state</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment"></span> boost::uint16_t &amp;state = *<span class="keyword">reinterpret_cast&lt;</span>boost::uint16_t *<span class="keyword">&gt;</span>(&amp;std_state);</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">while</span>(to &lt; to_end &amp;&amp; from &lt; from_end)</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; {</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="preprocessor">#ifdef DEBUG_CODECVT</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;Entering OUT --------------&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;State &quot;</span> &lt;&lt; std::hex &lt;&lt; state &lt;&lt;std::endl;</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;Left in &quot;</span> &lt;&lt; std::dec &lt;&lt; from_end - from &lt;&lt; <span class="stringliteral">&quot; out &quot;</span> &lt;&lt; to_end -to &lt;&lt; std::endl;</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; boost::uint32_t ch=0;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span>(state != 0) {</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="comment">// if the state idecates that 1st surrogate pair was written</span></div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="comment">// we should make sure that the second one that comes is actually</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="comment">// second surrogate</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; boost::uint16_t w1 = state;</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; boost::uint16_t w2 = *from;</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="comment">// we don&#39;t forward from as writing may fail to incomplete or</span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="comment">// partial conversion</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span>(0xDC00 &lt;= w2 &amp;&amp; w2&lt;=0xDFFF) {</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; boost::uint16_t vh = w1 - 0xD800;</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; boost::uint16_t vl = w2 - 0xDC00;</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; ch=((uint32_t(vh) &lt;&lt; 10) | vl) + 0x10000;</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="comment">// Invalid surrogate</span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; r=std::codecvt_base::error;</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; ch = *from;</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">if</span>(0xD800 &lt;= ch &amp;&amp; ch&lt;=0xDBFF) {</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="comment">// if this is a first surrogate pair we put</span></div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="comment">// it into the state and consume it, note we don&#39;t</span></div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="comment">// go forward as it should be illegal so we increase</span></div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="comment">// the from pointer manually</span></div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; state = ch;</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; from++;</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; }</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(0xDC00 &lt;= ch &amp;&amp; ch&lt;=0xDFFF) {</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="comment">// if we observe second surrogate pair and</span></div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="comment">// first only may be expected we should break from the loop with error</span></div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="comment">// as it is illegal input</span></div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; r=std::codecvt_base::error;</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; }</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">if</span>(!boost::locale::utf::is_valid_codepoint(ch)) {</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; r=std::codecvt_base::error;</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; }</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordtype">int</span> len = boost::locale::utf::utf_traits&lt;char&gt;::width(ch);</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">if</span>(to_end - to &lt; len) {</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; r=std::codecvt_base::partial;</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; to = boost::locale::utf::utf_traits&lt;char&gt;::encode(ch,to);</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; state = 0;</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; from++;</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; from_next=from;</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; to_next=to;</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span>(r==std::codecvt_base::ok &amp;&amp; from!=from_end)</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; r = std::codecvt_base::partial;</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="preprocessor">#ifdef DEBUG_CODECVT</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;Returning &quot;</span>;</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">switch</span>(r) {</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">case</span> std::codecvt_base::ok:</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;ok&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">case</span> std::codecvt_base::partial:</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;partial&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">case</span> std::codecvt_base::error:</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;error&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;other&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;State &quot;</span> &lt;&lt; std::hex &lt;&lt; state &lt;&lt;std::endl;</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;Left in &quot;</span> &lt;&lt; std::dec &lt;&lt; from_end - from &lt;&lt; <span class="stringliteral">&quot; out &quot;</span> &lt;&lt; to_end -to &lt;&lt; std::endl;</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">return</span> r;</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; }</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;};</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt;</div>
<div class="line"><a name="l00310"></a><span class="lineno"><a class="line" href="classboost_1_1nowide_1_1utf8__codecvt_3_01CharType_00_014_01_4.html"> 310</a></span>&#160;<span class="keyword">class </span><a class="code" href="classboost_1_1nowide_1_1utf8__codecvt.html">utf8_codecvt</a>&lt;CharType,4&gt; : <span class="keyword">public</span> std::codecvt&lt;CharType,char,std::mbstate_t&gt;</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;{</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="classboost_1_1nowide_1_1utf8__codecvt.html">utf8_codecvt</a>(<span class="keywordtype">size_t</span> refs = 0) : std::codecvt&lt;CharType,char,std::mbstate_t&gt;(refs)</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; {</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keyword">typedef</span> CharType uchar;</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keyword">virtual</span> std::codecvt_base::result do_unshift(std::mbstate_t &amp;<span class="comment">/*s*/</span>,<span class="keywordtype">char</span> *from,<span class="keywordtype">char</span> * <span class="comment">/*to*/</span>,<span class="keywordtype">char</span> *&amp;next)<span class="keyword"> const</span></div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; next=from;</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">return</span> std::codecvt_base::ok;</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; }</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> do_encoding() <span class="keyword">const</span> <span class="keywordflow">throw</span>()</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; {</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> do_max_length() <span class="keyword">const</span> <span class="keywordflow">throw</span>()</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; {</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">return</span> 4;</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> do_always_noconv() <span class="keyword">const</span> <span class="keywordflow">throw</span>()</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span></div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; do_length( std::mbstate_t</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; #ifdef BOOST_NOWIDE_DO_LENGTH_MBSTATE_CONST</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keyword">const</span></div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; #endif</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; &amp;<span class="comment">/*state*/</span>,</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordtype">char</span> <span class="keyword">const</span> *from,</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordtype">char</span> <span class="keyword">const</span> *from_end,</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordtype">size_t</span> max)<span class="keyword"> const</span></div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<span class="preprocessor"> #ifndef BOOST_NOWIDE_DO_LENGTH_MBSTATE_CONST</span></div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordtype">char</span> <span class="keyword">const</span> *start_from = from;</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="preprocessor"> #else</span></div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordtype">size_t</span> save_max = max;</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">while</span>(max &gt; 0 &amp;&amp; from &lt; from_end){</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordtype">char</span> <span class="keyword">const</span> *save_from = from;</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; boost::uint32_t ch=boost::locale::utf::utf_traits&lt;char&gt;::decode(from,from_end);</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">if</span>(ch==boost::locale::utf::incomplete || ch==boost::locale::utf::illegal) {</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; from = save_from;</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; }</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; max--;</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="preprocessor"> #ifndef BOOST_NOWIDE_DO_LENGTH_MBSTATE_CONST</span></div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">return</span> from - start_from;</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="preprocessor"> #else</span></div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">return</span> save_max - max;</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keyword">virtual</span> std::codecvt_base::result</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; do_in( std::mbstate_t &amp;<span class="comment">/*state*/</span>,</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordtype">char</span> <span class="keyword">const</span> *from,</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordtype">char</span> <span class="keyword">const</span> *from_end,</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordtype">char</span> <span class="keyword">const</span> *&amp;from_next,</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; uchar *to,</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; uchar *to_end,</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; uchar *&amp;to_next)<span class="keyword"> const</span></div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; std::codecvt_base::result r=std::codecvt_base::ok;</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="comment">// mbstate_t is POD type and should be initialized to 0 (i.a. state = stateT())</span></div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="comment">// according to standard. We use it to keep a flag 0/1 for surrogate pair writing</span></div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="comment">// if 0 no code above &gt;0xFFFF observed, of 1 a code above 0xFFFF observerd</span></div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="comment">// and first pair is written, but no input consumed</span></div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">while</span>(to &lt; to_end &amp;&amp; from &lt; from_end)</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; {</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="preprocessor">#ifdef DEBUG_CODECVT</span></div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;Entering IN--------------&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;State &quot;</span> &lt;&lt; std::hex &lt;&lt; state &lt;&lt;std::endl;</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;Left in &quot;</span> &lt;&lt; std::dec &lt;&lt; from_end - from &lt;&lt; <span class="stringliteral">&quot; out &quot;</span> &lt;&lt; to_end -to &lt;&lt; std::endl;</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordtype">char</span> <span class="keyword">const</span> *from_saved = from;</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; uint32_t ch=boost::locale::utf::utf_traits&lt;char&gt;::decode(from,from_end);</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">if</span>(ch==boost::locale::utf::illegal) {</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; r=std::codecvt_base::error;</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; from = from_saved;</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; }</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">if</span>(ch==boost::locale::utf::incomplete) {</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; r=std::codecvt_base::partial;</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; from=from_saved;</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; *to++=ch;</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; from_next=from;</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; to_next=to;</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">if</span>(r == std::codecvt_base::ok &amp;&amp; from!=from_end)</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; r = std::codecvt_base::partial;</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="preprocessor">#ifdef DEBUG_CODECVT</span></div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;Returning &quot;</span>;</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">switch</span>(r) {</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">case</span> std::codecvt_base::ok:</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;ok&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">case</span> std::codecvt_base::partial:</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;partial&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">case</span> std::codecvt_base::error:</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;error&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;other&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;State &quot;</span> &lt;&lt; std::hex &lt;&lt; state &lt;&lt;std::endl;</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;Left in &quot;</span> &lt;&lt; std::dec &lt;&lt; from_end - from &lt;&lt; <span class="stringliteral">&quot; out &quot;</span> &lt;&lt; to_end -to &lt;&lt; std::endl;</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">return</span> r;</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keyword">virtual</span> std::codecvt_base::result</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; do_out( std::mbstate_t &amp;std_state,</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; uchar <span class="keyword">const</span> *from,</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; uchar <span class="keyword">const</span> *from_end,</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; uchar <span class="keyword">const</span> *&amp;from_next,</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordtype">char</span> *to,</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordtype">char</span> *to_end,</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordtype">char</span> *&amp;to_next)<span class="keyword"> const</span></div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; std::codecvt_base::result r=std::codecvt_base::ok;</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">while</span>(to &lt; to_end &amp;&amp; from &lt; from_end)</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; {</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;<span class="preprocessor">#ifdef DEBUG_CODECVT</span></div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;Entering OUT --------------&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;State &quot;</span> &lt;&lt; std::hex &lt;&lt; state &lt;&lt;std::endl;</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;Left in &quot;</span> &lt;&lt; std::dec &lt;&lt; from_end - from &lt;&lt; <span class="stringliteral">&quot; out &quot;</span> &lt;&lt; to_end -to &lt;&lt; std::endl;</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; boost::uint32_t ch=0;</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; ch = *from;</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">if</span>(!boost::locale::utf::is_valid_codepoint(ch)) {</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; r=std::codecvt_base::error;</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordtype">int</span> len = boost::locale::utf::utf_traits&lt;char&gt;::width(ch);</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">if</span>(to_end - to &lt; len) {</div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; r=std::codecvt_base::partial;</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; }</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; to = boost::locale::utf::utf_traits&lt;char&gt;::encode(ch,to);</div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; from++;</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; }</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; from_next=from;</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; to_next=to;</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">if</span>(r==std::codecvt_base::ok &amp;&amp; from!=from_end)</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; r = std::codecvt_base::partial;</div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<span class="preprocessor">#ifdef DEBUG_CODECVT</span></div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;Returning &quot;</span>;</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">switch</span>(r) {</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">case</span> std::codecvt_base::ok:</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;ok&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">case</span> std::codecvt_base::partial:</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;partial&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">case</span> std::codecvt_base::error:</div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;error&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;other&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; }</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;State &quot;</span> &lt;&lt; std::hex &lt;&lt; state &lt;&lt;std::endl;</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;Left in &quot;</span> &lt;&lt; std::dec &lt;&lt; from_end - from &lt;&lt; <span class="stringliteral">&quot; out &quot;</span> &lt;&lt; to_end -to &lt;&lt; std::endl;</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">return</span> r;</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;};</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;} <span class="comment">// nowide</span></div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;} <span class="comment">// namespace boost</span></div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;<span class="comment">// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4</span></div>
<div class="ttc" id="classboost_1_1nowide_1_1utf8__codecvt_html"><div class="ttname"><a href="classboost_1_1nowide_1_1utf8__codecvt.html">boost::nowide::utf8_codecvt</a></div><div class="ttdef"><b>Definition:</b> utf8_codecvt.hpp:30</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>

View File

@@ -0,0 +1,98 @@
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Boost.Nowide: boost/nowide/windows.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Nowide
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c8984f1860c11f62f47abb6761e46c1e.html">boost</a></li><li class="navelem"><a class="el" href="dir_cba7cd329d8f45cf06543cd3b730d485.html">nowide</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">windows.hpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// Copyright (c) 2012 Artyom Beilis (Tonkikh)</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Distributed under the Boost Software License, Version 1.0. (See</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// accompanying file LICENSE_1_0.txt or copy at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef BOOST_NOWIDE_WINDOWS_HPP_INCLUDED</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define BOOST_NOWIDE_WINDOWS_HPP_INCLUDED</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;stddef.h&gt;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#ifdef BOOST_NOWIDE_USE_WINDOWS_H</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &lt;windows.h&gt;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// These are function prototypes... Allow to to include windows.h</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;__declspec(dllimport) wchar_t* __stdcall GetEnvironmentStringsW(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;__declspec(dllimport) <span class="keywordtype">int</span> __stdcall FreeEnvironmentStringsW(<span class="keywordtype">wchar_t</span> *);</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;__declspec(dllimport) <span class="keywordtype">wchar_t</span>* __stdcall GetCommandLineW(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;__declspec(dllimport) <span class="keywordtype">wchar_t</span>** __stdcall CommandLineToArgvW(<span class="keywordtype">wchar_t</span> const *,<span class="keywordtype">int</span> *);</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;__declspec(dllimport) <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> __stdcall GetLastError();</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;__declspec(dllimport) <span class="keywordtype">void</span>* __stdcall LocalFree(<span class="keywordtype">void</span> *);</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;__declspec(dllimport) <span class="keywordtype">int</span> __stdcall SetEnvironmentVariableW(<span class="keywordtype">wchar_t</span> const *,<span class="keywordtype">wchar_t</span> const *);</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;__declspec(dllimport) <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> __stdcall GetEnvironmentVariableW(<span class="keywordtype">wchar_t</span> const *,<span class="keywordtype">wchar_t</span> *,<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>);</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#endif </span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>