compress-bsc 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +2 -0
  4. data/Gemfile +8 -0
  5. data/LICENSE +192 -0
  6. data/README.md +279 -0
  7. data/Rakefile +96 -0
  8. data/bin/rbsc +306 -0
  9. data/certs/djberg96_pub.pem +26 -0
  10. data/compress-bsc.gemspec +45 -0
  11. data/coverage/assets/0.13.2/DataTables-1.10.20/images/sort_asc.png +0 -0
  12. data/coverage/assets/0.13.2/DataTables-1.10.20/images/sort_asc_disabled.png +0 -0
  13. data/coverage/assets/0.13.2/DataTables-1.10.20/images/sort_both.png +0 -0
  14. data/coverage/assets/0.13.2/DataTables-1.10.20/images/sort_desc.png +0 -0
  15. data/coverage/assets/0.13.2/DataTables-1.10.20/images/sort_desc_disabled.png +0 -0
  16. data/coverage/assets/0.13.2/application.css +1 -0
  17. data/coverage/assets/0.13.2/application.js +7 -0
  18. data/coverage/assets/0.13.2/colorbox/border.png +0 -0
  19. data/coverage/assets/0.13.2/colorbox/controls.png +0 -0
  20. data/coverage/assets/0.13.2/colorbox/loading.gif +0 -0
  21. data/coverage/assets/0.13.2/colorbox/loading_background.png +0 -0
  22. data/coverage/assets/0.13.2/favicon_green.png +0 -0
  23. data/coverage/assets/0.13.2/favicon_red.png +0 -0
  24. data/coverage/assets/0.13.2/favicon_yellow.png +0 -0
  25. data/coverage/assets/0.13.2/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  26. data/coverage/assets/0.13.2/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  27. data/coverage/assets/0.13.2/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  28. data/coverage/assets/0.13.2/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  29. data/coverage/assets/0.13.2/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  30. data/coverage/assets/0.13.2/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  31. data/coverage/assets/0.13.2/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  32. data/coverage/assets/0.13.2/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  33. data/coverage/assets/0.13.2/images/ui-icons_222222_256x240.png +0 -0
  34. data/coverage/assets/0.13.2/images/ui-icons_2e83ff_256x240.png +0 -0
  35. data/coverage/assets/0.13.2/images/ui-icons_454545_256x240.png +0 -0
  36. data/coverage/assets/0.13.2/images/ui-icons_888888_256x240.png +0 -0
  37. data/coverage/assets/0.13.2/images/ui-icons_cd0a0a_256x240.png +0 -0
  38. data/coverage/assets/0.13.2/loading.gif +0 -0
  39. data/coverage/assets/0.13.2/magnify.png +0 -0
  40. data/coverage/index.html +4779 -0
  41. data/examples/usage_example.rb +215 -0
  42. data/lib/compress/bsc/compressor.rb +81 -0
  43. data/lib/compress/bsc/decompressor.rb +159 -0
  44. data/lib/compress/bsc/error.rb +18 -0
  45. data/lib/compress/bsc/library.rb +100 -0
  46. data/lib/compress/bsc/version.rb +5 -0
  47. data/lib/compress/bsc.rb +26 -0
  48. data/lib/compress-bsc.rb +5 -0
  49. data/spec/compressor_spec.rb +124 -0
  50. data/spec/decompressor_spec.rb +135 -0
  51. data/spec/error_spec.rb +63 -0
  52. data/spec/examples.txt +60 -0
  53. data/spec/ffi_bsc_spec.rb +101 -0
  54. data/spec/library_spec.rb +97 -0
  55. data/spec/spec_helper.rb +53 -0
  56. data.tar.gz.sig +0 -0
  57. metadata +232 -0
  58. metadata.gz.sig +0 -0
@@ -0,0 +1,4779 @@
1
+ <!DOCTYPE html>
2
+ <html xmlns='http://www.w3.org/1999/xhtml'>
3
+ <head>
4
+ <title>Code coverage for Compress-bsc</title>
5
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6
+ <script src='./assets/0.13.2/application.js' type='text/javascript'></script>
7
+ <link href='./assets/0.13.2/application.css' media='screen, projection, print' rel='stylesheet' type='text/css' />
8
+ <link rel="icon" type="image/png" href="./assets/0.13.2/favicon_red.png" />
9
+ </head>
10
+
11
+ <body>
12
+ <div id="loading">
13
+ <img src="./assets/0.13.2/loading.gif" alt="loading"/>
14
+ </div>
15
+ <div id="wrapper" class="hide">
16
+ <div class="timestamp">Generated <abbr class="timeago" title="2025-07-19T15:51:58-04:00">2025-07-19T15:51:58-04:00</abbr></div>
17
+ <ul class="group_tabs"></ul>
18
+
19
+ <div id="content">
20
+ <div class="file_list_container" id="AllFiles">
21
+ <h2>
22
+ <span class="group_name">All Files</span>
23
+ (<span class="covered_percent">
24
+ <span class="red">
25
+ 76.38%
26
+ </span>
27
+
28
+ </span>
29
+ covered at
30
+ <span class="covered_strength">
31
+ <span class="red">
32
+ 0.83
33
+ </span>
34
+ </span> hits/line
35
+ )
36
+ </h2>
37
+
38
+ <a name="AllFiles"></a>
39
+
40
+ <div>
41
+ <b>5</b> files in total.
42
+ </div>
43
+
44
+ <div class="t-line-summary">
45
+ <b>199</b> relevant lines,
46
+ <span class="green"><b>152</b> lines covered</span> and
47
+ <span class="red"><b>47</b> lines missed. </span>
48
+ (<span class="red">
49
+ 76.38%
50
+ </span>
51
+ )
52
+ </div>
53
+
54
+
55
+
56
+ <div class="file_list--responsive">
57
+ <table class="file_list">
58
+ <thead>
59
+ <tr>
60
+ <th>File</th>
61
+ <th class="cell--number">% covered</th>
62
+ <th class="cell--number">Lines</th>
63
+ <th class="cell--number">Relevant Lines</th>
64
+ <th class="cell--number">Lines covered</th>
65
+ <th class="cell--number">Lines missed</th>
66
+ <th class="cell--number">Avg. Hits / Line</th>
67
+
68
+ </tr>
69
+ </thead>
70
+ <tbody>
71
+
72
+ <tr class="t-file">
73
+ <td class="strong t-file__name"><a href="#973686a061d5b5322761c945e16bc049ea0d9039" class="src_link" title="lib/compress/bsc.rb">lib/compress/bsc.rb</a></td>
74
+ <td class="yellow strong cell--number t-file__coverage">86.67 %</td>
75
+ <td class="cell--number">26</td>
76
+ <td class="cell--number">15</td>
77
+ <td class="cell--number">13</td>
78
+ <td class="cell--number">2</td>
79
+ <td class="cell--number">0.87</td>
80
+
81
+ </tr>
82
+
83
+ <tr class="t-file">
84
+ <td class="strong t-file__name"><a href="#611fa3a3c5c266991549545b00b228bb2c601d42" class="src_link" title="lib/compress/bsc/compressor.rb">lib/compress/bsc/compressor.rb</a></td>
85
+ <td class="yellow strong cell--number t-file__coverage">86.11 %</td>
86
+ <td class="cell--number">81</td>
87
+ <td class="cell--number">36</td>
88
+ <td class="cell--number">31</td>
89
+ <td class="cell--number">5</td>
90
+ <td class="cell--number">0.86</td>
91
+
92
+ </tr>
93
+
94
+ <tr class="t-file">
95
+ <td class="strong t-file__name"><a href="#996003a8b7bda6fbc90cbc335cd75c8cebcdd326" class="src_link" title="lib/compress/bsc/decompressor.rb">lib/compress/bsc/decompressor.rb</a></td>
96
+ <td class="red strong cell--number t-file__coverage">44.29 %</td>
97
+ <td class="cell--number">159</td>
98
+ <td class="cell--number">70</td>
99
+ <td class="cell--number">31</td>
100
+ <td class="cell--number">39</td>
101
+ <td class="cell--number">0.60</td>
102
+
103
+ </tr>
104
+
105
+ <tr class="t-file">
106
+ <td class="strong t-file__name"><a href="#95758d8646f27550721435c3eac606d230248c39" class="src_link" title="lib/compress/bsc/error.rb">lib/compress/bsc/error.rb</a></td>
107
+ <td class="green strong cell--number t-file__coverage">100.00 %</td>
108
+ <td class="cell--number">18</td>
109
+ <td class="cell--number">11</td>
110
+ <td class="cell--number">11</td>
111
+ <td class="cell--number">0</td>
112
+ <td class="cell--number">1.18</td>
113
+
114
+ </tr>
115
+
116
+ <tr class="t-file">
117
+ <td class="strong t-file__name"><a href="#4c153a264c5ba1d85dfac4456e25832d1277dac5" class="src_link" title="lib/compress/bsc/library.rb">lib/compress/bsc/library.rb</a></td>
118
+ <td class="green strong cell--number t-file__coverage">98.51 %</td>
119
+ <td class="cell--number">122</td>
120
+ <td class="cell--number">67</td>
121
+ <td class="cell--number">66</td>
122
+ <td class="cell--number">1</td>
123
+ <td class="cell--number">0.99</td>
124
+
125
+ </tr>
126
+
127
+ </tbody>
128
+ </table>
129
+ </div>
130
+ </div>
131
+
132
+
133
+
134
+ <div class="file_list_container" id="Library">
135
+ <h2>
136
+ <span class="group_name">Library</span>
137
+ (<span class="covered_percent">
138
+ <span class="red">
139
+ 76.38%
140
+ </span>
141
+
142
+ </span>
143
+ covered at
144
+ <span class="covered_strength">
145
+ <span class="red">
146
+ 0.83
147
+ </span>
148
+ </span> hits/line
149
+ )
150
+ </h2>
151
+
152
+ <a name="Library"></a>
153
+
154
+ <div>
155
+ <b>5</b> files in total.
156
+ </div>
157
+
158
+ <div class="t-line-summary">
159
+ <b>199</b> relevant lines,
160
+ <span class="green"><b>152</b> lines covered</span> and
161
+ <span class="red"><b>47</b> lines missed. </span>
162
+ (<span class="red">
163
+ 76.38%
164
+ </span>
165
+ )
166
+ </div>
167
+
168
+
169
+
170
+ <div class="file_list--responsive">
171
+ <table class="file_list">
172
+ <thead>
173
+ <tr>
174
+ <th>File</th>
175
+ <th class="cell--number">% covered</th>
176
+ <th class="cell--number">Lines</th>
177
+ <th class="cell--number">Relevant Lines</th>
178
+ <th class="cell--number">Lines covered</th>
179
+ <th class="cell--number">Lines missed</th>
180
+ <th class="cell--number">Avg. Hits / Line</th>
181
+
182
+ </tr>
183
+ </thead>
184
+ <tbody>
185
+
186
+ <tr class="t-file">
187
+ <td class="strong t-file__name"><a href="#973686a061d5b5322761c945e16bc049ea0d9039" class="src_link" title="lib/compress/bsc.rb">lib/compress/bsc.rb</a></td>
188
+ <td class="yellow strong cell--number t-file__coverage">86.67 %</td>
189
+ <td class="cell--number">26</td>
190
+ <td class="cell--number">15</td>
191
+ <td class="cell--number">13</td>
192
+ <td class="cell--number">2</td>
193
+ <td class="cell--number">0.87</td>
194
+
195
+ </tr>
196
+
197
+ <tr class="t-file">
198
+ <td class="strong t-file__name"><a href="#611fa3a3c5c266991549545b00b228bb2c601d42" class="src_link" title="lib/compress/bsc/compressor.rb">lib/compress/bsc/compressor.rb</a></td>
199
+ <td class="yellow strong cell--number t-file__coverage">86.11 %</td>
200
+ <td class="cell--number">81</td>
201
+ <td class="cell--number">36</td>
202
+ <td class="cell--number">31</td>
203
+ <td class="cell--number">5</td>
204
+ <td class="cell--number">0.86</td>
205
+
206
+ </tr>
207
+
208
+ <tr class="t-file">
209
+ <td class="strong t-file__name"><a href="#996003a8b7bda6fbc90cbc335cd75c8cebcdd326" class="src_link" title="lib/compress/bsc/decompressor.rb">lib/compress/bsc/decompressor.rb</a></td>
210
+ <td class="red strong cell--number t-file__coverage">44.29 %</td>
211
+ <td class="cell--number">159</td>
212
+ <td class="cell--number">70</td>
213
+ <td class="cell--number">31</td>
214
+ <td class="cell--number">39</td>
215
+ <td class="cell--number">0.60</td>
216
+
217
+ </tr>
218
+
219
+ <tr class="t-file">
220
+ <td class="strong t-file__name"><a href="#95758d8646f27550721435c3eac606d230248c39" class="src_link" title="lib/compress/bsc/error.rb">lib/compress/bsc/error.rb</a></td>
221
+ <td class="green strong cell--number t-file__coverage">100.00 %</td>
222
+ <td class="cell--number">18</td>
223
+ <td class="cell--number">11</td>
224
+ <td class="cell--number">11</td>
225
+ <td class="cell--number">0</td>
226
+ <td class="cell--number">1.18</td>
227
+
228
+ </tr>
229
+
230
+ <tr class="t-file">
231
+ <td class="strong t-file__name"><a href="#4c153a264c5ba1d85dfac4456e25832d1277dac5" class="src_link" title="lib/compress/bsc/library.rb">lib/compress/bsc/library.rb</a></td>
232
+ <td class="green strong cell--number t-file__coverage">98.51 %</td>
233
+ <td class="cell--number">122</td>
234
+ <td class="cell--number">67</td>
235
+ <td class="cell--number">66</td>
236
+ <td class="cell--number">1</td>
237
+ <td class="cell--number">0.99</td>
238
+
239
+ </tr>
240
+
241
+ </tbody>
242
+ </table>
243
+ </div>
244
+ </div>
245
+
246
+
247
+ </div>
248
+
249
+ <div id="footer">
250
+ Generated by <a href="https://github.com/simplecov-ruby/simplecov">simplecov</a> v0.22.0
251
+ and simplecov-html v0.13.2<br/>
252
+ using RSpec
253
+ </div>
254
+
255
+ <div class="source_files">
256
+
257
+ <div class="source_table" id="973686a061d5b5322761c945e16bc049ea0d9039">
258
+ <div class="header">
259
+ <h3>lib/compress/bsc.rb</h3>
260
+ <h4>
261
+ <span class="yellow">
262
+ 86.67%
263
+ </span>
264
+
265
+ lines covered
266
+ </h4>
267
+
268
+
269
+
270
+ <div class="t-line-summary">
271
+ <b>15</b> relevant lines.
272
+ <span class="green"><b>13</b> lines covered</span> and
273
+ <span class="red"><b>2</b> lines missed.</span>
274
+ </div>
275
+
276
+
277
+
278
+ </div>
279
+
280
+ <pre>
281
+ <ol>
282
+
283
+ <div>
284
+ <li class="covered" data-hits="1" data-linenumber="1">
285
+
286
+ <span class="hits">1</span>
287
+
288
+
289
+
290
+
291
+ <code class="ruby">require &#39;ffi&#39;</code>
292
+ </li>
293
+ </div>
294
+
295
+ <div>
296
+ <li class="covered" data-hits="1" data-linenumber="2">
297
+
298
+ <span class="hits">1</span>
299
+
300
+
301
+
302
+
303
+ <code class="ruby">require_relative &#39;bsc/version&#39;</code>
304
+ </li>
305
+ </div>
306
+
307
+ <div>
308
+ <li class="covered" data-hits="1" data-linenumber="3">
309
+
310
+ <span class="hits">1</span>
311
+
312
+
313
+
314
+
315
+ <code class="ruby">require_relative &#39;bsc/library&#39;</code>
316
+ </li>
317
+ </div>
318
+
319
+ <div>
320
+ <li class="covered" data-hits="1" data-linenumber="4">
321
+
322
+ <span class="hits">1</span>
323
+
324
+
325
+
326
+
327
+ <code class="ruby">require_relative &#39;bsc/compressor&#39;</code>
328
+ </li>
329
+ </div>
330
+
331
+ <div>
332
+ <li class="covered" data-hits="1" data-linenumber="5">
333
+
334
+ <span class="hits">1</span>
335
+
336
+
337
+
338
+
339
+ <code class="ruby">require_relative &#39;bsc/decompressor&#39;</code>
340
+ </li>
341
+ </div>
342
+
343
+ <div>
344
+ <li class="covered" data-hits="1" data-linenumber="6">
345
+
346
+ <span class="hits">1</span>
347
+
348
+
349
+
350
+
351
+ <code class="ruby">require_relative &#39;bsc/error&#39;</code>
352
+ </li>
353
+ </div>
354
+
355
+ <div>
356
+ <li class="never" data-hits="" data-linenumber="7">
357
+
358
+
359
+
360
+
361
+ <code class="ruby"></code>
362
+ </li>
363
+ </div>
364
+
365
+ <div>
366
+ <li class="covered" data-hits="1" data-linenumber="8">
367
+
368
+ <span class="hits">1</span>
369
+
370
+
371
+
372
+
373
+ <code class="ruby">module Compress</code>
374
+ </li>
375
+ </div>
376
+
377
+ <div>
378
+ <li class="covered" data-hits="1" data-linenumber="9">
379
+
380
+ <span class="hits">1</span>
381
+
382
+
383
+
384
+
385
+ <code class="ruby"> class BSC</code>
386
+ </li>
387
+ </div>
388
+
389
+ <div>
390
+ <li class="never" data-hits="" data-linenumber="10">
391
+
392
+
393
+
394
+
395
+ <code class="ruby"> # Initialize the BSC library with configurable features</code>
396
+ </li>
397
+ </div>
398
+
399
+ <div>
400
+ <li class="covered" data-hits="1" data-linenumber="11">
401
+
402
+ <span class="hits">1</span>
403
+
404
+
405
+
406
+
407
+ <code class="ruby"> def initialize(features: Library::LIBBSC_DEFAULT_FEATURES)</code>
408
+ </li>
409
+ </div>
410
+
411
+ <div>
412
+ <li class="covered" data-hits="1" data-linenumber="12">
413
+
414
+ <span class="hits">1</span>
415
+
416
+
417
+
418
+
419
+ <code class="ruby"> result = Library.bsc_init(features)</code>
420
+ </li>
421
+ </div>
422
+
423
+ <div>
424
+ <li class="covered" data-hits="1" data-linenumber="13">
425
+
426
+ <span class="hits">1</span>
427
+
428
+
429
+
430
+
431
+ <code class="ruby"> raise Error.new(result) unless result == Library::LIBBSC_NO_ERROR</code>
432
+ </li>
433
+ </div>
434
+
435
+ <div>
436
+ <li class="never" data-hits="" data-linenumber="14">
437
+
438
+
439
+
440
+
441
+ <code class="ruby"> end</code>
442
+ </li>
443
+ </div>
444
+
445
+ <div>
446
+ <li class="never" data-hits="" data-linenumber="15">
447
+
448
+
449
+
450
+
451
+ <code class="ruby"></code>
452
+ </li>
453
+ </div>
454
+
455
+ <div>
456
+ <li class="never" data-hits="" data-linenumber="16">
457
+
458
+
459
+
460
+
461
+ <code class="ruby"> # Simple compression interface</code>
462
+ </li>
463
+ </div>
464
+
465
+ <div>
466
+ <li class="covered" data-hits="1" data-linenumber="17">
467
+
468
+ <span class="hits">1</span>
469
+
470
+
471
+
472
+
473
+ <code class="ruby"> def compress(data, options = {})</code>
474
+ </li>
475
+ </div>
476
+
477
+ <div>
478
+ <li class="missed" data-hits="0" data-linenumber="18">
479
+
480
+
481
+
482
+
483
+ <code class="ruby"> Compressor.new(options).compress(data)</code>
484
+ </li>
485
+ </div>
486
+
487
+ <div>
488
+ <li class="never" data-hits="" data-linenumber="19">
489
+
490
+
491
+
492
+
493
+ <code class="ruby"> end</code>
494
+ </li>
495
+ </div>
496
+
497
+ <div>
498
+ <li class="never" data-hits="" data-linenumber="20">
499
+
500
+
501
+
502
+
503
+ <code class="ruby"></code>
504
+ </li>
505
+ </div>
506
+
507
+ <div>
508
+ <li class="never" data-hits="" data-linenumber="21">
509
+
510
+
511
+
512
+
513
+ <code class="ruby"> # Simple decompression interface</code>
514
+ </li>
515
+ </div>
516
+
517
+ <div>
518
+ <li class="covered" data-hits="1" data-linenumber="22">
519
+
520
+ <span class="hits">1</span>
521
+
522
+
523
+
524
+
525
+ <code class="ruby"> def decompress(data, options = {})</code>
526
+ </li>
527
+ </div>
528
+
529
+ <div>
530
+ <li class="missed" data-hits="0" data-linenumber="23">
531
+
532
+
533
+
534
+
535
+ <code class="ruby"> Decompressor.new(options).decompress(data)</code>
536
+ </li>
537
+ </div>
538
+
539
+ <div>
540
+ <li class="never" data-hits="" data-linenumber="24">
541
+
542
+
543
+
544
+
545
+ <code class="ruby"> end</code>
546
+ </li>
547
+ </div>
548
+
549
+ <div>
550
+ <li class="never" data-hits="" data-linenumber="25">
551
+
552
+
553
+
554
+
555
+ <code class="ruby"> end</code>
556
+ </li>
557
+ </div>
558
+
559
+ <div>
560
+ <li class="never" data-hits="" data-linenumber="26">
561
+
562
+
563
+
564
+
565
+ <code class="ruby">end</code>
566
+ </li>
567
+ </div>
568
+
569
+ </ol>
570
+ </pre>
571
+ </div>
572
+
573
+
574
+ <div class="source_table" id="611fa3a3c5c266991549545b00b228bb2c601d42">
575
+ <div class="header">
576
+ <h3>lib/compress/bsc/compressor.rb</h3>
577
+ <h4>
578
+ <span class="yellow">
579
+ 86.11%
580
+ </span>
581
+
582
+ lines covered
583
+ </h4>
584
+
585
+
586
+
587
+ <div class="t-line-summary">
588
+ <b>36</b> relevant lines.
589
+ <span class="green"><b>31</b> lines covered</span> and
590
+ <span class="red"><b>5</b> lines missed.</span>
591
+ </div>
592
+
593
+
594
+
595
+ </div>
596
+
597
+ <pre>
598
+ <ol>
599
+
600
+ <div>
601
+ <li class="covered" data-hits="1" data-linenumber="1">
602
+
603
+ <span class="hits">1</span>
604
+
605
+
606
+
607
+
608
+ <code class="ruby">module Compress</code>
609
+ </li>
610
+ </div>
611
+
612
+ <div>
613
+ <li class="covered" data-hits="1" data-linenumber="2">
614
+
615
+ <span class="hits">1</span>
616
+
617
+
618
+
619
+
620
+ <code class="ruby"> class BSC</code>
621
+ </li>
622
+ </div>
623
+
624
+ <div>
625
+ <li class="covered" data-hits="1" data-linenumber="3">
626
+
627
+ <span class="hits">1</span>
628
+
629
+
630
+
631
+
632
+ <code class="ruby"> class Compressor</code>
633
+ </li>
634
+ </div>
635
+
636
+ <div>
637
+ <li class="covered" data-hits="1" data-linenumber="4">
638
+
639
+ <span class="hits">1</span>
640
+
641
+
642
+
643
+
644
+ <code class="ruby"> attr_reader :lzp_hash_size, :lzp_min_len, :block_sorter, :coder, :features</code>
645
+ </li>
646
+ </div>
647
+
648
+ <div>
649
+ <li class="never" data-hits="" data-linenumber="5">
650
+
651
+
652
+
653
+
654
+ <code class="ruby"></code>
655
+ </li>
656
+ </div>
657
+
658
+ <div>
659
+ <li class="covered" data-hits="1" data-linenumber="6">
660
+
661
+ <span class="hits">1</span>
662
+
663
+
664
+
665
+
666
+ <code class="ruby"> def initialize(options = {})</code>
667
+ </li>
668
+ </div>
669
+
670
+ <div>
671
+ <li class="covered" data-hits="1" data-linenumber="7">
672
+
673
+ <span class="hits">1</span>
674
+
675
+
676
+
677
+
678
+ <code class="ruby"> @lzp_hash_size = options[:lzp_hash_size] || 0 # Disable LZP by default</code>
679
+ </li>
680
+ </div>
681
+
682
+ <div>
683
+ <li class="covered" data-hits="1" data-linenumber="8">
684
+
685
+ <span class="hits">1</span>
686
+
687
+
688
+
689
+
690
+ <code class="ruby"> @lzp_min_len = options[:lzp_min_len] || 0 # Disable LZP by default</code>
691
+ </li>
692
+ </div>
693
+
694
+ <div>
695
+ <li class="covered" data-hits="1" data-linenumber="9">
696
+
697
+ <span class="hits">1</span>
698
+
699
+
700
+
701
+
702
+ <code class="ruby"> @block_sorter = options[:block_sorter] || Library::LIBBSC_DEFAULT_BLOCKSORTER</code>
703
+ </li>
704
+ </div>
705
+
706
+ <div>
707
+ <li class="covered" data-hits="1" data-linenumber="10">
708
+
709
+ <span class="hits">1</span>
710
+
711
+
712
+
713
+
714
+ <code class="ruby"> @coder = options[:coder] || Library::LIBBSC_DEFAULT_CODER</code>
715
+ </li>
716
+ </div>
717
+
718
+ <div>
719
+ <li class="covered" data-hits="1" data-linenumber="11">
720
+
721
+ <span class="hits">1</span>
722
+
723
+
724
+
725
+
726
+ <code class="ruby"> @features = options[:features] || Library::LIBBSC_DEFAULT_FEATURES</code>
727
+ </li>
728
+ </div>
729
+
730
+ <div>
731
+ <li class="never" data-hits="" data-linenumber="12">
732
+
733
+
734
+
735
+
736
+ <code class="ruby"> end</code>
737
+ </li>
738
+ </div>
739
+
740
+ <div>
741
+ <li class="never" data-hits="" data-linenumber="13">
742
+
743
+
744
+
745
+
746
+ <code class="ruby"></code>
747
+ </li>
748
+ </div>
749
+
750
+ <div>
751
+ <li class="covered" data-hits="1" data-linenumber="14">
752
+
753
+ <span class="hits">1</span>
754
+
755
+
756
+
757
+
758
+ <code class="ruby"> def compress(input_data)</code>
759
+ </li>
760
+ </div>
761
+
762
+ <div>
763
+ <li class="covered" data-hits="1" data-linenumber="15">
764
+
765
+ <span class="hits">1</span>
766
+
767
+
768
+
769
+
770
+ <code class="ruby"> raise ArgumentError, &quot;Input data cannot be nil&quot; if input_data.nil?</code>
771
+ </li>
772
+ </div>
773
+
774
+ <div>
775
+ <li class="covered" data-hits="1" data-linenumber="16">
776
+
777
+ <span class="hits">1</span>
778
+
779
+
780
+
781
+
782
+ <code class="ruby"> raise ArgumentError, &quot;Input data must be a string&quot; unless input_data.is_a?(String)</code>
783
+ </li>
784
+ </div>
785
+
786
+ <div>
787
+ <li class="never" data-hits="" data-linenumber="17">
788
+
789
+
790
+
791
+
792
+ <code class="ruby"></code>
793
+ </li>
794
+ </div>
795
+
796
+ <div>
797
+ <li class="covered" data-hits="1" data-linenumber="18">
798
+
799
+ <span class="hits">1</span>
800
+
801
+
802
+
803
+
804
+ <code class="ruby"> return input_data if input_data.empty?</code>
805
+ </li>
806
+ </div>
807
+
808
+ <div>
809
+ <li class="never" data-hits="" data-linenumber="19">
810
+
811
+
812
+
813
+
814
+ <code class="ruby"></code>
815
+ </li>
816
+ </div>
817
+
818
+ <div>
819
+ <li class="never" data-hits="" data-linenumber="20">
820
+
821
+
822
+
823
+
824
+ <code class="ruby"> # Store original encoding for later restoration</code>
825
+ </li>
826
+ </div>
827
+
828
+ <div>
829
+ <li class="covered" data-hits="1" data-linenumber="21">
830
+
831
+ <span class="hits">1</span>
832
+
833
+
834
+
835
+
836
+ <code class="ruby"> original_encoding = input_data.encoding</code>
837
+ </li>
838
+ </div>
839
+
840
+ <div>
841
+ <li class="never" data-hits="" data-linenumber="22">
842
+
843
+
844
+
845
+
846
+ <code class="ruby"></code>
847
+ </li>
848
+ </div>
849
+
850
+ <div>
851
+ <li class="never" data-hits="" data-linenumber="23">
852
+
853
+
854
+
855
+
856
+ <code class="ruby"> # Convert to binary for compression (make a copy first!)</code>
857
+ </li>
858
+ </div>
859
+
860
+ <div>
861
+ <li class="covered" data-hits="1" data-linenumber="24">
862
+
863
+ <span class="hits">1</span>
864
+
865
+
866
+
867
+
868
+ <code class="ruby"> binary_data = input_data.dup.force_encoding(Encoding::BINARY)</code>
869
+ </li>
870
+ </div>
871
+
872
+ <div>
873
+ <li class="covered" data-hits="1" data-linenumber="25">
874
+
875
+ <span class="hits">1</span>
876
+
877
+
878
+
879
+
880
+ <code class="ruby"> input_size = binary_data.bytesize</code>
881
+ </li>
882
+ </div>
883
+
884
+ <div>
885
+ <li class="never" data-hits="" data-linenumber="26">
886
+
887
+
888
+
889
+
890
+ <code class="ruby"></code>
891
+ </li>
892
+ </div>
893
+
894
+ <div>
895
+ <li class="never" data-hits="" data-linenumber="27">
896
+
897
+
898
+
899
+
900
+ <code class="ruby"> # Calculate maximum possible output size (worst case)</code>
901
+ </li>
902
+ </div>
903
+
904
+ <div>
905
+ <li class="never" data-hits="" data-linenumber="28">
906
+
907
+
908
+
909
+
910
+ <code class="ruby"> # BSC adds a header, so we need at least input_size + HEADER_SIZE</code>
911
+ </li>
912
+ </div>
913
+
914
+ <div>
915
+ <li class="covered" data-hits="1" data-linenumber="29">
916
+
917
+ <span class="hits">1</span>
918
+
919
+
920
+
921
+
922
+ <code class="ruby"> max_output_size = input_size + Library::LIBBSC_HEADER_SIZE + 1024 # Add some buffer</code>
923
+ </li>
924
+ </div>
925
+
926
+ <div>
927
+ <li class="never" data-hits="" data-linenumber="30">
928
+
929
+
930
+
931
+
932
+ <code class="ruby"></code>
933
+ </li>
934
+ </div>
935
+
936
+ <div>
937
+ <li class="never" data-hits="" data-linenumber="31">
938
+
939
+
940
+
941
+
942
+ <code class="ruby"> # Allocate input and output buffers</code>
943
+ </li>
944
+ </div>
945
+
946
+ <div>
947
+ <li class="covered" data-hits="1" data-linenumber="32">
948
+
949
+ <span class="hits">1</span>
950
+
951
+
952
+
953
+
954
+ <code class="ruby"> input_ptr = FFI::MemoryPointer.new(:char, input_size)</code>
955
+ </li>
956
+ </div>
957
+
958
+ <div>
959
+ <li class="covered" data-hits="1" data-linenumber="33">
960
+
961
+ <span class="hits">1</span>
962
+
963
+
964
+
965
+
966
+ <code class="ruby"> input_ptr.put_bytes(0, binary_data)</code>
967
+ </li>
968
+ </div>
969
+
970
+ <div>
971
+ <li class="never" data-hits="" data-linenumber="34">
972
+
973
+
974
+
975
+
976
+ <code class="ruby"></code>
977
+ </li>
978
+ </div>
979
+
980
+ <div>
981
+ <li class="covered" data-hits="1" data-linenumber="35">
982
+
983
+ <span class="hits">1</span>
984
+
985
+
986
+
987
+
988
+ <code class="ruby"> output_ptr = FFI::MemoryPointer.new(:char, max_output_size)</code>
989
+ </li>
990
+ </div>
991
+
992
+ <div>
993
+ <li class="never" data-hits="" data-linenumber="36">
994
+
995
+
996
+
997
+
998
+ <code class="ruby"></code>
999
+ </li>
1000
+ </div>
1001
+
1002
+ <div>
1003
+ <li class="never" data-hits="" data-linenumber="37">
1004
+
1005
+
1006
+
1007
+
1008
+ <code class="ruby"> begin</code>
1009
+ </li>
1010
+ </div>
1011
+
1012
+ <div>
1013
+ <li class="never" data-hits="" data-linenumber="38">
1014
+
1015
+
1016
+
1017
+
1018
+ <code class="ruby"> # Perform compression</code>
1019
+ </li>
1020
+ </div>
1021
+
1022
+ <div>
1023
+ <li class="covered" data-hits="1" data-linenumber="39">
1024
+
1025
+ <span class="hits">1</span>
1026
+
1027
+
1028
+
1029
+
1030
+ <code class="ruby"> result = Library.bsc_compress(</code>
1031
+ </li>
1032
+ </div>
1033
+
1034
+ <div>
1035
+ <li class="never" data-hits="" data-linenumber="40">
1036
+
1037
+
1038
+
1039
+
1040
+ <code class="ruby"> input_ptr,</code>
1041
+ </li>
1042
+ </div>
1043
+
1044
+ <div>
1045
+ <li class="never" data-hits="" data-linenumber="41">
1046
+
1047
+
1048
+
1049
+
1050
+ <code class="ruby"> output_ptr,</code>
1051
+ </li>
1052
+ </div>
1053
+
1054
+ <div>
1055
+ <li class="never" data-hits="" data-linenumber="42">
1056
+
1057
+
1058
+
1059
+
1060
+ <code class="ruby"> input_size,</code>
1061
+ </li>
1062
+ </div>
1063
+
1064
+ <div>
1065
+ <li class="never" data-hits="" data-linenumber="43">
1066
+
1067
+
1068
+
1069
+
1070
+ <code class="ruby"> @lzp_hash_size,</code>
1071
+ </li>
1072
+ </div>
1073
+
1074
+ <div>
1075
+ <li class="never" data-hits="" data-linenumber="44">
1076
+
1077
+
1078
+
1079
+
1080
+ <code class="ruby"> @lzp_min_len,</code>
1081
+ </li>
1082
+ </div>
1083
+
1084
+ <div>
1085
+ <li class="never" data-hits="" data-linenumber="45">
1086
+
1087
+
1088
+
1089
+
1090
+ <code class="ruby"> @block_sorter,</code>
1091
+ </li>
1092
+ </div>
1093
+
1094
+ <div>
1095
+ <li class="never" data-hits="" data-linenumber="46">
1096
+
1097
+
1098
+
1099
+
1100
+ <code class="ruby"> @coder,</code>
1101
+ </li>
1102
+ </div>
1103
+
1104
+ <div>
1105
+ <li class="never" data-hits="" data-linenumber="47">
1106
+
1107
+
1108
+
1109
+
1110
+ <code class="ruby"> @features</code>
1111
+ </li>
1112
+ </div>
1113
+
1114
+ <div>
1115
+ <li class="never" data-hits="" data-linenumber="48">
1116
+
1117
+
1118
+
1119
+
1120
+ <code class="ruby"> )</code>
1121
+ </li>
1122
+ </div>
1123
+
1124
+ <div>
1125
+ <li class="never" data-hits="" data-linenumber="49">
1126
+
1127
+
1128
+
1129
+
1130
+ <code class="ruby"></code>
1131
+ </li>
1132
+ </div>
1133
+
1134
+ <div>
1135
+ <li class="covered" data-hits="1" data-linenumber="50">
1136
+
1137
+ <span class="hits">1</span>
1138
+
1139
+
1140
+
1141
+
1142
+ <code class="ruby"> if result == Library::LIBBSC_NOT_COMPRESSIBLE</code>
1143
+ </li>
1144
+ </div>
1145
+
1146
+ <div>
1147
+ <li class="never" data-hits="" data-linenumber="51">
1148
+
1149
+
1150
+
1151
+
1152
+ <code class="ruby"> # Return original data if not compressible</code>
1153
+ </li>
1154
+ </div>
1155
+
1156
+ <div>
1157
+ <li class="missed" data-hits="0" data-linenumber="52">
1158
+
1159
+
1160
+
1161
+
1162
+ <code class="ruby"> return input_data</code>
1163
+ </li>
1164
+ </div>
1165
+
1166
+ <div>
1167
+ <li class="never" data-hits="" data-linenumber="53">
1168
+
1169
+
1170
+
1171
+
1172
+ <code class="ruby"> end</code>
1173
+ </li>
1174
+ </div>
1175
+
1176
+ <div>
1177
+ <li class="never" data-hits="" data-linenumber="54">
1178
+
1179
+
1180
+
1181
+
1182
+ <code class="ruby"></code>
1183
+ </li>
1184
+ </div>
1185
+
1186
+ <div>
1187
+ <li class="covered" data-hits="1" data-linenumber="55">
1188
+
1189
+ <span class="hits">1</span>
1190
+
1191
+
1192
+
1193
+
1194
+ <code class="ruby"> Error.check_result(result)</code>
1195
+ </li>
1196
+ </div>
1197
+
1198
+ <div>
1199
+ <li class="never" data-hits="" data-linenumber="56">
1200
+
1201
+
1202
+
1203
+
1204
+ <code class="ruby"></code>
1205
+ </li>
1206
+ </div>
1207
+
1208
+ <div>
1209
+ <li class="never" data-hits="" data-linenumber="57">
1210
+
1211
+
1212
+
1213
+
1214
+ <code class="ruby"> # Extract compressed data and add encoding marker</code>
1215
+ </li>
1216
+ </div>
1217
+
1218
+ <div>
1219
+ <li class="covered" data-hits="1" data-linenumber="58">
1220
+
1221
+ <span class="hits">1</span>
1222
+
1223
+
1224
+
1225
+
1226
+ <code class="ruby"> compressed_data = output_ptr.get_bytes(0, result)</code>
1227
+ </li>
1228
+ </div>
1229
+
1230
+ <div>
1231
+ <li class="never" data-hits="" data-linenumber="59">
1232
+
1233
+
1234
+
1235
+
1236
+ <code class="ruby"></code>
1237
+ </li>
1238
+ </div>
1239
+
1240
+ <div>
1241
+ <li class="never" data-hits="" data-linenumber="60">
1242
+
1243
+
1244
+
1245
+
1246
+ <code class="ruby"> # Store original encoding in the compressed data metadata</code>
1247
+ </li>
1248
+ </div>
1249
+
1250
+ <div>
1251
+ <li class="never" data-hits="" data-linenumber="61">
1252
+
1253
+
1254
+
1255
+
1256
+ <code class="ruby"> # We&#39;ll use a simple approach: prepend encoding name as a header</code>
1257
+ </li>
1258
+ </div>
1259
+
1260
+ <div>
1261
+ <li class="covered" data-hits="1" data-linenumber="62">
1262
+
1263
+ <span class="hits">1</span>
1264
+
1265
+
1266
+
1267
+
1268
+ <code class="ruby"> encoding_name = original_encoding.name</code>
1269
+ </li>
1270
+ </div>
1271
+
1272
+ <div>
1273
+ <li class="covered" data-hits="1" data-linenumber="63">
1274
+
1275
+ <span class="hits">1</span>
1276
+
1277
+
1278
+
1279
+
1280
+ <code class="ruby"> encoding_header = [encoding_name.bytesize, encoding_name].pack(&quot;Ca*&quot;)</code>
1281
+ </li>
1282
+ </div>
1283
+
1284
+ <div>
1285
+ <li class="never" data-hits="" data-linenumber="64">
1286
+
1287
+
1288
+
1289
+
1290
+ <code class="ruby"></code>
1291
+ </li>
1292
+ </div>
1293
+
1294
+ <div>
1295
+ <li class="never" data-hits="" data-linenumber="65">
1296
+
1297
+
1298
+
1299
+
1300
+ <code class="ruby"> # Return with encoding header</code>
1301
+ </li>
1302
+ </div>
1303
+
1304
+ <div>
1305
+ <li class="covered" data-hits="1" data-linenumber="66">
1306
+
1307
+ <span class="hits">1</span>
1308
+
1309
+
1310
+
1311
+
1312
+ <code class="ruby"> (encoding_header + compressed_data).force_encoding(Encoding::BINARY)</code>
1313
+ </li>
1314
+ </div>
1315
+
1316
+ <div>
1317
+ <li class="never" data-hits="" data-linenumber="67">
1318
+
1319
+
1320
+
1321
+
1322
+ <code class="ruby"> ensure</code>
1323
+ </li>
1324
+ </div>
1325
+
1326
+ <div>
1327
+ <li class="covered" data-hits="1" data-linenumber="68">
1328
+
1329
+ <span class="hits">1</span>
1330
+
1331
+
1332
+
1333
+
1334
+ <code class="ruby"> input_ptr.free if input_ptr</code>
1335
+ </li>
1336
+ </div>
1337
+
1338
+ <div>
1339
+ <li class="covered" data-hits="1" data-linenumber="69">
1340
+
1341
+ <span class="hits">1</span>
1342
+
1343
+
1344
+
1345
+
1346
+ <code class="ruby"> output_ptr.free if output_ptr</code>
1347
+ </li>
1348
+ </div>
1349
+
1350
+ <div>
1351
+ <li class="never" data-hits="" data-linenumber="70">
1352
+
1353
+
1354
+
1355
+
1356
+ <code class="ruby"> end</code>
1357
+ </li>
1358
+ </div>
1359
+
1360
+ <div>
1361
+ <li class="never" data-hits="" data-linenumber="71">
1362
+
1363
+
1364
+
1365
+
1366
+ <code class="ruby"> end</code>
1367
+ </li>
1368
+ </div>
1369
+
1370
+ <div>
1371
+ <li class="never" data-hits="" data-linenumber="72">
1372
+
1373
+
1374
+
1375
+
1376
+ <code class="ruby"></code>
1377
+ </li>
1378
+ </div>
1379
+
1380
+ <div>
1381
+ <li class="covered" data-hits="1" data-linenumber="73">
1382
+
1383
+ <span class="hits">1</span>
1384
+
1385
+
1386
+
1387
+
1388
+ <code class="ruby"> def compress_file(input_path, output_path)</code>
1389
+ </li>
1390
+ </div>
1391
+
1392
+ <div>
1393
+ <li class="missed" data-hits="0" data-linenumber="74">
1394
+
1395
+
1396
+
1397
+
1398
+ <code class="ruby"> input_data = File.binread(input_path)</code>
1399
+ </li>
1400
+ </div>
1401
+
1402
+ <div>
1403
+ <li class="missed" data-hits="0" data-linenumber="75">
1404
+
1405
+
1406
+
1407
+
1408
+ <code class="ruby"> compressed_data = compress(input_data)</code>
1409
+ </li>
1410
+ </div>
1411
+
1412
+ <div>
1413
+ <li class="missed" data-hits="0" data-linenumber="76">
1414
+
1415
+
1416
+
1417
+
1418
+ <code class="ruby"> File.binwrite(output_path, compressed_data)</code>
1419
+ </li>
1420
+ </div>
1421
+
1422
+ <div>
1423
+ <li class="missed" data-hits="0" data-linenumber="77">
1424
+
1425
+
1426
+
1427
+
1428
+ <code class="ruby"> compressed_data.bytesize</code>
1429
+ </li>
1430
+ </div>
1431
+
1432
+ <div>
1433
+ <li class="never" data-hits="" data-linenumber="78">
1434
+
1435
+
1436
+
1437
+
1438
+ <code class="ruby"> end</code>
1439
+ </li>
1440
+ </div>
1441
+
1442
+ <div>
1443
+ <li class="never" data-hits="" data-linenumber="79">
1444
+
1445
+
1446
+
1447
+
1448
+ <code class="ruby"> end</code>
1449
+ </li>
1450
+ </div>
1451
+
1452
+ <div>
1453
+ <li class="never" data-hits="" data-linenumber="80">
1454
+
1455
+
1456
+
1457
+
1458
+ <code class="ruby"> end</code>
1459
+ </li>
1460
+ </div>
1461
+
1462
+ <div>
1463
+ <li class="never" data-hits="" data-linenumber="81">
1464
+
1465
+
1466
+
1467
+
1468
+ <code class="ruby">end</code>
1469
+ </li>
1470
+ </div>
1471
+
1472
+ </ol>
1473
+ </pre>
1474
+ </div>
1475
+
1476
+
1477
+ <div class="source_table" id="996003a8b7bda6fbc90cbc335cd75c8cebcdd326">
1478
+ <div class="header">
1479
+ <h3>lib/compress/bsc/decompressor.rb</h3>
1480
+ <h4>
1481
+ <span class="red">
1482
+ 44.29%
1483
+ </span>
1484
+
1485
+ lines covered
1486
+ </h4>
1487
+
1488
+
1489
+
1490
+ <div class="t-line-summary">
1491
+ <b>70</b> relevant lines.
1492
+ <span class="green"><b>31</b> lines covered</span> and
1493
+ <span class="red"><b>39</b> lines missed.</span>
1494
+ </div>
1495
+
1496
+
1497
+
1498
+ </div>
1499
+
1500
+ <pre>
1501
+ <ol>
1502
+
1503
+ <div>
1504
+ <li class="covered" data-hits="1" data-linenumber="1">
1505
+
1506
+ <span class="hits">1</span>
1507
+
1508
+
1509
+
1510
+
1511
+ <code class="ruby">module Compress</code>
1512
+ </li>
1513
+ </div>
1514
+
1515
+ <div>
1516
+ <li class="covered" data-hits="1" data-linenumber="2">
1517
+
1518
+ <span class="hits">1</span>
1519
+
1520
+
1521
+
1522
+
1523
+ <code class="ruby"> class BSC</code>
1524
+ </li>
1525
+ </div>
1526
+
1527
+ <div>
1528
+ <li class="covered" data-hits="1" data-linenumber="3">
1529
+
1530
+ <span class="hits">1</span>
1531
+
1532
+
1533
+
1534
+
1535
+ <code class="ruby"> class Decompressor</code>
1536
+ </li>
1537
+ </div>
1538
+
1539
+ <div>
1540
+ <li class="covered" data-hits="1" data-linenumber="4">
1541
+
1542
+ <span class="hits">1</span>
1543
+
1544
+
1545
+
1546
+
1547
+ <code class="ruby"> attr_reader :features</code>
1548
+ </li>
1549
+ </div>
1550
+
1551
+ <div>
1552
+ <li class="never" data-hits="" data-linenumber="5">
1553
+
1554
+
1555
+
1556
+
1557
+ <code class="ruby"></code>
1558
+ </li>
1559
+ </div>
1560
+
1561
+ <div>
1562
+ <li class="covered" data-hits="1" data-linenumber="6">
1563
+
1564
+ <span class="hits">1</span>
1565
+
1566
+
1567
+
1568
+
1569
+ <code class="ruby"> def initialize(options = {})</code>
1570
+ </li>
1571
+ </div>
1572
+
1573
+ <div>
1574
+ <li class="covered" data-hits="1" data-linenumber="7">
1575
+
1576
+ <span class="hits">1</span>
1577
+
1578
+
1579
+
1580
+
1581
+ <code class="ruby"> @features = options[:features] || Library::LIBBSC_DEFAULT_FEATURES</code>
1582
+ </li>
1583
+ </div>
1584
+
1585
+ <div>
1586
+ <li class="never" data-hits="" data-linenumber="8">
1587
+
1588
+
1589
+
1590
+
1591
+ <code class="ruby"> end</code>
1592
+ </li>
1593
+ </div>
1594
+
1595
+ <div>
1596
+ <li class="never" data-hits="" data-linenumber="9">
1597
+
1598
+
1599
+
1600
+
1601
+ <code class="ruby"></code>
1602
+ </li>
1603
+ </div>
1604
+
1605
+ <div>
1606
+ <li class="covered" data-hits="1" data-linenumber="10">
1607
+
1608
+ <span class="hits">1</span>
1609
+
1610
+
1611
+
1612
+
1613
+ <code class="ruby"> def decompress(compressed_data)</code>
1614
+ </li>
1615
+ </div>
1616
+
1617
+ <div>
1618
+ <li class="covered" data-hits="1" data-linenumber="11">
1619
+
1620
+ <span class="hits">1</span>
1621
+
1622
+
1623
+
1624
+
1625
+ <code class="ruby"> raise ArgumentError, &quot;Compressed data cannot be nil&quot; if compressed_data.nil?</code>
1626
+ </li>
1627
+ </div>
1628
+
1629
+ <div>
1630
+ <li class="covered" data-hits="1" data-linenumber="12">
1631
+
1632
+ <span class="hits">1</span>
1633
+
1634
+
1635
+
1636
+
1637
+ <code class="ruby"> raise ArgumentError, &quot;Compressed data must be a string&quot; unless compressed_data.is_a?(String)</code>
1638
+ </li>
1639
+ </div>
1640
+
1641
+ <div>
1642
+ <li class="never" data-hits="" data-linenumber="13">
1643
+
1644
+
1645
+
1646
+
1647
+ <code class="ruby"></code>
1648
+ </li>
1649
+ </div>
1650
+
1651
+ <div>
1652
+ <li class="missed" data-hits="0" data-linenumber="14">
1653
+
1654
+
1655
+
1656
+
1657
+ <code class="ruby"> return compressed_data if compressed_data.empty?</code>
1658
+ </li>
1659
+ </div>
1660
+
1661
+ <div>
1662
+ <li class="never" data-hits="" data-linenumber="15">
1663
+
1664
+
1665
+
1666
+
1667
+ <code class="ruby"></code>
1668
+ </li>
1669
+ </div>
1670
+
1671
+ <div>
1672
+ <li class="never" data-hits="" data-linenumber="16">
1673
+
1674
+
1675
+
1676
+
1677
+ <code class="ruby"> # Extract encoding information from header</code>
1678
+ </li>
1679
+ </div>
1680
+
1681
+ <div>
1682
+ <li class="missed" data-hits="0" data-linenumber="17">
1683
+
1684
+
1685
+
1686
+
1687
+ <code class="ruby"> encoding_name = nil</code>
1688
+ </li>
1689
+ </div>
1690
+
1691
+ <div>
1692
+ <li class="missed" data-hits="0" data-linenumber="18">
1693
+
1694
+
1695
+
1696
+
1697
+ <code class="ruby"> actual_compressed_data = compressed_data</code>
1698
+ </li>
1699
+ </div>
1700
+
1701
+ <div>
1702
+ <li class="never" data-hits="" data-linenumber="19">
1703
+
1704
+
1705
+
1706
+
1707
+ <code class="ruby"></code>
1708
+ </li>
1709
+ </div>
1710
+
1711
+ <div>
1712
+ <li class="missed" data-hits="0" data-linenumber="20">
1713
+
1714
+
1715
+
1716
+
1717
+ <code class="ruby"> if compressed_data.bytesize &gt; 1</code>
1718
+ </li>
1719
+ </div>
1720
+
1721
+ <div>
1722
+ <li class="never" data-hits="" data-linenumber="21">
1723
+
1724
+
1725
+
1726
+
1727
+ <code class="ruby"> # Try to extract encoding header</code>
1728
+ </li>
1729
+ </div>
1730
+
1731
+ <div>
1732
+ <li class="missed" data-hits="0" data-linenumber="22">
1733
+
1734
+
1735
+
1736
+
1737
+ <code class="ruby"> encoding_name_length = compressed_data.bytes[0]</code>
1738
+ </li>
1739
+ </div>
1740
+
1741
+ <div>
1742
+ <li class="missed" data-hits="0" data-linenumber="23">
1743
+
1744
+
1745
+
1746
+
1747
+ <code class="ruby"> if encoding_name_length &gt; 0 &amp;&amp; encoding_name_length &lt; 50 &amp;&amp; compressed_data.bytesize &gt; encoding_name_length + 1</code>
1748
+ </li>
1749
+ </div>
1750
+
1751
+ <div>
1752
+ <li class="missed" data-hits="0" data-linenumber="24">
1753
+
1754
+
1755
+
1756
+
1757
+ <code class="ruby"> encoding_name = compressed_data[1, encoding_name_length]</code>
1758
+ </li>
1759
+ </div>
1760
+
1761
+ <div>
1762
+ <li class="missed" data-hits="0" data-linenumber="25">
1763
+
1764
+
1765
+
1766
+
1767
+ <code class="ruby"> actual_compressed_data = compressed_data[(encoding_name_length + 1)..-1]</code>
1768
+ </li>
1769
+ </div>
1770
+
1771
+ <div>
1772
+ <li class="never" data-hits="" data-linenumber="26">
1773
+
1774
+
1775
+
1776
+
1777
+ <code class="ruby"> end</code>
1778
+ </li>
1779
+ </div>
1780
+
1781
+ <div>
1782
+ <li class="never" data-hits="" data-linenumber="27">
1783
+
1784
+
1785
+
1786
+
1787
+ <code class="ruby"> end</code>
1788
+ </li>
1789
+ </div>
1790
+
1791
+ <div>
1792
+ <li class="never" data-hits="" data-linenumber="28">
1793
+
1794
+
1795
+
1796
+
1797
+ <code class="ruby"></code>
1798
+ </li>
1799
+ </div>
1800
+
1801
+ <div>
1802
+ <li class="missed" data-hits="0" data-linenumber="29">
1803
+
1804
+
1805
+
1806
+
1807
+ <code class="ruby"> input_size = actual_compressed_data.bytesize</code>
1808
+ </li>
1809
+ </div>
1810
+
1811
+ <div>
1812
+ <li class="never" data-hits="" data-linenumber="30">
1813
+
1814
+
1815
+
1816
+
1817
+ <code class="ruby"></code>
1818
+ </li>
1819
+ </div>
1820
+
1821
+ <div>
1822
+ <li class="never" data-hits="" data-linenumber="31">
1823
+
1824
+
1825
+
1826
+
1827
+ <code class="ruby"> # Need at least header size for the BSC data</code>
1828
+ </li>
1829
+ </div>
1830
+
1831
+ <div>
1832
+ <li class="missed" data-hits="0" data-linenumber="32">
1833
+
1834
+
1835
+
1836
+
1837
+ <code class="ruby"> if input_size &lt; Library::LIBBSC_HEADER_SIZE</code>
1838
+ </li>
1839
+ </div>
1840
+
1841
+ <div>
1842
+ <li class="missed" data-hits="0" data-linenumber="33">
1843
+
1844
+
1845
+
1846
+
1847
+ <code class="ruby"> raise Error.new(Library::LIBBSC_DATA_CORRUPT)</code>
1848
+ </li>
1849
+ </div>
1850
+
1851
+ <div>
1852
+ <li class="never" data-hits="" data-linenumber="34">
1853
+
1854
+
1855
+
1856
+
1857
+ <code class="ruby"> end</code>
1858
+ </li>
1859
+ </div>
1860
+
1861
+ <div>
1862
+ <li class="never" data-hits="" data-linenumber="35">
1863
+
1864
+
1865
+
1866
+
1867
+ <code class="ruby"></code>
1868
+ </li>
1869
+ </div>
1870
+
1871
+ <div>
1872
+ <li class="never" data-hits="" data-linenumber="36">
1873
+
1874
+
1875
+
1876
+
1877
+ <code class="ruby"> # Allocate input buffer</code>
1878
+ </li>
1879
+ </div>
1880
+
1881
+ <div>
1882
+ <li class="missed" data-hits="0" data-linenumber="37">
1883
+
1884
+
1885
+
1886
+
1887
+ <code class="ruby"> input_ptr = FFI::MemoryPointer.new(:char, input_size)</code>
1888
+ </li>
1889
+ </div>
1890
+
1891
+ <div>
1892
+ <li class="missed" data-hits="0" data-linenumber="38">
1893
+
1894
+
1895
+
1896
+
1897
+ <code class="ruby"> input_ptr.put_bytes(0, actual_compressed_data)</code>
1898
+ </li>
1899
+ </div>
1900
+
1901
+ <div>
1902
+ <li class="never" data-hits="" data-linenumber="39">
1903
+
1904
+
1905
+
1906
+
1907
+ <code class="ruby"></code>
1908
+ </li>
1909
+ </div>
1910
+
1911
+ <div>
1912
+ <li class="never" data-hits="" data-linenumber="40">
1913
+
1914
+
1915
+
1916
+
1917
+ <code class="ruby"> # Get block info to determine output size</code>
1918
+ </li>
1919
+ </div>
1920
+
1921
+ <div>
1922
+ <li class="missed" data-hits="0" data-linenumber="41">
1923
+
1924
+
1925
+
1926
+
1927
+ <code class="ruby"> block_size_ptr = FFI::MemoryPointer.new(:int)</code>
1928
+ </li>
1929
+ </div>
1930
+
1931
+ <div>
1932
+ <li class="missed" data-hits="0" data-linenumber="42">
1933
+
1934
+
1935
+
1936
+
1937
+ <code class="ruby"> data_size_ptr = FFI::MemoryPointer.new(:int)</code>
1938
+ </li>
1939
+ </div>
1940
+
1941
+ <div>
1942
+ <li class="never" data-hits="" data-linenumber="43">
1943
+
1944
+
1945
+
1946
+
1947
+ <code class="ruby"></code>
1948
+ </li>
1949
+ </div>
1950
+
1951
+ <div>
1952
+ <li class="missed" data-hits="0" data-linenumber="44">
1953
+
1954
+
1955
+
1956
+
1957
+ <code class="ruby"> result = Library.bsc_block_info(</code>
1958
+ </li>
1959
+ </div>
1960
+
1961
+ <div>
1962
+ <li class="never" data-hits="" data-linenumber="45">
1963
+
1964
+
1965
+
1966
+
1967
+ <code class="ruby"> input_ptr,</code>
1968
+ </li>
1969
+ </div>
1970
+
1971
+ <div>
1972
+ <li class="never" data-hits="" data-linenumber="46">
1973
+
1974
+
1975
+
1976
+
1977
+ <code class="ruby"> input_size,</code>
1978
+ </li>
1979
+ </div>
1980
+
1981
+ <div>
1982
+ <li class="never" data-hits="" data-linenumber="47">
1983
+
1984
+
1985
+
1986
+
1987
+ <code class="ruby"> block_size_ptr,</code>
1988
+ </li>
1989
+ </div>
1990
+
1991
+ <div>
1992
+ <li class="never" data-hits="" data-linenumber="48">
1993
+
1994
+
1995
+
1996
+
1997
+ <code class="ruby"> data_size_ptr,</code>
1998
+ </li>
1999
+ </div>
2000
+
2001
+ <div>
2002
+ <li class="never" data-hits="" data-linenumber="49">
2003
+
2004
+
2005
+
2006
+
2007
+ <code class="ruby"> @features</code>
2008
+ </li>
2009
+ </div>
2010
+
2011
+ <div>
2012
+ <li class="never" data-hits="" data-linenumber="50">
2013
+
2014
+
2015
+
2016
+
2017
+ <code class="ruby"> )</code>
2018
+ </li>
2019
+ </div>
2020
+
2021
+ <div>
2022
+ <li class="never" data-hits="" data-linenumber="51">
2023
+
2024
+
2025
+
2026
+
2027
+ <code class="ruby"></code>
2028
+ </li>
2029
+ </div>
2030
+
2031
+ <div>
2032
+ <li class="missed" data-hits="0" data-linenumber="52">
2033
+
2034
+
2035
+
2036
+
2037
+ <code class="ruby"> Error.check_result(result)</code>
2038
+ </li>
2039
+ </div>
2040
+
2041
+ <div>
2042
+ <li class="never" data-hits="" data-linenumber="53">
2043
+
2044
+
2045
+
2046
+
2047
+ <code class="ruby"></code>
2048
+ </li>
2049
+ </div>
2050
+
2051
+ <div>
2052
+ <li class="missed" data-hits="0" data-linenumber="54">
2053
+
2054
+
2055
+
2056
+
2057
+ <code class="ruby"> block_size = block_size_ptr.read_int</code>
2058
+ </li>
2059
+ </div>
2060
+
2061
+ <div>
2062
+ <li class="missed" data-hits="0" data-linenumber="55">
2063
+
2064
+
2065
+
2066
+
2067
+ <code class="ruby"> data_size = data_size_ptr.read_int</code>
2068
+ </li>
2069
+ </div>
2070
+
2071
+ <div>
2072
+ <li class="never" data-hits="" data-linenumber="56">
2073
+
2074
+
2075
+
2076
+
2077
+ <code class="ruby"></code>
2078
+ </li>
2079
+ </div>
2080
+
2081
+ <div>
2082
+ <li class="never" data-hits="" data-linenumber="57">
2083
+
2084
+
2085
+
2086
+
2087
+ <code class="ruby"> # Validate sizes</code>
2088
+ </li>
2089
+ </div>
2090
+
2091
+ <div>
2092
+ <li class="missed" data-hits="0" data-linenumber="58">
2093
+
2094
+
2095
+
2096
+
2097
+ <code class="ruby"> if input_size &lt; block_size || data_size &lt;= 0</code>
2098
+ </li>
2099
+ </div>
2100
+
2101
+ <div>
2102
+ <li class="missed" data-hits="0" data-linenumber="59">
2103
+
2104
+
2105
+
2106
+
2107
+ <code class="ruby"> raise Error.new(Library::LIBBSC_DATA_CORRUPT)</code>
2108
+ </li>
2109
+ </div>
2110
+
2111
+ <div>
2112
+ <li class="never" data-hits="" data-linenumber="60">
2113
+
2114
+
2115
+
2116
+
2117
+ <code class="ruby"> end</code>
2118
+ </li>
2119
+ </div>
2120
+
2121
+ <div>
2122
+ <li class="never" data-hits="" data-linenumber="61">
2123
+
2124
+
2125
+
2126
+
2127
+ <code class="ruby"></code>
2128
+ </li>
2129
+ </div>
2130
+
2131
+ <div>
2132
+ <li class="never" data-hits="" data-linenumber="62">
2133
+
2134
+
2135
+
2136
+
2137
+ <code class="ruby"> # Allocate output buffer</code>
2138
+ </li>
2139
+ </div>
2140
+
2141
+ <div>
2142
+ <li class="missed" data-hits="0" data-linenumber="63">
2143
+
2144
+
2145
+
2146
+
2147
+ <code class="ruby"> output_ptr = FFI::MemoryPointer.new(:char, data_size)</code>
2148
+ </li>
2149
+ </div>
2150
+
2151
+ <div>
2152
+ <li class="never" data-hits="" data-linenumber="64">
2153
+
2154
+
2155
+
2156
+
2157
+ <code class="ruby"></code>
2158
+ </li>
2159
+ </div>
2160
+
2161
+ <div>
2162
+ <li class="never" data-hits="" data-linenumber="65">
2163
+
2164
+
2165
+
2166
+
2167
+ <code class="ruby"> begin</code>
2168
+ </li>
2169
+ </div>
2170
+
2171
+ <div>
2172
+ <li class="never" data-hits="" data-linenumber="66">
2173
+
2174
+
2175
+
2176
+
2177
+ <code class="ruby"> # Perform decompression</code>
2178
+ </li>
2179
+ </div>
2180
+
2181
+ <div>
2182
+ <li class="missed" data-hits="0" data-linenumber="67">
2183
+
2184
+
2185
+
2186
+
2187
+ <code class="ruby"> result = Library.bsc_decompress(</code>
2188
+ </li>
2189
+ </div>
2190
+
2191
+ <div>
2192
+ <li class="never" data-hits="" data-linenumber="68">
2193
+
2194
+
2195
+
2196
+
2197
+ <code class="ruby"> input_ptr,</code>
2198
+ </li>
2199
+ </div>
2200
+
2201
+ <div>
2202
+ <li class="never" data-hits="" data-linenumber="69">
2203
+
2204
+
2205
+
2206
+
2207
+ <code class="ruby"> input_size,</code>
2208
+ </li>
2209
+ </div>
2210
+
2211
+ <div>
2212
+ <li class="never" data-hits="" data-linenumber="70">
2213
+
2214
+
2215
+
2216
+
2217
+ <code class="ruby"> output_ptr,</code>
2218
+ </li>
2219
+ </div>
2220
+
2221
+ <div>
2222
+ <li class="never" data-hits="" data-linenumber="71">
2223
+
2224
+
2225
+
2226
+
2227
+ <code class="ruby"> data_size,</code>
2228
+ </li>
2229
+ </div>
2230
+
2231
+ <div>
2232
+ <li class="never" data-hits="" data-linenumber="72">
2233
+
2234
+
2235
+
2236
+
2237
+ <code class="ruby"> @features</code>
2238
+ </li>
2239
+ </div>
2240
+
2241
+ <div>
2242
+ <li class="never" data-hits="" data-linenumber="73">
2243
+
2244
+
2245
+
2246
+
2247
+ <code class="ruby"> )</code>
2248
+ </li>
2249
+ </div>
2250
+
2251
+ <div>
2252
+ <li class="never" data-hits="" data-linenumber="74">
2253
+
2254
+
2255
+
2256
+
2257
+ <code class="ruby"></code>
2258
+ </li>
2259
+ </div>
2260
+
2261
+ <div>
2262
+ <li class="missed" data-hits="0" data-linenumber="75">
2263
+
2264
+
2265
+
2266
+
2267
+ <code class="ruby"> Error.check_result(result)</code>
2268
+ </li>
2269
+ </div>
2270
+
2271
+ <div>
2272
+ <li class="never" data-hits="" data-linenumber="76">
2273
+
2274
+
2275
+
2276
+
2277
+ <code class="ruby"></code>
2278
+ </li>
2279
+ </div>
2280
+
2281
+ <div>
2282
+ <li class="never" data-hits="" data-linenumber="77">
2283
+
2284
+
2285
+
2286
+
2287
+ <code class="ruby"> # Extract decompressed data</code>
2288
+ </li>
2289
+ </div>
2290
+
2291
+ <div>
2292
+ <li class="missed" data-hits="0" data-linenumber="78">
2293
+
2294
+
2295
+
2296
+
2297
+ <code class="ruby"> decompressed_data = output_ptr.get_bytes(0, data_size)</code>
2298
+ </li>
2299
+ </div>
2300
+
2301
+ <div>
2302
+ <li class="never" data-hits="" data-linenumber="79">
2303
+
2304
+
2305
+
2306
+
2307
+ <code class="ruby"></code>
2308
+ </li>
2309
+ </div>
2310
+
2311
+ <div>
2312
+ <li class="never" data-hits="" data-linenumber="80">
2313
+
2314
+
2315
+
2316
+
2317
+ <code class="ruby"> # Restore original encoding if available</code>
2318
+ </li>
2319
+ </div>
2320
+
2321
+ <div>
2322
+ <li class="missed" data-hits="0" data-linenumber="81">
2323
+
2324
+
2325
+
2326
+
2327
+ <code class="ruby"> if encoding_name &amp;&amp; !encoding_name.empty?</code>
2328
+ </li>
2329
+ </div>
2330
+
2331
+ <div>
2332
+ <li class="never" data-hits="" data-linenumber="82">
2333
+
2334
+
2335
+
2336
+
2337
+ <code class="ruby"> begin</code>
2338
+ </li>
2339
+ </div>
2340
+
2341
+ <div>
2342
+ <li class="missed" data-hits="0" data-linenumber="83">
2343
+
2344
+
2345
+
2346
+
2347
+ <code class="ruby"> target_encoding = Encoding.find(encoding_name)</code>
2348
+ </li>
2349
+ </div>
2350
+
2351
+ <div>
2352
+ <li class="missed" data-hits="0" data-linenumber="84">
2353
+
2354
+
2355
+
2356
+
2357
+ <code class="ruby"> decompressed_data.force_encoding(target_encoding)</code>
2358
+ </li>
2359
+ </div>
2360
+
2361
+ <div>
2362
+ <li class="never" data-hits="" data-linenumber="85">
2363
+
2364
+
2365
+
2366
+
2367
+ <code class="ruby"> rescue ArgumentError</code>
2368
+ </li>
2369
+ </div>
2370
+
2371
+ <div>
2372
+ <li class="never" data-hits="" data-linenumber="86">
2373
+
2374
+
2375
+
2376
+
2377
+ <code class="ruby"> # If encoding is not found, keep as binary</code>
2378
+ </li>
2379
+ </div>
2380
+
2381
+ <div>
2382
+ <li class="missed" data-hits="0" data-linenumber="87">
2383
+
2384
+
2385
+
2386
+
2387
+ <code class="ruby"> decompressed_data.force_encoding(Encoding::BINARY)</code>
2388
+ </li>
2389
+ </div>
2390
+
2391
+ <div>
2392
+ <li class="never" data-hits="" data-linenumber="88">
2393
+
2394
+
2395
+
2396
+
2397
+ <code class="ruby"> end</code>
2398
+ </li>
2399
+ </div>
2400
+
2401
+ <div>
2402
+ <li class="never" data-hits="" data-linenumber="89">
2403
+
2404
+
2405
+
2406
+
2407
+ <code class="ruby"> else</code>
2408
+ </li>
2409
+ </div>
2410
+
2411
+ <div>
2412
+ <li class="missed" data-hits="0" data-linenumber="90">
2413
+
2414
+
2415
+
2416
+
2417
+ <code class="ruby"> decompressed_data.force_encoding(Encoding::BINARY)</code>
2418
+ </li>
2419
+ </div>
2420
+
2421
+ <div>
2422
+ <li class="never" data-hits="" data-linenumber="91">
2423
+
2424
+
2425
+
2426
+
2427
+ <code class="ruby"> end</code>
2428
+ </li>
2429
+ </div>
2430
+
2431
+ <div>
2432
+ <li class="never" data-hits="" data-linenumber="92">
2433
+
2434
+
2435
+
2436
+
2437
+ <code class="ruby"></code>
2438
+ </li>
2439
+ </div>
2440
+
2441
+ <div>
2442
+ <li class="missed" data-hits="0" data-linenumber="93">
2443
+
2444
+
2445
+
2446
+
2447
+ <code class="ruby"> decompressed_data</code>
2448
+ </li>
2449
+ </div>
2450
+
2451
+ <div>
2452
+ <li class="never" data-hits="" data-linenumber="94">
2453
+
2454
+
2455
+
2456
+
2457
+ <code class="ruby"> ensure</code>
2458
+ </li>
2459
+ </div>
2460
+
2461
+ <div>
2462
+ <li class="missed" data-hits="0" data-linenumber="95">
2463
+
2464
+
2465
+
2466
+
2467
+ <code class="ruby"> input_ptr.free if input_ptr</code>
2468
+ </li>
2469
+ </div>
2470
+
2471
+ <div>
2472
+ <li class="missed" data-hits="0" data-linenumber="96">
2473
+
2474
+
2475
+
2476
+
2477
+ <code class="ruby"> output_ptr.free if output_ptr</code>
2478
+ </li>
2479
+ </div>
2480
+
2481
+ <div>
2482
+ <li class="missed" data-hits="0" data-linenumber="97">
2483
+
2484
+
2485
+
2486
+
2487
+ <code class="ruby"> block_size_ptr.free if block_size_ptr</code>
2488
+ </li>
2489
+ </div>
2490
+
2491
+ <div>
2492
+ <li class="missed" data-hits="0" data-linenumber="98">
2493
+
2494
+
2495
+
2496
+
2497
+ <code class="ruby"> data_size_ptr.free if data_size_ptr</code>
2498
+ </li>
2499
+ </div>
2500
+
2501
+ <div>
2502
+ <li class="never" data-hits="" data-linenumber="99">
2503
+
2504
+
2505
+
2506
+
2507
+ <code class="ruby"> end</code>
2508
+ </li>
2509
+ </div>
2510
+
2511
+ <div>
2512
+ <li class="never" data-hits="" data-linenumber="100">
2513
+
2514
+
2515
+
2516
+
2517
+ <code class="ruby"> end</code>
2518
+ </li>
2519
+ </div>
2520
+
2521
+ <div>
2522
+ <li class="never" data-hits="" data-linenumber="101">
2523
+
2524
+
2525
+
2526
+
2527
+ <code class="ruby"></code>
2528
+ </li>
2529
+ </div>
2530
+
2531
+ <div>
2532
+ <li class="covered" data-hits="1" data-linenumber="102">
2533
+
2534
+ <span class="hits">1</span>
2535
+
2536
+
2537
+
2538
+
2539
+ <code class="ruby"> def decompress_file(input_path, output_path)</code>
2540
+ </li>
2541
+ </div>
2542
+
2543
+ <div>
2544
+ <li class="missed" data-hits="0" data-linenumber="103">
2545
+
2546
+
2547
+
2548
+
2549
+ <code class="ruby"> compressed_data = File.binread(input_path)</code>
2550
+ </li>
2551
+ </div>
2552
+
2553
+ <div>
2554
+ <li class="missed" data-hits="0" data-linenumber="104">
2555
+
2556
+
2557
+
2558
+
2559
+ <code class="ruby"> decompressed_data = decompress(compressed_data)</code>
2560
+ </li>
2561
+ </div>
2562
+
2563
+ <div>
2564
+ <li class="missed" data-hits="0" data-linenumber="105">
2565
+
2566
+
2567
+
2568
+
2569
+ <code class="ruby"> File.binwrite(output_path, decompressed_data)</code>
2570
+ </li>
2571
+ </div>
2572
+
2573
+ <div>
2574
+ <li class="missed" data-hits="0" data-linenumber="106">
2575
+
2576
+
2577
+
2578
+
2579
+ <code class="ruby"> decompressed_data.bytesize</code>
2580
+ </li>
2581
+ </div>
2582
+
2583
+ <div>
2584
+ <li class="never" data-hits="" data-linenumber="107">
2585
+
2586
+
2587
+
2588
+
2589
+ <code class="ruby"> end</code>
2590
+ </li>
2591
+ </div>
2592
+
2593
+ <div>
2594
+ <li class="never" data-hits="" data-linenumber="108">
2595
+
2596
+
2597
+
2598
+
2599
+ <code class="ruby"></code>
2600
+ </li>
2601
+ </div>
2602
+
2603
+ <div>
2604
+ <li class="covered" data-hits="1" data-linenumber="109">
2605
+
2606
+ <span class="hits">1</span>
2607
+
2608
+
2609
+
2610
+
2611
+ <code class="ruby"> def self.block_info(compressed_data, features = Library::LIBBSC_DEFAULT_FEATURES)</code>
2612
+ </li>
2613
+ </div>
2614
+
2615
+ <div>
2616
+ <li class="covered" data-hits="4" data-linenumber="110">
2617
+
2618
+ <span class="hits">4</span>
2619
+
2620
+
2621
+
2622
+
2623
+ <code class="ruby"> raise ArgumentError, &quot;Compressed data cannot be nil&quot; if compressed_data.nil?</code>
2624
+ </li>
2625
+ </div>
2626
+
2627
+ <div>
2628
+ <li class="covered" data-hits="3" data-linenumber="111">
2629
+
2630
+ <span class="hits">3</span>
2631
+
2632
+
2633
+
2634
+
2635
+ <code class="ruby"> raise ArgumentError, &quot;Compressed data must be a string&quot; unless compressed_data.is_a?(String)</code>
2636
+ </li>
2637
+ </div>
2638
+
2639
+ <div>
2640
+ <li class="never" data-hits="" data-linenumber="112">
2641
+
2642
+
2643
+
2644
+
2645
+ <code class="ruby"></code>
2646
+ </li>
2647
+ </div>
2648
+
2649
+ <div>
2650
+ <li class="never" data-hits="" data-linenumber="113">
2651
+
2652
+
2653
+
2654
+
2655
+ <code class="ruby"> # Extract actual compressed data, skipping encoding header if present</code>
2656
+ </li>
2657
+ </div>
2658
+
2659
+ <div>
2660
+ <li class="covered" data-hits="2" data-linenumber="114">
2661
+
2662
+ <span class="hits">2</span>
2663
+
2664
+
2665
+
2666
+
2667
+ <code class="ruby"> actual_compressed_data = compressed_data</code>
2668
+ </li>
2669
+ </div>
2670
+
2671
+ <div>
2672
+ <li class="never" data-hits="" data-linenumber="115">
2673
+
2674
+
2675
+
2676
+
2677
+ <code class="ruby"></code>
2678
+ </li>
2679
+ </div>
2680
+
2681
+ <div>
2682
+ <li class="covered" data-hits="2" data-linenumber="116">
2683
+
2684
+ <span class="hits">2</span>
2685
+
2686
+
2687
+
2688
+
2689
+ <code class="ruby"> if compressed_data.bytesize &gt; 1</code>
2690
+ </li>
2691
+ </div>
2692
+
2693
+ <div>
2694
+ <li class="never" data-hits="" data-linenumber="117">
2695
+
2696
+
2697
+
2698
+
2699
+ <code class="ruby"> # Try to extract encoding header</code>
2700
+ </li>
2701
+ </div>
2702
+
2703
+ <div>
2704
+ <li class="covered" data-hits="2" data-linenumber="118">
2705
+
2706
+ <span class="hits">2</span>
2707
+
2708
+
2709
+
2710
+
2711
+ <code class="ruby"> encoding_name_length = compressed_data.bytes[0]</code>
2712
+ </li>
2713
+ </div>
2714
+
2715
+ <div>
2716
+ <li class="covered" data-hits="2" data-linenumber="119">
2717
+
2718
+ <span class="hits">2</span>
2719
+
2720
+
2721
+
2722
+
2723
+ <code class="ruby"> if encoding_name_length &gt; 0 &amp;&amp; encoding_name_length &lt; 50 &amp;&amp; compressed_data.bytesize &gt; encoding_name_length + 1</code>
2724
+ </li>
2725
+ </div>
2726
+
2727
+ <div>
2728
+ <li class="covered" data-hits="1" data-linenumber="120">
2729
+
2730
+ <span class="hits">1</span>
2731
+
2732
+
2733
+
2734
+
2735
+ <code class="ruby"> actual_compressed_data = compressed_data[(encoding_name_length + 1)..-1]</code>
2736
+ </li>
2737
+ </div>
2738
+
2739
+ <div>
2740
+ <li class="never" data-hits="" data-linenumber="121">
2741
+
2742
+
2743
+
2744
+
2745
+ <code class="ruby"> end</code>
2746
+ </li>
2747
+ </div>
2748
+
2749
+ <div>
2750
+ <li class="never" data-hits="" data-linenumber="122">
2751
+
2752
+
2753
+
2754
+
2755
+ <code class="ruby"> end</code>
2756
+ </li>
2757
+ </div>
2758
+
2759
+ <div>
2760
+ <li class="never" data-hits="" data-linenumber="123">
2761
+
2762
+
2763
+
2764
+
2765
+ <code class="ruby"></code>
2766
+ </li>
2767
+ </div>
2768
+
2769
+ <div>
2770
+ <li class="covered" data-hits="2" data-linenumber="124">
2771
+
2772
+ <span class="hits">2</span>
2773
+
2774
+
2775
+
2776
+
2777
+ <code class="ruby"> input_size = actual_compressed_data.bytesize</code>
2778
+ </li>
2779
+ </div>
2780
+
2781
+ <div>
2782
+ <li class="never" data-hits="" data-linenumber="125">
2783
+
2784
+
2785
+
2786
+
2787
+ <code class="ruby"></code>
2788
+ </li>
2789
+ </div>
2790
+
2791
+ <div>
2792
+ <li class="covered" data-hits="2" data-linenumber="126">
2793
+
2794
+ <span class="hits">2</span>
2795
+
2796
+
2797
+
2798
+
2799
+ <code class="ruby"> if input_size &lt; Library::LIBBSC_HEADER_SIZE</code>
2800
+ </li>
2801
+ </div>
2802
+
2803
+ <div>
2804
+ <li class="covered" data-hits="1" data-linenumber="127">
2805
+
2806
+ <span class="hits">1</span>
2807
+
2808
+
2809
+
2810
+
2811
+ <code class="ruby"> raise Error.new(Library::LIBBSC_DATA_CORRUPT)</code>
2812
+ </li>
2813
+ </div>
2814
+
2815
+ <div>
2816
+ <li class="never" data-hits="" data-linenumber="128">
2817
+
2818
+
2819
+
2820
+
2821
+ <code class="ruby"> end</code>
2822
+ </li>
2823
+ </div>
2824
+
2825
+ <div>
2826
+ <li class="never" data-hits="" data-linenumber="129">
2827
+
2828
+
2829
+
2830
+
2831
+ <code class="ruby"></code>
2832
+ </li>
2833
+ </div>
2834
+
2835
+ <div>
2836
+ <li class="covered" data-hits="1" data-linenumber="130">
2837
+
2838
+ <span class="hits">1</span>
2839
+
2840
+
2841
+
2842
+
2843
+ <code class="ruby"> input_ptr = FFI::MemoryPointer.new(:char, input_size)</code>
2844
+ </li>
2845
+ </div>
2846
+
2847
+ <div>
2848
+ <li class="covered" data-hits="1" data-linenumber="131">
2849
+
2850
+ <span class="hits">1</span>
2851
+
2852
+
2853
+
2854
+
2855
+ <code class="ruby"> input_ptr.put_bytes(0, actual_compressed_data)</code>
2856
+ </li>
2857
+ </div>
2858
+
2859
+ <div>
2860
+ <li class="never" data-hits="" data-linenumber="132">
2861
+
2862
+
2863
+
2864
+
2865
+ <code class="ruby"></code>
2866
+ </li>
2867
+ </div>
2868
+
2869
+ <div>
2870
+ <li class="covered" data-hits="1" data-linenumber="133">
2871
+
2872
+ <span class="hits">1</span>
2873
+
2874
+
2875
+
2876
+
2877
+ <code class="ruby"> block_size_ptr = FFI::MemoryPointer.new(:int)</code>
2878
+ </li>
2879
+ </div>
2880
+
2881
+ <div>
2882
+ <li class="covered" data-hits="1" data-linenumber="134">
2883
+
2884
+ <span class="hits">1</span>
2885
+
2886
+
2887
+
2888
+
2889
+ <code class="ruby"> data_size_ptr = FFI::MemoryPointer.new(:int)</code>
2890
+ </li>
2891
+ </div>
2892
+
2893
+ <div>
2894
+ <li class="never" data-hits="" data-linenumber="135">
2895
+
2896
+
2897
+
2898
+
2899
+ <code class="ruby"></code>
2900
+ </li>
2901
+ </div>
2902
+
2903
+ <div>
2904
+ <li class="never" data-hits="" data-linenumber="136">
2905
+
2906
+
2907
+
2908
+
2909
+ <code class="ruby"> begin</code>
2910
+ </li>
2911
+ </div>
2912
+
2913
+ <div>
2914
+ <li class="covered" data-hits="1" data-linenumber="137">
2915
+
2916
+ <span class="hits">1</span>
2917
+
2918
+
2919
+
2920
+
2921
+ <code class="ruby"> result = Library.bsc_block_info(</code>
2922
+ </li>
2923
+ </div>
2924
+
2925
+ <div>
2926
+ <li class="never" data-hits="" data-linenumber="138">
2927
+
2928
+
2929
+
2930
+
2931
+ <code class="ruby"> input_ptr,</code>
2932
+ </li>
2933
+ </div>
2934
+
2935
+ <div>
2936
+ <li class="never" data-hits="" data-linenumber="139">
2937
+
2938
+
2939
+
2940
+
2941
+ <code class="ruby"> input_size,</code>
2942
+ </li>
2943
+ </div>
2944
+
2945
+ <div>
2946
+ <li class="never" data-hits="" data-linenumber="140">
2947
+
2948
+
2949
+
2950
+
2951
+ <code class="ruby"> block_size_ptr,</code>
2952
+ </li>
2953
+ </div>
2954
+
2955
+ <div>
2956
+ <li class="never" data-hits="" data-linenumber="141">
2957
+
2958
+
2959
+
2960
+
2961
+ <code class="ruby"> data_size_ptr,</code>
2962
+ </li>
2963
+ </div>
2964
+
2965
+ <div>
2966
+ <li class="never" data-hits="" data-linenumber="142">
2967
+
2968
+
2969
+
2970
+
2971
+ <code class="ruby"> features</code>
2972
+ </li>
2973
+ </div>
2974
+
2975
+ <div>
2976
+ <li class="never" data-hits="" data-linenumber="143">
2977
+
2978
+
2979
+
2980
+
2981
+ <code class="ruby"> )</code>
2982
+ </li>
2983
+ </div>
2984
+
2985
+ <div>
2986
+ <li class="never" data-hits="" data-linenumber="144">
2987
+
2988
+
2989
+
2990
+
2991
+ <code class="ruby"></code>
2992
+ </li>
2993
+ </div>
2994
+
2995
+ <div>
2996
+ <li class="covered" data-hits="1" data-linenumber="145">
2997
+
2998
+ <span class="hits">1</span>
2999
+
3000
+
3001
+
3002
+
3003
+ <code class="ruby"> Error.check_result(result)</code>
3004
+ </li>
3005
+ </div>
3006
+
3007
+ <div>
3008
+ <li class="never" data-hits="" data-linenumber="146">
3009
+
3010
+
3011
+
3012
+
3013
+ <code class="ruby"></code>
3014
+ </li>
3015
+ </div>
3016
+
3017
+ <div>
3018
+ <li class="never" data-hits="" data-linenumber="147">
3019
+
3020
+
3021
+
3022
+
3023
+ <code class="ruby"> {</code>
3024
+ </li>
3025
+ </div>
3026
+
3027
+ <div>
3028
+ <li class="covered" data-hits="1" data-linenumber="148">
3029
+
3030
+ <span class="hits">1</span>
3031
+
3032
+
3033
+
3034
+
3035
+ <code class="ruby"> block_size: block_size_ptr.read_int,</code>
3036
+ </li>
3037
+ </div>
3038
+
3039
+ <div>
3040
+ <li class="never" data-hits="" data-linenumber="149">
3041
+
3042
+
3043
+
3044
+
3045
+ <code class="ruby"> data_size: data_size_ptr.read_int</code>
3046
+ </li>
3047
+ </div>
3048
+
3049
+ <div>
3050
+ <li class="never" data-hits="" data-linenumber="150">
3051
+
3052
+
3053
+
3054
+
3055
+ <code class="ruby"> }</code>
3056
+ </li>
3057
+ </div>
3058
+
3059
+ <div>
3060
+ <li class="never" data-hits="" data-linenumber="151">
3061
+
3062
+
3063
+
3064
+
3065
+ <code class="ruby"> ensure</code>
3066
+ </li>
3067
+ </div>
3068
+
3069
+ <div>
3070
+ <li class="covered" data-hits="1" data-linenumber="152">
3071
+
3072
+ <span class="hits">1</span>
3073
+
3074
+
3075
+
3076
+
3077
+ <code class="ruby"> input_ptr.free if input_ptr</code>
3078
+ </li>
3079
+ </div>
3080
+
3081
+ <div>
3082
+ <li class="covered" data-hits="1" data-linenumber="153">
3083
+
3084
+ <span class="hits">1</span>
3085
+
3086
+
3087
+
3088
+
3089
+ <code class="ruby"> block_size_ptr.free if block_size_ptr</code>
3090
+ </li>
3091
+ </div>
3092
+
3093
+ <div>
3094
+ <li class="covered" data-hits="1" data-linenumber="154">
3095
+
3096
+ <span class="hits">1</span>
3097
+
3098
+
3099
+
3100
+
3101
+ <code class="ruby"> data_size_ptr.free if data_size_ptr</code>
3102
+ </li>
3103
+ </div>
3104
+
3105
+ <div>
3106
+ <li class="never" data-hits="" data-linenumber="155">
3107
+
3108
+
3109
+
3110
+
3111
+ <code class="ruby"> end</code>
3112
+ </li>
3113
+ </div>
3114
+
3115
+ <div>
3116
+ <li class="never" data-hits="" data-linenumber="156">
3117
+
3118
+
3119
+
3120
+
3121
+ <code class="ruby"> end</code>
3122
+ </li>
3123
+ </div>
3124
+
3125
+ <div>
3126
+ <li class="never" data-hits="" data-linenumber="157">
3127
+
3128
+
3129
+
3130
+
3131
+ <code class="ruby"> end</code>
3132
+ </li>
3133
+ </div>
3134
+
3135
+ <div>
3136
+ <li class="never" data-hits="" data-linenumber="158">
3137
+
3138
+
3139
+
3140
+
3141
+ <code class="ruby"> end</code>
3142
+ </li>
3143
+ </div>
3144
+
3145
+ <div>
3146
+ <li class="never" data-hits="" data-linenumber="159">
3147
+
3148
+
3149
+
3150
+
3151
+ <code class="ruby">end</code>
3152
+ </li>
3153
+ </div>
3154
+
3155
+ </ol>
3156
+ </pre>
3157
+ </div>
3158
+
3159
+
3160
+ <div class="source_table" id="95758d8646f27550721435c3eac606d230248c39">
3161
+ <div class="header">
3162
+ <h3>lib/compress/bsc/error.rb</h3>
3163
+ <h4>
3164
+ <span class="green">
3165
+ 100.0%
3166
+ </span>
3167
+
3168
+ lines covered
3169
+ </h4>
3170
+
3171
+
3172
+
3173
+ <div class="t-line-summary">
3174
+ <b>11</b> relevant lines.
3175
+ <span class="green"><b>11</b> lines covered</span> and
3176
+ <span class="red"><b>0</b> lines missed.</span>
3177
+ </div>
3178
+
3179
+
3180
+
3181
+ </div>
3182
+
3183
+ <pre>
3184
+ <ol>
3185
+
3186
+ <div>
3187
+ <li class="covered" data-hits="1" data-linenumber="1">
3188
+
3189
+ <span class="hits">1</span>
3190
+
3191
+
3192
+
3193
+
3194
+ <code class="ruby">module Compress</code>
3195
+ </li>
3196
+ </div>
3197
+
3198
+ <div>
3199
+ <li class="covered" data-hits="1" data-linenumber="2">
3200
+
3201
+ <span class="hits">1</span>
3202
+
3203
+
3204
+
3205
+
3206
+ <code class="ruby"> class BSC</code>
3207
+ </li>
3208
+ </div>
3209
+
3210
+ <div>
3211
+ <li class="covered" data-hits="1" data-linenumber="3">
3212
+
3213
+ <span class="hits">1</span>
3214
+
3215
+
3216
+
3217
+
3218
+ <code class="ruby"> class Error &lt; StandardError</code>
3219
+ </li>
3220
+ </div>
3221
+
3222
+ <div>
3223
+ <li class="covered" data-hits="1" data-linenumber="4">
3224
+
3225
+ <span class="hits">1</span>
3226
+
3227
+
3228
+
3229
+
3230
+ <code class="ruby"> attr_reader :code, :error_name</code>
3231
+ </li>
3232
+ </div>
3233
+
3234
+ <div>
3235
+ <li class="never" data-hits="" data-linenumber="5">
3236
+
3237
+
3238
+
3239
+
3240
+ <code class="ruby"></code>
3241
+ </li>
3242
+ </div>
3243
+
3244
+ <div>
3245
+ <li class="covered" data-hits="1" data-linenumber="6">
3246
+
3247
+ <span class="hits">1</span>
3248
+
3249
+
3250
+
3251
+
3252
+ <code class="ruby"> def initialize(code)</code>
3253
+ </li>
3254
+ </div>
3255
+
3256
+ <div>
3257
+ <li class="covered" data-hits="1" data-linenumber="7">
3258
+
3259
+ <span class="hits">1</span>
3260
+
3261
+
3262
+
3263
+
3264
+ <code class="ruby"> @code = code</code>
3265
+ </li>
3266
+ </div>
3267
+
3268
+ <div>
3269
+ <li class="covered" data-hits="1" data-linenumber="8">
3270
+
3271
+ <span class="hits">1</span>
3272
+
3273
+
3274
+
3275
+
3276
+ <code class="ruby"> @error_name = Library.error_name(code)</code>
3277
+ </li>
3278
+ </div>
3279
+
3280
+ <div>
3281
+ <li class="covered" data-hits="1" data-linenumber="9">
3282
+
3283
+ <span class="hits">1</span>
3284
+
3285
+
3286
+
3287
+
3288
+ <code class="ruby"> super(&quot;BSC Error: #{@error_name} (#{@code})&quot;)</code>
3289
+ </li>
3290
+ </div>
3291
+
3292
+ <div>
3293
+ <li class="never" data-hits="" data-linenumber="10">
3294
+
3295
+
3296
+
3297
+
3298
+ <code class="ruby"> end</code>
3299
+ </li>
3300
+ </div>
3301
+
3302
+ <div>
3303
+ <li class="never" data-hits="" data-linenumber="11">
3304
+
3305
+
3306
+
3307
+
3308
+ <code class="ruby"></code>
3309
+ </li>
3310
+ </div>
3311
+
3312
+ <div>
3313
+ <li class="covered" data-hits="1" data-linenumber="12">
3314
+
3315
+ <span class="hits">1</span>
3316
+
3317
+
3318
+
3319
+
3320
+ <code class="ruby"> def self.check_result(result)</code>
3321
+ </li>
3322
+ </div>
3323
+
3324
+ <div>
3325
+ <li class="covered" data-hits="2" data-linenumber="13">
3326
+
3327
+ <span class="hits">2</span>
3328
+
3329
+
3330
+
3331
+
3332
+ <code class="ruby"> raise Error.new(result) if result &lt; Library::LIBBSC_NO_ERROR</code>
3333
+ </li>
3334
+ </div>
3335
+
3336
+ <div>
3337
+ <li class="covered" data-hits="2" data-linenumber="14">
3338
+
3339
+ <span class="hits">2</span>
3340
+
3341
+
3342
+
3343
+
3344
+ <code class="ruby"> result</code>
3345
+ </li>
3346
+ </div>
3347
+
3348
+ <div>
3349
+ <li class="never" data-hits="" data-linenumber="15">
3350
+
3351
+
3352
+
3353
+
3354
+ <code class="ruby"> end</code>
3355
+ </li>
3356
+ </div>
3357
+
3358
+ <div>
3359
+ <li class="never" data-hits="" data-linenumber="16">
3360
+
3361
+
3362
+
3363
+
3364
+ <code class="ruby"> end</code>
3365
+ </li>
3366
+ </div>
3367
+
3368
+ <div>
3369
+ <li class="never" data-hits="" data-linenumber="17">
3370
+
3371
+
3372
+
3373
+
3374
+ <code class="ruby"> end</code>
3375
+ </li>
3376
+ </div>
3377
+
3378
+ <div>
3379
+ <li class="never" data-hits="" data-linenumber="18">
3380
+
3381
+
3382
+
3383
+
3384
+ <code class="ruby">end</code>
3385
+ </li>
3386
+ </div>
3387
+
3388
+ </ol>
3389
+ </pre>
3390
+ </div>
3391
+
3392
+
3393
+ <div class="source_table" id="4c153a264c5ba1d85dfac4456e25832d1277dac5">
3394
+ <div class="header">
3395
+ <h3>lib/compress/bsc/library.rb</h3>
3396
+ <h4>
3397
+ <span class="green">
3398
+ 98.51%
3399
+ </span>
3400
+
3401
+ lines covered
3402
+ </h4>
3403
+
3404
+
3405
+
3406
+ <div class="t-line-summary">
3407
+ <b>67</b> relevant lines.
3408
+ <span class="green"><b>66</b> lines covered</span> and
3409
+ <span class="red"><b>1</b> lines missed.</span>
3410
+ </div>
3411
+
3412
+
3413
+
3414
+ </div>
3415
+
3416
+ <pre>
3417
+ <ol>
3418
+
3419
+ <div>
3420
+ <li class="covered" data-hits="1" data-linenumber="1">
3421
+
3422
+ <span class="hits">1</span>
3423
+
3424
+
3425
+
3426
+
3427
+ <code class="ruby">require &#39;ffi&#39;</code>
3428
+ </li>
3429
+ </div>
3430
+
3431
+ <div>
3432
+ <li class="never" data-hits="" data-linenumber="2">
3433
+
3434
+
3435
+
3436
+
3437
+ <code class="ruby"></code>
3438
+ </li>
3439
+ </div>
3440
+
3441
+ <div>
3442
+ <li class="covered" data-hits="1" data-linenumber="3">
3443
+
3444
+ <span class="hits">1</span>
3445
+
3446
+
3447
+
3448
+
3449
+ <code class="ruby">module Compress</code>
3450
+ </li>
3451
+ </div>
3452
+
3453
+ <div>
3454
+ <li class="covered" data-hits="1" data-linenumber="4">
3455
+
3456
+ <span class="hits">1</span>
3457
+
3458
+
3459
+
3460
+
3461
+ <code class="ruby"> class BSC</code>
3462
+ </li>
3463
+ </div>
3464
+
3465
+ <div>
3466
+ <li class="covered" data-hits="1" data-linenumber="5">
3467
+
3468
+ <span class="hits">1</span>
3469
+
3470
+
3471
+
3472
+
3473
+ <code class="ruby"> module Library</code>
3474
+ </li>
3475
+ </div>
3476
+
3477
+ <div>
3478
+ <li class="covered" data-hits="1" data-linenumber="6">
3479
+
3480
+ <span class="hits">1</span>
3481
+
3482
+
3483
+
3484
+
3485
+ <code class="ruby"> extend FFI::Library</code>
3486
+ </li>
3487
+ </div>
3488
+
3489
+ <div>
3490
+ <li class="never" data-hits="" data-linenumber="7">
3491
+
3492
+
3493
+
3494
+
3495
+ <code class="ruby"></code>
3496
+ </li>
3497
+ </div>
3498
+
3499
+ <div>
3500
+ <li class="never" data-hits="" data-linenumber="8">
3501
+
3502
+
3503
+
3504
+
3505
+ <code class="ruby"> # Try to find the libbsc library in common locations</code>
3506
+ </li>
3507
+ </div>
3508
+
3509
+ <div>
3510
+ <li class="covered" data-hits="1" data-linenumber="9">
3511
+
3512
+ <span class="hits">1</span>
3513
+
3514
+
3515
+
3516
+
3517
+ <code class="ruby"> library_names = %w[libbsc bsc]</code>
3518
+ </li>
3519
+ </div>
3520
+
3521
+ <div>
3522
+ <li class="never" data-hits="" data-linenumber="10">
3523
+
3524
+
3525
+
3526
+
3527
+ <code class="ruby"> library_paths = %w[</code>
3528
+ </li>
3529
+ </div>
3530
+
3531
+ <div>
3532
+ <li class="covered" data-hits="1" data-linenumber="11">
3533
+
3534
+ <span class="hits">1</span>
3535
+
3536
+
3537
+
3538
+
3539
+ <code class="ruby"> /usr/local/lib</code>
3540
+ </li>
3541
+ </div>
3542
+
3543
+ <div>
3544
+ <li class="never" data-hits="" data-linenumber="12">
3545
+
3546
+
3547
+
3548
+
3549
+ <code class="ruby"> /usr/lib</code>
3550
+ </li>
3551
+ </div>
3552
+
3553
+ <div>
3554
+ <li class="never" data-hits="" data-linenumber="13">
3555
+
3556
+
3557
+
3558
+
3559
+ <code class="ruby"> /opt/homebrew/lib</code>
3560
+ </li>
3561
+ </div>
3562
+
3563
+ <div>
3564
+ <li class="never" data-hits="" data-linenumber="14">
3565
+
3566
+
3567
+
3568
+
3569
+ <code class="ruby"> /usr/lib/x86_64-linux-gnu</code>
3570
+ </li>
3571
+ </div>
3572
+
3573
+ <div>
3574
+ <li class="never" data-hits="" data-linenumber="15">
3575
+
3576
+
3577
+
3578
+
3579
+ <code class="ruby"> ]</code>
3580
+ </li>
3581
+ </div>
3582
+
3583
+ <div>
3584
+ <li class="never" data-hits="" data-linenumber="16">
3585
+
3586
+
3587
+
3588
+
3589
+ <code class="ruby"></code>
3590
+ </li>
3591
+ </div>
3592
+
3593
+ <div>
3594
+ <li class="covered" data-hits="1" data-linenumber="17">
3595
+
3596
+ <span class="hits">1</span>
3597
+
3598
+
3599
+
3600
+
3601
+ <code class="ruby"> found_library = nil</code>
3602
+ </li>
3603
+ </div>
3604
+
3605
+ <div>
3606
+ <li class="covered" data-hits="1" data-linenumber="18">
3607
+
3608
+ <span class="hits">1</span>
3609
+
3610
+
3611
+
3612
+
3613
+ <code class="ruby"> library_names.each do |lib_name|</code>
3614
+ </li>
3615
+ </div>
3616
+
3617
+ <div>
3618
+ <li class="covered" data-hits="1" data-linenumber="19">
3619
+
3620
+ <span class="hits">1</span>
3621
+
3622
+
3623
+
3624
+
3625
+ <code class="ruby"> library_paths.each do |path|</code>
3626
+ </li>
3627
+ </div>
3628
+
3629
+ <div>
3630
+ <li class="covered" data-hits="1" data-linenumber="20">
3631
+
3632
+ <span class="hits">1</span>
3633
+
3634
+
3635
+
3636
+
3637
+ <code class="ruby"> lib_path = File.join(path, &quot;#{lib_name}.dylib&quot;)</code>
3638
+ </li>
3639
+ </div>
3640
+
3641
+ <div>
3642
+ <li class="covered" data-hits="1" data-linenumber="21">
3643
+
3644
+ <span class="hits">1</span>
3645
+
3646
+
3647
+
3648
+
3649
+ <code class="ruby"> lib_path = File.join(path, &quot;#{lib_name}.so&quot;) unless File.exist?(lib_path)</code>
3650
+ </li>
3651
+ </div>
3652
+
3653
+ <div>
3654
+ <li class="never" data-hits="" data-linenumber="22">
3655
+
3656
+
3657
+
3658
+
3659
+ <code class="ruby"></code>
3660
+ </li>
3661
+ </div>
3662
+
3663
+ <div>
3664
+ <li class="covered" data-hits="1" data-linenumber="23">
3665
+
3666
+ <span class="hits">1</span>
3667
+
3668
+
3669
+
3670
+
3671
+ <code class="ruby"> if File.exist?(lib_path)</code>
3672
+ </li>
3673
+ </div>
3674
+
3675
+ <div>
3676
+ <li class="covered" data-hits="1" data-linenumber="24">
3677
+
3678
+ <span class="hits">1</span>
3679
+
3680
+
3681
+
3682
+
3683
+ <code class="ruby"> found_library = lib_path</code>
3684
+ </li>
3685
+ </div>
3686
+
3687
+ <div>
3688
+ <li class="covered" data-hits="1" data-linenumber="25">
3689
+
3690
+ <span class="hits">1</span>
3691
+
3692
+
3693
+
3694
+
3695
+ <code class="ruby"> break</code>
3696
+ </li>
3697
+ </div>
3698
+
3699
+ <div>
3700
+ <li class="never" data-hits="" data-linenumber="26">
3701
+
3702
+
3703
+
3704
+
3705
+ <code class="ruby"> end</code>
3706
+ </li>
3707
+ </div>
3708
+
3709
+ <div>
3710
+ <li class="never" data-hits="" data-linenumber="27">
3711
+
3712
+
3713
+
3714
+
3715
+ <code class="ruby"> end</code>
3716
+ </li>
3717
+ </div>
3718
+
3719
+ <div>
3720
+ <li class="covered" data-hits="1" data-linenumber="28">
3721
+
3722
+ <span class="hits">1</span>
3723
+
3724
+
3725
+
3726
+
3727
+ <code class="ruby"> break if found_library</code>
3728
+ </li>
3729
+ </div>
3730
+
3731
+ <div>
3732
+ <li class="never" data-hits="" data-linenumber="29">
3733
+
3734
+
3735
+
3736
+
3737
+ <code class="ruby"> end</code>
3738
+ </li>
3739
+ </div>
3740
+
3741
+ <div>
3742
+ <li class="never" data-hits="" data-linenumber="30">
3743
+
3744
+
3745
+
3746
+
3747
+ <code class="ruby"></code>
3748
+ </li>
3749
+ </div>
3750
+
3751
+ <div>
3752
+ <li class="never" data-hits="" data-linenumber="31">
3753
+
3754
+
3755
+
3756
+
3757
+ <code class="ruby"> # Use the found library or fall back to system search</code>
3758
+ </li>
3759
+ </div>
3760
+
3761
+ <div>
3762
+ <li class="covered" data-hits="1" data-linenumber="32">
3763
+
3764
+ <span class="hits">1</span>
3765
+
3766
+
3767
+
3768
+
3769
+ <code class="ruby"> if found_library</code>
3770
+ </li>
3771
+ </div>
3772
+
3773
+ <div>
3774
+ <li class="covered" data-hits="1" data-linenumber="33">
3775
+
3776
+ <span class="hits">1</span>
3777
+
3778
+
3779
+
3780
+
3781
+ <code class="ruby"> ffi_lib found_library</code>
3782
+ </li>
3783
+ </div>
3784
+
3785
+ <div>
3786
+ <li class="never" data-hits="" data-linenumber="34">
3787
+
3788
+
3789
+
3790
+
3791
+ <code class="ruby"> else</code>
3792
+ </li>
3793
+ </div>
3794
+
3795
+ <div>
3796
+ <li class="missed" data-hits="0" data-linenumber="35">
3797
+
3798
+
3799
+
3800
+
3801
+ <code class="ruby"> ffi_lib library_names</code>
3802
+ </li>
3803
+ </div>
3804
+
3805
+ <div>
3806
+ <li class="never" data-hits="" data-linenumber="36">
3807
+
3808
+
3809
+
3810
+
3811
+ <code class="ruby"> end</code>
3812
+ </li>
3813
+ </div>
3814
+
3815
+ <div>
3816
+ <li class="never" data-hits="" data-linenumber="37">
3817
+
3818
+
3819
+
3820
+
3821
+ <code class="ruby"></code>
3822
+ </li>
3823
+ </div>
3824
+
3825
+ <div>
3826
+ <li class="never" data-hits="" data-linenumber="38">
3827
+
3828
+
3829
+
3830
+
3831
+ <code class="ruby"> # Version constants</code>
3832
+ </li>
3833
+ </div>
3834
+
3835
+ <div>
3836
+ <li class="covered" data-hits="1" data-linenumber="39">
3837
+
3838
+ <span class="hits">1</span>
3839
+
3840
+
3841
+
3842
+
3843
+ <code class="ruby"> LIBBSC_VERSION_MAJOR = 3</code>
3844
+ </li>
3845
+ </div>
3846
+
3847
+ <div>
3848
+ <li class="covered" data-hits="1" data-linenumber="40">
3849
+
3850
+ <span class="hits">1</span>
3851
+
3852
+
3853
+
3854
+
3855
+ <code class="ruby"> LIBBSC_VERSION_MINOR = 3</code>
3856
+ </li>
3857
+ </div>
3858
+
3859
+ <div>
3860
+ <li class="covered" data-hits="1" data-linenumber="41">
3861
+
3862
+ <span class="hits">1</span>
3863
+
3864
+
3865
+
3866
+
3867
+ <code class="ruby"> LIBBSC_VERSION_PATCH = 9</code>
3868
+ </li>
3869
+ </div>
3870
+
3871
+ <div>
3872
+ <li class="covered" data-hits="1" data-linenumber="42">
3873
+
3874
+ <span class="hits">1</span>
3875
+
3876
+
3877
+
3878
+
3879
+ <code class="ruby"> LIBBSC_VERSION_STRING = &quot;3.3.9&quot;</code>
3880
+ </li>
3881
+ </div>
3882
+
3883
+ <div>
3884
+ <li class="never" data-hits="" data-linenumber="43">
3885
+
3886
+
3887
+
3888
+
3889
+ <code class="ruby"></code>
3890
+ </li>
3891
+ </div>
3892
+
3893
+ <div>
3894
+ <li class="never" data-hits="" data-linenumber="44">
3895
+
3896
+
3897
+
3898
+
3899
+ <code class="ruby"> # Error codes</code>
3900
+ </li>
3901
+ </div>
3902
+
3903
+ <div>
3904
+ <li class="covered" data-hits="1" data-linenumber="45">
3905
+
3906
+ <span class="hits">1</span>
3907
+
3908
+
3909
+
3910
+
3911
+ <code class="ruby"> LIBBSC_NO_ERROR = 0</code>
3912
+ </li>
3913
+ </div>
3914
+
3915
+ <div>
3916
+ <li class="covered" data-hits="1" data-linenumber="46">
3917
+
3918
+ <span class="hits">1</span>
3919
+
3920
+
3921
+
3922
+
3923
+ <code class="ruby"> LIBBSC_BAD_PARAMETER = -1</code>
3924
+ </li>
3925
+ </div>
3926
+
3927
+ <div>
3928
+ <li class="covered" data-hits="1" data-linenumber="47">
3929
+
3930
+ <span class="hits">1</span>
3931
+
3932
+
3933
+
3934
+
3935
+ <code class="ruby"> LIBBSC_NOT_ENOUGH_MEMORY = -2</code>
3936
+ </li>
3937
+ </div>
3938
+
3939
+ <div>
3940
+ <li class="covered" data-hits="1" data-linenumber="48">
3941
+
3942
+ <span class="hits">1</span>
3943
+
3944
+
3945
+
3946
+
3947
+ <code class="ruby"> LIBBSC_NOT_COMPRESSIBLE = -3</code>
3948
+ </li>
3949
+ </div>
3950
+
3951
+ <div>
3952
+ <li class="covered" data-hits="1" data-linenumber="49">
3953
+
3954
+ <span class="hits">1</span>
3955
+
3956
+
3957
+
3958
+
3959
+ <code class="ruby"> LIBBSC_NOT_SUPPORTED = -4</code>
3960
+ </li>
3961
+ </div>
3962
+
3963
+ <div>
3964
+ <li class="covered" data-hits="1" data-linenumber="50">
3965
+
3966
+ <span class="hits">1</span>
3967
+
3968
+
3969
+
3970
+
3971
+ <code class="ruby"> LIBBSC_UNEXPECTED_EOB = -5</code>
3972
+ </li>
3973
+ </div>
3974
+
3975
+ <div>
3976
+ <li class="covered" data-hits="1" data-linenumber="51">
3977
+
3978
+ <span class="hits">1</span>
3979
+
3980
+
3981
+
3982
+
3983
+ <code class="ruby"> LIBBSC_DATA_CORRUPT = -6</code>
3984
+ </li>
3985
+ </div>
3986
+
3987
+ <div>
3988
+ <li class="covered" data-hits="1" data-linenumber="52">
3989
+
3990
+ <span class="hits">1</span>
3991
+
3992
+
3993
+
3994
+
3995
+ <code class="ruby"> LIBBSC_GPU_ERROR = -7</code>
3996
+ </li>
3997
+ </div>
3998
+
3999
+ <div>
4000
+ <li class="covered" data-hits="1" data-linenumber="53">
4001
+
4002
+ <span class="hits">1</span>
4003
+
4004
+
4005
+
4006
+
4007
+ <code class="ruby"> LIBBSC_GPU_NOT_SUPPORTED = -8</code>
4008
+ </li>
4009
+ </div>
4010
+
4011
+ <div>
4012
+ <li class="covered" data-hits="1" data-linenumber="54">
4013
+
4014
+ <span class="hits">1</span>
4015
+
4016
+
4017
+
4018
+
4019
+ <code class="ruby"> LIBBSC_GPU_NOT_ENOUGH_MEMORY = -9</code>
4020
+ </li>
4021
+ </div>
4022
+
4023
+ <div>
4024
+ <li class="never" data-hits="" data-linenumber="55">
4025
+
4026
+
4027
+
4028
+
4029
+ <code class="ruby"></code>
4030
+ </li>
4031
+ </div>
4032
+
4033
+ <div>
4034
+ <li class="never" data-hits="" data-linenumber="56">
4035
+
4036
+
4037
+
4038
+
4039
+ <code class="ruby"> # Block sorter constants</code>
4040
+ </li>
4041
+ </div>
4042
+
4043
+ <div>
4044
+ <li class="covered" data-hits="1" data-linenumber="57">
4045
+
4046
+ <span class="hits">1</span>
4047
+
4048
+
4049
+
4050
+
4051
+ <code class="ruby"> LIBBSC_BLOCKSORTER_NONE = 0</code>
4052
+ </li>
4053
+ </div>
4054
+
4055
+ <div>
4056
+ <li class="covered" data-hits="1" data-linenumber="58">
4057
+
4058
+ <span class="hits">1</span>
4059
+
4060
+
4061
+
4062
+
4063
+ <code class="ruby"> LIBBSC_BLOCKSORTER_BWT = 1</code>
4064
+ </li>
4065
+ </div>
4066
+
4067
+ <div>
4068
+ <li class="covered" data-hits="1" data-linenumber="59">
4069
+
4070
+ <span class="hits">1</span>
4071
+
4072
+
4073
+
4074
+
4075
+ <code class="ruby"> LIBBSC_BLOCKSORTER_ST3 = 3</code>
4076
+ </li>
4077
+ </div>
4078
+
4079
+ <div>
4080
+ <li class="covered" data-hits="1" data-linenumber="60">
4081
+
4082
+ <span class="hits">1</span>
4083
+
4084
+
4085
+
4086
+
4087
+ <code class="ruby"> LIBBSC_BLOCKSORTER_ST4 = 4</code>
4088
+ </li>
4089
+ </div>
4090
+
4091
+ <div>
4092
+ <li class="covered" data-hits="1" data-linenumber="61">
4093
+
4094
+ <span class="hits">1</span>
4095
+
4096
+
4097
+
4098
+
4099
+ <code class="ruby"> LIBBSC_BLOCKSORTER_ST5 = 5</code>
4100
+ </li>
4101
+ </div>
4102
+
4103
+ <div>
4104
+ <li class="covered" data-hits="1" data-linenumber="62">
4105
+
4106
+ <span class="hits">1</span>
4107
+
4108
+
4109
+
4110
+
4111
+ <code class="ruby"> LIBBSC_BLOCKSORTER_ST6 = 6</code>
4112
+ </li>
4113
+ </div>
4114
+
4115
+ <div>
4116
+ <li class="covered" data-hits="1" data-linenumber="63">
4117
+
4118
+ <span class="hits">1</span>
4119
+
4120
+
4121
+
4122
+
4123
+ <code class="ruby"> LIBBSC_BLOCKSORTER_ST7 = 7</code>
4124
+ </li>
4125
+ </div>
4126
+
4127
+ <div>
4128
+ <li class="covered" data-hits="1" data-linenumber="64">
4129
+
4130
+ <span class="hits">1</span>
4131
+
4132
+
4133
+
4134
+
4135
+ <code class="ruby"> LIBBSC_BLOCKSORTER_ST8 = 8</code>
4136
+ </li>
4137
+ </div>
4138
+
4139
+ <div>
4140
+ <li class="never" data-hits="" data-linenumber="65">
4141
+
4142
+
4143
+
4144
+
4145
+ <code class="ruby"></code>
4146
+ </li>
4147
+ </div>
4148
+
4149
+ <div>
4150
+ <li class="never" data-hits="" data-linenumber="66">
4151
+
4152
+
4153
+
4154
+
4155
+ <code class="ruby"> # Coder constants</code>
4156
+ </li>
4157
+ </div>
4158
+
4159
+ <div>
4160
+ <li class="covered" data-hits="1" data-linenumber="67">
4161
+
4162
+ <span class="hits">1</span>
4163
+
4164
+
4165
+
4166
+
4167
+ <code class="ruby"> LIBBSC_CODER_NONE = 0</code>
4168
+ </li>
4169
+ </div>
4170
+
4171
+ <div>
4172
+ <li class="covered" data-hits="1" data-linenumber="68">
4173
+
4174
+ <span class="hits">1</span>
4175
+
4176
+
4177
+
4178
+
4179
+ <code class="ruby"> LIBBSC_CODER_QLFC_STATIC = 1</code>
4180
+ </li>
4181
+ </div>
4182
+
4183
+ <div>
4184
+ <li class="covered" data-hits="1" data-linenumber="69">
4185
+
4186
+ <span class="hits">1</span>
4187
+
4188
+
4189
+
4190
+
4191
+ <code class="ruby"> LIBBSC_CODER_QLFC_ADAPTIVE = 2</code>
4192
+ </li>
4193
+ </div>
4194
+
4195
+ <div>
4196
+ <li class="covered" data-hits="1" data-linenumber="70">
4197
+
4198
+ <span class="hits">1</span>
4199
+
4200
+
4201
+
4202
+
4203
+ <code class="ruby"> LIBBSC_CODER_QLFC_FAST = 3</code>
4204
+ </li>
4205
+ </div>
4206
+
4207
+ <div>
4208
+ <li class="never" data-hits="" data-linenumber="71">
4209
+
4210
+
4211
+
4212
+
4213
+ <code class="ruby"></code>
4214
+ </li>
4215
+ </div>
4216
+
4217
+ <div>
4218
+ <li class="never" data-hits="" data-linenumber="72">
4219
+
4220
+
4221
+
4222
+
4223
+ <code class="ruby"> # Feature constants</code>
4224
+ </li>
4225
+ </div>
4226
+
4227
+ <div>
4228
+ <li class="covered" data-hits="1" data-linenumber="73">
4229
+
4230
+ <span class="hits">1</span>
4231
+
4232
+
4233
+
4234
+
4235
+ <code class="ruby"> LIBBSC_FEATURE_NONE = 0</code>
4236
+ </li>
4237
+ </div>
4238
+
4239
+ <div>
4240
+ <li class="covered" data-hits="1" data-linenumber="74">
4241
+
4242
+ <span class="hits">1</span>
4243
+
4244
+
4245
+
4246
+
4247
+ <code class="ruby"> LIBBSC_FEATURE_FASTMODE = 1</code>
4248
+ </li>
4249
+ </div>
4250
+
4251
+ <div>
4252
+ <li class="covered" data-hits="1" data-linenumber="75">
4253
+
4254
+ <span class="hits">1</span>
4255
+
4256
+
4257
+
4258
+
4259
+ <code class="ruby"> LIBBSC_FEATURE_MULTITHREADING = 2</code>
4260
+ </li>
4261
+ </div>
4262
+
4263
+ <div>
4264
+ <li class="covered" data-hits="1" data-linenumber="76">
4265
+
4266
+ <span class="hits">1</span>
4267
+
4268
+
4269
+
4270
+
4271
+ <code class="ruby"> LIBBSC_FEATURE_LARGEPAGES = 4</code>
4272
+ </li>
4273
+ </div>
4274
+
4275
+ <div>
4276
+ <li class="covered" data-hits="1" data-linenumber="77">
4277
+
4278
+ <span class="hits">1</span>
4279
+
4280
+
4281
+
4282
+
4283
+ <code class="ruby"> LIBBSC_FEATURE_CUDA = 8</code>
4284
+ </li>
4285
+ </div>
4286
+
4287
+ <div>
4288
+ <li class="never" data-hits="" data-linenumber="78">
4289
+
4290
+
4291
+
4292
+
4293
+ <code class="ruby"></code>
4294
+ </li>
4295
+ </div>
4296
+
4297
+ <div>
4298
+ <li class="never" data-hits="" data-linenumber="79">
4299
+
4300
+
4301
+
4302
+
4303
+ <code class="ruby"> # Default values</code>
4304
+ </li>
4305
+ </div>
4306
+
4307
+ <div>
4308
+ <li class="covered" data-hits="1" data-linenumber="80">
4309
+
4310
+ <span class="hits">1</span>
4311
+
4312
+
4313
+
4314
+
4315
+ <code class="ruby"> LIBBSC_DEFAULT_LZPHASHSIZE = 15</code>
4316
+ </li>
4317
+ </div>
4318
+
4319
+ <div>
4320
+ <li class="covered" data-hits="1" data-linenumber="81">
4321
+
4322
+ <span class="hits">1</span>
4323
+
4324
+
4325
+
4326
+
4327
+ <code class="ruby"> LIBBSC_DEFAULT_LZPMINLEN = 128</code>
4328
+ </li>
4329
+ </div>
4330
+
4331
+ <div>
4332
+ <li class="covered" data-hits="1" data-linenumber="82">
4333
+
4334
+ <span class="hits">1</span>
4335
+
4336
+
4337
+
4338
+
4339
+ <code class="ruby"> LIBBSC_DEFAULT_BLOCKSORTER = LIBBSC_BLOCKSORTER_BWT</code>
4340
+ </li>
4341
+ </div>
4342
+
4343
+ <div>
4344
+ <li class="covered" data-hits="1" data-linenumber="83">
4345
+
4346
+ <span class="hits">1</span>
4347
+
4348
+
4349
+
4350
+
4351
+ <code class="ruby"> LIBBSC_DEFAULT_CODER = LIBBSC_CODER_QLFC_STATIC</code>
4352
+ </li>
4353
+ </div>
4354
+
4355
+ <div>
4356
+ <li class="covered" data-hits="1" data-linenumber="84">
4357
+
4358
+ <span class="hits">1</span>
4359
+
4360
+
4361
+
4362
+
4363
+ <code class="ruby"> LIBBSC_DEFAULT_FEATURES = LIBBSC_FEATURE_FASTMODE | LIBBSC_FEATURE_MULTITHREADING</code>
4364
+ </li>
4365
+ </div>
4366
+
4367
+ <div>
4368
+ <li class="never" data-hits="" data-linenumber="85">
4369
+
4370
+
4371
+
4372
+
4373
+ <code class="ruby"></code>
4374
+ </li>
4375
+ </div>
4376
+
4377
+ <div>
4378
+ <li class="never" data-hits="" data-linenumber="86">
4379
+
4380
+
4381
+
4382
+
4383
+ <code class="ruby"> # Header size</code>
4384
+ </li>
4385
+ </div>
4386
+
4387
+ <div>
4388
+ <li class="covered" data-hits="1" data-linenumber="87">
4389
+
4390
+ <span class="hits">1</span>
4391
+
4392
+
4393
+
4394
+
4395
+ <code class="ruby"> LIBBSC_HEADER_SIZE = 28</code>
4396
+ </li>
4397
+ </div>
4398
+
4399
+ <div>
4400
+ <li class="never" data-hits="" data-linenumber="88">
4401
+
4402
+
4403
+
4404
+
4405
+ <code class="ruby"></code>
4406
+ </li>
4407
+ </div>
4408
+
4409
+ <div>
4410
+ <li class="never" data-hits="" data-linenumber="89">
4411
+
4412
+
4413
+
4414
+
4415
+ <code class="ruby"> # Function bindings</code>
4416
+ </li>
4417
+ </div>
4418
+
4419
+ <div>
4420
+ <li class="covered" data-hits="1" data-linenumber="90">
4421
+
4422
+ <span class="hits">1</span>
4423
+
4424
+
4425
+
4426
+
4427
+ <code class="ruby"> attach_function :bsc_init, [:int], :int</code>
4428
+ </li>
4429
+ </div>
4430
+
4431
+ <div>
4432
+ <li class="covered" data-hits="1" data-linenumber="91">
4433
+
4434
+ <span class="hits">1</span>
4435
+
4436
+
4437
+
4438
+
4439
+ <code class="ruby"> attach_function :bsc_init_full, [:int, :pointer, :pointer, :pointer], :int</code>
4440
+ </li>
4441
+ </div>
4442
+
4443
+ <div>
4444
+ <li class="never" data-hits="" data-linenumber="92">
4445
+
4446
+
4447
+
4448
+
4449
+ <code class="ruby"></code>
4450
+ </li>
4451
+ </div>
4452
+
4453
+ <div>
4454
+ <li class="covered" data-hits="1" data-linenumber="93">
4455
+
4456
+ <span class="hits">1</span>
4457
+
4458
+
4459
+
4460
+
4461
+ <code class="ruby"> attach_function :bsc_compress, [:pointer, :pointer, :int, :int, :int, :int, :int, :int], :int</code>
4462
+ </li>
4463
+ </div>
4464
+
4465
+ <div>
4466
+ <li class="covered" data-hits="1" data-linenumber="94">
4467
+
4468
+ <span class="hits">1</span>
4469
+
4470
+
4471
+
4472
+
4473
+ <code class="ruby"> attach_function :bsc_decompress, [:pointer, :int, :pointer, :int, :int], :int</code>
4474
+ </li>
4475
+ </div>
4476
+
4477
+ <div>
4478
+ <li class="never" data-hits="" data-linenumber="95">
4479
+
4480
+
4481
+
4482
+
4483
+ <code class="ruby"></code>
4484
+ </li>
4485
+ </div>
4486
+
4487
+ <div>
4488
+ <li class="covered" data-hits="1" data-linenumber="96">
4489
+
4490
+ <span class="hits">1</span>
4491
+
4492
+
4493
+
4494
+
4495
+ <code class="ruby"> attach_function :bsc_block_info, [:pointer, :int, :pointer, :pointer, :int], :int</code>
4496
+ </li>
4497
+ </div>
4498
+
4499
+ <div>
4500
+ <li class="never" data-hits="" data-linenumber="97">
4501
+
4502
+
4503
+
4504
+
4505
+ <code class="ruby"></code>
4506
+ </li>
4507
+ </div>
4508
+
4509
+ <div>
4510
+ <li class="never" data-hits="" data-linenumber="98">
4511
+
4512
+
4513
+
4514
+
4515
+ <code class="ruby"> # Platform functions</code>
4516
+ </li>
4517
+ </div>
4518
+
4519
+ <div>
4520
+ <li class="covered" data-hits="1" data-linenumber="99">
4521
+
4522
+ <span class="hits">1</span>
4523
+
4524
+
4525
+
4526
+
4527
+ <code class="ruby"> attach_function :bsc_malloc, [:size_t], :pointer</code>
4528
+ </li>
4529
+ </div>
4530
+
4531
+ <div>
4532
+ <li class="covered" data-hits="1" data-linenumber="100">
4533
+
4534
+ <span class="hits">1</span>
4535
+
4536
+
4537
+
4538
+
4539
+ <code class="ruby"> attach_function :bsc_zero_malloc, [:size_t], :pointer</code>
4540
+ </li>
4541
+ </div>
4542
+
4543
+ <div>
4544
+ <li class="covered" data-hits="1" data-linenumber="101">
4545
+
4546
+ <span class="hits">1</span>
4547
+
4548
+
4549
+
4550
+
4551
+ <code class="ruby"> attach_function :bsc_free, [:pointer], :void</code>
4552
+ </li>
4553
+ </div>
4554
+
4555
+ <div>
4556
+ <li class="never" data-hits="" data-linenumber="102">
4557
+
4558
+
4559
+
4560
+
4561
+ <code class="ruby"></code>
4562
+ </li>
4563
+ </div>
4564
+
4565
+ <div>
4566
+ <li class="never" data-hits="" data-linenumber="103">
4567
+
4568
+
4569
+
4570
+
4571
+ <code class="ruby"> # Error code names for debugging</code>
4572
+ </li>
4573
+ </div>
4574
+
4575
+ <div>
4576
+ <li class="never" data-hits="" data-linenumber="104">
4577
+
4578
+
4579
+
4580
+
4581
+ <code class="ruby"> ERROR_NAMES = {</code>
4582
+ </li>
4583
+ </div>
4584
+
4585
+ <div>
4586
+ <li class="covered" data-hits="1" data-linenumber="105">
4587
+
4588
+ <span class="hits">1</span>
4589
+
4590
+
4591
+
4592
+
4593
+ <code class="ruby"> LIBBSC_NO_ERROR =&gt; &#39;LIBBSC_NO_ERROR&#39;,</code>
4594
+ </li>
4595
+ </div>
4596
+
4597
+ <div>
4598
+ <li class="never" data-hits="" data-linenumber="106">
4599
+
4600
+
4601
+
4602
+
4603
+ <code class="ruby"> LIBBSC_BAD_PARAMETER =&gt; &#39;LIBBSC_BAD_PARAMETER&#39;,</code>
4604
+ </li>
4605
+ </div>
4606
+
4607
+ <div>
4608
+ <li class="never" data-hits="" data-linenumber="107">
4609
+
4610
+
4611
+
4612
+
4613
+ <code class="ruby"> LIBBSC_NOT_ENOUGH_MEMORY =&gt; &#39;LIBBSC_NOT_ENOUGH_MEMORY&#39;,</code>
4614
+ </li>
4615
+ </div>
4616
+
4617
+ <div>
4618
+ <li class="never" data-hits="" data-linenumber="108">
4619
+
4620
+
4621
+
4622
+
4623
+ <code class="ruby"> LIBBSC_NOT_COMPRESSIBLE =&gt; &#39;LIBBSC_NOT_COMPRESSIBLE&#39;,</code>
4624
+ </li>
4625
+ </div>
4626
+
4627
+ <div>
4628
+ <li class="never" data-hits="" data-linenumber="109">
4629
+
4630
+
4631
+
4632
+
4633
+ <code class="ruby"> LIBBSC_NOT_SUPPORTED =&gt; &#39;LIBBSC_NOT_SUPPORTED&#39;,</code>
4634
+ </li>
4635
+ </div>
4636
+
4637
+ <div>
4638
+ <li class="never" data-hits="" data-linenumber="110">
4639
+
4640
+
4641
+
4642
+
4643
+ <code class="ruby"> LIBBSC_UNEXPECTED_EOB =&gt; &#39;LIBBSC_UNEXPECTED_EOB&#39;,</code>
4644
+ </li>
4645
+ </div>
4646
+
4647
+ <div>
4648
+ <li class="never" data-hits="" data-linenumber="111">
4649
+
4650
+
4651
+
4652
+
4653
+ <code class="ruby"> LIBBSC_DATA_CORRUPT =&gt; &#39;LIBBSC_DATA_CORRUPT&#39;,</code>
4654
+ </li>
4655
+ </div>
4656
+
4657
+ <div>
4658
+ <li class="never" data-hits="" data-linenumber="112">
4659
+
4660
+
4661
+
4662
+
4663
+ <code class="ruby"> LIBBSC_GPU_ERROR =&gt; &#39;LIBBSC_GPU_ERROR&#39;,</code>
4664
+ </li>
4665
+ </div>
4666
+
4667
+ <div>
4668
+ <li class="never" data-hits="" data-linenumber="113">
4669
+
4670
+
4671
+
4672
+
4673
+ <code class="ruby"> LIBBSC_GPU_NOT_SUPPORTED =&gt; &#39;LIBBSC_GPU_NOT_SUPPORTED&#39;,</code>
4674
+ </li>
4675
+ </div>
4676
+
4677
+ <div>
4678
+ <li class="never" data-hits="" data-linenumber="114">
4679
+
4680
+
4681
+
4682
+
4683
+ <code class="ruby"> LIBBSC_GPU_NOT_ENOUGH_MEMORY =&gt; &#39;LIBBSC_GPU_NOT_ENOUGH_MEMORY&#39;</code>
4684
+ </li>
4685
+ </div>
4686
+
4687
+ <div>
4688
+ <li class="never" data-hits="" data-linenumber="115">
4689
+
4690
+
4691
+
4692
+
4693
+ <code class="ruby"> }.freeze</code>
4694
+ </li>
4695
+ </div>
4696
+
4697
+ <div>
4698
+ <li class="never" data-hits="" data-linenumber="116">
4699
+
4700
+
4701
+
4702
+
4703
+ <code class="ruby"></code>
4704
+ </li>
4705
+ </div>
4706
+
4707
+ <div>
4708
+ <li class="covered" data-hits="1" data-linenumber="117">
4709
+
4710
+ <span class="hits">1</span>
4711
+
4712
+
4713
+
4714
+
4715
+ <code class="ruby"> def self.error_name(code)</code>
4716
+ </li>
4717
+ </div>
4718
+
4719
+ <div>
4720
+ <li class="covered" data-hits="1" data-linenumber="118">
4721
+
4722
+ <span class="hits">1</span>
4723
+
4724
+
4725
+
4726
+
4727
+ <code class="ruby"> ERROR_NAMES[code] || &quot;UNKNOWN_ERROR(#{code})&quot;</code>
4728
+ </li>
4729
+ </div>
4730
+
4731
+ <div>
4732
+ <li class="never" data-hits="" data-linenumber="119">
4733
+
4734
+
4735
+
4736
+
4737
+ <code class="ruby"> end</code>
4738
+ </li>
4739
+ </div>
4740
+
4741
+ <div>
4742
+ <li class="never" data-hits="" data-linenumber="120">
4743
+
4744
+
4745
+
4746
+
4747
+ <code class="ruby"> end</code>
4748
+ </li>
4749
+ </div>
4750
+
4751
+ <div>
4752
+ <li class="never" data-hits="" data-linenumber="121">
4753
+
4754
+
4755
+
4756
+
4757
+ <code class="ruby"> end</code>
4758
+ </li>
4759
+ </div>
4760
+
4761
+ <div>
4762
+ <li class="never" data-hits="" data-linenumber="122">
4763
+
4764
+
4765
+
4766
+
4767
+ <code class="ruby">end</code>
4768
+ </li>
4769
+ </div>
4770
+
4771
+ </ol>
4772
+ </pre>
4773
+ </div>
4774
+
4775
+
4776
+ </div>
4777
+ </div>
4778
+ </body>
4779
+ </html>