uvw/util_8h_source.html
2020-05-31 16:45:27 +02:00

569 lines
96 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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.17"/>
<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.6.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<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"> 224</span>&#160; std::string <a class="code" href="structuvw_1_1Passwd.html#a32fb64ac957376ca92248767db8bc9eb">username</a>() <span class="keyword">const</span> 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"> 230</span>&#160; decltype(uv_passwd_t::uid) <a class="code" href="structuvw_1_1Passwd.html#ac8dd15961556c4bc375a579a84d37948">uid</a>() <span class="keyword">const</span> 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"> 236</span>&#160; decltype(uv_passwd_t::gid) <a class="code" href="structuvw_1_1Passwd.html#a8e5ebc93fbc036d8cd559ef6a80447ba">gid</a>() <span class="keyword">const</span> 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"> 242</span>&#160; std::string <a class="code" href="structuvw_1_1Passwd.html#ad817256d676d8de38eaa89ff6f8d5620">shell</a>() <span class="keyword">const</span> 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"> 248</span>&#160; std::string <a class="code" href="structuvw_1_1Passwd.html#a1af30054a044b2d897dbcc517f54cfbe">homedir</a>() <span class="keyword">const</span> 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"> 254</span>&#160; <span class="keyword">operator</span> bool() <span class="keyword">const</span> 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;<span class="keyword">private</span>:</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;<span class="keyword">struct </span><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"> 277</span>&#160; std::string <a class="code" href="structuvw_1_1UtsName.html#a760372654deba31614051e0278177fa4">sysname</a>() <span class="keyword">const</span> 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"> 283</span>&#160; std::string <a class="code" href="structuvw_1_1UtsName.html#a9d5308ac9eb875fc68c1f5fcb9a4465d">release</a>() <span class="keyword">const</span> 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"> 289</span>&#160; std::string <a class="code" href="structuvw_1_1UtsName.html#a22cd76f23cd9a67dfc8be6098c9e3368">version</a>() <span class="keyword">const</span> 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"> 295</span>&#160; std::string <a class="code" href="structuvw_1_1UtsName.html#a83fe14ee40fcbf533ebfa379067aa395">machine</a>() <span class="keyword">const</span> 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;<span class="keyword">private</span>:</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;<span class="keyword">struct </span><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> <a class="code" href="structuvw_1_1InterfaceAddress.html#ada32da6e30e1b616d25a85d4db8923a2">physical</a>[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>*(*)(size_t);</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>*, size_t);</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>*(*)(size_t, size_t);</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"> 472</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"> 483</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#a2145593521219f0184522ea6b7b6d790">parent</a>() 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"> 495</span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structuvw_1_1Utilities_1_1OS.html#a770ab48231aa27f3868516b0fdf3cacd">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"> 506</span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structuvw_1_1Utilities_1_1OS.html#a8f7125f1eecdbedeea3322453114eeb8">tmpdir</a>() 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"> 514</span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structuvw_1_1Utilities_1_1OS.html#a973646ae5f6c0cd5b079bb8e201357f5">env</a>(<span class="keyword">const</span> std::string &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"> 523</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="structuvw_1_1Utilities_1_1OS.html#a973646ae5f6c0cd5b079bb8e201357f5">env</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keyword">const</span> std::string &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; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Func&gt;</div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keyword">static</span> 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; <a class="code" href="structuvw_1_1Utilities_1_1OS.html#a34e900dcf071f0a6aada453c97e300b7">env</a>(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"> 561</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"> 572</span>&#160; static <a class="code" href="structuvw_1_1UtsName.html">UtsName</a> <a class="code" href="structuvw_1_1Utilities_1_1OS.html#a1550cb8ea2a033653b89830911acd246">uname</a>() 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"> 586</span>&#160; static <a class="code" href="structuvw_1_1Passwd.html">Passwd</a> <a class="code" href="structuvw_1_1Utilities_1_1OS.html#a9d2504b52c450da8620741a835eae70b">passwd</a>() 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"> 602</span>&#160; static <span class="keywordtype">int</span> <a class="code" href="structuvw_1_1Utilities.html#aa243055b6c24734e7e7ba35386ea5e90">osPriority</a>(<a class="code" href="namespaceuvw.html#aad24ed8fb712caa655da6e3d7cb95bdd">PidType</a> <a class="code" href="structuvw_1_1Utilities_1_1OS.html#a60f780bc1b7778d64706cb6a4877795c">pid</a>);</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"> 619</span>&#160; static <span class="keywordtype">bool</span> <a class="code" href="structuvw_1_1Utilities.html#aa243055b6c24734e7e7ba35386ea5e90">osPriority</a>(<a class="code" href="namespaceuvw.html#aad24ed8fb712caa655da6e3d7cb95bdd">PidType</a> <a class="code" href="structuvw_1_1Utilities_1_1OS.html#a60f780bc1b7778d64706cb6a4877795c">pid</a>, <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"> 626</span>&#160; static HandleType <a class="code" href="structuvw_1_1Utilities.html#a2a05286add192e595f5d7d5d3db682fb">guessHandle</a>(<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"> 646</span>&#160; static HandleType <a class="code" href="structuvw_1_1Utilities.html#a2a05286add192e595f5d7d5d3db682fb">guessHandle</a>(<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"> 655</span>&#160; static std::vector&lt;<a class="code" href="structuvw_1_1CPUInfo.html">CPUInfo</a>&gt; <a class="code" href="structuvw_1_1Utilities.html#a9fc20cb272b9302a631535034e6b2999">cpuInfo</a>() 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"> 665</span>&#160; static std::vector&lt;<a class="code" href="structuvw_1_1InterfaceAddress.html">InterfaceAddress</a>&gt; <a class="code" href="structuvw_1_1Utilities.html#a5e37faecdeb8048bf71314f8a8f38909">interfaceAddresses</a>() 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"> 680</span>&#160; static std::<span class="keywordtype">string</span> <a class="code" href="structuvw_1_1Utilities.html#a8fc14b10d78dc6ad37fd4a99f0959352">indexToName</a>(<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"> 692</span>&#160; static std::<span class="keywordtype">string</span> <a class="code" href="structuvw_1_1Utilities.html#a85459cc57e1f14ae6f89599cb87d036f">indexToIid</a>(<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"> 717</span>&#160; static <span class="keywordtype">bool</span> <a class="code" href="structuvw_1_1Utilities.html#a602f623c81e84e8d947187a8815956a4">replaceAllocator</a>(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"> 723</span>&#160; static std::array&lt;<span class="keywordtype">double</span>, 3&gt; <a class="code" href="structuvw_1_1Utilities.html#ad7b5f2ac88ab77355ab0a21307145864">loadAverage</a>() 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"> 732</span>&#160; static <span class="keywordtype">char</span> ** <a class="code" href="structuvw_1_1Utilities.html#ae7e6b1b44125ea2cf529a8d88d135fa4">setupArgs</a>(<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"> 738</span>&#160; static std::<span class="keywordtype">string</span> <a class="code" href="structuvw_1_1Utilities.html#a08d83152d4f1baaf56802b26e9881508">processTitle</a>();</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"> 745</span>&#160; static <span class="keywordtype">bool</span> <a class="code" href="structuvw_1_1Utilities.html#a08d83152d4f1baaf56802b26e9881508">processTitle</a>(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"> 751</span>&#160; static uint64_t <a class="code" href="structuvw_1_1Utilities.html#acd553ee275a0e28a10250fcb2f6b993a">totalMemory</a>() 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"> 764</span>&#160; static uint64_t <a class="code" href="structuvw_1_1Utilities.html#a7ac9418167cafe920c1cac353216d47c">constrainedMemory</a>() 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"> 770</span>&#160; static <span class="keywordtype">double</span> <a class="code" href="structuvw_1_1Utilities.html#ae2b405d1b5d8de4bbb3e9a2707b9ec3a">uptime</a>() 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"> 776</span>&#160; static <a class="code" href="namespaceuvw.html#a9a25d3f086b078e4b9b370fe5c4316a2">RUsage</a> <a class="code" href="structuvw_1_1Utilities.html#afdc2eb87f4fa129fa3c48b883c09579f">rusage</a>() 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"> 788</span>&#160; static uint64_t <a class="code" href="structuvw_1_1Utilities.html#afd89c84fce9a9cdb4d9dcd885fa8f3fc">hrtime</a>() 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"> 794</span>&#160; static std::<span class="keywordtype">string</span> <a class="code" href="structuvw_1_1Utilities.html#a93c08c9616de565c4b34d7f580f94fb8">path</a>() 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"> 800</span>&#160; static std::<span class="keywordtype">string</span> <a class="code" href="structuvw_1_1Utilities.html#ac0f1805b8adf93066a8c4df190f5c6a2">cwd</a>() 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"> 807</span>&#160; static <span class="keywordtype">bool</span> <a class="code" href="structuvw_1_1Utilities.html#a1fabc7507a23df71a3baf0894be8ee65">chdir</a>(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"> 814</span>&#160; static <a class="code" href="namespaceuvw.html#ae7c2e4a87f2213a9509f99e3149c3e65">TimeVal64</a> <a class="code" href="structuvw_1_1Utilities.html#adbc40acfd4792dde69e3bcf1469224f0">timeOfDay</a>() 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"> 820</span>&#160; static <span class="keywordtype">void</span> <a class="code" href="structuvw_1_1Utilities.html#a1350ba6a8e8bbea124003281d96ffb6c">sleep</a>(<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="l00824"></a><span class="lineno"> 824</span>&#160;}</div>
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; </div>
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; </div>
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;<span class="preprocessor">#ifndef UVW_AS_LIB</span></div>
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;<span class="preprocessor">#include &quot;util.cpp&quot;</span></div>
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; </div>
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160;<span class="preprocessor">#endif // UVW_UTIL_INCLUDE_H</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="astructuvw_1_1Utilities_1_1OS_html_a973646ae5f6c0cd5b079bb8e201357f5"><div class="ttname"><a href="structuvw_1_1Utilities_1_1OS.html#a973646ae5f6c0cd5b079bb8e201357f5">uvw::Utilities::OS::env</a></div><div class="ttdeci">static std::string env(const std::string &amp;name) noexcept</div><div class="ttdoc">Retrieves an environment variable.</div></div>
<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_1Utilities_html_aa243055b6c24734e7e7ba35386ea5e90"><div class="ttname"><a href="structuvw_1_1Utilities.html#aa243055b6c24734e7e7ba35386ea5e90">uvw::Utilities::osPriority</a></div><div class="ttdeci">static int osPriority(PidType pid)</div><div class="ttdoc">Retrieves the scheduling priority of a process.</div></div>
<div class="ttc" id="astructuvw_1_1Utilities_html_a85459cc57e1f14ae6f89599cb87d036f"><div class="ttname"><a href="structuvw_1_1Utilities.html#a85459cc57e1f14ae6f89599cb87d036f">uvw::Utilities::indexToIid</a></div><div class="ttdeci">static std::string indexToIid(unsigned int index) noexcept</div><div class="ttdoc">Retrieves a network interface identifier.</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="astructuvw_1_1UtsName_html_a83fe14ee40fcbf533ebfa379067aa395"><div class="ttname"><a href="structuvw_1_1UtsName.html#a83fe14ee40fcbf533ebfa379067aa395">uvw::UtsName::machine</a></div><div class="ttdeci">std::string machine() const noexcept</div><div class="ttdoc">Gets the hardware identifier.</div></div>
<div class="ttc" id="astructuvw_1_1Utilities_html_a1350ba6a8e8bbea124003281d96ffb6c"><div class="ttname"><a href="structuvw_1_1Utilities.html#a1350ba6a8e8bbea124003281d96ffb6c">uvw::Utilities::sleep</a></div><div class="ttdeci">static void sleep(unsigned int msec) noexcept</div><div class="ttdoc">Causes the calling thread to sleep for a while.</div></div>
<div class="ttc" id="astructuvw_1_1Utilities_1_1OS_html_a770ab48231aa27f3868516b0fdf3cacd"><div class="ttname"><a href="structuvw_1_1Utilities_1_1OS.html#a770ab48231aa27f3868516b0fdf3cacd">uvw::Utilities::OS::homedir</a></div><div class="ttdeci">static std::string homedir() noexcept</div><div class="ttdoc">Gets the current user's home directory.</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_html_adbc40acfd4792dde69e3bcf1469224f0"><div class="ttname"><a href="structuvw_1_1Utilities.html#adbc40acfd4792dde69e3bcf1469224f0">uvw::Utilities::timeOfDay</a></div><div class="ttdeci">static TimeVal64 timeOfDay() noexcept</div><div class="ttdoc">Cross-platform implementation of gettimeofday</div></div>
<div class="ttc" id="astructuvw_1_1Utilities_1_1OS_html_a8f7125f1eecdbedeea3322453114eeb8"><div class="ttname"><a href="structuvw_1_1Utilities_1_1OS.html#a8f7125f1eecdbedeea3322453114eeb8">uvw::Utilities::OS::tmpdir</a></div><div class="ttdeci">static std::string tmpdir() noexcept</div><div class="ttdoc">Gets the temp directory.</div></div>
<div class="ttc" id="astructuvw_1_1Utilities_html_a8fc14b10d78dc6ad37fd4a99f0959352"><div class="ttname"><a href="structuvw_1_1Utilities.html#a8fc14b10d78dc6ad37fd4a99f0959352">uvw::Utilities::indexToName</a></div><div class="ttdeci">static std::string indexToName(unsigned int index) noexcept</div><div class="ttdoc">IPv6-capable implementation of if_indextoname.</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="astructuvw_1_1InterfaceAddress_html_ada32da6e30e1b616d25a85d4db8923a2"><div class="ttname"><a href="structuvw_1_1InterfaceAddress.html#ada32da6e30e1b616d25a85d4db8923a2">uvw::InterfaceAddress::physical</a></div><div class="ttdeci">char physical[6]</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00351">util.h:351</a></div></div>
<div class="ttc" id="astructuvw_1_1Utilities_1_1OS_html_a9d2504b52c450da8620741a835eae70b"><div class="ttname"><a href="structuvw_1_1Utilities_1_1OS.html#a9d2504b52c450da8620741a835eae70b">uvw::Utilities::OS::passwd</a></div><div class="ttdeci">static Passwd passwd() noexcept</div><div class="ttdoc">Gets a subset of the password file entry.</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_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_1Utilities_html_afdc2eb87f4fa129fa3c48b883c09579f"><div class="ttname"><a href="structuvw_1_1Utilities.html#afdc2eb87f4fa129fa3c48b883c09579f">uvw::Utilities::rusage</a></div><div class="ttdeci">static RUsage rusage() noexcept</div><div class="ttdoc">Gets the resource usage measures for the current process.</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="astructuvw_1_1Utilities_1_1OS_html_a34e900dcf071f0a6aada453c97e300b7"><div class="ttname"><a href="structuvw_1_1Utilities_1_1OS.html#a34e900dcf071f0a6aada453c97e300b7">uvw::Utilities::OS::env</a></div><div class="ttdeci">static std::enable_if_t&lt; std::is_invocable_v&lt; Func, std::string_view, std::string_view &gt;, bool &gt; env(Func func) noexcept</div><div class="ttdoc">Retrieves all environment variables and iterates them.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00540">util.h:540</a></div></div>
<div class="ttc" id="astructuvw_1_1Utilities_html_ad7b5f2ac88ab77355ab0a21307145864"><div class="ttname"><a href="structuvw_1_1Utilities.html#ad7b5f2ac88ab77355ab0a21307145864">uvw::Utilities::loadAverage</a></div><div class="ttdeci">static std::array&lt; double, 3 &gt; loadAverage() noexcept</div><div class="ttdoc">Gets the load average.</div></div>
<div class="ttc" id="astructuvw_1_1Utilities_html_a602f623c81e84e8d947187a8815956a4"><div class="ttname"><a href="structuvw_1_1Utilities.html#a602f623c81e84e8d947187a8815956a4">uvw::Utilities::replaceAllocator</a></div><div class="ttdeci">static bool replaceAllocator(MallocFuncType mallocFunc, ReallocFuncType reallocFunc, CallocFuncType callocFunc, FreeFuncType freeFunc) noexcept</div><div class="ttdoc">Override the use of some standard librarys functions.</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="astructuvw_1_1Utilities_html_a5e37faecdeb8048bf71314f8a8f38909"><div class="ttname"><a href="structuvw_1_1Utilities.html#a5e37faecdeb8048bf71314f8a8f38909">uvw::Utilities::interfaceAddresses</a></div><div class="ttdeci">static std::vector&lt; InterfaceAddress &gt; interfaceAddresses() noexcept</div><div class="ttdoc">Gets a set of descriptors of all the available interfaces.</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_1Utilities_html_afd89c84fce9a9cdb4d9dcd885fa8f3fc"><div class="ttname"><a href="structuvw_1_1Utilities.html#afd89c84fce9a9cdb4d9dcd885fa8f3fc">uvw::Utilities::hrtime</a></div><div class="ttdeci">static uint64_t hrtime() noexcept</div><div class="ttdoc">Gets the current high-resolution real time.</div></div>
<div class="ttc" id="astructuvw_1_1Utilities_html_ae7e6b1b44125ea2cf529a8d88d135fa4"><div class="ttname"><a href="structuvw_1_1Utilities.html#ae7e6b1b44125ea2cf529a8d88d135fa4">uvw::Utilities::setupArgs</a></div><div class="ttdeci">static char ** setupArgs(int argc, char **argv)</div><div class="ttdoc">Store the program arguments.</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_1Utilities_html_a93c08c9616de565c4b34d7f580f94fb8"><div class="ttname"><a href="structuvw_1_1Utilities.html#a93c08c9616de565c4b34d7f580f94fb8">uvw::Utilities::path</a></div><div class="ttdeci">static std::string path() noexcept</div><div class="ttdoc">Gets the executable path.</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_1_1OS_html_a1550cb8ea2a033653b89830911acd246"><div class="ttname"><a href="structuvw_1_1Utilities_1_1OS.html#a1550cb8ea2a033653b89830911acd246">uvw::Utilities::OS::uname</a></div><div class="ttdeci">static UtsName uname() noexcept</div><div class="ttdoc">Gets name and information about the current kernel.</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="astructuvw_1_1Utilities_html_a9fc20cb272b9302a631535034e6b2999"><div class="ttname"><a href="structuvw_1_1Utilities.html#a9fc20cb272b9302a631535034e6b2999">uvw::Utilities::cpuInfo</a></div><div class="ttdeci">static std::vector&lt; CPUInfo &gt; cpuInfo() noexcept</div><div class="ttdoc">Gets information about the CPUs on the system.</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_1Utilities_1_1OS_html_a2145593521219f0184522ea6b7b6d790"><div class="ttname"><a href="structuvw_1_1Utilities_1_1OS.html#a2145593521219f0184522ea6b7b6d790">uvw::Utilities::OS::parent</a></div><div class="ttdeci">static PidType parent() noexcept</div><div class="ttdoc">Returns the parent process id.</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_1UtsName_html_a22cd76f23cd9a67dfc8be6098c9e3368"><div class="ttname"><a href="structuvw_1_1UtsName.html#a22cd76f23cd9a67dfc8be6098c9e3368">uvw::UtsName::version</a></div><div class="ttdeci">std::string version() const noexcept</div><div class="ttdoc">Gets the operating system version.</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="astructuvw_1_1Utilities_html_a08d83152d4f1baaf56802b26e9881508"><div class="ttname"><a href="structuvw_1_1Utilities.html#a08d83152d4f1baaf56802b26e9881508">uvw::Utilities::processTitle</a></div><div class="ttdeci">static std::string processTitle()</div><div class="ttdoc">Gets the title of the current process.</div></div>
<div class="ttc" id="astructuvw_1_1Utilities_html_ae2b405d1b5d8de4bbb3e9a2707b9ec3a"><div class="ttname"><a href="structuvw_1_1Utilities.html#ae2b405d1b5d8de4bbb3e9a2707b9ec3a">uvw::Utilities::uptime</a></div><div class="ttdeci">static double uptime() noexcept</div><div class="ttdoc">Gets the current system uptime.</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_1Utilities_html_a2a05286add192e595f5d7d5d3db682fb"><div class="ttname"><a href="structuvw_1_1Utilities.html#a2a05286add192e595f5d7d5d3db682fb">uvw::Utilities::guessHandle</a></div><div class="ttdeci">static HandleType guessHandle(HandleCategory category) noexcept</div><div class="ttdoc">Gets the type of the handle given a category.</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_html_a1fabc7507a23df71a3baf0894be8ee65"><div class="ttname"><a href="structuvw_1_1Utilities.html#a1fabc7507a23df71a3baf0894be8ee65">uvw::Utilities::chdir</a></div><div class="ttdeci">static bool chdir(const std::string &amp;dir) noexcept</div><div class="ttdoc">Changes the current working directory.</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_1Utilities_html_ac0f1805b8adf93066a8c4df190f5c6a2"><div class="ttname"><a href="structuvw_1_1Utilities.html#ac0f1805b8adf93066a8c4df190f5c6a2">uvw::Utilities::cwd</a></div><div class="ttdeci">static std::string cwd() noexcept</div><div class="ttdoc">Gets the current working directory.</div></div>
<div class="ttc" id="astructuvw_1_1Utilities_html_acd553ee275a0e28a10250fcb2f6b993a"><div class="ttname"><a href="structuvw_1_1Utilities.html#acd553ee275a0e28a10250fcb2f6b993a">uvw::Utilities::totalMemory</a></div><div class="ttdeci">static uint64_t totalMemory() noexcept</div><div class="ttdoc">Gets memory information (in bytes).</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="astructuvw_1_1UtsName_html_a9d5308ac9eb875fc68c1f5fcb9a4465d"><div class="ttname"><a href="structuvw_1_1UtsName.html#a9d5308ac9eb875fc68c1f5fcb9a4465d">uvw::UtsName::release</a></div><div class="ttdeci">std::string release() const noexcept</div><div class="ttdoc">Gets the operating system release (like &quot;2.6.28&quot;).</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="astructuvw_1_1Utilities_html_a7ac9418167cafe920c1cac353216d47c"><div class="ttname"><a href="structuvw_1_1Utilities.html#a7ac9418167cafe920c1cac353216d47c">uvw::Utilities::constrainedMemory</a></div><div class="ttdeci">static uint64_t constrainedMemory() noexcept</div><div class="ttdoc">Gets the amount of memory available to the process (in bytes).</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.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>