要約
メモリビュー のラッパークラスです。これを使うと、メモリビューのプロデューサの内部データに Ruby レイヤからアクセスできます。
例えば Fiddle::Pointer はメモリビュープロデューサなので、 Fiddle::MemoryView でメモリビューをエクスポートさせることができます。
例ptr = Fiddle::Pointer["Hello, MemoryView"]
Fiddle::MemoryView.export(ptr) do |view|
view.obj # => ptr
view.byte_size # => 17
view.readonly? # => true
view.format # => nil
view.item_size # => 1
view.ndim # => 1
view.shape # => nil
view.strides # => nil
view.sub_offsets # => nil
view.to_s # => "Hello, MemoryView"
view[0] # => 72 ("H")
view[1] # => 101 ("e")
view[16] # => 119 ("w")
end
ポインタには shape などがないため、 1 次元のバイト列としてエクスポートされています。
目次
- 特異メソッド
- インスタンスメソッド
特異メソッド
export(target) {|view| ... } -> objectRuby 3.0 から[permalink][rdoc][edit]-
targetがエクスポートしたメモリビューを示す Fiddle::MemoryView を作り、ブロック引数として渡します。ブロックが終了すると #release を呼び、メモリビューを解放します。ブロックの結果を返します。
- [PARAM]
target: - メモリビューをエクスポートするオブジェクトを指定します。
- [EXCEPTION]
ArgumentError: - メモリビューを取得できない場合に発生します。
- [EXCEPTION]
LocalJumpError: - ブロックを渡さなかった場合に発生します。
- [PARAM]
new(target) -> Fiddle::MemoryViewRuby 3.0 から[permalink][rdoc][edit]-
targetがエクスポートしたメモリビューを保持し、 Ruby レイヤから各メンバにアクセスできるようにします。- [PARAM]
target: - メモリビューをエクスポートするオブジェクトを指定します。
- [EXCEPTION]
ArgumentError: - メモリビューを取得できない場合に発生します。
- [PARAM]
インスタンスメソッド
self[i, j, k, ...] -> Integer | Float | [Integer] | [Float] | nilRuby 3.0 から[permalink][rdoc][edit]-
多次元配列の 1 次元目のインデックスが
i、 2次元目のインデックスがj、 3次元目のインデックスがk、……の場所にある要素を返します。format が複数の テンプレート文字 からなる場合は、文字数の長さの配列になります。 1 文字の場合は要素そのものが返ります。
#release を呼んだ後は
nilになります。- [PARAM]
i, j, k, ...: - 各次元のインデックスを指定します。
- [EXCEPTION]
IndexError: - 引数の数が ndim と異なる場合に発生します。
- [EXCEPTION]
RuntimeError: - メモリビューの format が不正の場合に発生します。
- [PARAM]
byte_size -> Integer | nilRuby 3.0 から[permalink][rdoc][edit]-
データのバイト数を返します。
#release を呼んだ後は
nilになります。 format -> String | nilRuby 3.0 から[permalink][rdoc][edit]-
要素のフォーマットを表す文字列を返します。詳細は メモリビュー を参照してください。
設定されていない場合は
nilを返し、バイト列を表す"C"と同じ意味になります。#release を呼んだ後は
nilになります。 item_size -> Integer | nilRuby 3.0 から[permalink][rdoc][edit]-
各要素のバイト数を返します。
#release を呼んだ後は
nilになります。 ndim -> Integer | nilRuby 3.0 から[permalink][rdoc][edit]-
次元数を返します。
#release を呼んだ後は
nilになります。 obj -> object | nilRuby 3.0 から[permalink][rdoc][edit]-
メモリビュー経由でメモリをエクスポートしている元のオブジェクトを返します。
#release を呼んだ後は
nilになります。 readonly? -> bool | nilRuby 3.0 から[permalink][rdoc][edit]-
データが読み取り専用であれば
true、書き込み可能であればfalseを返します。#release を呼んだ後は
nilになります。 release -> nilRuby 3.0 から[permalink][rdoc][edit]-
メモリビューを解放します。
shape -> [Integer] | nilRuby 3.0 から[permalink][rdoc][edit]-
各次元の要素数を示す、長さ ndim の配列を返します。
ndimが 1 の時はnilになることがあります。#release を呼んだ後は
nilになります。 strides -> [Integer] | nilRuby 3.0 から[permalink][rdoc][edit]-
それぞれの次元で次の要素まで進むのに何バイトスキップすればよいかを示す、長さ ndim の配列を返します。各要素は負数になることもあります。メモリビューが行指向の contiguous (連続配置)な配列の場合は
nilになることもあります。#release を呼んだ後は
nilになります。 sub_offsets -> [Integer] | nilRuby 3.0 から[permalink][rdoc][edit]-
メモリビューがネストされた配列をエクスポートする場合に、それぞれの次元におけるオフセットからなる、長さ ndim の配列を返します。メモリビューが平坦な配列の場合は
nilになることがあります。#release を呼んだ後は
nilになります。 to_s -> StringRuby 3.0 から[permalink][rdoc][edit]-
データを、エンコーディングが ASCII-8BIT の
Stringとして返します。この文字列はメモリ領域をメモリビューと共有し、データをコピーしません。
#release を呼んだ後は空文字列になります。