aboutsummaryrefslogtreecommitdiff
path: root/docs/classes
diff options
context:
space:
mode:
Diffstat (limited to 'docs/classes')
-rw-r--r--docs/classes/bitflags.html305
1 files changed, 305 insertions, 0 deletions
diff --git a/docs/classes/bitflags.html b/docs/classes/bitflags.html
new file mode 100644
index 0000000..f063149
--- /dev/null
+++ b/docs/classes/bitflags.html
@@ -0,0 +1,305 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3<html>
4<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
5<head>
6 <title>Lua-System docs</title>
7 <link rel="stylesheet" href="../ldoc.css" type="text/css" />
8</head>
9<body>
10
11<div id="container">
12
13<div id="product">
14 <div id="product_logo"></div>
15 <div id="product_name"><big><b></b></big></div>
16 <div id="product_description"></div>
17</div> <!-- id="product" -->
18
19
20<div id="main">
21
22
23<!-- Menu -->
24
25<div id="navigation">
26<br/>
27<h1>Lua-System</h1>
28
29
30<ul>
31 <li><a href="../index.html">Index</a></li>
32</ul>
33
34<h2>Contents</h2>
35<ul>
36<li><a href="#Bit_flags">Bit flags </a></li>
37</ul>
38
39
40<h2>Classes</h2>
41<ul class="nowrap">
42 <li><strong>bitflags</strong></li>
43</ul>
44<h2>Modules</h2>
45<ul class="nowrap">
46 <li><a href="../modules/system.html">system</a></li>
47</ul>
48<h2>Topics</h2>
49<ul class="">
50 <li><a href="../topics/01-introduction.md.html">1. Introduction</a></li>
51 <li><a href="../topics/02-development.md.html">2. Development</a></li>
52 <li><a href="../topics/03-terminal.md.html">3. Terminal functionality</a></li>
53 <li><a href="../topics/CHANGELOG.md.html">CHANGELOG</a></li>
54 <li><a href="../topics/LICENSE.md.html">MIT License</a></li>
55</ul>
56<h2>Examples</h2>
57<ul class="nowrap">
58 <li><a href="../examples/compat.lua.html">compat.lua</a></li>
59 <li><a href="../examples/flag_debugging.lua.html">flag_debugging.lua</a></li>
60 <li><a href="../examples/password_input.lua.html">password_input.lua</a></li>
61 <li><a href="../examples/read.lua.html">read.lua</a></li>
62 <li><a href="../examples/readline.lua.html">readline.lua</a></li>
63 <li><a href="../examples/spinner.lua.html">spinner.lua</a></li>
64 <li><a href="../examples/spiral_snake.lua.html">spiral_snake.lua</a></li>
65 <li><a href="../examples/terminalsize.lua.html">terminalsize.lua</a></li>
66</ul>
67
68</div>
69
70<div id="content">
71
72<h1>Class <code>bitflags</code></h1>
73<p>Bitflags module.</p>
74<p> The bitflag object makes it easy to manipulate flags in a bitmask.</p>
75
76<p> It has metamethods that do the hard work, adding flags sets them, substracting
77 unsets them. Comparing flags checks if all flags in the second set are also set
78 in the first set. The <code>has</code> method checks if all flags in the second set are
79 also set in the first set, but behaves slightly different.</p>
80
81<p> Indexing allows checking values or setting them by bit index (eg. 0-7 for flags
82 in the first byte).</p>
83
84<p> <em>NOTE</em>: unavailable flags (eg. Windows flags on a Posix system) should not be
85 omitted, but be assigned a value of 0. This is because the <code>has</code> method will
86 return <code>false</code> if the flags are checked and the value is 0.</p>
87
88<p> See <a href="../classes/bitflags.html#system.bitflag">system.bitflag</a> (the constructor) for extensive examples on usage.</p>
89
90
91<h2><a href="#Bit_flags">Bit flags </a></h2>
92<table class="function_list">
93 <tr>
94 <td class="name" nowrap><a href="#bitflag:has_all_of">bitflag:has_all_of (subset)</a></td>
95 <td class="summary">Checks if all the flags in the given subset are set.</td>
96 </tr>
97 <tr>
98 <td class="name" nowrap><a href="#bitflag:has_any_of">bitflag:has_any_of (subset)</a></td>
99 <td class="summary">Checks if any of the flags in the given subset are set.</td>
100 </tr>
101 <tr>
102 <td class="name" nowrap><a href="#bitflag:value">bitflag:value ()</a></td>
103 <td class="summary">Retrieves the numeric value of the bitflag object.</td>
104 </tr>
105 <tr>
106 <td class="name" nowrap><a href="#system.bitflag">system.bitflag ([value=0])</a></td>
107 <td class="summary">Creates a new bitflag object from the given value.</td>
108 </tr>
109</table>
110
111<br/>
112<br/>
113
114
115 <h2 class="section-header has-description"><a name="Bit_flags"></a>Bit flags </h2>
116
117 <div class="section-description">
118 Bitflag objects can be used to easily manipulate and compare bit flags.
119 These are primarily for use with the terminal functions, but can be used
120 in other places as well.
121 </div>
122 <dl class="function">
123 <dt>
124 <a name = "bitflag:has_all_of"></a>
125 <strong>bitflag:has_all_of (subset)</strong>
126 </dt>
127 <dd>
128 Checks if all the flags in the given subset are set.
129If the flags to check has a value <code>0</code>, it will always return <code>false</code>. So if there are flags that are
130unsupported on a platform, they can be set to 0 and the <a href="../classes/bitflags.html#bitflag:has_all_of">has_all_of</a> function will
131return <code>false</code> if the flags are checked.
132
133
134 <h3>Parameters:</h3>
135 <ul>
136 <li><span class="parameter">subset</span>
137 <span class="types"><a class="type" href="../classes/bitflags.html#system.bitflag">bitflag</a></span>
138 the flags to check for.
139 </li>
140 </ul>
141
142 <h3>Returns:</h3>
143 <ol>
144
145 <span class="types"><span class="type">boolean</span></span>
146 true if all the flags are set, false otherwise.
147 </ol>
148
149
150
151 <h3>Usage:</h3>
152 <ul>
153 <pre class="example"><span class="keyword">local</span> sys = <span class="global">require</span> <span class="string">'system'</span>
154<span class="keyword">local</span> flags = sys.<span class="function-name">bitflag</span>(<span class="number">12</span>) <span class="comment">-- b1100
155</span><span class="keyword">local</span> myflags = sys.<span class="function-name">bitflag</span>(<span class="number">15</span>) <span class="comment">-- b1111
156</span><span class="global">print</span>(flags:<span class="function-name">has_all_of</span>(myflags)) <span class="comment">-- false, not all bits in myflags are set in flags
157</span><span class="global">print</span>(myflags:<span class="function-name">has_all_of</span>(flags)) <span class="comment">-- true, all bits in flags are set in myflags</span></pre>
158 </ul>
159
160</dd>
161 <dt>
162 <a name = "bitflag:has_any_of"></a>
163 <strong>bitflag:has_any_of (subset)</strong>
164 </dt>
165 <dd>
166 Checks if any of the flags in the given subset are set.
167If the flags to check has a value <code>0</code>, it will always return <code>false</code>. So if there are flags that are
168unsupported on a platform, they can be set to 0 and the <a href="../classes/bitflags.html#bitflag:has_any_of">has_any_of</a> function will
169return <code>false</code> if the flags are checked.
170
171
172 <h3>Parameters:</h3>
173 <ul>
174 <li><span class="parameter">subset</span>
175 <span class="types"><a class="type" href="../classes/bitflags.html#system.bitflag">bitflag</a></span>
176 the flags to check for.
177 </li>
178 </ul>
179
180 <h3>Returns:</h3>
181 <ol>
182
183 <span class="types"><span class="type">boolean</span></span>
184 true if any of the flags are set, false otherwise.
185 </ol>
186
187
188
189 <h3>Usage:</h3>
190 <ul>
191 <pre class="example"><span class="keyword">local</span> sys = <span class="global">require</span> <span class="string">'system'</span>
192<span class="keyword">local</span> flags = sys.<span class="function-name">bitflag</span>(<span class="number">12</span>) <span class="comment">-- b1100
193</span><span class="keyword">local</span> myflags = sys.<span class="function-name">bitflag</span>(<span class="number">7</span>) <span class="comment">-- b0111
194</span><span class="global">print</span>(flags:<span class="function-name">has_any_of</span>(myflags)) <span class="comment">-- true, some bits in myflags are set in flags
195</span><span class="global">print</span>(myflags:<span class="function-name">has_any_of</span>(flags)) <span class="comment">-- true, some bits in flags are set in myflags</span></pre>
196 </ul>
197
198</dd>
199 <dt>
200 <a name = "bitflag:value"></a>
201 <strong>bitflag:value ()</strong>
202 </dt>
203 <dd>
204 Retrieves the numeric value of the bitflag object.
205
206
207
208 <h3>Returns:</h3>
209 <ol>
210
211 <span class="types"><span class="type">number</span></span>
212 the numeric value of the bitflags.
213 </ol>
214
215
216
217 <h3>Usage:</h3>
218 <ul>
219 <pre class="example"><span class="keyword">local</span> sys = <span class="global">require</span> <span class="string">'system'</span>
220<span class="keyword">local</span> flags = sys.<span class="function-name">bitflag</span>() <span class="comment">-- b0000
221</span>flags[<span class="number">0</span>] = <span class="keyword">true</span> <span class="comment">-- b0001
222</span>flags[<span class="number">2</span>] = <span class="keyword">true</span> <span class="comment">-- b0101
223</span><span class="global">print</span>(flags:<span class="function-name">value</span>()) <span class="comment">-- 5</span></pre>
224 </ul>
225
226</dd>
227 <dt>
228 <a name = "system.bitflag"></a>
229 <strong>system.bitflag ([value=0])</strong>
230 </dt>
231 <dd>
232 Creates a new bitflag object from the given value.
233
234
235 <h3>Parameters:</h3>
236 <ul>
237 <li><span class="parameter">value</span>
238 <span class="types"><span class="type">number</span></span>
239 the value to create the bitflag object from.
240 (<em>default</em> 0)
241 </li>
242 </ul>
243
244 <h3>Returns:</h3>
245 <ol>
246
247 <span class="types"><a class="type" href="../classes/bitflags.html#system.bitflag">bitflag</a></span>
248 bitflag object with the given values set.
249 </ol>
250
251
252
253 <h3>Usage:</h3>
254 <ul>
255 <pre class="example"><span class="keyword">local</span> sys = <span class="global">require</span> <span class="string">'system'</span>
256<span class="keyword">local</span> flags = sys.<span class="function-name">bitflag</span>(<span class="number">2</span>) <span class="comment">-- b0010
257</span>
258<span class="comment">-- get state of individual bits
259</span><span class="global">print</span>(flags[<span class="number">0</span>]) <span class="comment">-- false
260</span><span class="global">print</span>(flags[<span class="number">1</span>]) <span class="comment">-- true
261</span>
262<span class="comment">-- set individual bits
263</span>flags[<span class="number">0</span>] = <span class="keyword">true</span> <span class="comment">-- b0011
264</span><span class="global">print</span>(flags:<span class="function-name">value</span>()) <span class="comment">-- 3
265</span><span class="global">print</span>(flags) <span class="comment">-- "bitflags: 3"
266</span>
267<span class="comment">-- adding flags (bitwise OR)
268</span><span class="keyword">local</span> flags1 = sys.<span class="function-name">bitflag</span>(<span class="number">1</span>) <span class="comment">-- b0001
269</span><span class="keyword">local</span> flags2 = sys.<span class="function-name">bitflag</span>(<span class="number">2</span>) <span class="comment">-- b0010
270</span><span class="keyword">local</span> flags3 = flags1 + flags2 <span class="comment">-- b0011
271</span>
272<span class="comment">-- substracting flags (bitwise AND NOT)
273</span><span class="global">print</span>(flags3:<span class="function-name">value</span>()) <span class="comment">-- 3
274</span>flag3 = flag3 - flag3 <span class="comment">-- b0000
275</span><span class="global">print</span>(flags3:<span class="function-name">value</span>()) <span class="comment">-- 0
276</span>
277<span class="comment">-- comparing flags
278</span><span class="keyword">local</span> flags4 = sys.<span class="function-name">bitflag</span>(<span class="number">7</span>) <span class="comment">-- b0111
279</span><span class="keyword">local</span> flags5 = sys.<span class="function-name">bitflag</span>(<span class="number">255</span>) <span class="comment">-- b11111111
280</span><span class="global">print</span>(flags5 ~= flags4) <span class="comment">-- true, not the same flags
281</span><span class="keyword">local</span> flags6 = sys.<span class="function-name">bitflag</span>(<span class="number">7</span>) <span class="comment">-- b0111
282</span><span class="global">print</span>(flags6 == flags4) <span class="comment">-- true, same flags
283</span>
284<span class="comment">-- comparison of subsets
285</span><span class="keyword">local</span> flags7 = sys.<span class="function-name">bitflag</span>(<span class="number">0</span>) <span class="comment">-- b0000
286</span><span class="keyword">local</span> flags8 = sys.<span class="function-name">bitflag</span>(<span class="number">3</span>) <span class="comment">-- b0011
287</span><span class="keyword">local</span> flags9 = sys.<span class="function-name">bitflag</span>(<span class="number">7</span>) <span class="comment">-- b0111
288</span><span class="global">print</span>(flags9:<span class="function-name">has_all_of</span>(flags8)) <span class="comment">-- true, flags8 bits are all set in flags9
289</span><span class="global">print</span>(flags8:<span class="function-name">has_any_of</span>(flags9)) <span class="comment">-- true, some of flags9 bits are set in flags8
290</span><span class="global">print</span>(flags8:<span class="function-name">has_all_of</span>(flags7)) <span class="comment">-- false, flags7 (== 0) is not set in flags8</span></pre>
291 </ul>
292
293</dd>
294</dl>
295
296
297</div> <!-- id="content" -->
298</div> <!-- id="main" -->
299<div id="about">
300<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i>
301<i style="float:right;">Last updated 2024-06-20 23:11:37 </i>
302</div> <!-- id="about" -->
303</div> <!-- id="container" -->
304</body>
305</html>