-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathhbxpp.html
248 lines (233 loc) · 34 KB
/
hbxpp.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
<!DOCTYPE html>
<html lang="en">
<meta charset="utf-8">
<meta name="referrer" content="origin">
<meta name="viewport" content="initial-scale=1">
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests; block-all-mixed-content">
<meta name="generator" content="hbdoc">
<meta name="keywords" content="Harbour, Clipper, xBase, database, Free Software, GPL, compiler, cross-platform, 32-bit, 64-bit">
<title>Harbour Reference Guide · hbxpp lib</title>
<style>
/**
* Minified by jsDelivr using clean-css v4.2.1.
* Original file: /gh/PrismJS/prism@1.17.1/themes/prism-okaidia.css
*
* Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
*/
code[class*=language-],pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#272822}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#a6e22e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#e6db74}.token.keyword{color:#66d9ef}.token.important,.token.regex{color:#fd971f}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}
/*# sourceMappingURL=/sm/40fbac8c090a0ea2949bef662c4dc8f61e9fdf4136e4615ec312d47b6c8d4578.map */
</style>
<link rel="stylesheet" href="hbdoc.css">
<body>
<header>
<svg viewBox="0 0 2260 2260" xmlns="http://www.w3.org/2000/svg">
<path d="m900 1908c137.17-53.265 443.4-77.006 600-52.437-27.114-474.75-34.113-758.18-7.68-1116.3 2.056-27.195 4.283-54.9 6.68-83.245-34.633 68.628-579.45 1206.4-599 1252z"/>
<path d="m1503 297c-123.84 327.12-161.3 844.46-213.46 1389.5-169.5-13.113-449.01 19.795-659.3 108.82 13.528-23.75 771.23-1330.1 872.77-1498.3z"/>
<path d="m1172 1270c-224.3-65.046-473.09 64.996-694 204 153.35-235.43 613.25-936.89 1011-1474-301.51 419.86-317.18 1087.9-317 1270z"/>
<path d="m620.8 2258.7c0.662-1.037 1.36-2.165 2.068-3.191 36.736-55.29 105.69-101.18 205.1-96.72 193.8 8.619 357.24 25.577 652.18 7.207-290.1-9.342-643.35-48.142-1069.1-124.55 105.83 77.98 193.83 195.4 209.76 217.25"/>
<path d="m2259.2 2007.9c-351.83 85.376-1111.3 54.312-2014.2-105.24 59.534 32.024 105.24 68.44 160.57 113.87 884.55 158.71 1465.7 153.54 1808.7 60.37 31.307-22.43 35.385-37.956 44.934-69.006"/>
<path d="m2250.8 1985.6c-316.53 76.867-976 46.6-1793.5-72.332-79.588-11.605-308.23-46.57-445.63-69.063-7.464-15.506-11.282-40.462-11.282-70.79 509.45 68.675 1799.6 275.42 2244 168.26 2.015 12.02 7.115 18.487 6.527 43.929"/>
</svg>
<div>
<div><a href="index.html">Harbour Reference Guide</a></div>
<div>
<nav class="menu">
<nav class="dropdown">
<span class="dropbtn" onclick="">hbxpp lib</span>
<nav class="dropdown-content">
<a href="harbour.html">Harbour core</a>
<hr>
<a href="clc53.html">Clipper 5.3</a>
<a href="clct3.html">Clipper Tools 3</a>
<hr>
<a href="gtwvw.html">gtwvw</a>
<a href="hbct.html">hbct</a>
<a href="hbcups.html">hbcups</a>
<a href="hbgd.html">hbgd</a>
<a href="hbgt.html">hbgt</a>
<a href="hbmisc.html">hbmisc</a>
<a href="hbnf.html">hbnf</a>
<a href="hbxpp.html">hbxpp</a>
<a href="hbziparc.html">hbziparc</a>
<a href="rddads.html">rddads</a>
</nav>
</nav>
<nav class="dropdown lang">
<span class="dropbtn lang">EN</span><nav class="dropdown-content lang">
<a href="hbxpp.html">EN</a>
<a href="pt-br/index.html">pt-BR</a>
</nav>
</nav>
</nav>
</div>
</div>
</header>
<aside>
<a href="#bin2u" title="Bin2U()"><code>Bin2U()</code></a>
<a href="#dbskipper" title="dbSkipper()"><code>dbSkipper()</code></a>
<a href="#u2bin" title="U2Bin()"><code>U2Bin()</code></a>
<a href="#w2bin" title="W2Bin()"><code>W2Bin()</code></a>
</aside>
<main>
<section>
<h4><a href="#bin2u" class="d-id" id="bin2u" title="∞"><code>Bin2U()</code></a><a href="https://github.com/vszakats/hb/blob/096e855/contrib/hbxpp/binnumx.c#L51" class="d-so" title="contrib/hbxpp/binnumx.c">Source code</a><span class="d-so"><nav class="dropdown d-ebi">🔎<nav class="dropdown-content d-dd"><a href="https://github.com/vszakats/hb/search?type=Code&q=Bin2U">in Repository</a><a href="https://google.com/search?q=site:groups.google.com/d/msg/harbour+Bin2U">in Discussions</a></nav></nav></span>
<span class="d-eb"><a href="#" title="Top" class="d-ebi">⌃</a> | <a href="index.html" title="Index" class="d-ebi">☰</a> | <a href="https://github.com/vszakats/hb/edit/main/contrib/hbxpp/doc/en/binnumx.txt">Improve this doc</a></span></h4>
<div class="d-ol">Convert unsigned long encoded bytes into Harbour numeric</div>
<div class="d-d">Syntax</div>
<div class="d-sy"><pre><code>Bin2U( <cBuffer> ) → nNumber</code></pre></div>
<div class="d-d">Arguments</div>
<div class="d-it"><code>cBuffer</code> is a character string that contains 32-bit encoded unsigned long integer (least significant byte first). The first four bytes are taken into account, the rest if any are ignored.</div>
<div class="d-d">Returns</div>
<div class="d-it"><code>Bin2U()</code> return numeric integer (or 0 if <code>cBuffer</code> is not a string).</div>
<div class="d-d">Description</div>
<div class="d-it">
<div><p><code>Bin2U()</code> is one of the low-level binary conversion functions, those functions convert between Harbour numeric and a character representation of numeric value. <code>Bin2U()</code> take four bytes of encoded 32-bit unsigned long integer and convert it into standard Harbour numeric value.</div>
<div><p>You might ask what is the need for such functions, well, first of all it allow you to read/write information from/to a binary file (like extracting information from DBF header), it is also a useful way to share information from source other than Harbour (C for instance).</div>
<div><p><code>Bin2U()</code> is the opposite of <code><a href="#u2bin">U2Bin()</a></code></div>
</div>
<div class="d-d">Examples</div>
<section class="d-ex"><div class="playground"><pre contenteditable="true" spellcheck="false"><code class="language-c">// Show number of records in DBF
#include "fileio.ch"
LOCAL hFile, cBuffer := Space( 4 )
IF ( hFile := hb_vfOpen( "test.dbf", FO_READ ) ) != NIL
hb_vfSeek( hFile, 4 )
hb_vfRead( hFile, @cBuffer, hb_BLen( cBuffer ) )
? "Number of records in file:", Bin2U( cBuffer )
hb_vfClose( hFile )
ELSE
? "Cannot open file"
ENDIF
</code></pre></div></section>
<div class="d-d">Status</div>
<div class="d-it">Ready</div>
<div class="d-d">Compliance</div>
<div class="d-it">XPP</div>
<div class="d-d">Platforms</div>
<div class="d-it">Available on all platforms</div>
<div class="d-d">File</div>
<div class="d-it">Library is core</div>
<div class="d-d">Tags</div>
<div class="d-it">API, Conversion</div>
<div class="d-d">See also</div>
<div class="d-it"><nav class="dropdown"><code><a href="harbour.html#bin2i" title="harbour">Bin2I()</a></code><nav class="dropdown-content d-dd"><a href="clc53.html#bin2i">Clipper 5.3</a></nav></nav>, <nav class="dropdown"><code><a href="harbour.html#bin2l" title="harbour">Bin2L()</a></code><nav class="dropdown-content d-dd"><a href="clc53.html#bin2l">Clipper 5.3</a></nav></nav>, <nav class="dropdown"><code><a href="harbour.html#bin2w" title="harbour">Bin2W()</a></code><nav class="dropdown-content d-dd"><a href="clc53.html#bin2w">Clipper 5.3</a></nav></nav>, <nav class="dropdown"><code><a href="harbour.html#i2bin" title="harbour">I2Bin()</a></code><nav class="dropdown-content d-dd"><a href="clc53.html#i2bin">Clipper 5.3</a></nav></nav>, <nav class="dropdown"><code><a href="harbour.html#l2bin" title="harbour">L2Bin()</a></code><nav class="dropdown-content d-dd"><a href="clc53.html#l2bin">Clipper 5.3</a></nav></nav>, <code><a href="#u2bin">U2Bin()</a></code>, <code><a href="#w2bin">W2Bin()</a></code>, <nav class="dropdown"><code><a href="harbour.html#word" title="harbour">Word()</a></code><nav class="dropdown-content d-dd"><a href="clc53.html#word">Clipper 5.3</a></nav></nav></div>
</section>
<section>
<h4><a href="#u2bin" class="d-id" id="u2bin" title="∞"><code>U2Bin()</code></a><a href="https://github.com/vszakats/hb/blob/096e855/contrib/hbxpp/binnumx.c#L71" class="d-so" title="contrib/hbxpp/binnumx.c">Source code</a><span class="d-so"><nav class="dropdown d-ebi">🔎<nav class="dropdown-content d-dd"><a href="https://github.com/vszakats/hb/search?type=Code&q=U2Bin">in Repository</a><a href="https://google.com/search?q=site:groups.google.com/d/msg/harbour+U2Bin">in Discussions</a></nav></nav></span>
<span class="d-eb"><a href="#" title="Top" class="d-ebi">⌃</a> | <a href="index.html" title="Index" class="d-ebi">☰</a> | <a href="https://github.com/vszakats/hb/edit/main/contrib/hbxpp/doc/en/binnumx.txt">Improve this doc</a></span></h4>
<div class="d-ol">Convert Harbour numeric into unsigned long encoded bytes</div>
<div class="d-d">Syntax</div>
<div class="d-sy"><pre><code>U2Bin( <nNumber> ) → cBuffer</code></pre></div>
<div class="d-d">Arguments</div>
<div class="d-it"><code>nNumber</code> is a numeric value to convert (decimal digits are ignored).</div>
<div class="d-d">Returns</div>
<div class="d-it"><code>U2Bin()</code> return four bytes character string that contains 32-bit encoded unsigned long integer (least significant byte first).</div>
<div class="d-d">Description</div>
<div class="d-it">
<div><p><code>U2Bin()</code> is one of the low-level binary conversion functions, those functions convert between Harbour numeric and a character representation of numeric value. <code>U2Bin()</code> take a numeric integer value and convert it into four bytes of encoded 32-bit unsigned long integer.</div>
<div><p>You might ask what is the need for such functions, well, first of all it allow you to read/write information from/to a binary file (like extracting information from DBF header), it is also a useful way to share information from source other than Harbour (C for instance).</div>
<div><p><code>U2Bin()</code> is the opposite of <code><a href="#bin2u">Bin2U()</a></code></div>
</div>
<div class="d-d">Status</div>
<div class="d-it">Ready</div>
<div class="d-d">Compliance</div>
<div class="d-it">XPP</div>
<div class="d-d">Platforms</div>
<div class="d-it">Available on all platforms</div>
<div class="d-d">File</div>
<div class="d-it">Library is core</div>
<div class="d-d">Tags</div>
<div class="d-it">API, Conversion</div>
<div class="d-d">See also</div>
<div class="d-it"><nav class="dropdown"><code><a href="harbour.html#bin2i" title="harbour">Bin2I()</a></code><nav class="dropdown-content d-dd"><a href="clc53.html#bin2i">Clipper 5.3</a></nav></nav>, <nav class="dropdown"><code><a href="harbour.html#bin2l" title="harbour">Bin2L()</a></code><nav class="dropdown-content d-dd"><a href="clc53.html#bin2l">Clipper 5.3</a></nav></nav>, <code><a href="#bin2u">Bin2U()</a></code>, <nav class="dropdown"><code><a href="harbour.html#bin2w" title="harbour">Bin2W()</a></code><nav class="dropdown-content d-dd"><a href="clc53.html#bin2w">Clipper 5.3</a></nav></nav>, <nav class="dropdown"><code><a href="harbour.html#i2bin" title="harbour">I2Bin()</a></code><nav class="dropdown-content d-dd"><a href="clc53.html#i2bin">Clipper 5.3</a></nav></nav>, <nav class="dropdown"><code><a href="harbour.html#l2bin" title="harbour">L2Bin()</a></code><nav class="dropdown-content d-dd"><a href="clc53.html#l2bin">Clipper 5.3</a></nav></nav>, <code><a href="#w2bin">W2Bin()</a></code>, <nav class="dropdown"><code><a href="harbour.html#word" title="harbour">Word()</a></code><nav class="dropdown-content d-dd"><a href="clc53.html#word">Clipper 5.3</a></nav></nav></div>
</section>
<section>
<h4><a href="#w2bin" class="d-id" id="w2bin" title="∞"><code>W2Bin()</code></a><a href="https://github.com/vszakats/hb/blob/096e855/contrib/hbxpp/binnumx.c#L80" class="d-so" title="contrib/hbxpp/binnumx.c">Source code</a><span class="d-so"><nav class="dropdown d-ebi">🔎<nav class="dropdown-content d-dd"><a href="https://github.com/vszakats/hb/search?type=Code&q=W2Bin">in Repository</a><a href="https://google.com/search?q=site:groups.google.com/d/msg/harbour+W2Bin">in Discussions</a></nav></nav></span>
<span class="d-eb"><a href="#" title="Top" class="d-ebi">⌃</a> | <a href="index.html" title="Index" class="d-ebi">☰</a> | <a href="https://github.com/vszakats/hb/edit/main/contrib/hbxpp/doc/en/binnumx.txt">Improve this doc</a></span></h4>
<div class="d-ol">Convert Harbour numeric into unsigned short encoded bytes</div>
<div class="d-d">Syntax</div>
<div class="d-sy"><pre><code>W2Bin( <nNumber> ) → cBuffer</code></pre></div>
<div class="d-d">Arguments</div>
<div class="d-it"><code>nNumber</code> is a numeric value to convert (decimal digits are ignored).</div>
<div class="d-d">Returns</div>
<div class="d-it"><code>W2Bin()</code> return two bytes character string that contains 16-bit encoded unsigned short integer (least significant byte first).</div>
<div class="d-d">Description</div>
<div class="d-it">
<div><p><code>W2Bin()</code> is one of the low-level binary conversion functions, those functions convert between Harbour numeric and a character representation of numeric value. <code>W2Bin()</code> take a numeric integer value and convert it into two bytes of encoded 16-bit unsigned short integer.</div>
<div><p>You might ask what is the need for such functions, well, first of all it allow you to read/write information from/to a binary file (like extracting information from DBF header), it is also a useful way to share information from source other than Harbour (C for instance).</div>
<div><p><code>W2Bin()</code> is the opposite of <code><a href="harbour.html#bin2w" title="harbour">Bin2W()</a></code></div>
</div>
<div class="d-d">Status</div>
<div class="d-it">Ready</div>
<div class="d-d">Compliance</div>
<div class="d-it">XPP</div>
<div class="d-d">Platforms</div>
<div class="d-it">Available on all platforms</div>
<div class="d-d">File</div>
<div class="d-it">Library is core</div>
<div class="d-d">Tags</div>
<div class="d-it">API, Conversion</div>
<div class="d-d">See also</div>
<div class="d-it"><nav class="dropdown"><code><a href="harbour.html#bin2i" title="harbour">Bin2I()</a></code><nav class="dropdown-content d-dd"><a href="clc53.html#bin2i">Clipper 5.3</a></nav></nav>, <nav class="dropdown"><code><a href="harbour.html#bin2l" title="harbour">Bin2L()</a></code><nav class="dropdown-content d-dd"><a href="clc53.html#bin2l">Clipper 5.3</a></nav></nav>, <code><a href="#bin2u">Bin2U()</a></code>, <nav class="dropdown"><code><a href="harbour.html#bin2w" title="harbour">Bin2W()</a></code><nav class="dropdown-content d-dd"><a href="clc53.html#bin2w">Clipper 5.3</a></nav></nav>, <nav class="dropdown"><code><a href="harbour.html#i2bin" title="harbour">I2Bin()</a></code><nav class="dropdown-content d-dd"><a href="clc53.html#i2bin">Clipper 5.3</a></nav></nav>, <nav class="dropdown"><code><a href="harbour.html#l2bin" title="harbour">L2Bin()</a></code><nav class="dropdown-content d-dd"><a href="clc53.html#l2bin">Clipper 5.3</a></nav></nav>, <code><a href="#u2bin">U2Bin()</a></code>, <nav class="dropdown"><code><a href="harbour.html#word" title="harbour">Word()</a></code><nav class="dropdown-content d-dd"><a href="clc53.html#word">Clipper 5.3</a></nav></nav></div>
</section>
<section>
<h4><a href="#dbskipper" class="d-id" id="dbskipper" title="∞"><code>dbSkipper()</code></a><span class="d-so"><nav class="dropdown d-ebi">🔎<nav class="dropdown-content d-dd"><a href="https://github.com/vszakats/hb/search?type=Code&q=dbSkipper">in Repository</a><a href="https://google.com/search?q=site:groups.google.com/d/msg/harbour+dbSkipper">in Discussions</a></nav></nav></span>
<span class="d-eb"><a href="#" title="Top" class="d-ebi">⌃</a> | <a href="index.html" title="Index" class="d-ebi">☰</a> | <a href="https://github.com/vszakats/hb/edit/main/contrib/hbxpp/doc/en/dbcmdx.txt">Improve this doc</a></span></h4>
<div class="d-ol">Helper function to skip a database</div>
<div class="d-d">Syntax</div>
<div class="d-sy"><pre><code>dbSkipper( <nRecs> ) → nSkipped</code></pre></div>
<div class="d-d">Arguments</div>
<div class="d-it"><code>nRecs</code> is the number of records to skip relative to current record. Positive number would try to move the record pointer forward, while a negative number would try to move the record pointer back <code>nRecs</code> records.</div>
<div class="d-d">Returns</div>
<div class="d-it"><code>dbSkipper()</code> return the number of actual record skipped.</div>
<div class="d-d">Description</div>
<div class="d-it"><code>dbSkipper()</code> is a helper function used in browse mechanism to skip a number of records while giving the caller indication about the actual records skipped.</div>
<div class="d-d">Examples</div>
<section class="d-ex"><div class="playground"><pre contenteditable="true" spellcheck="false"><code class="language-c">// open a file and find if we've got enough records in it
USE test
IF dbSkipper( 100 ) == 100
? "Good work! You can party now"
ELSE
? "Too bad, you should really work harder"
ENDIF
</code></pre></div></section>
<div class="d-d">Status</div>
<div class="d-it">Ready</div>
<div class="d-d">Compliance</div>
<div class="d-it">XPP</div>
<div class="d-d">Platforms</div>
<div class="d-it">Available on all platforms</div>
<div class="d-d">File</div>
<div class="d-it">Library is core</div>
<div class="d-d">Tags</div>
<div class="d-it">API, User interface</div>
<div class="d-d">See also</div>
<div class="d-it"><nav class="dropdown"><code><a href="harbour.html#dbskip" title="harbour">dbSkip()</a></code><nav class="dropdown-content d-dd"><a href="clc53.html#dbskip">Clipper 5.3</a></nav></nav>, <code><a href="clc53.html#skip-cmd" title="clc53">SKIP</a></code></div>
</section>
</main>
<footer>
<div>Generated by hbdoc on 2020-10-15 00:54 UTC</div>
<div>Based on revision <a href="https://github.com/vszakats/hb/tree/096e855">096e855</a></div>
<div>Content processing, layout & design © 2020 <a href="https://vsz.me/hb">vszakats</a></div>
</footer>
<script>
/**
* Minified by jsDelivr using Terser v3.14.1.
* Original file: /gh/PrismJS/prism@1.17.1/prism.js
*
* Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
*/
var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(e){var t=/\blang(?:uage)?-([\w-]+)\b/i,a=0,n={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof r?new r(e.type,n.util.encode(e.content),e.alias):Array.isArray(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++a}),e.__id},clone:function e(t,a){var r,s,i=n.util.type(t);switch(a=a||{},i){case"Object":if(s=n.util.objId(t),a[s])return a[s];for(var l in r={},a[s]=r,t)t.hasOwnProperty(l)&&(r[l]=e(t[l],a));return r;case"Array":return s=n.util.objId(t),a[s]?a[s]:(r=[],a[s]=r,t.forEach(function(t,n){r[n]=e(t,a)}),r);default:return t}}},languages:{extend:function(e,t){var a=n.util.clone(n.languages[e]);for(var r in t)a[r]=t[r];return a},insertBefore:function(e,t,a,r){var s=(r=r||n.languages)[e],i={};for(var l in s)if(s.hasOwnProperty(l)){if(l==t)for(var o in a)a.hasOwnProperty(o)&&(i[o]=a[o]);a.hasOwnProperty(l)||(i[l]=s[l])}var u=r[e];return r[e]=i,n.languages.DFS(n.languages,function(t,a){a===u&&t!=e&&(this[t]=i)}),i},DFS:function e(t,a,r,s){s=s||{};var i=n.util.objId;for(var l in t)if(t.hasOwnProperty(l)){a.call(t,l,t[l],r||l);var o=t[l],u=n.util.type(o);"Object"!==u||s[i(o)]?"Array"!==u||s[i(o)]||(s[i(o)]=!0,e(o,a,l,s)):(s[i(o)]=!0,e(o,a,null,s))}}},plugins:{},highlightAll:function(e,t){n.highlightAllUnder(document,e,t)},highlightAllUnder:function(e,t,a){var r={callback:a,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};n.hooks.run("before-highlightall",r);for(var s,i=e.querySelectorAll(r.selector),l=0;s=i[l++];)n.highlightElement(s,!0===t,r.callback)},highlightElement:function(a,r,s){for(var i,l="none",o=a;o&&!t.test(o.className);)o=o.parentNode;o&&(l=(o.className.match(t)||[,"none"])[1].toLowerCase(),i=n.languages[l]),a.className=a.className.replace(t,"").replace(/\s+/g," ")+" language-"+l,a.parentNode&&(o=a.parentNode,/pre/i.test(o.nodeName)&&(o.className=o.className.replace(t,"").replace(/\s+/g," ")+" language-"+l));var u={element:a,language:l,grammar:i,code:a.textContent},c=function(e){u.highlightedCode=e,n.hooks.run("before-insert",u),u.element.innerHTML=u.highlightedCode,n.hooks.run("after-highlight",u),n.hooks.run("complete",u),s&&s.call(u.element)};if(n.hooks.run("before-sanity-check",u),u.code)if(n.hooks.run("before-highlight",u),u.grammar)if(r&&e.Worker){var g=new Worker(n.filename);g.onmessage=function(e){c(e.data)},g.postMessage(JSON.stringify({language:u.language,code:u.code,immediateClose:!0}))}else c(n.highlight(u.code,u.grammar,u.language));else c(n.util.encode(u.code));else n.hooks.run("complete",u)},highlight:function(e,t,a){var s={code:e,grammar:t,language:a};return n.hooks.run("before-tokenize",s),s.tokens=n.tokenize(s.code,s.grammar),n.hooks.run("after-tokenize",s),r.stringify(n.util.encode(s.tokens),s.language)},matchGrammar:function(e,t,a,s,i,l,o){for(var u in a)if(a.hasOwnProperty(u)&&a[u]){if(u==o)return;var c=a[u];c="Array"===n.util.type(c)?c:[c];for(var g=0;g<c.length;++g){var d=c[g],p=d.inside,m=!!d.lookbehind,f=!!d.greedy,h=0,b=d.alias;if(f&&!d.pattern.global){var y=d.pattern.toString().match(/[imuy]*$/)[0];d.pattern=RegExp(d.pattern.source,y+"g")}d=d.pattern||d;for(var F=s,v=i;F<t.length;v+=t[F].length,++F){var k=t[F];if(t.length>e.length)return;if(!(k instanceof r)){if(f&&F!=t.length-1){if(d.lastIndex=v,!(S=d.exec(e)))break;for(var w=S.index+(m?S[1].length:0),A=S.index+S[0].length,x=F,P=v,$=t.length;x<$&&(P<A||!t[x].type&&!t[x-1].greedy);++x)w>=(P+=t[x].length)&&(++F,v=P);if(t[F]instanceof r)continue;_=x-F,k=e.slice(v,P),S.index-=v}else{d.lastIndex=0;var S=d.exec(k),_=1}if(S){m&&(h=S[1]?S[1].length:0);A=(w=S.index+h)+(S=S[0].slice(h)).length;var j=k.slice(0,w),C=k.slice(A),E=[F,_];j&&(++F,v+=j.length,E.push(j));var N=new r(u,p?n.tokenize(S,p):S,b,S,f);if(E.push(N),C&&E.push(C),Array.prototype.splice.apply(t,E),1!=_&&n.matchGrammar(e,t,a,F,v,!0,u),l)break}else if(l)break}}}}},tokenize:function(e,t){var a=[e],r=t.rest;if(r){for(var s in r)t[s]=r[s];delete t.rest}return n.matchGrammar(e,a,t,0,0,!1),a},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,s=0;r=a[s++];)r(t)}},Token:r};function r(e,t,a,n,r){this.type=e,this.content=t,this.alias=a,this.length=0|(n||"").length,this.greedy=!!r}if(e.Prism=n,r.stringify=function(e,t){if("string"==typeof e)return e;if(Array.isArray(e))return e.map(function(e){return r.stringify(e,t)}).join("");var a={type:e.type,content:r.stringify(e.content,t),tag:"span",classes:["token",e.type],attributes:{},language:t};if(e.alias){var s=Array.isArray(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(a.classes,s)}n.hooks.run("wrap",a);var i=Object.keys(a.attributes).map(function(e){return e+'="'+(a.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+a.tag+' class="'+a.classes.join(" ")+'"'+(i?" "+i:"")+">"+a.content+"</"+a.tag+">"},!e.document)return e.addEventListener?(n.disableWorkerMessageHandler||e.addEventListener("message",function(t){var a=JSON.parse(t.data),r=a.language,s=a.code,i=a.immediateClose;e.postMessage(n.highlight(s,n.languages[r],r)),i&&e.close()},!1),n):n;var s=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return s&&(n.filename=s.src,n.manual||s.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),n}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism),Prism.languages.markup={comment:/<!--[\s\S]*?-->/,prolog:/<\?[\s\S]+?\?>/,doctype:/<!DOCTYPE[\s\S]+?>/i,cdata:/<!\[CDATA\[[\s\S]*?]]>/i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s\/>])))+)?\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(e,t){var a={};a["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:Prism.languages[t]},a.cdata=/^<!\[CDATA\[|\]\]>$/i;var n={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:a}};n["language-"+t]={pattern:/[\s\S]+/,inside:Prism.languages[t]};var r={};r[e]={pattern:RegExp(/(<__[\s\S]*?>)(?:<!\[CDATA\[[\s\S]*?\]\]>\s*|[\s\S])*?(?=<\/__>)/.source.replace(/__/g,e),"i"),lookbehind:!0,greedy:!0,inside:n},Prism.languages.insertBefore("markup","cdata",r)}}),Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+[\s\S]*?(?:;|(?=\s*\{))/,inside:{rule:/@[\w-]+/}},url:{pattern:RegExp("url\\((?:"+t.source+"|[^\n\r()]*)\\)","i"),inside:{function:/^url/i,punctuation:/^\(|\)$/}},selector:RegExp("[^{}\\s](?:[^{};\"']|"+t.source+")*?(?=\\s*\\{)"),string:{pattern:t,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var a=e.languages.markup;a&&(a.tag.addInlined("style","css"),e.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:a.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:e.languages.css}},alias:"language-css"}},a.tag))}(Prism),Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},{pattern:/(^|[^.])\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,function:/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,operator:/-[-=]?|\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^\/\\\[\r\n])+\/[gimyus]{0,6}(?=\s*($|[\r\n,.;})\]]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)?\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=>)/i,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\s*)\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.js=Prism.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(e){e=e||document;var t={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(e.querySelectorAll("pre[data-src]")).forEach(function(e){if(!e.hasAttribute("data-src-loaded")){for(var a,n=e.getAttribute("data-src"),r=e,s=/\blang(?:uage)?-([\w-]+)\b/i;r&&!s.test(r.className);)r=r.parentNode;if(r&&(a=(e.className.match(s)||[,""])[1]),!a){var i=(n.match(/\.(\w+)$/)||[,""])[1];a=t[i]||i}var l=document.createElement("code");l.className="language-"+a,e.textContent="",l.textContent="Loading…",e.appendChild(l);var o=new XMLHttpRequest;o.open("GET",n,!0),o.onreadystatechange=function(){4==o.readyState&&(o.status<400&&o.responseText?(l.textContent=o.responseText,Prism.highlightElement(l),e.setAttribute("data-src-loaded","")):o.status>=400?l.textContent="✖ Error "+o.status+" while fetching file: "+o.statusText:l.textContent="✖ Error: File does not exist or is empty")},o.send(null)}}),Prism.plugins.toolbar&&Prism.plugins.toolbar.registerButton("download-file",function(e){var t=e.element.parentNode;if(t&&/pre/i.test(t.nodeName)&&t.hasAttribute("data-src")&&t.hasAttribute("data-download-link")){var a=t.getAttribute("data-src"),n=document.createElement("a");return n.textContent=t.getAttribute("data-download-link-label")||"Download",n.setAttribute("download",""),n.href=a,n}})},document.addEventListener("DOMContentLoaded",function(){self.Prism.fileHighlight()}));
//# sourceMappingURL=/sm/a264a97a2f20660266cd3a454fb3decaf16e29e2a9ecf5259f4176ddbec26e70.map
</script>
<script>
Prism.languages.c=Prism.languages.extend("clike",{"class-name":{pattern:/(\b(?:enum|struct)\s+)\w+/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/,number:/(?:\b0x(?:[\da-f]+\.?[\da-f]*|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ful]*/i}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+(?:[^\r\n\\]|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(?:<.+?>|("|')(?:\\?.)+?\2)/,lookbehind:!0},directive:{pattern:/(#\s*)\b(?:define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\b/,lookbehind:!0,alias:"keyword"}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete Prism.languages.c.boolean;
</script>
<script src="jquery.min.js"></script>
<script src="https://os.allcom.pl/hb/static/playground-embed.js" crossorigin="anonymous"></script>
<script src="https://os.allcom.pl/hb/static/play.js" crossorigin="anonymous"></script>
<script>
'use strict';
$(function() {
initPlayground(hbioTransport());
});
</script>