uvw/util_8h_source.html
2020-10-15 09:33:44 +02:00

548 lines
87 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>uvw: src/uvw/util.h 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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.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 id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">uvw
&#160;<span id="projectnumber">2.8.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_98934c98f70735fe3a272005a9eb8736.html">uvw</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">util.h</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="preprocessor">#ifndef UVW_UTIL_INCLUDE_H</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define UVW_UTIL_INCLUDE_H</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; </div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160; </div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#include &lt;string_view&gt;</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;uv.h&gt;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; </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><a class="code" href="namespaceuvw.html">uvw</a> {</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; </div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="keyword">namespace </span>details {</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; </div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">enum class</span> UVHandleType: std::underlying_type_t&lt;uv_handle_type&gt; {</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; UNKNOWN = UV_UNKNOWN_HANDLE,</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; ASYNC = UV_ASYNC,</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; CHECK = UV_CHECK,</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; FS_EVENT = UV_FS_EVENT,</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; FS_POLL = UV_FS_POLL,</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; HANDLE = UV_HANDLE,</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; IDLE = UV_IDLE,</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; PIPE = UV_NAMED_PIPE,</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; POLL = UV_POLL,</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; PREPARE = UV_PREPARE,</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; PROCESS = UV_PROCESS,</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; STREAM = UV_STREAM,</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; TCP = UV_TCP,</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; TIMER = UV_TIMER,</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; TTY = UV_TTY,</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; UDP = UV_UDP,</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; SIGNAL = UV_SIGNAL,</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; FILE = UV_FILE</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; </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="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keyword">struct </span>UVTypeWrapper {</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">using</span> Type = T;</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; constexpr UVTypeWrapper(): value{} {}</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; constexpr UVTypeWrapper(Type val): value{val} {}</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; </div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; constexpr <span class="keyword">operator</span> Type() const noexcept { <span class="keywordflow">return</span> value; }</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="keywordtype">bool</span> operator==(UVTypeWrapper other) <span class="keyword">const</span> noexcept {</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> value == other.value;</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; </div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> Type value;</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; </div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keywordtype">bool</span> operator==(UVTypeWrapper&lt;T&gt; lhs, UVTypeWrapper&lt;T&gt; rhs) {</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">return</span> !(lhs == rhs);</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; </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; </div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> E&gt;</div>
<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classuvw_1_1Flags.html"> 82</a></span>&#160;<span class="keyword">class </span><a class="code" href="classuvw_1_1Flags.html">Flags</a> final {</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">using</span> InnerType = std::underlying_type_t&lt;E&gt;;</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; constexpr InnerType toInnerType(E flag) <span class="keyword">const</span> noexcept { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>InnerType<span class="keyword">&gt;</span>(flag); }</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="keyword">public</span>:</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">using</span> Type = InnerType;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; </div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">template</span>&lt;E... V&gt;</div>
<div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classuvw_1_1Flags.html#a03dcc52240c349a73523d67975ed3de2"> 95</a></span>&#160; <span class="keyword">static</span> constexpr <a class="code" href="classuvw_1_1Flags.html">Flags&lt;E&gt;</a> <a class="code" href="classuvw_1_1Flags.html#a03dcc52240c349a73523d67975ed3de2">from</a>() {</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classuvw_1_1Flags.html">Flags&lt;E&gt;</a>{} | ... | V);</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="l00103"></a><span class="lineno"><a class="line" href="classuvw_1_1Flags.html#af2989a7bce87fa62ed5c05c6eed724cf"> 103</a></span>&#160; constexpr <a class="code" href="classuvw_1_1Flags.html#af2989a7bce87fa62ed5c05c6eed724cf">Flags</a>(E flag) noexcept: flags{toInnerType(flag)} {}</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
<div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classuvw_1_1Flags.html#a5cb93c65ae7a839a917c4e789e67390f"> 110</a></span>&#160; constexpr <a class="code" href="classuvw_1_1Flags.html#a5cb93c65ae7a839a917c4e789e67390f">Flags</a>(Type f): flags{f} {}</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"><a class="line" href="classuvw_1_1Flags.html#a028a318b0a3a2a0558b671c00ec892a5"> 115</a></span>&#160; constexpr <a class="code" href="classuvw_1_1Flags.html#a028a318b0a3a2a0558b671c00ec892a5">Flags</a>(): flags{} {}</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; </div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; constexpr <a class="code" href="classuvw_1_1Flags.html#a028a318b0a3a2a0558b671c00ec892a5">Flags</a>(<span class="keyword">const</span> <a class="code" href="classuvw_1_1Flags.html#a028a318b0a3a2a0558b671c00ec892a5">Flags</a> &amp;f) noexcept: flags{f.flags} { }</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; constexpr <a class="code" href="classuvw_1_1Flags.html#a028a318b0a3a2a0558b671c00ec892a5">Flags</a>(<a class="code" href="classuvw_1_1Flags.html#a028a318b0a3a2a0558b671c00ec892a5">Flags</a> &amp;&amp;f) noexcept: flags{std::move(f.flags)} { }</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; ~<a class="code" href="classuvw_1_1Flags.html#a028a318b0a3a2a0558b671c00ec892a5">Flags</a>() noexcept { static_assert(std::is_enum_v&lt;E&gt;); }</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; </div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; constexpr <a class="code" href="classuvw_1_1Flags.html#a028a318b0a3a2a0558b671c00ec892a5">Flags</a> &amp; operator=(<span class="keyword">const</span> <a class="code" href="classuvw_1_1Flags.html#a028a318b0a3a2a0558b671c00ec892a5">Flags</a> &amp;f) noexcept {</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; flags = f.flags;</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</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; </div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; constexpr <a class="code" href="classuvw_1_1Flags.html#a028a318b0a3a2a0558b671c00ec892a5">Flags</a> &amp; operator=(<a class="code" href="classuvw_1_1Flags.html#a028a318b0a3a2a0558b671c00ec892a5">Flags</a> &amp;&amp;f) noexcept {</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; flags = std::move(f.flags);</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; </div>
<div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classuvw_1_1Flags.html#a46803acc3e3c66e3ca85de90f1d87c67"> 137</a></span>&#160; constexpr <a class="code" href="classuvw_1_1Flags.html">Flags</a> <a class="code" href="classuvw_1_1Flags.html#a46803acc3e3c66e3ca85de90f1d87c67">operator|</a>(<span class="keyword">const</span> <a class="code" href="classuvw_1_1Flags.html">Flags</a> &amp;f) <span class="keyword">const</span> noexcept { <span class="keywordflow">return</span> <a class="code" href="classuvw_1_1Flags.html">Flags</a>{flags | f.flags}; }</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="classuvw_1_1Flags.html#a6969afc42416c957a9b17ac8bf64addd"> 144</a></span>&#160; constexpr <a class="code" href="classuvw_1_1Flags.html">Flags</a> <a class="code" href="classuvw_1_1Flags.html#a6969afc42416c957a9b17ac8bf64addd">operator|</a>(E flag) <span class="keyword">const</span> noexcept { <span class="keywordflow">return</span> <a class="code" href="classuvw_1_1Flags.html">Flags</a>{flags | toInnerType(flag)}; }</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; </div>
<div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classuvw_1_1Flags.html#ab6c20105a3ba232a6c8448fd7408a63d"> 151</a></span>&#160; constexpr <a class="code" href="classuvw_1_1Flags.html">Flags</a> <a class="code" href="classuvw_1_1Flags.html#ab6c20105a3ba232a6c8448fd7408a63d">operator&amp;</a>(<span class="keyword">const</span> <a class="code" href="classuvw_1_1Flags.html">Flags</a> &amp;f) <span class="keyword">const</span> noexcept { <span class="keywordflow">return</span> <a class="code" href="classuvw_1_1Flags.html">Flags</a>{flags &amp; f.flags}; }</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; </div>
<div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classuvw_1_1Flags.html#afc2eae3a5233ac37f1470dc30eb54919"> 158</a></span>&#160; constexpr <a class="code" href="classuvw_1_1Flags.html">Flags</a> <a class="code" href="classuvw_1_1Flags.html#afc2eae3a5233ac37f1470dc30eb54919">operator&amp;</a>(E flag) <span class="keyword">const</span> noexcept { <span class="keywordflow">return</span> <a class="code" href="classuvw_1_1Flags.html">Flags</a>{flags &amp; toInnerType(flag)}; }</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; </div>
<div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classuvw_1_1Flags.html#aa15b3b3535eeeaf78124b0abdfd10c3d"> 164</a></span>&#160; <span class="keyword">explicit</span> constexpr <span class="keyword">operator</span> bool() const noexcept { <span class="keywordflow">return</span> !(flags == InnerType{}); }</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; </div>
<div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classuvw_1_1Flags.html#a3db2ea081de06e27b64ac506abf495a4"> 170</a></span>&#160; constexpr <span class="keyword">operator</span> Type() const noexcept { <span class="keywordflow">return</span> flags; }</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="keyword">private</span>:</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; InnerType flags;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;};</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="l00180"></a><span class="lineno"><a class="line" href="structuvw_1_1WinSize.html"> 180</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structuvw_1_1WinSize.html">WinSize</a> {</div>
<div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="structuvw_1_1WinSize.html#a40f10b779ddb8c2fc30e56f98fb432d7"> 181</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structuvw_1_1WinSize.html#a40f10b779ddb8c2fc30e56f98fb432d7">width</a>; </div>
<div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="structuvw_1_1WinSize.html#a3a3bdb2c69635beaa384d7259b26cd80"> 182</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structuvw_1_1WinSize.html#a3a3bdb2c69635beaa384d7259b26cd80">height</a>; </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="l00185"></a><span class="lineno"> 185</span>&#160; </div>
<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="namespaceuvw.html#ad8b4c4aaf16bbe0b08218b42fbf32f0e"> 186</a></span>&#160;<span class="keyword">using</span> HandleType = details::UVHandleType; </div>
<div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="namespaceuvw.html#aa3ae4a038de60a69b2513a039add1e48"> 188</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespaceuvw.html#aa3ae4a038de60a69b2513a039add1e48">HandleCategory</a> = details::UVTypeWrapper&lt;uv_handle_type&gt;; </div>
<div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="namespaceuvw.html#a02b7ef3b5a65b0bec1602ef434806a27"> 189</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespaceuvw.html#a02b7ef3b5a65b0bec1602ef434806a27">FileHandle</a> = details::UVTypeWrapper&lt;uv_file&gt;; </div>
<div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="namespaceuvw.html#a2df38e5bba10fc959ef37074cf580097"> 190</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespaceuvw.html#a2df38e5bba10fc959ef37074cf580097">OSSocketHandle</a> = details::UVTypeWrapper&lt;uv_os_sock_t&gt;; </div>
<div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="namespaceuvw.html#ad4b1016f485b28ad7dfd320a593b152b"> 191</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespaceuvw.html#ad4b1016f485b28ad7dfd320a593b152b">OSFileDescriptor</a> = details::UVTypeWrapper&lt;uv_os_fd_t&gt;; </div>
<div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="namespaceuvw.html#aad24ed8fb712caa655da6e3d7cb95bdd"> 192</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespaceuvw.html#aad24ed8fb712caa655da6e3d7cb95bdd">PidType</a> = details::UVTypeWrapper&lt;uv_pid_t&gt;; </div>
<div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="namespaceuvw.html#a4e050aae48eaf10709216c0dae8af8a9"> 194</a></span>&#160;constexpr <a class="code" href="namespaceuvw.html#a02b7ef3b5a65b0bec1602ef434806a27">FileHandle</a> <a class="code" href="namespaceuvw.html#a4e050aae48eaf10709216c0dae8af8a9">StdIN</a>{0}; </div>
<div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="namespaceuvw.html#a96e64f11b96529c3a65d5b22cc56cdf0"> 195</a></span>&#160;constexpr <a class="code" href="namespaceuvw.html#a02b7ef3b5a65b0bec1602ef434806a27">FileHandle</a> <a class="code" href="namespaceuvw.html#a96e64f11b96529c3a65d5b22cc56cdf0">StdOUT</a>{1}; </div>
<div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="namespaceuvw.html#ab60d2d4534e3369bc372c47843f9d4b9"> 196</a></span>&#160;constexpr <a class="code" href="namespaceuvw.html#a02b7ef3b5a65b0bec1602ef434806a27">FileHandle</a> <a class="code" href="namespaceuvw.html#ab60d2d4534e3369bc372c47843f9d4b9">StdERR</a>{2}; </div>
<div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="namespaceuvw.html#a54075b41a774f40d65861b0d97068c17"> 198</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespaceuvw.html#a54075b41a774f40d65861b0d97068c17">TimeSpec</a> = uv_timespec_t; </div>
<div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="namespaceuvw.html#ad3e2552cab7a68ba72e447f7656f01d7"> 199</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespaceuvw.html#ad3e2552cab7a68ba72e447f7656f01d7">Stat</a> = uv_stat_t; </div>
<div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="namespaceuvw.html#a07d54a7bee71b802435fac9ce4ec3b41"> 200</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespaceuvw.html#a07d54a7bee71b802435fac9ce4ec3b41">Statfs</a> = uv_statfs_t; </div>
<div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="namespaceuvw.html#a01d13fc4b5d1b58c936fdbf15c4d0a10"> 201</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespaceuvw.html#a01d13fc4b5d1b58c936fdbf15c4d0a10">Uid</a> = uv_uid_t; </div>
<div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="namespaceuvw.html#a82c74b9200b97f2e1668fe2719eef72e"> 202</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespaceuvw.html#a82c74b9200b97f2e1668fe2719eef72e">Gid</a> = uv_gid_t; </div>
<div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="namespaceuvw.html#a6a9c7b7d247c0873d9aac07d63f8360b"> 204</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespaceuvw.html#a6a9c7b7d247c0873d9aac07d63f8360b">TimeVal</a> = uv_timeval_t; </div>
<div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="namespaceuvw.html#ae7c2e4a87f2213a9509f99e3149c3e65"> 205</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespaceuvw.html#ae7c2e4a87f2213a9509f99e3149c3e65">TimeVal64</a> = uv_timeval64_t; </div>
<div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="namespaceuvw.html#a9a25d3f086b078e4b9b370fe5c4316a2"> 206</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespaceuvw.html#a9a25d3f086b078e4b9b370fe5c4316a2">RUsage</a> = uv_rusage_t; </div>
<div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="structuvw_1_1Passwd.html"> 217</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structuvw_1_1Passwd.html">Passwd</a> {</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <a class="code" href="structuvw_1_1Passwd.html">Passwd</a>(std::shared_ptr&lt;uv_passwd_t&gt; pwd);</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; </div>
<div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="structuvw_1_1Passwd.html#a32fb64ac957376ca92248767db8bc9eb"> 224</a></span>&#160; std::string <a class="code" href="structuvw_1_1Passwd.html#a32fb64ac957376ca92248767db8bc9eb">username</a>() const noexcept;</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; </div>
<div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="structuvw_1_1Passwd.html#ac8dd15961556c4bc375a579a84d37948"> 230</a></span>&#160; decltype(uv_passwd_t::<a class="code" href="structuvw_1_1Passwd.html#ac8dd15961556c4bc375a579a84d37948">uid</a>) <a class="code" href="structuvw_1_1Passwd.html#ac8dd15961556c4bc375a579a84d37948">uid</a>() const noexcept;</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; </div>
<div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="structuvw_1_1Passwd.html#a8e5ebc93fbc036d8cd559ef6a80447ba"> 236</a></span>&#160; decltype(uv_passwd_t::<a class="code" href="structuvw_1_1Passwd.html#a8e5ebc93fbc036d8cd559ef6a80447ba">gid</a>) <a class="code" href="structuvw_1_1Passwd.html#a8e5ebc93fbc036d8cd559ef6a80447ba">gid</a>() const noexcept;</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; </div>
<div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="structuvw_1_1Passwd.html#ad817256d676d8de38eaa89ff6f8d5620"> 242</a></span>&#160; std::<span class="keywordtype">string</span> <a class="code" href="structuvw_1_1Passwd.html#ad817256d676d8de38eaa89ff6f8d5620">shell</a>() const noexcept;</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; </div>
<div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="structuvw_1_1Passwd.html#a1af30054a044b2d897dbcc517f54cfbe"> 248</a></span>&#160; std::<span class="keywordtype">string</span> <a class="code" href="structuvw_1_1Passwd.html#a1af30054a044b2d897dbcc517f54cfbe">homedir</a>() const noexcept;</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; </div>
<div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="structuvw_1_1Passwd.html#ad42f80c7ea9259d8645683c05a3a14fd"> 254</a></span>&#160; operator <span class="keywordtype">bool</span>() const noexcept;</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; </div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;private:</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; std::shared_ptr&lt;uv_passwd_t&gt; passwd;</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;};</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; </div>
<div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="structuvw_1_1UtsName.html"> 270</a></span>&#160;struct <a class="code" href="structuvw_1_1UtsName.html">UtsName</a> {</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="structuvw_1_1UtsName.html">UtsName</a>(std::shared_ptr&lt;uv_utsname_t&gt; utsname);</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; </div>
<div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="structuvw_1_1UtsName.html#a760372654deba31614051e0278177fa4"> 277</a></span>&#160; std::string <a class="code" href="structuvw_1_1UtsName.html#a760372654deba31614051e0278177fa4">sysname</a>() const noexcept;</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; </div>
<div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="structuvw_1_1UtsName.html#a9d5308ac9eb875fc68c1f5fcb9a4465d"> 283</a></span>&#160; std::<span class="keywordtype">string</span> release() const noexcept;</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; </div>
<div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="structuvw_1_1UtsName.html#a22cd76f23cd9a67dfc8be6098c9e3368"> 289</a></span>&#160; std::<span class="keywordtype">string</span> version() const noexcept;</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; </div>
<div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="structuvw_1_1UtsName.html#a83fe14ee40fcbf533ebfa379067aa395"> 295</a></span>&#160; std::<span class="keywordtype">string</span> machine() const noexcept;</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;private:</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; std::shared_ptr&lt;uv_utsname_t&gt; utsname;</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;};</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; </div>
<div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="structuvw_1_1IPv4.html"> 307</a></span>&#160;struct <a class="code" href="structuvw_1_1IPv4.html">IPv4</a> {};</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; </div>
<div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="structuvw_1_1IPv6.html"> 315</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structuvw_1_1IPv6.html">IPv6</a> {};</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; </div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; </div>
<div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="structuvw_1_1Addr.html"> 321</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structuvw_1_1Addr.html">Addr</a> {</div>
<div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="structuvw_1_1Addr.html#a398a3805b87c8c2b64baf94cdc586fef"> 322</a></span>&#160; std::string <a class="code" href="structuvw_1_1Addr.html#a398a3805b87c8c2b64baf94cdc586fef">ip</a>; </div>
<div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="structuvw_1_1Addr.html#a2069fc52d0ad91f65d76f558b8b7673f"> 323</a></span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structuvw_1_1Addr.html#a2069fc52d0ad91f65d76f558b8b7673f">port</a>; </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; </div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; </div>
<div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="structuvw_1_1CPUInfo.html"> 330</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structuvw_1_1CPUInfo.html">CPUInfo</a> {</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keyword">using</span> CPUTime = decltype(uv_cpu_info_t::cpu_times);</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"><a class="line" href="structuvw_1_1CPUInfo.html#a83982b37fbb833b690f7d4a8de7e162c"> 333</a></span>&#160; std::string <a class="code" href="structuvw_1_1CPUInfo.html#a83982b37fbb833b690f7d4a8de7e162c">model</a>; </div>
<div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="structuvw_1_1CPUInfo.html#a85d9d0dbf6d941f5c8cd3bbe0452a466"> 334</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structuvw_1_1CPUInfo.html#a85d9d0dbf6d941f5c8cd3bbe0452a466">speed</a>; </div>
<div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="structuvw_1_1CPUInfo.html#a821240a35b1bda6b7085362f6cbc14ea"> 342</a></span>&#160; CPUTime <a class="code" href="structuvw_1_1CPUInfo.html#a821240a35b1bda6b7085362f6cbc14ea">times</a>;</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;};</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; </div>
<div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="structuvw_1_1InterfaceAddress.html"> 349</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structuvw_1_1InterfaceAddress.html">InterfaceAddress</a> {</div>
<div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="structuvw_1_1InterfaceAddress.html#abfec6ae9914c03ef90f9d08c0c82759e"> 350</a></span>&#160; std::string <a class="code" href="structuvw_1_1InterfaceAddress.html#abfec6ae9914c03ef90f9d08c0c82759e">name</a>; </div>
<div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="structuvw_1_1InterfaceAddress.html#ada32da6e30e1b616d25a85d4db8923a2"> 351</a></span>&#160; <span class="keywordtype">char</span> physical[6]; </div>
<div class="line"><a name="l00352"></a><span class="lineno"><a class="line" href="structuvw_1_1InterfaceAddress.html#a402b5972c6175874d2e075e5d330192d"> 352</a></span>&#160; <span class="keywordtype">bool</span> <span class="keyword">internal</span>; </div>
<div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="structuvw_1_1InterfaceAddress.html#a5dc17416f46b0e5e5255404c5858c85e"> 353</a></span>&#160; <a class="code" href="structuvw_1_1Addr.html">Addr</a> <a class="code" href="structuvw_1_1InterfaceAddress.html#a5dc17416f46b0e5e5255404c5858c85e">address</a>; </div>
<div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="structuvw_1_1InterfaceAddress.html#ae49c9d7b92ed40cfdf61d846e20eaefa"> 354</a></span>&#160; <a class="code" href="structuvw_1_1Addr.html">Addr</a> <a class="code" href="structuvw_1_1InterfaceAddress.html#ae49c9d7b92ed40cfdf61d846e20eaefa">netmask</a>; </div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;};</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; </div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; </div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="keyword">namespace </span>details {</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; </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;<span class="keyword">static</span> constexpr std::size_t DEFAULT_SIZE = 128;</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; </div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span>&gt;</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="keyword">struct </span>IpTraits;</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; </div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; </div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;<span class="keyword">struct </span>IpTraits&lt;<a class="code" href="structuvw_1_1IPv4.html">IPv4</a>&gt; {</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keyword">using</span> Type = sockaddr_in;</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keyword">using</span> AddrFuncType = int(*)(<span class="keyword">const</span> <span class="keywordtype">char</span> *, int, Type *);</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keyword">using</span> NameFuncType = int(*)(<span class="keyword">const</span> Type *, <span class="keywordtype">char</span> *, std::size_t);</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keyword">static</span> constexpr AddrFuncType addrFunc = &amp;uv_ip4_addr;</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keyword">static</span> constexpr NameFuncType nameFunc = &amp;uv_ip4_name;</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keyword">static</span> constexpr <span class="keyword">auto</span> sinPort(<span class="keyword">const</span> Type *addr) { <span class="keywordflow">return</span> addr-&gt;sin_port; }</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;};</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; </div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; </div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="keyword">struct </span>IpTraits&lt;IPv6&gt; {</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keyword">using</span> Type = sockaddr_in6;</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keyword">using</span> AddrFuncType = int(*)(<span class="keyword">const</span> <span class="keywordtype">char</span> *, int, Type *);</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keyword">using</span> NameFuncType = int(*)(<span class="keyword">const</span> Type *, <span class="keywordtype">char</span> *, std::size_t);</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keyword">static</span> constexpr AddrFuncType addrFunc = &amp;uv_ip6_addr;</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keyword">static</span> constexpr NameFuncType nameFunc = &amp;uv_ip6_name;</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keyword">static</span> constexpr <span class="keyword">auto</span> sinPort(<span class="keyword">const</span> Type *addr) { <span class="keywordflow">return</span> addr-&gt;sin6_port; }</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;};</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="keyword">template</span>&lt;<span class="keyword">typename</span> I&gt;</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;Addr address(<span class="keyword">const</span> <span class="keyword">typename</span> details::IpTraits&lt;I&gt;::Type *aptr) noexcept {</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; Addr addr;</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordtype">char</span> name[DEFAULT_SIZE];</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; </div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordtype">int</span> err = details::IpTraits&lt;I&gt;::nameFunc(aptr, name, DEFAULT_SIZE);</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; <span class="keywordflow">if</span>(0 == err) {</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; addr.port = ntohs(details::IpTraits&lt;I&gt;::sinPort(aptr));</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; addr.ip = std::string{name};</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; </div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">return</span> addr;</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;}</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; </div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> I, <span class="keyword">typename</span> F, <span class="keyword">typename</span> H&gt;</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;Addr address(F &amp;&amp;f, <span class="keyword">const</span> H *handle) noexcept {</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; sockaddr_storage ssto;</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordtype">int</span> len = <span class="keyword">sizeof</span>(ssto);</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; Addr addr{};</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; <span class="keywordtype">int</span> err = std::forward&lt;F&gt;(f)(handle, <span class="keyword">reinterpret_cast&lt;</span>sockaddr *<span class="keyword">&gt;</span>(&amp;ssto), &amp;len);</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; </div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">if</span>(0 == err) {</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keyword">typename</span> IpTraits&lt;I&gt;::Type *aptr = <span class="keyword">reinterpret_cast&lt;</span>typename IpTraits&lt;I&gt;::Type *<span class="keyword">&gt;</span>(&amp;ssto);</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; addr = address&lt;I&gt;(aptr);</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; }</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; </div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">return</span> addr;</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;}</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; </div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; </div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> F, <span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;std::string tryRead(F &amp;&amp;f, Args&amp;&amp;... args) noexcept {</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; std::size_t size = DEFAULT_SIZE;</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordtype">char</span> buf[DEFAULT_SIZE];</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; std::string str{};</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keyword">auto</span> err = std::forward&lt;F&gt;(f)(args..., buf, &amp;size);</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; <span class="keywordflow">if</span>(UV_ENOBUFS == err) {</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; std::unique_ptr&lt;char[]&gt; data{<span class="keyword">new</span> <span class="keywordtype">char</span>[size]};</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; err = std::forward&lt;F&gt;(f)(args..., data.get(), &amp;size);</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; </div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">if</span>(0 == err) {</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; str = data.get();</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; }</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(0 == err) {</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; str.assign(buf, size);</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; </div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">return</span> str;</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;}</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; </div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; </div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;}</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; </div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; </div>
<div class="line"><a name="l00453"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html"> 453</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structuvw_1_1Utilities.html">Utilities</a> {</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keyword">using</span> MallocFuncType = <span class="keywordtype">void</span>*(*)(<span class="keywordtype">size_t</span>);</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keyword">using</span> ReallocFuncType = <span class="keywordtype">void</span>*(*)(<span class="keywordtype">void</span>*, <span class="keywordtype">size_t</span>);</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keyword">using</span> CallocFuncType = <span class="keywordtype">void</span>*(*)(<span class="keywordtype">size_t</span>, <span class="keywordtype">size_t</span>);</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keyword">using</span> FreeFuncType = void(*)(<span class="keywordtype">void</span>*);</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; </div>
<div class="line"><a name="l00462"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities_1_1OS.html"> 462</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structuvw_1_1Utilities_1_1OS.html">OS</a> {</div>
<div class="line"><a name="l00472"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities_1_1OS.html#a60f780bc1b7778d64706cb6a4877795c"> 472</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceuvw.html#aad24ed8fb712caa655da6e3d7cb95bdd">PidType</a> <a class="code" href="structuvw_1_1Utilities_1_1OS.html#a60f780bc1b7778d64706cb6a4877795c">pid</a>() noexcept;</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; </div>
<div class="line"><a name="l00483"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities_1_1OS.html#a2145593521219f0184522ea6b7b6d790"> 483</a></span>&#160; static <a class="code" href="namespaceuvw.html#aad24ed8fb712caa655da6e3d7cb95bdd">PidType</a> parent() noexcept;</div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; </div>
<div class="line"><a name="l00495"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities_1_1OS.html#a770ab48231aa27f3868516b0fdf3cacd"> 495</a></span>&#160; static std::<span class="keywordtype">string</span> <a class="code" href="structuvw_1_1Passwd.html#a1af30054a044b2d897dbcc517f54cfbe">homedir</a>() noexcept;</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; </div>
<div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities_1_1OS.html#a8f7125f1eecdbedeea3322453114eeb8"> 506</a></span>&#160; static std::<span class="keywordtype">string</span> tmpdir() noexcept;</div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; </div>
<div class="line"><a name="l00514"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities_1_1OS.html#a973646ae5f6c0cd5b079bb8e201357f5"> 514</a></span>&#160; static std::<span class="keywordtype">string</span> env(const std::<span class="keywordtype">string</span> &amp;name) noexcept;</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; </div>
<div class="line"><a name="l00523"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities_1_1OS.html#a4e8d62c5b6dd954003e324b75c76e9a7"> 523</a></span>&#160; static <span class="keywordtype">bool</span> env(const std::<span class="keywordtype">string</span> &amp;name, const std::<span class="keywordtype">string</span> &amp;value) noexcept;</div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; </div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; template&lt;typename Func&gt;</div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; static std::enable_if_t&lt;std::is_invocable_v&lt;Func, std::string_view, std::string_view&gt;, <span class="keywordtype">bool</span>&gt;</div>
<div class="line"><a name="l00540"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities_1_1OS.html#a34e900dcf071f0a6aada453c97e300b7"> 540</a></span>&#160; env(Func func) noexcept {</div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; uv_env_item_t *items = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordtype">int</span> count{};</div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; </div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> ret = (uv_os_environ(&amp;items, &amp;count) == 0);</div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; </div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">if</span>(ret) {</div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> pos = 0; pos &lt; count; ++pos) {</div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; func(std::string_view{items[pos].name}, std::string_view{items[pos].value});</div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; }</div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; </div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; uv_os_free_environ(items, count);</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; }</div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; </div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">return</span> ret;</div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; }</div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; </div>
<div class="line"><a name="l00561"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities_1_1OS.html#a3bdfdaceed79abba7c456e761702ce31"> 561</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structuvw_1_1Utilities_1_1OS.html#a3bdfdaceed79abba7c456e761702ce31">hostname</a>() noexcept;</div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; </div>
<div class="line"><a name="l00572"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities_1_1OS.html#a1550cb8ea2a033653b89830911acd246"> 572</a></span>&#160; static <a class="code" href="structuvw_1_1UtsName.html">UtsName</a> uname() noexcept;</div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; </div>
<div class="line"><a name="l00586"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities_1_1OS.html#a9d2504b52c450da8620741a835eae70b"> 586</a></span>&#160; static <a class="code" href="structuvw_1_1Passwd.html">Passwd</a> passwd() noexcept;</div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; };</div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; </div>
<div class="line"><a name="l00602"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#aa243055b6c24734e7e7ba35386ea5e90"> 602</a></span>&#160; static <span class="keywordtype">int</span> osPriority(<a class="code" href="namespaceuvw.html#aad24ed8fb712caa655da6e3d7cb95bdd">PidType</a> pid);</div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; </div>
<div class="line"><a name="l00619"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#aab57ca5182aefa276f68512e5b7cd81b"> 619</a></span>&#160; static <span class="keywordtype">bool</span> osPriority(<a class="code" href="namespaceuvw.html#aad24ed8fb712caa655da6e3d7cb95bdd">PidType</a> pid, <span class="keywordtype">int</span> prio);</div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; </div>
<div class="line"><a name="l00626"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#a2a05286add192e595f5d7d5d3db682fb"> 626</a></span>&#160; static HandleType guessHandle(<a class="code" href="namespaceuvw.html#aa3ae4a038de60a69b2513a039add1e48">HandleCategory</a> category) noexcept;</div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; </div>
<div class="line"><a name="l00646"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#af90b525b2dc3d00af1ef1f160538a671"> 646</a></span>&#160; static HandleType guessHandle(<a class="code" href="namespaceuvw.html#a02b7ef3b5a65b0bec1602ef434806a27">FileHandle</a> file) noexcept;</div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; </div>
<div class="line"><a name="l00655"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#a9fc20cb272b9302a631535034e6b2999"> 655</a></span>&#160; static std::vector&lt;<a class="code" href="structuvw_1_1CPUInfo.html">CPUInfo</a>&gt; cpuInfo() noexcept;</div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; </div>
<div class="line"><a name="l00665"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#a5e37faecdeb8048bf71314f8a8f38909"> 665</a></span>&#160; static std::vector&lt;<a class="code" href="structuvw_1_1InterfaceAddress.html">InterfaceAddress</a>&gt; interfaceAddresses() noexcept;</div>
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; </div>
<div class="line"><a name="l00680"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#a8fc14b10d78dc6ad37fd4a99f0959352"> 680</a></span>&#160; static std::<span class="keywordtype">string</span> indexToName(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index) noexcept;</div>
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; </div>
<div class="line"><a name="l00692"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#a85459cc57e1f14ae6f89599cb87d036f"> 692</a></span>&#160; static std::<span class="keywordtype">string</span> indexToIid(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index) noexcept;</div>
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; </div>
<div class="line"><a name="l00717"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#a602f623c81e84e8d947187a8815956a4"> 717</a></span>&#160; static <span class="keywordtype">bool</span> replaceAllocator(MallocFuncType mallocFunc, ReallocFuncType reallocFunc, CallocFuncType callocFunc, FreeFuncType freeFunc) noexcept;</div>
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; </div>
<div class="line"><a name="l00723"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#ad7b5f2ac88ab77355ab0a21307145864"> 723</a></span>&#160; static std::array&lt;<span class="keywordtype">double</span>, 3&gt; loadAverage() noexcept;</div>
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; </div>
<div class="line"><a name="l00732"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#ae7e6b1b44125ea2cf529a8d88d135fa4"> 732</a></span>&#160; static <span class="keywordtype">char</span> ** setupArgs(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv);</div>
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; </div>
<div class="line"><a name="l00738"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#a08d83152d4f1baaf56802b26e9881508"> 738</a></span>&#160; static std::<span class="keywordtype">string</span> processTitle();</div>
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; </div>
<div class="line"><a name="l00745"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#a4640dd4ece8f89324f1a5d714287efe6"> 745</a></span>&#160; static <span class="keywordtype">bool</span> processTitle(std::<span class="keywordtype">string</span> title);</div>
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; </div>
<div class="line"><a name="l00751"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#acd553ee275a0e28a10250fcb2f6b993a"> 751</a></span>&#160; static uint64_t totalMemory() noexcept;</div>
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; </div>
<div class="line"><a name="l00764"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#a7ac9418167cafe920c1cac353216d47c"> 764</a></span>&#160; static uint64_t constrainedMemory() noexcept;</div>
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; </div>
<div class="line"><a name="l00770"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#ae2b405d1b5d8de4bbb3e9a2707b9ec3a"> 770</a></span>&#160; static <span class="keywordtype">double</span> uptime() noexcept;</div>
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; </div>
<div class="line"><a name="l00776"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#afdc2eb87f4fa129fa3c48b883c09579f"> 776</a></span>&#160; static <a class="code" href="namespaceuvw.html#a9a25d3f086b078e4b9b370fe5c4316a2">RUsage</a> rusage() noexcept;</div>
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; </div>
<div class="line"><a name="l00788"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#afd89c84fce9a9cdb4d9dcd885fa8f3fc"> 788</a></span>&#160; static uint64_t hrtime() noexcept;</div>
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; </div>
<div class="line"><a name="l00794"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#a93c08c9616de565c4b34d7f580f94fb8"> 794</a></span>&#160; static std::<span class="keywordtype">string</span> path() noexcept;</div>
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; </div>
<div class="line"><a name="l00800"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#ac0f1805b8adf93066a8c4df190f5c6a2"> 800</a></span>&#160; static std::<span class="keywordtype">string</span> cwd() noexcept;</div>
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; </div>
<div class="line"><a name="l00807"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#a1fabc7507a23df71a3baf0894be8ee65"> 807</a></span>&#160; static <span class="keywordtype">bool</span> chdir(const std::<span class="keywordtype">string</span> &amp;dir) noexcept;</div>
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; </div>
<div class="line"><a name="l00814"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#adbc40acfd4792dde69e3bcf1469224f0"> 814</a></span>&#160; static <a class="code" href="namespaceuvw.html#ae7c2e4a87f2213a9509f99e3149c3e65">TimeVal64</a> timeOfDay() noexcept;</div>
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; </div>
<div class="line"><a name="l00820"></a><span class="lineno"><a class="line" href="structuvw_1_1Utilities.html#a1350ba6a8e8bbea124003281d96ffb6c"> 820</a></span>&#160; static <span class="keywordtype">void</span> sleep(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> msec) noexcept;</div>
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160;};</div>
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; </div>
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; </div>
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;template&lt;class... Func&gt;</div>
<div class="line"><a name="l00829"></a><span class="lineno"><a class="line" href="structuvw_1_1Overloaded.html"> 829</a></span>&#160;struct <a class="code" href="structuvw_1_1Overloaded.html">Overloaded</a>: Func... {</div>
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keyword">using</span> Func::operator()...;</div>
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160;};</div>
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; </div>
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; </div>
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span>... Func&gt;</div>
<div class="line"><a name="l00839"></a><span class="lineno"><a class="line" href="namespaceuvw.html#add878bc29e70ff6ac0bd74a2177aa962"> 839</a></span>&#160;<a class="code" href="namespaceuvw.html#add878bc29e70ff6ac0bd74a2177aa962">Overloaded</a>(Func...) -&gt; <a class="code" href="structuvw_1_1Overloaded.html">Overloaded</a>&lt;Func...&gt;;</div>
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; </div>
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; </div>
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160;}</div>
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; </div>
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; </div>
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160;<span class="preprocessor">#ifndef UVW_AS_LIB</span></div>
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160;<span class="preprocessor">#include &quot;util.cpp&quot;</span></div>
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; </div>
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160;<span class="preprocessor">#endif // UVW_UTIL_INCLUDE_H</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="astructuvw_1_1WinSize_html_a40f10b779ddb8c2fc30e56f98fb432d7"><div class="ttname"><a href="structuvw_1_1WinSize.html#a40f10b779ddb8c2fc30e56f98fb432d7">uvw::WinSize::width</a></div><div class="ttdeci">int width</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00181">util.h:181</a></div></div>
<div class="ttc" id="anamespaceuvw_html"><div class="ttname"><a href="namespaceuvw.html">uvw</a></div><div class="ttdoc">uvw default namespace.</div><div class="ttdef"><b>Definition:</b> <a href="async_8h_source.html#l00010">async.h:10</a></div></div>
<div class="ttc" id="astructuvw_1_1WinSize_html"><div class="ttname"><a href="structuvw_1_1WinSize.html">uvw::WinSize</a></div><div class="ttdoc">Windows size representation.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00180">util.h:180</a></div></div>
<div class="ttc" id="anamespaceuvw_html_ad3e2552cab7a68ba72e447f7656f01d7"><div class="ttname"><a href="namespaceuvw.html#ad3e2552cab7a68ba72e447f7656f01d7">uvw::Stat</a></div><div class="ttdeci">uv_stat_t Stat</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00199">util.h:199</a></div></div>
<div class="ttc" id="anamespaceuvw_html_a4e050aae48eaf10709216c0dae8af8a9"><div class="ttname"><a href="namespaceuvw.html#a4e050aae48eaf10709216c0dae8af8a9">uvw::StdIN</a></div><div class="ttdeci">constexpr FileHandle StdIN</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00194">util.h:194</a></div></div>
<div class="ttc" id="aclassuvw_1_1Flags_html_a028a318b0a3a2a0558b671c00ec892a5"><div class="ttname"><a href="classuvw_1_1Flags.html#a028a318b0a3a2a0558b671c00ec892a5">uvw::Flags::Flags</a></div><div class="ttdeci">constexpr Flags()</div><div class="ttdoc">Constructs an uninitialized Flags object.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00115">util.h:115</a></div></div>
<div class="ttc" id="aclassuvw_1_1Flags_html_ab6c20105a3ba232a6c8448fd7408a63d"><div class="ttname"><a href="classuvw_1_1Flags.html#ab6c20105a3ba232a6c8448fd7408a63d">uvw::Flags::operator&amp;</a></div><div class="ttdeci">constexpr Flags operator&amp;(const Flags &amp;f) const noexcept</div><div class="ttdoc">And operator.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00151">util.h:151</a></div></div>
<div class="ttc" id="astructuvw_1_1Utilities_1_1OS_html_a60f780bc1b7778d64706cb6a4877795c"><div class="ttname"><a href="structuvw_1_1Utilities_1_1OS.html#a60f780bc1b7778d64706cb6a4877795c">uvw::Utilities::OS::pid</a></div><div class="ttdeci">static PidType pid() noexcept</div><div class="ttdoc">Returns the current process id.</div></div>
<div class="ttc" id="anamespaceuvw_html_add878bc29e70ff6ac0bd74a2177aa962"><div class="ttname"><a href="namespaceuvw.html#add878bc29e70ff6ac0bd74a2177aa962">uvw::Overloaded</a></div><div class="ttdeci">Overloaded(Func...) -&gt; Overloaded&lt; Func... &gt;</div><div class="ttdoc">Deduction guide.</div></div>
<div class="ttc" id="aclassuvw_1_1Flags_html_a5cb93c65ae7a839a917c4e789e67390f"><div class="ttname"><a href="classuvw_1_1Flags.html#a5cb93c65ae7a839a917c4e789e67390f">uvw::Flags::Flags</a></div><div class="ttdeci">constexpr Flags(Type f)</div><div class="ttdoc">Constructs a Flags object from an instance of the underlying type of the enum E.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00110">util.h:110</a></div></div>
<div class="ttc" id="astructuvw_1_1InterfaceAddress_html"><div class="ttname"><a href="structuvw_1_1InterfaceAddress.html">uvw::InterfaceAddress</a></div><div class="ttdoc">Interface address.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00349">util.h:349</a></div></div>
<div class="ttc" id="anamespaceuvw_html_a6a9c7b7d247c0873d9aac07d63f8360b"><div class="ttname"><a href="namespaceuvw.html#a6a9c7b7d247c0873d9aac07d63f8360b">uvw::TimeVal</a></div><div class="ttdeci">uv_timeval_t TimeVal</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00204">util.h:204</a></div></div>
<div class="ttc" id="astructuvw_1_1Overloaded_html"><div class="ttname"><a href="structuvw_1_1Overloaded.html">uvw::Overloaded</a></div><div class="ttdoc">Helper type for visitors.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00829">util.h:829</a></div></div>
<div class="ttc" id="astructuvw_1_1Addr_html_a2069fc52d0ad91f65d76f558b8b7673f"><div class="ttname"><a href="structuvw_1_1Addr.html#a2069fc52d0ad91f65d76f558b8b7673f">uvw::Addr::port</a></div><div class="ttdeci">unsigned int port</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00323">util.h:323</a></div></div>
<div class="ttc" id="astructuvw_1_1Passwd_html_a1af30054a044b2d897dbcc517f54cfbe"><div class="ttname"><a href="structuvw_1_1Passwd.html#a1af30054a044b2d897dbcc517f54cfbe">uvw::Passwd::homedir</a></div><div class="ttdeci">std::string homedir() const noexcept</div><div class="ttdoc">Gets the homedir.</div></div>
<div class="ttc" id="anamespaceuvw_html_a9a25d3f086b078e4b9b370fe5c4316a2"><div class="ttname"><a href="namespaceuvw.html#a9a25d3f086b078e4b9b370fe5c4316a2">uvw::RUsage</a></div><div class="ttdeci">uv_rusage_t RUsage</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00206">util.h:206</a></div></div>
<div class="ttc" id="anamespaceuvw_html_a82c74b9200b97f2e1668fe2719eef72e"><div class="ttname"><a href="namespaceuvw.html#a82c74b9200b97f2e1668fe2719eef72e">uvw::Gid</a></div><div class="ttdeci">uv_gid_t Gid</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00202">util.h:202</a></div></div>
<div class="ttc" id="astructuvw_1_1Passwd_html_a32fb64ac957376ca92248767db8bc9eb"><div class="ttname"><a href="structuvw_1_1Passwd.html#a32fb64ac957376ca92248767db8bc9eb">uvw::Passwd::username</a></div><div class="ttdeci">std::string username() const noexcept</div><div class="ttdoc">Gets the username.</div></div>
<div class="ttc" id="aclassuvw_1_1Flags_html_a03dcc52240c349a73523d67975ed3de2"><div class="ttname"><a href="classuvw_1_1Flags.html#a03dcc52240c349a73523d67975ed3de2">uvw::Flags::from</a></div><div class="ttdeci">static constexpr Flags&lt; E &gt; from()</div><div class="ttdoc">Utility factory method to pack a set of values all at once.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00095">util.h:95</a></div></div>
<div class="ttc" id="anamespaceuvw_html_ab60d2d4534e3369bc372c47843f9d4b9"><div class="ttname"><a href="namespaceuvw.html#ab60d2d4534e3369bc372c47843f9d4b9">uvw::StdERR</a></div><div class="ttdeci">constexpr FileHandle StdERR</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00196">util.h:196</a></div></div>
<div class="ttc" id="astructuvw_1_1UtsName_html_a760372654deba31614051e0278177fa4"><div class="ttname"><a href="structuvw_1_1UtsName.html#a760372654deba31614051e0278177fa4">uvw::UtsName::sysname</a></div><div class="ttdeci">std::string sysname() const noexcept</div><div class="ttdoc">Gets the operating system name (like &quot;Linux&quot;).</div></div>
<div class="ttc" id="astructuvw_1_1InterfaceAddress_html_a5dc17416f46b0e5e5255404c5858c85e"><div class="ttname"><a href="structuvw_1_1InterfaceAddress.html#a5dc17416f46b0e5e5255404c5858c85e">uvw::InterfaceAddress::address</a></div><div class="ttdeci">Addr address</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00353">util.h:353</a></div></div>
<div class="ttc" id="astructuvw_1_1CPUInfo_html"><div class="ttname"><a href="structuvw_1_1CPUInfo.html">uvw::CPUInfo</a></div><div class="ttdoc">CPU information.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00330">util.h:330</a></div></div>
<div class="ttc" id="anamespaceuvw_html_ad4b1016f485b28ad7dfd320a593b152b"><div class="ttname"><a href="namespaceuvw.html#ad4b1016f485b28ad7dfd320a593b152b">uvw::OSFileDescriptor</a></div><div class="ttdeci">details::UVTypeWrapper&lt; uv_os_fd_t &gt; OSFileDescriptor</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00191">util.h:191</a></div></div>
<div class="ttc" id="anamespaceuvw_html_a07d54a7bee71b802435fac9ce4ec3b41"><div class="ttname"><a href="namespaceuvw.html#a07d54a7bee71b802435fac9ce4ec3b41">uvw::Statfs</a></div><div class="ttdeci">uv_statfs_t Statfs</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00200">util.h:200</a></div></div>
<div class="ttc" id="astructuvw_1_1CPUInfo_html_a85d9d0dbf6d941f5c8cd3bbe0452a466"><div class="ttname"><a href="structuvw_1_1CPUInfo.html#a85d9d0dbf6d941f5c8cd3bbe0452a466">uvw::CPUInfo::speed</a></div><div class="ttdeci">int speed</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00334">util.h:334</a></div></div>
<div class="ttc" id="astructuvw_1_1IPv4_html"><div class="ttname"><a href="structuvw_1_1IPv4.html">uvw::IPv4</a></div><div class="ttdoc">The IPv4 tag.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00307">util.h:307</a></div></div>
<div class="ttc" id="astructuvw_1_1Utilities_html"><div class="ttname"><a href="structuvw_1_1Utilities.html">uvw::Utilities</a></div><div class="ttdoc">Miscellaneous utilities.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00453">util.h:453</a></div></div>
<div class="ttc" id="aclassuvw_1_1Flags_html_a46803acc3e3c66e3ca85de90f1d87c67"><div class="ttname"><a href="classuvw_1_1Flags.html#a46803acc3e3c66e3ca85de90f1d87c67">uvw::Flags::operator|</a></div><div class="ttdeci">constexpr Flags operator|(const Flags &amp;f) const noexcept</div><div class="ttdoc">Or operator.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00137">util.h:137</a></div></div>
<div class="ttc" id="astructuvw_1_1Addr_html_a398a3805b87c8c2b64baf94cdc586fef"><div class="ttname"><a href="structuvw_1_1Addr.html#a398a3805b87c8c2b64baf94cdc586fef">uvw::Addr::ip</a></div><div class="ttdeci">std::string ip</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00322">util.h:322</a></div></div>
<div class="ttc" id="astructuvw_1_1WinSize_html_a3a3bdb2c69635beaa384d7259b26cd80"><div class="ttname"><a href="structuvw_1_1WinSize.html#a3a3bdb2c69635beaa384d7259b26cd80">uvw::WinSize::height</a></div><div class="ttdeci">int height</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00182">util.h:182</a></div></div>
<div class="ttc" id="aclassuvw_1_1Flags_html"><div class="ttname"><a href="classuvw_1_1Flags.html">uvw::Flags</a></div><div class="ttdoc">Utility class to handle flags.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00082">util.h:82</a></div></div>
<div class="ttc" id="anamespaceuvw_html_aa3ae4a038de60a69b2513a039add1e48"><div class="ttname"><a href="namespaceuvw.html#aa3ae4a038de60a69b2513a039add1e48">uvw::HandleCategory</a></div><div class="ttdeci">details::UVTypeWrapper&lt; uv_handle_type &gt; HandleCategory</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00188">util.h:188</a></div></div>
<div class="ttc" id="aclassuvw_1_1Flags_html_afc2eae3a5233ac37f1470dc30eb54919"><div class="ttname"><a href="classuvw_1_1Flags.html#afc2eae3a5233ac37f1470dc30eb54919">uvw::Flags::operator&amp;</a></div><div class="ttdeci">constexpr Flags operator&amp;(E flag) const noexcept</div><div class="ttdoc">And operator.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00158">util.h:158</a></div></div>
<div class="ttc" id="aclassuvw_1_1Flags_html_a6969afc42416c957a9b17ac8bf64addd"><div class="ttname"><a href="classuvw_1_1Flags.html#a6969afc42416c957a9b17ac8bf64addd">uvw::Flags::operator|</a></div><div class="ttdeci">constexpr Flags operator|(E flag) const noexcept</div><div class="ttdoc">Or operator.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00144">util.h:144</a></div></div>
<div class="ttc" id="astructuvw_1_1InterfaceAddress_html_ae49c9d7b92ed40cfdf61d846e20eaefa"><div class="ttname"><a href="structuvw_1_1InterfaceAddress.html#ae49c9d7b92ed40cfdf61d846e20eaefa">uvw::InterfaceAddress::netmask</a></div><div class="ttdeci">Addr netmask</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00354">util.h:354</a></div></div>
<div class="ttc" id="astructuvw_1_1Passwd_html_a8e5ebc93fbc036d8cd559ef6a80447ba"><div class="ttname"><a href="structuvw_1_1Passwd.html#a8e5ebc93fbc036d8cd559ef6a80447ba">uvw::Passwd::gid</a></div><div class="ttdeci">decltype(uv_passwd_t::gid) gid() const noexcept</div><div class="ttdoc">Gets the gid.</div></div>
<div class="ttc" id="astructuvw_1_1Addr_html"><div class="ttname"><a href="structuvw_1_1Addr.html">uvw::Addr</a></div><div class="ttdoc">Address representation.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00321">util.h:321</a></div></div>
<div class="ttc" id="anamespaceuvw_html_ae7c2e4a87f2213a9509f99e3149c3e65"><div class="ttname"><a href="namespaceuvw.html#ae7c2e4a87f2213a9509f99e3149c3e65">uvw::TimeVal64</a></div><div class="ttdeci">uv_timeval64_t TimeVal64</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00205">util.h:205</a></div></div>
<div class="ttc" id="anamespaceuvw_html_a96e64f11b96529c3a65d5b22cc56cdf0"><div class="ttname"><a href="namespaceuvw.html#a96e64f11b96529c3a65d5b22cc56cdf0">uvw::StdOUT</a></div><div class="ttdeci">constexpr FileHandle StdOUT</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00195">util.h:195</a></div></div>
<div class="ttc" id="anamespaceuvw_html_a02b7ef3b5a65b0bec1602ef434806a27"><div class="ttname"><a href="namespaceuvw.html#a02b7ef3b5a65b0bec1602ef434806a27">uvw::FileHandle</a></div><div class="ttdeci">details::UVTypeWrapper&lt; uv_file &gt; FileHandle</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00189">util.h:189</a></div></div>
<div class="ttc" id="astructuvw_1_1CPUInfo_html_a83982b37fbb833b690f7d4a8de7e162c"><div class="ttname"><a href="structuvw_1_1CPUInfo.html#a83982b37fbb833b690f7d4a8de7e162c">uvw::CPUInfo::model</a></div><div class="ttdeci">std::string model</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00333">util.h:333</a></div></div>
<div class="ttc" id="astructuvw_1_1Passwd_html"><div class="ttname"><a href="structuvw_1_1Passwd.html">uvw::Passwd</a></div><div class="ttdoc">Utility class.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00217">util.h:217</a></div></div>
<div class="ttc" id="aclassuvw_1_1Flags_html_af2989a7bce87fa62ed5c05c6eed724cf"><div class="ttname"><a href="classuvw_1_1Flags.html#af2989a7bce87fa62ed5c05c6eed724cf">uvw::Flags::Flags</a></div><div class="ttdeci">constexpr Flags(E flag) noexcept</div><div class="ttdoc">Constructs a Flags object from a value of the enum E.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00103">util.h:103</a></div></div>
<div class="ttc" id="anamespaceuvw_html_a2df38e5bba10fc959ef37074cf580097"><div class="ttname"><a href="namespaceuvw.html#a2df38e5bba10fc959ef37074cf580097">uvw::OSSocketHandle</a></div><div class="ttdeci">details::UVTypeWrapper&lt; uv_os_sock_t &gt; OSSocketHandle</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00190">util.h:190</a></div></div>
<div class="ttc" id="astructuvw_1_1Utilities_1_1OS_html_a3bdfdaceed79abba7c456e761702ce31"><div class="ttname"><a href="structuvw_1_1Utilities_1_1OS.html#a3bdfdaceed79abba7c456e761702ce31">uvw::Utilities::OS::hostname</a></div><div class="ttdeci">static std::string hostname() noexcept</div><div class="ttdoc">Returns the hostname.</div></div>
<div class="ttc" id="astructuvw_1_1Utilities_1_1OS_html"><div class="ttname"><a href="structuvw_1_1Utilities_1_1OS.html">uvw::Utilities::OS</a></div><div class="ttdoc">OS dedicated utilities.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00462">util.h:462</a></div></div>
<div class="ttc" id="astructuvw_1_1CPUInfo_html_a821240a35b1bda6b7085362f6cbc14ea"><div class="ttname"><a href="structuvw_1_1CPUInfo.html#a821240a35b1bda6b7085362f6cbc14ea">uvw::CPUInfo::times</a></div><div class="ttdeci">CPUTime times</div><div class="ttdoc">CPU times.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00342">util.h:342</a></div></div>
<div class="ttc" id="astructuvw_1_1Passwd_html_ac8dd15961556c4bc375a579a84d37948"><div class="ttname"><a href="structuvw_1_1Passwd.html#ac8dd15961556c4bc375a579a84d37948">uvw::Passwd::uid</a></div><div class="ttdeci">decltype(uv_passwd_t::uid) uid() const noexcept</div><div class="ttdoc">Gets the uid.</div></div>
<div class="ttc" id="anamespaceuvw_html_a54075b41a774f40d65861b0d97068c17"><div class="ttname"><a href="namespaceuvw.html#a54075b41a774f40d65861b0d97068c17">uvw::TimeSpec</a></div><div class="ttdeci">uv_timespec_t TimeSpec</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00198">util.h:198</a></div></div>
<div class="ttc" id="anamespaceuvw_html_a01d13fc4b5d1b58c936fdbf15c4d0a10"><div class="ttname"><a href="namespaceuvw.html#a01d13fc4b5d1b58c936fdbf15c4d0a10">uvw::Uid</a></div><div class="ttdeci">uv_uid_t Uid</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00201">util.h:201</a></div></div>
<div class="ttc" id="anamespaceuvw_html_aad24ed8fb712caa655da6e3d7cb95bdd"><div class="ttname"><a href="namespaceuvw.html#aad24ed8fb712caa655da6e3d7cb95bdd">uvw::PidType</a></div><div class="ttdeci">details::UVTypeWrapper&lt; uv_pid_t &gt; PidType</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00192">util.h:192</a></div></div>
<div class="ttc" id="astructuvw_1_1IPv6_html"><div class="ttname"><a href="structuvw_1_1IPv6.html">uvw::IPv6</a></div><div class="ttdoc">The IPv6 tag.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00315">util.h:315</a></div></div>
<div class="ttc" id="astructuvw_1_1UtsName_html"><div class="ttname"><a href="structuvw_1_1UtsName.html">uvw::UtsName</a></div><div class="ttdoc">Utility class.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00270">util.h:270</a></div></div>
<div class="ttc" id="astructuvw_1_1Passwd_html_ad817256d676d8de38eaa89ff6f8d5620"><div class="ttname"><a href="structuvw_1_1Passwd.html#ad817256d676d8de38eaa89ff6f8d5620">uvw::Passwd::shell</a></div><div class="ttdeci">std::string shell() const noexcept</div><div class="ttdoc">Gets the shell.</div></div>
<div class="ttc" id="astructuvw_1_1InterfaceAddress_html_abfec6ae9914c03ef90f9d08c0c82759e"><div class="ttname"><a href="structuvw_1_1InterfaceAddress.html#abfec6ae9914c03ef90f9d08c0c82759e">uvw::InterfaceAddress::name</a></div><div class="ttdeci">std::string name</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00350">util.h:350</a></div></div>
<!-- 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.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20
</small></address>
</body>
</html>