oxipng/doc/src/clap/term.rs.html
2016-05-04 10:41:29 -04:00

272 lines
No EOL
14 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>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="rustdoc">
<meta name="description" content="Source to the Rust file `/Users/holmerj/.cargo/registry/src/github.com-88ac128001ac3a9a/clap-2.4.0/src/term.rs`.">
<meta name="keywords" content="rust, rustlang, rust-lang">
<title>term.rs.html -- source</title>
<link rel="stylesheet" type="text/css" href="../../rustdoc.css">
<link rel="stylesheet" type="text/css" href="../../main.css">
</head>
<body class="rustdoc">
<!--[if lte IE 8]>
<div class="warning">
This old browser is unsupported and will most likely display funky
things.
</div>
<![endif]-->
<nav class="sidebar">
</nav>
<nav class="sub">
<form class="search-form js-only">
<div class="search-container">
<input class="search-input" name="search"
autocomplete="off"
placeholder="Click or press S to search, ? for more options…"
type="search">
</div>
</form>
</nav>
<section id='main' class="content source"><pre class="line-numbers"><span id="1"> 1</span>
<span id="2"> 2</span>
<span id="3"> 3</span>
<span id="4"> 4</span>
<span id="5"> 5</span>
<span id="6"> 6</span>
<span id="7"> 7</span>
<span id="8"> 8</span>
<span id="9"> 9</span>
<span id="10">10</span>
<span id="11">11</span>
<span id="12">12</span>
<span id="13">13</span>
<span id="14">14</span>
<span id="15">15</span>
<span id="16">16</span>
<span id="17">17</span>
<span id="18">18</span>
<span id="19">19</span>
<span id="20">20</span>
<span id="21">21</span>
<span id="22">22</span>
<span id="23">23</span>
<span id="24">24</span>
<span id="25">25</span>
<span id="26">26</span>
<span id="27">27</span>
<span id="28">28</span>
<span id="29">29</span>
<span id="30">30</span>
<span id="31">31</span>
<span id="32">32</span>
<span id="33">33</span>
<span id="34">34</span>
<span id="35">35</span>
<span id="36">36</span>
<span id="37">37</span>
<span id="38">38</span>
<span id="39">39</span>
<span id="40">40</span>
<span id="41">41</span>
<span id="42">42</span>
<span id="43">43</span>
<span id="44">44</span>
<span id="45">45</span>
<span id="46">46</span>
<span id="47">47</span>
<span id="48">48</span>
<span id="49">49</span>
<span id="50">50</span>
<span id="51">51</span>
<span id="52">52</span>
<span id="53">53</span>
<span id="54">54</span>
<span id="55">55</span>
<span id="56">56</span>
<span id="57">57</span>
<span id="58">58</span>
<span id="59">59</span>
<span id="60">60</span>
<span id="61">61</span>
<span id="62">62</span>
<span id="63">63</span>
<span id="64">64</span>
<span id="65">65</span>
<span id="66">66</span>
<span id="67">67</span>
<span id="68">68</span>
<span id="69">69</span>
<span id="70">70</span>
<span id="71">71</span>
<span id="72">72</span>
<span id="73">73</span>
<span id="74">74</span>
<span id="75">75</span>
<span id="76">76</span>
<span id="77">77</span>
<span id="78">78</span>
<span id="79">79</span>
<span id="80">80</span>
<span id="81">81</span>
<span id="82">82</span>
</pre><pre class='rust '>
<span class='comment'>// The following was taken and adapated from exa source</span>
<span class='comment'>// repo: https://github.com/ogham/exa</span>
<span class='comment'>// commit: b9eb364823d0d4f9085eb220233c704a13d0f611</span>
<span class='comment'>// license: MIT - Copyright (c) 2014 Benjamin Sago</span>
<span class='doccomment'>//! System calls for getting the terminal size.</span>
<span class='doccomment'>//!</span>
<span class='doccomment'>//! Getting the terminal size is performed using an ioctl command that takes</span>
<span class='doccomment'>//! the file handle to the terminal -- which in this case, is stdout -- and</span>
<span class='doccomment'>//! populates a structure containing the values.</span>
<span class='doccomment'>//!</span>
<span class='doccomment'>//! The size is needed when the user wants the output formatted into columns:</span>
<span class='doccomment'>//! the default grid view, or the hybrid grid-details view.</span>
<span class='attribute'>#[<span class='ident'>cfg</span>(<span class='ident'>all</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;wrap_help&quot;</span>, <span class='ident'>not</span>(<span class='ident'>target_os</span> <span class='op'>=</span> <span class='string'>&quot;windows&quot;</span>)))]</span>
<span class='kw'>use</span> <span class='ident'>std</span>::<span class='ident'>mem</span>::<span class='ident'>zeroed</span>;
<span class='attribute'>#[<span class='ident'>cfg</span>(<span class='ident'>all</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;wrap_help&quot;</span>, <span class='ident'>not</span>(<span class='ident'>target_os</span> <span class='op'>=</span> <span class='string'>&quot;windows&quot;</span>)))]</span>
<span class='kw'>use</span> <span class='ident'>libc</span>::{<span class='ident'>c_int</span>, <span class='ident'>c_ushort</span>, <span class='ident'>c_ulong</span>, <span class='ident'>STDOUT_FILENO</span>};
<span class='doccomment'>/// The number of rows and columns of a terminal.</span>
<span class='attribute'>#[<span class='ident'>cfg</span>(<span class='ident'>all</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;wrap_help&quot;</span>, <span class='ident'>not</span>(<span class='ident'>target_os</span> <span class='op'>=</span> <span class='string'>&quot;windows&quot;</span>)))]</span>
<span class='kw'>struct</span> <span class='ident'>Winsize</span> {
<span class='ident'>ws_row</span>: <span class='ident'>c_ushort</span>,
<span class='ident'>ws_col</span>: <span class='ident'>c_ushort</span>,
}
<span class='comment'>// Unfortunately the actual command is not standardised...</span>
<span class='attribute'>#[<span class='ident'>cfg</span>(<span class='ident'>any</span>(<span class='ident'>target_os</span> <span class='op'>=</span> <span class='string'>&quot;linux&quot;</span>, <span class='ident'>target_os</span> <span class='op'>=</span> <span class='string'>&quot;android&quot;</span>))]</span>
<span class='attribute'>#[<span class='ident'>cfg</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;wrap_help&quot;</span>)]</span>
<span class='kw'>static</span> <span class='ident'>TIOCGWINSZ</span>: <span class='ident'>c_ulong</span> <span class='op'>=</span> <span class='number'>0x5413</span>;
<span class='attribute'>#[<span class='ident'>cfg</span>(<span class='ident'>any</span>(<span class='ident'>target_os</span> <span class='op'>=</span> <span class='string'>&quot;macos&quot;</span>,
<span class='ident'>target_os</span> <span class='op'>=</span> <span class='string'>&quot;ios&quot;</span>,
<span class='ident'>target_os</span> <span class='op'>=</span> <span class='string'>&quot;bitrig&quot;</span>,
<span class='ident'>target_os</span> <span class='op'>=</span> <span class='string'>&quot;dragonfly&quot;</span>,
<span class='ident'>target_os</span> <span class='op'>=</span> <span class='string'>&quot;freebsd&quot;</span>,
<span class='ident'>target_os</span> <span class='op'>=</span> <span class='string'>&quot;netbsd&quot;</span>,
<span class='ident'>target_os</span> <span class='op'>=</span> <span class='string'>&quot;openbsd&quot;</span>))]</span>
<span class='attribute'>#[<span class='ident'>cfg</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;wrap_help&quot;</span>)]</span>
<span class='kw'>static</span> <span class='ident'>TIOCGWINSZ</span>: <span class='ident'>c_ulong</span> <span class='op'>=</span> <span class='number'>0x40087468</span>;
<span class='kw'>extern</span> {
<span class='attribute'>#[<span class='ident'>cfg</span>(<span class='ident'>all</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;wrap_help&quot;</span>, <span class='ident'>not</span>(<span class='ident'>target_os</span> <span class='op'>=</span> <span class='string'>&quot;windows&quot;</span>)))]</span>
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>ioctl</span>(<span class='ident'>fd</span>: <span class='ident'>c_int</span>, <span class='ident'>request</span>: <span class='ident'>c_ulong</span>, ...) <span class='op'>-&gt;</span> <span class='ident'>c_int</span>;
}
<span class='doccomment'>/// Runs the ioctl command. Returns (0, 0) if output is not to a terminal, or</span>
<span class='doccomment'>/// there is an error. (0, 0) is an invalid size to have anyway, which is why</span>
<span class='doccomment'>/// it can be used as a nil value.</span>
<span class='attribute'>#[<span class='ident'>cfg</span>(<span class='ident'>all</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;wrap_help&quot;</span>, <span class='ident'>not</span>(<span class='ident'>target_os</span> <span class='op'>=</span> <span class='string'>&quot;windows&quot;</span>)))]</span>
<span class='kw'>unsafe</span> <span class='kw'>fn</span> <span class='ident'>get_dimensions</span>() <span class='op'>-&gt;</span> <span class='ident'>Winsize</span> {
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>window</span>: <span class='ident'>Winsize</span> <span class='op'>=</span> <span class='ident'>zeroed</span>();
<span class='kw'>let</span> <span class='ident'>result</span> <span class='op'>=</span> <span class='ident'>ioctl</span>(<span class='ident'>STDOUT_FILENO</span>, <span class='ident'>TIOCGWINSZ</span>, <span class='kw-2'>&amp;</span><span class='kw-2'>mut</span> <span class='ident'>window</span>);
<span class='kw'>if</span> <span class='ident'>result</span> <span class='op'>==</span> <span class='op'>-</span><span class='number'>1</span> {
<span class='ident'>zeroed</span>()
}
<span class='kw'>else</span> {
<span class='ident'>window</span>
}
}
<span class='doccomment'>/// Query the current processes&#39;s output, returning its width and height as a</span>
<span class='doccomment'>/// number of characters. Returns `None` if the output isn&#39;t to a terminal.</span>
<span class='attribute'>#[<span class='ident'>cfg</span>(<span class='ident'>all</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;wrap_help&quot;</span>, <span class='ident'>not</span>(<span class='ident'>target_os</span> <span class='op'>=</span> <span class='string'>&quot;windows&quot;</span>)))]</span>
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>dimensions</span>() <span class='op'>-&gt;</span> <span class='prelude-ty'>Option</span><span class='op'>&lt;</span>(<span class='ident'>usize</span>, <span class='ident'>usize</span>)<span class='op'>&gt;</span> {
<span class='kw'>let</span> <span class='ident'>w</span> <span class='op'>=</span> <span class='kw'>unsafe</span> { <span class='ident'>get_dimensions</span>() };
<span class='kw'>if</span> <span class='ident'>w</span>.<span class='ident'>ws_col</span> <span class='op'>==</span> <span class='number'>0</span> <span class='op'>||</span> <span class='ident'>w</span>.<span class='ident'>ws_row</span> <span class='op'>==</span> <span class='number'>0</span> {
<span class='prelude-val'>None</span>
}
<span class='kw'>else</span> {
<span class='prelude-val'>Some</span>((<span class='ident'>w</span>.<span class='ident'>ws_col</span> <span class='kw'>as</span> <span class='ident'>usize</span>, <span class='ident'>w</span>.<span class='ident'>ws_row</span> <span class='kw'>as</span> <span class='ident'>usize</span>))
}
}
<span class='attribute'>#[<span class='ident'>cfg</span>(<span class='ident'>any</span>(<span class='ident'>not</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;wrap_help&quot;</span>), <span class='ident'>target_os</span> <span class='op'>=</span> <span class='string'>&quot;windows&quot;</span>))]</span>
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>dimensions</span>() <span class='op'>-&gt;</span> <span class='prelude-ty'>Option</span><span class='op'>&lt;</span>(<span class='ident'>usize</span>, <span class='ident'>usize</span>)<span class='op'>&gt;</span> {
<span class='prelude-val'>None</span>
}
</pre>
</section>
<section id='search' class="content hidden"></section>
<section class="footer"></section>
<aside id="help" class="hidden">
<div>
<h1 class="hidden">Help</h1>
<div class="shortcuts">
<h2>Keyboard Shortcuts</h2>
<dl>
<dt>?</dt>
<dd>Show this help dialog</dd>
<dt>S</dt>
<dd>Focus the search field</dd>
<dt>&larrb;</dt>
<dd>Move up in search results</dd>
<dt>&rarrb;</dt>
<dd>Move down in search results</dd>
<dt>&#9166;</dt>
<dd>Go to active search result</dd>
</dl>
</div>
<div class="infos">
<h2>Search Tricks</h2>
<p>
Prefix searches with a type followed by a colon (e.g.
<code>fn:</code>) to restrict the search to a given type.
</p>
<p>
Accepted types are: <code>fn</code>, <code>mod</code>,
<code>struct</code>, <code>enum</code>,
<code>trait</code>, <code>type</code>, <code>macro</code>,
and <code>const</code>.
</p>
<p>
Search functions by type signature (e.g.
<code>vec -> usize</code> or <code>* -> vec</code>)
</p>
</div>
</div>
</aside>
<script>
window.rootPath = "../../";
window.currentCrate = "clap";
window.playgroundUrl = "";
</script>
<script src="../../jquery.js"></script>
<script src="../../main.js"></script>
<script defer src="../../search-index.js"></script>
</body>
</html>