lib/gogyou.rb in gogyou-0.2.3 vs lib/gogyou.rb in gogyou-0.2.4
- old
+ new
@@ -1,10 +1,10 @@
#vim: set fileencoding:utf-8
# gogyou.rb
-# - AUTHOR: dearblue <dearblue@users.sourceforge.jp>
-# - WEBSIZE: http://sourceforge.jp/projects/rutsubo/
+# - AUTHOR: dearblue <dearblue@users.osdn.me>
+# - WEBSIZE: https://osdn.jp/projects/rutsubo/
# - LICENSE: same as 2-clause BSD License
#--
# this space block is for rdoc. #
# #
@@ -22,48 +22,67 @@
#
# gogyou は構造体や共用体、多次元配列 (もどき) を扱うためのライブラリです。
#
# 原始的な型情報は Gogyou::Primitives で定義してあり、struct や union メソッド内で利用できる型を次の表に示します:
#
-# ==== C 標準型
-# 符号あり 符号なし
-# ---- ----
-# char 型 char uchar
-# unsigned_char
-# short 型 short ushort
-# unsigned_short
-# int 型 int uint
-# unsigned_int
-# long 型 long ulong
-# unsigned_long
-# long long 型 longlong ulonglong
-# long_long unsigned_long_long
-# sizeof 型 ssize_t size_t
-# ポインタ整数型 intptr_t uintptr_t
+# ==== 型名
#
-# バイトオーダー環境依存 バイトオーダー反転
-# 符号あり 符号なし 符号あり 符号なし
-# ---- ---- ---- ----
-# 8ビット整数型 int8_t uint8_t N/A N/A
-# 16ビット整数型 int16_t uint16_t int16_swap uint16_swap
-# 32ビット整数型 int32_t uint32_t int32_swap uint32_swap
-# 64ビット整数型 int64_t uint64_t int64_swap uint64_swap
-# 32ビット浮動小数点数型 float N/A float_swap N/A
-# 64ビット浮動小数点数型 double N/A double_swap N/A
+# * C の型名
+# 符号あり 符号なし
+# ---- ----
+# char 型 char uchar
+# unsigned_char
+# short 型 short ushort
+# unsigned_short
+# int 型 int uint
+# unsigned_int
+# long 型 long ulong
+# unsigned_long
+# long long 型 longlong ulonglong
+# long_long unsigned_long_long
+# sizeof 型 ssize_t size_t
+# ポインタ整数型 intptr_t uintptr_t
+# float float N/A
+# double double N/A
#
-# ビッグエンディアン リトルエンディアン
-# 符号あり 符号なし 符号あり 符号なし
-# ---- ---- ---- ----
-# 16ビット整数型 int16_be uint16_be int16_le uint16_le
-# 24ビット整数型 int24_be uint24_be int24_le uint24_le
-# 32ビット整数型 int32_be uint32_be int32_le uint32_le
-# 48ビット整数型 int48_be uint48_be int48_le uint48_le
-# 64ビット整数型 int64_be uint64_be int64_le uint64_le
-# 32ビット浮動小数点数型 float_be N/A float_le N/A
-# 64ビット浮動小数点数型 double_be N/A double_le N/A
+# * バイトオーダー環境依存・ビット数環境非依存
+# バイトオーダー環境依存 バイトオーダー反転
+# 符号あり 符号なし 符号あり 符号なし
+# ---- ---- ---- ----
+# 8ビット整数型 int8_t uint8_t N/A N/A
+# 16ビット整数型 int16_t uint16_t int16_swap uint16_swap
+# 32ビット整数型 int32_t uint32_t int32_swap uint32_swap
+# 64ビット整数型 int64_t uint64_t int64_swap uint64_swap
+# 16ビット浮動小数点実数型 float16_t N/A float16_swap N/A
+# 32ビット浮動小数点実数型 float32_t N/A float32_swap N/A
+# 64ビット浮動小数点実数型 float64_t N/A float64_swap N/A
#
+# * バイトオーダー・ビット数環境非依存
+# ビッグエンディアン リトルエンディアン
+# 符号あり 符号なし 符号あり 符号なし
+# ---- ---- ---- ----
+# 16ビット整数型 int16_be uint16_be int16_le uint16_le
+# 24ビット整数型 int24_be uint24_be int24_le uint24_le
+# 32ビット整数型 int32_be uint32_be int32_le uint32_le
+# 48ビット整数型 int48_be uint48_be int48_le uint48_le
+# 64ビット整数型 int64_be uint64_be int64_le uint64_le
+# 16ビット浮動小数点実数型 float16_be N/A float16_le N/A
+# 32ビット浮動小数点実数型 float32_be N/A float32_le N/A
+# 64ビット浮動小数点実数型 float64_be N/A float64_le N/A
#
+# * 固定小数点実数型 (ビット数環境非依存)
+#
+# バイトオーダー環境依存 バイトオーダー環境非依存
+#
+# 16ビット固定小数点実数型(小数部8ビット) fixed16q8_t fixed16q8_swap fixed16q8_be fixed16q8_le
+# 32ビット固定小数点実数型(小数部6ビット) fixed32q6_t fixed32q6_swap fixed32q6_be fixed32q6_le
+# 32ビット固定小数点実数型(小数部8ビット) fixed32q8_t fixed32q8_swap fixed32q8_be fixed32q8_le
+# 32ビット固定小数点実数型(小数部12ビット) fixed32q12_t fixed32q12_swap fixed32q12_be fixed32q12_le
+# 32ビット固定小数点実数型(小数部16ビット) fixed32q16_t fixed32q16_swap fixed32q16_be fixed32q16_le
+# 32ビット固定小数点実数型(小数部24ビット) fixed32q24_t fixed32q24_swap fixed32q24_be fixed32q24_le
+#
+#
# ==== 利用者定義の型情報
#
# 型情報を利用者が定義して利用することが出来ます。
#
# 型情報オブジェクトは、次のメソッドを必要とします:
@@ -132,25 +151,32 @@
# * #size - フィールドの要素数。配列の場合はその要素数。
# * #bytesize - バイトサイズを返す。可変長配列を含んでいる場合は、現在の buffer と offset から計算された最大値を返す。
# * #\<field> / #\<field>= - 構造体・共用体のフィールドへの参照・代入メソッド。配列の場合は定義されない。
# * #[] / []= - 配列の要素への参照・代入メソッド。構造体・共用体の場合は定義されない。
#
+# * 構造体のメモリイメージとなるバッファオブジェクト
+#
+# 構造体のバイト列を表現するオブジェクトのことです。
+#
+# * String
+# * Fiddle::Pointer
+#
module Gogyou
Gogyou = self
require_relative "gogyou/version"
require_relative "gogyou/typespec"
- require_relative "gogyou/mixin"
+ require_relative "gogyou/extensions"
require_relative "gogyou/model"
require_relative "gogyou/primitives"
require_relative "gogyou/accessor"
class Model
TYPEMAP = {}
Gogyou::Primitives.constants.each do |n|
prim = Gogyou::Primitives.const_get(n)
- next unless prim.kind_of?(Gogyou::Primitives::Primitive)
+ next unless prim.kind_of?(Gogyou::Primitive)
TYPEMAP[prim.name.to_sym] = prim
end
TYPEMAP[:unsigned_char] = TYPEMAP[:uchar]
TYPEMAP[:unsigned_short] = TYPEMAP[:ushort]