Ruby 4.0 リファレンスマニュアル

class Fiddle::MemoryView

[edit]

要約

メモリビュー のラッパークラスです。これを使うと、メモリビューのプロデューサの内部データに 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:
ブロックを渡さなかった場合に発生します。
new(target) -> Fiddle::MemoryViewRuby 3.0 から[permalink][rdoc][edit]

target がエクスポートしたメモリビューを保持し、 Ruby レイヤから各メンバにアクセスできるようにします。

[PARAM] target:
メモリビューをエクスポートするオブジェクトを指定します。
[EXCEPTION] ArgumentError:
メモリビューを取得できない場合に発生します。

インスタンスメソッド

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 が不正の場合に発生します。
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 を呼んだ後は空文字列になります。