gogyou 0.2.3 → 0.2.4
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.
- checksums.yaml +4 -4
- data/HISTORY.ja.md +57 -0
- data/LICENSE +1 -1
- data/README.md +129 -44
- data/Rakefile +4 -1
- data/gemstub.rb +2 -2
- data/lib/gogyou.rb +66 -40
- data/lib/gogyou/accessor.rb +80 -57
- data/lib/gogyou/bytearray.rb +856 -0
- data/lib/gogyou/extensions.rb +477 -0
- data/lib/gogyou/ffi.rb +52 -0
- data/lib/gogyou/fiddle.rb +53 -0
- data/lib/gogyou/primitives.rb +160 -52
- data/lib/gogyou/typespec.rb +1 -1
- data/lib/gogyou/version.rb +1 -1
- data/mkprims.rb +74 -38
- data/test/test_loadstore.rb +65 -0
- data/test/test_packbin.rb +65 -0
- metadata +21 -8
- data/lib/gogyou/mixin.rb +0 -640
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9633436e949f5045c684dde26894ed49cb30630e
|
4
|
+
data.tar.gz: 86d4d3037ebbbf38f66757aa1735cdb4430f684b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 014588ae16a1e4def6fb346f49f8102e268d7035e0b0a7174430c3a1e31dccc085dc5c5045f9fcba7f3c7fe738892ff34e26d7503eb8d0b4c0e90447f0655c93
|
7
|
+
data.tar.gz: dc82211d768d36370a59b67b03e3715cde0cea1c351f0914ec6f6948cfeac50b0c8bdc21e306684fe7e1e3e517b949cf848067592a1adcde0a823fdeb6e2c0ea
|
data/HISTORY.ja.md
CHANGED
@@ -1,5 +1,62 @@
|
|
1
1
|
# gogyou の更新履歴
|
2
2
|
|
3
|
+
## gogyou-0.2.4 (2015-10-16)
|
4
|
+
|
5
|
+
* 環境依存の型に対する結果の正確性を修正
|
6
|
+
|
7
|
+
バイトオーダーが環境依存の型に対する値の取得・変更処理をより正確になるように修正しました。
|
8
|
+
|
9
|
+
ただし代入時の CPU 負荷が二倍程度悪化しています。
|
10
|
+
|
11
|
+
* いくつかの ruby 実装に対する修正
|
12
|
+
|
13
|
+
ruby-2.0 はサポート対象としていたにもかかわらず gogyou-0.2.3 で require が失敗してしまった部分を修正しています。
|
14
|
+
|
15
|
+
jruby、rubinius はこれまで確認すらしていませんでしたが、お遊び程度で確認しています
|
16
|
+
(サポート対象となっていないことに注意して下さい)。
|
17
|
+
|
18
|
+
* Gogyou::Accessor::Array#each の追加と Enumerable 化
|
19
|
+
|
20
|
+
Gogyou::Accessor::Array#each を追加し、Enumerabale を include するように変更しました。
|
21
|
+
|
22
|
+
Gogyou::Accessor::Array#each_with_index も追加してあります。
|
23
|
+
|
24
|
+
* Fiddle::Pointer と FFI::AbstractMemory を構造体バッファオブジェクトとして利用可能に
|
25
|
+
|
26
|
+
Fiddle::Pointer と FFI::AbstractMemory のインスタンスを構造体の
|
27
|
+
バッファオブジェクトとして利用できるように機能を追加しました。
|
28
|
+
|
29
|
+
* IEEE 754-2008 に対応した浮動小数点実数型を追加
|
30
|
+
|
31
|
+
IEEE 754-2008 に対応した 16・32・64 ビット精度の浮動小数点実数に対する以下の型を追加しました。
|
32
|
+
|
33
|
+
``float16_t`` ``float16_swap`` ``float16_be`` ``float16_le``
|
34
|
+
``float32_t`` ``float32_swap`` ``float32_be`` ``float32_le``
|
35
|
+
``float64_t`` ``float64_swap`` ``float64_be`` ``float64_le``
|
36
|
+
|
37
|
+
* 固定小数点実数の型名を追加
|
38
|
+
|
39
|
+
16・32 ビット精度の固定小数点実数に対する以下の型を追加しました。
|
40
|
+
|
41
|
+
``fixed16q8_t`` ``fixed16q8_swap`` ``fixed16q8_be`` ``fixed16q8_le``
|
42
|
+
``fixed32q6_t`` ``fixed32q6_swap`` ``fixed32q6_be`` ``fixed32q6_le``
|
43
|
+
``fixed32q8_t`` ``fixed32q8_swap`` ``fixed32q8_be`` ``fixed32q8_le``
|
44
|
+
``fixed32q12_t`` ``fixed32q12_swap`` ``fixed32q12_be`` ``fixed32q12_le``
|
45
|
+
``fixed32q16_t`` ``fixed32q16_swap`` ``fixed32q16_be`` ``fixed32q16_le``
|
46
|
+
``fixed32q24_t`` ``fixed32q24_swap`` ``fixed32q24_be`` ``fixed32q24_le``
|
47
|
+
|
48
|
+
これらは格納する時 (storeXXX) は固定小数点実数として処理されますが、ruby
|
49
|
+
オブジェクトとして取り出す時 (loadXXX) は Float オブジェクトとして処理されます。
|
50
|
+
|
51
|
+
* クラス・モジュール名の変更
|
52
|
+
|
53
|
+
Gogyou::Primitives::Primitive を Gogyou::Primitive に変更しました。
|
54
|
+
|
55
|
+
* いくつかの処理の効率を改善
|
56
|
+
|
57
|
+
* その他問題の修正
|
58
|
+
|
59
|
+
|
3
60
|
## gogyou-0.2.3 (2015-5-17)
|
4
61
|
|
5
62
|
* short、int、long、long long のバイト数が環境ごとの値として取得するようになっていなかった問題を修正
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -19,14 +19,14 @@ ruby 構文による、C 言語の構造体・共用体・多次元配列 (も
|
|
19
19
|
----
|
20
20
|
|
21
21
|
* Product Name (名称): gogyou (ゴギョウ / 御形 / Gnaphalium affine)
|
22
|
-
* Author (制作者): dearblue <dearblue@users.
|
22
|
+
* Author (制作者): dearblue <dearblue@users.osdn.me>
|
23
23
|
* Distribute License (頒布ライセンス): 2-clause BSD License (二条項 BSD ライセンス)
|
24
|
-
* Software Quarity (ソフトウェア品質):
|
24
|
+
* Software Quarity (ソフトウェア品質): EXPERIMENTAL
|
25
25
|
* User (想定利用者): Rubyist
|
26
|
-
* Release Number (リリースナンバー): 0.2.
|
26
|
+
* Release Number (リリースナンバー): 0.2.4
|
27
27
|
* Memory Usage (使用メモリ量): 2 MB +
|
28
28
|
* Installed Size (インストール容量): under 1 MB
|
29
|
-
* Project Page: <
|
29
|
+
* Project Page: <https://osdn.jp/projects/rutsubo/>
|
30
30
|
* Support Ruby: ruby-2.0+ <http://www.ruby-lang.org/>
|
31
31
|
|
32
32
|
## Example
|
@@ -34,7 +34,7 @@ ruby 構文による、C 言語の構造体・共用体・多次元配列 (も
|
|
34
34
|
ruby/ruby.h の ``struct RBasic`` と ``struct RObject`` を gogyou を用いて次のように記述出来ます
|
35
35
|
(ポインタの定義はできていないため、``uintptr_t`` で置き換えています):
|
36
36
|
|
37
|
-
```ruby:ruby
|
37
|
+
``` ruby:ruby
|
38
38
|
require "gogyou"
|
39
39
|
|
40
40
|
module MyRuby
|
@@ -71,9 +71,15 @@ end
|
|
71
71
|
|
72
72
|
また、ruby がもつ ``p`` メソッドや ``pp`` メソッドでわかりやすく表示されます (gogyou-0.2.3 にて追加)。
|
73
73
|
|
74
|
-
|
74
|
+
定義した構造体のインスタンスを作成する場合、文字列だけではなく Fiddle::Pointer や FFI::AbstractMemory インスタンスの指定も可能です (gogyou-0.2.4 にて追加)。
|
75
|
+
|
76
|
+
``` ruby:ruby
|
75
77
|
obj = MyRuby::RObject.new
|
76
|
-
# OR obj = MyRuby::RObject.bind("0123456789abcdef" * 2000) # given any string
|
78
|
+
# OR: obj = MyRuby::RObject.bind("0123456789abcdef" * 2000) # given any string
|
79
|
+
# OR: require "gogyou/fiddle"
|
80
|
+
# obj = MyRuby::RObject.bind(Fiddle::Pointer.malloc(MyRuby::RObject.bytesize))
|
81
|
+
# OR: require "gogyou/ffi"
|
82
|
+
# obj = MyRuby::RObject.bind(FFI::MemoryPointer.new(MyRuby::RObject.bytesize))
|
77
83
|
|
78
84
|
obj.basic.flags = 1234567890
|
79
85
|
(obj.basic.klass = 0xaaaaaaaa) rescue p $! # => EXCEPTION! klass field is immutable
|
@@ -87,7 +93,7 @@ tmp = obj.as.heap # get a middle field accessor
|
|
87
93
|
tmp.ivptr = 0x44444444
|
88
94
|
p obj.as.heap.ivptr # => 0x44444444
|
89
95
|
|
90
|
-
# following results are in little endian 64 bit
|
96
|
+
# following results are in little endian 64 bit system
|
91
97
|
require "pp"
|
92
98
|
|
93
99
|
pp obj.bytesize # => 40
|
@@ -194,7 +200,7 @@ pp obj # => #<MyRuby::RObject
|
|
194
200
|
|
195
201
|
最初に gogyou を読み込みます。
|
196
202
|
|
197
|
-
```ruby:ruby
|
203
|
+
``` ruby:ruby
|
198
204
|
require "gogyou"
|
199
205
|
```
|
200
206
|
|
@@ -202,7 +208,7 @@ require "gogyou"
|
|
202
208
|
|
203
209
|
1. クラスやモジュールの中で ``extend Gogyou`` して、``struct`` (または ``union``) をブロック付きで呼び出し、その戻り値を定数に代入する
|
204
210
|
|
205
|
-
```ruby:ruby
|
211
|
+
``` ruby:ruby
|
206
212
|
module MyModule
|
207
213
|
extend Gogyou
|
208
214
|
|
@@ -219,7 +225,7 @@ require "gogyou"
|
|
219
225
|
|
220
226
|
2. Gogyou.struct (または Gogyou.union) をブロック付きで呼び出し、その戻り値を定数に代入する
|
221
227
|
|
222
|
-
```ruby:ruby
|
228
|
+
``` ruby:ruby
|
223
229
|
TypeA = Gogyou.struct {
|
224
230
|
int :a
|
225
231
|
}
|
@@ -233,7 +239,7 @@ require "gogyou"
|
|
233
239
|
3. Gogyou::Struct (または Gogyou::Union) を親クラスとしてクラスを定義し、その中で ``struct`` (または ``union``) をブロック付きで呼び出す
|
234
240
|
(gogyou-0.2.3 にて追加)
|
235
241
|
|
236
|
-
```ruby:ruby
|
242
|
+
``` ruby:ruby
|
237
243
|
class TypeA < Gogyou::Struct
|
238
244
|
struct {
|
239
245
|
int :a
|
@@ -256,7 +262,7 @@ require "gogyou"
|
|
256
262
|
|
257
263
|
フィールド名はシンボル (または文字列) で与えます。
|
258
264
|
|
259
|
-
```ruby:ruby
|
265
|
+
``` ruby:ruby
|
260
266
|
module MyModule
|
261
267
|
extend Gogyou
|
262
268
|
|
@@ -275,7 +281,7 @@ end
|
|
275
281
|
|
276
282
|
配列として定義する場合は、フィールド名に続く引数として整数値を与えます。
|
277
283
|
|
278
|
-
```ruby:ruby
|
284
|
+
``` ruby:ruby
|
279
285
|
module MyModule
|
280
286
|
extend Gogyou
|
281
287
|
|
@@ -287,7 +293,7 @@ end
|
|
287
293
|
|
288
294
|
多次元配列の場合は、連続して整数値を与えます。
|
289
295
|
|
290
|
-
```ruby:ruby
|
296
|
+
``` ruby:ruby
|
291
297
|
module MyModule
|
292
298
|
extend Gogyou
|
293
299
|
|
@@ -299,7 +305,7 @@ end
|
|
299
305
|
|
300
306
|
配列の場合でも、複数のフィールドを連続してまとめることが出来ます。
|
301
307
|
|
302
|
-
```ruby:ruby
|
308
|
+
``` ruby:ruby
|
303
309
|
module MyModule
|
304
310
|
extend Gogyou
|
305
311
|
|
@@ -318,7 +324,7 @@ struct の最初の引数にブロックを与えること以外は、先に述
|
|
318
324
|
|
319
325
|
コメントは C 言語で記述した場合の対比としてあります。
|
320
326
|
|
321
|
-
```ruby:ruby
|
327
|
+
``` ruby:ruby
|
322
328
|
module MyModule
|
323
329
|
extend Gogyou
|
324
330
|
|
@@ -332,7 +338,7 @@ end
|
|
332
338
|
|
333
339
|
最初の引数にブロックではなく、型情報としてのオブジェクトを与えることも出来ます。
|
334
340
|
|
335
|
-
```ruby:ruby
|
341
|
+
``` ruby:ruby
|
336
342
|
module MyModule
|
337
343
|
extend Gogyou
|
338
344
|
|
@@ -348,7 +354,7 @@ end
|
|
348
354
|
|
349
355
|
無名構造体の場合、引数は渡さずにブロックを渡すだけです。
|
350
356
|
|
351
|
-
```ruby:ruby
|
357
|
+
``` ruby:ruby
|
352
358
|
module MyModule
|
353
359
|
extend Gogyou
|
354
360
|
|
@@ -436,42 +442,42 @@ end
|
|
436
442
|
|
437
443
|
順を追って説明していきます。
|
438
444
|
|
439
|
-
###
|
445
|
+
### ``.bytesize``
|
440
446
|
|
441
447
|
このメソッドはその型が必要とする領域のバイト数を正の整数値で返します。
|
442
448
|
|
443
449
|
型が拡張構造になっている場合は、最小値となる値を返します。
|
444
450
|
|
445
|
-
MD5 を定義する場合、16バイトなので
|
451
|
+
MD5 を定義する場合、16バイトなので ``16`` を返します。
|
446
452
|
|
447
|
-
###
|
453
|
+
### ``.bytealign``
|
448
454
|
|
449
455
|
このメソッドはその型のアライメントサイズを正の整数値で返します。
|
450
456
|
|
451
|
-
MD5 を定義する場合、内部表現は1バイトの塊なので
|
452
|
-
(MD5 の実装によっては
|
457
|
+
MD5 を定義する場合、内部表現は1バイトの塊なので ``1`` を返します
|
458
|
+
(MD5 の実装によっては ``4`` だったり ``8`` だったり、はたまた ``16`` になるかもしれません)。
|
453
459
|
|
454
|
-
###
|
460
|
+
### ``.extensible?``
|
455
461
|
|
456
462
|
このメソッドはその型が常に固定長か、任意に拡張する構造になっているかどうかを返します。
|
457
463
|
|
458
|
-
|
464
|
+
``true`` であれば拡張構造であることを意味し、``false`` であれば固定長であることを意味します。
|
459
465
|
|
460
|
-
MD5
|
466
|
+
MD5 は固定長なので、``false`` を返します。
|
461
467
|
|
462
|
-
###
|
468
|
+
### ``.aref(buffer, offset)``
|
463
469
|
|
464
470
|
このメソッドは構造体のフィールドを参照した場合に呼ばれます。
|
465
471
|
|
466
|
-
|
472
|
+
``buffer`` はバイナリデータとしての String インスタンスです (※gogyou-0.2.4 からは Fiddle::Pointer や FFI::AbstractMemory インスタンスである可能性もあります)。
|
467
473
|
|
468
|
-
|
474
|
+
``offset`` はバッファ上における、フィールドの絶対位置をバイト値で表した整数値です。
|
469
475
|
|
470
476
|
戻り値はその構造体のフィールドに対するインスタンスを返します。
|
471
477
|
|
472
|
-
MD5
|
478
|
+
MD5 の場合、``buffer`` を元にした MD5 のインスタンスを返すべきです。
|
473
479
|
|
474
|
-
```ruby:ruby
|
480
|
+
``` ruby:ruby
|
475
481
|
class MD5
|
476
482
|
def self.aref(buffer, offset)
|
477
483
|
new(buffer.byteslice(offset, 16))
|
@@ -479,13 +485,13 @@ class MD5
|
|
479
485
|
end
|
480
486
|
```
|
481
487
|
|
482
|
-
もしもインスタンスの変更を反映させる
|
483
|
-
理由は
|
488
|
+
もしもインスタンスの変更を反映させる ``MD5#[]=`` のようなメソッドが必要であるならば、上述したメソッドではうまく行きません。
|
489
|
+
理由は ``buffer.byteslice`` によって ``buffer`` オブジェクトが切り離されてしまっているからです。
|
484
490
|
|
485
|
-
クラスを MD5
|
491
|
+
クラスを MD5 のデータが保持されるだけの構造から、``buffer`` と ``offset`` を保持する構造に変更する必要があります。
|
486
492
|
その上でメソッドの定義を変更します。
|
487
493
|
|
488
|
-
```ruby:ruby
|
494
|
+
``` ruby:ruby
|
489
495
|
class MD5
|
490
496
|
def self.aref(buffer, offset)
|
491
497
|
new(buffer, offset)
|
@@ -503,27 +509,27 @@ class MD5
|
|
503
509
|
end
|
504
510
|
```
|
505
511
|
|
506
|
-
###
|
512
|
+
### ``.aset(buffer, offset, data)``
|
507
513
|
|
508
514
|
このメソッドは構造体のフィールドへデータを代入した時に呼ばれます。
|
509
515
|
|
510
516
|
例えば、`structobj.field = data` のような場合です。
|
511
517
|
|
512
|
-
|
518
|
+
``buffer`` はバイナリデータとしての String インスタンスです (※gogyou-0.2.4 からは他のライブラリが提供するポインタオブジェクトである可能性もあります)。
|
513
519
|
|
514
|
-
|
520
|
+
``offset`` はバッファ上における、フィールドの絶対位置をバイト値で表した整数値です。
|
515
521
|
|
516
|
-
|
522
|
+
``data`` は代入する値です。
|
517
523
|
|
518
524
|
戻り値は無視されます。
|
519
525
|
|
520
|
-
|
526
|
+
``data`` に対してどのような値 (オブジェクト) を受け入れるのかを決定するのは、型情報を定義する側の問題となります。
|
521
527
|
|
522
528
|
MD5 の場合、最低でも MD5 インスタンスを受け入れるようにするべきです。
|
523
529
|
|
524
|
-
今回は MD5 インスタンスだけではなく 16バイトの文字列、そして
|
530
|
+
今回は MD5 インスタンスだけではなく 16バイトの文字列、そして ``nil`` を受け取れるようにしてみます。
|
525
531
|
|
526
|
-
```ruby:ruby
|
532
|
+
``` ruby:ruby
|
527
533
|
class MD5
|
528
534
|
def self.aset(buffer, offset, data)
|
529
535
|
case data
|
@@ -532,7 +538,7 @@ class MD5
|
|
532
538
|
when String
|
533
539
|
buffer.setbinary(offset, data.byteslice(0, 16))
|
534
540
|
when nil
|
535
|
-
buffer
|
541
|
+
buffer.setbinary(offset, ?0 * 16)
|
536
542
|
else
|
537
543
|
raise ArgumentError, "data is not a MD5, String or nil"
|
538
544
|
end
|
@@ -595,9 +601,88 @@ Z = Gogyou.struct {
|
|
595
601
|
```
|
596
602
|
|
597
603
|
|
604
|
+
## Use Fiddle::Pointer or FFI::AbstractMemory as buffer object of struct (構造体のバッファオブジェクトとして Fiddle::Pointer や FFI::AbstractMemory を使う)
|
605
|
+
|
606
|
+
構造体の実体となるバッファオブジェクトは、文字列だけではなく Fiddle::Pointer や FFI::AbstractMemory インスタンスを指定することも出来ます (gogyou-0.2.4 にて追加)。
|
607
|
+
|
608
|
+
Fiddle::Pointer を利用する場合は、"gogyou/fiddle" を ``require`` する必要があります。
|
609
|
+
この時 ``require "fiddle"`` されていなければ "gogyou/fiddle" の内部で ``require`` されます。
|
610
|
+
|
611
|
+
あとは作成した構造体に ``bind`` する時、任意の Fiddle::Pointer インスタンスを指定します。
|
612
|
+
|
613
|
+
``` ruby:ruby
|
614
|
+
require "gogyou/fiddle"
|
615
|
+
|
616
|
+
ptr = Fiddle::Pointer.malloc(YourStruct.bytesize)
|
617
|
+
data = YourStruct.bind(ptr)
|
618
|
+
```
|
619
|
+
|
620
|
+
同様に FFI::AbstractMemory (または派生クラス) を利用する場合は、"gogyou/ffi" を ``require`` する必要があります。
|
621
|
+
この時 ``require "ffi"`` されていなければ "gogyou/ffi" の内部で ``require`` されます。
|
622
|
+
|
623
|
+
あとは作成した構造体に ``bind`` する時、任意の FFI::AbstractMemory (または派生クラス) インスタンスを指定します。
|
624
|
+
|
625
|
+
``` ruby:ruby
|
626
|
+
require "gogyou/ffi"
|
627
|
+
|
628
|
+
ptr = FFI::MemoryPointer.new(YourStruct.bytesize)
|
629
|
+
data = YourStruct.bind(ptr)
|
630
|
+
```
|
631
|
+
|
632
|
+
|
598
633
|
## Demerit (短所)
|
599
634
|
|
600
635
|
* Can't be handled pointer
|
601
636
|
(ポインタが扱えない)
|
637
|
+
|
602
638
|
* The cost is high for reference/asignment from/to fields
|
603
639
|
(フィールドに対する参照・代入のコストが高い)
|
640
|
+
|
641
|
+
|
642
|
+
## Available typenames when definision struct (構造体定義の際に利用できる型名)
|
643
|
+
|
644
|
+
* C の型名
|
645
|
+
|
646
|
+
符号あり 符号なし
|
647
|
+
---- ----
|
648
|
+
char 型 char uchar
|
649
|
+
unsigned_char
|
650
|
+
short 型 short ushort
|
651
|
+
unsigned_short
|
652
|
+
int 型 int uint
|
653
|
+
unsigned_int
|
654
|
+
long 型 long ulong
|
655
|
+
unsigned_long
|
656
|
+
long long 型 longlong ulonglong
|
657
|
+
long_long unsigned_long_long
|
658
|
+
sizeof 型 ssize_t size_t
|
659
|
+
ポインタ整数型 intptr_t uintptr_t
|
660
|
+
float float N/A
|
661
|
+
double double N/A
|
662
|
+
|
663
|
+
* バイトオーダー環境依存・ビット数環境非依存
|
664
|
+
|
665
|
+
バイトオーダー環境依存 バイトオーダー反転
|
666
|
+
符号あり 符号なし 符号あり 符号なし
|
667
|
+
---- ---- ---- ----
|
668
|
+
8ビット整数型 int8_t uint8_t N/A N/A
|
669
|
+
16ビット整数型 int16_t uint16_t int16_swap uint16_swap
|
670
|
+
32ビット整数型 int32_t uint32_t int32_swap uint32_swap
|
671
|
+
64ビット整数型 int64_t uint64_t int64_swap uint64_swap
|
672
|
+
16ビット浮動小数点実数型 float16_t N/A float16_swap N/A
|
673
|
+
32ビット浮動小数点実数型 float32_t N/A float32_swap N/A
|
674
|
+
64ビット浮動小数点実数型 float64_t N/A float64_swap N/A
|
675
|
+
|
676
|
+
* バイトオーダー・ビット数環境非依存
|
677
|
+
|
678
|
+
ビッグエンディアン リトルエンディアン
|
679
|
+
符号あり 符号なし 符号あり 符号なし
|
680
|
+
---- ---- ---- ----
|
681
|
+
16ビット整数型 int16_be uint16_be int16_le uint16_le
|
682
|
+
24ビット整数型 int24_be uint24_be int24_le uint24_le
|
683
|
+
32ビット整数型 int32_be uint32_be int32_le uint32_le
|
684
|
+
48ビット整数型 int48_be uint48_be int48_le uint48_le
|
685
|
+
64ビット整数型 int64_be uint64_be int64_le uint64_le
|
686
|
+
16ビット浮動小数点実数型 float16_be N/A float16_le N/A
|
687
|
+
32ビット浮動小数点実数型 float32_be N/A float32_le N/A
|
688
|
+
64ビット浮動小数点実数型 float64_be N/A float64_le N/A
|
data/Rakefile
CHANGED
@@ -29,7 +29,10 @@ GEMSPEC = "#{GEMSTUB.name}.gemspec"
|
|
29
29
|
|
30
30
|
GEMSTUB.files += DOC + EXT + EXTCONF + BIN + LIB + SPEC + TEST + EXAMPLE + RAKEFILE + EXTRA
|
31
31
|
GEMSTUB.files.sort!
|
32
|
-
GEMSTUB.rdoc_options
|
32
|
+
if GEMSTUB.rdoc_options.nil? || GEMSTUB.rdoc_options.empty?
|
33
|
+
readme = %W(.md .markdown .rd .rdoc .txt #{""}).map { |ext| "README#{ext}" }.find { |m| DOC.find { |n| n == m } }
|
34
|
+
GEMSTUB.rdoc_options = %w(--charset UTF-8) + (readme ? %W(-m #{readme}) : [])
|
35
|
+
end
|
33
36
|
GEMSTUB.extra_rdoc_files += DOC + LIB + EXT.reject { |n| n.include?("/externals/") || !%w(.h .hh .c .cc .cpp .cxx).include?(File.extname(n)) }
|
34
37
|
GEMSTUB.extra_rdoc_files.sort!
|
35
38
|
|
data/gemstub.rb
CHANGED
@@ -18,8 +18,8 @@ The C-liked struct, union and multidimensional array definition are posible in r
|
|
18
18
|
EOS
|
19
19
|
s.license = "2-clause BSD License"
|
20
20
|
s.author = "dearblue"
|
21
|
-
s.email = "dearblue@users.
|
22
|
-
s.homepage = "
|
21
|
+
s.email = "dearblue@users.osdn.me"
|
22
|
+
s.homepage = "https://osdn.jp/projects/rutsubo/"
|
23
23
|
|
24
24
|
s.required_ruby_version = ">= 2.0"
|
25
25
|
s.add_development_dependency "rspec", "~> 2.14"
|