Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > dlライブラリ > DL::PtrDataクラス

class DL::PtrData

クラスの継承リスト: DL::PtrData < Object < Kernel

要約

メモリ領域を表すクラスです。C 言語のポインタに相当します。

特異メソッド

定義 説明
malloc(size, free = nil) -> DL::PtrData

サイズが size であるメモリ領域を確保し、それを指す DL::PtrData を返します。

new(addr, size = 0, free = nil) -> DL::PtrData

アドレス addr を指すポインタに相当する PtrData オブジェクトを返します。

インスタンスメソッド

定義 説明
self + n -> DL::PtrData

自身のアドレスに n バイトを足した新しい PtrData オブジェクトを返します。

ptr -> DL::PtrData
+ -> DL::PtrData

自身の指す値を PtrData にして返します。 自身の指す値はポインタであると仮定します。 C 言語におけるポインタのポインタに対する間接参照 *p と同じです。

self - n -> DL::PtrData

自身のアドレスから n バイトを引いた新しい PtrData オブジェクトを返します。

ref -> DL::PtrData
- -> DL::PtrData

自身を指す PtrData オブジェクトを返します。 C 言語におけるポインタへのアドレス演算子の適用 &p と同じです。

self <=> other -> Integer

ポインタの指すアドレスの大小を比較します。

self == other -> bool
eql?(other) -> bool

ポインタの指すアドレスが同一かどうかを判定します。

self[key] -> object

構造体または共用体メンバ key の値を返します。返り値は DL::PtrData#struct! または DL::PtrData#union! によって定義された型により、Ruby のオブジェクトへ 変換されたものです。

self[offset, len = 0] -> String

自身の指すアドレスに offset バイトを足したメモリ領域の先頭 len バイトを複製し、 文字列として返します。(self + offset).to_s(len) と同等です。 offset + len が自身のサイズより小さいかを検証しません。

self[key] = val

構造体または共用体メンバ key の値を val にします。

self[offset] = str

自身の指すアドレスに offset バイトを足したメモリ領域に 文字列 str をコピーします。コピー先の領域が str のサイズより大きいか検証しません。

self[offset, len] = str

自身の指すアドレスに offset バイトを足したメモリ領域の先頭 len バイトに 文字列 str をコピーします。str のサイズが len より小さい場合は、残りの領域を 0 で埋めます。 コピー先の領域が len より大きいか検証しません。

data_type -> [object]

使ってはいけません。

define_data_type -> nil

使ってはいけません。

free -> DL::Symbol

GC がメモリを解放するのに使用するシンボルオブジェクト sym を返します。 sym は普通 PtrData#free= や PtrData.new によって設定されます。

free=(sym)

GC が自身を解放するのに使う関数を DL::Symbol で指定します。

null? -> bool

自身が NULL なら true を返します。そうでないなら false を返します。

size -> Integer
size=(s)

自身の指す領域のサイズを返します。 s を指定した場合は、自身の指す領域のサイズは s であると設定します。 ただし、自身が指すメモリのサイズが s になるように再割り当てはしません。

struct!(type, *members) -> nil

構造体のメンバにメソッド DL::PtrData#[] でアクセスできるようにします。 C 言語における構造体のポインタへのキャストと同じです。

to_a(type) -> [object]
to_a(type, size) -> [object]

自身が指す領域から type で指定された型の配列を複製して返します。 type は 'S','P','I','L','D' そして 'F' のいずれかです。 size を指定した場合は、自身が指す領域からサイズが size である配列を 複製します。

to_i -> Integer

自身が指すアドレスを整数で返します。

to_s -> String
to_s(len) -> String

自身が指す領域から長さ len の文字列を複製して返します。

to_str
union!(type, *members) -> nil

共用体のメンバにメソッド DL::PtrData#[] でアクセスできるようにします。 C 言語における共用体のポインタへのキャストと同じです。

継承したメソッド

=== =~ __id__ __send__ _dump class clone dclone display enum_for equal? extend freeze frozen? hash initialize initialize_copy inspect instance_eval instance_exec instance_of? instance_variable_defined? instance_variable_get instance_variable_set instance_variables is_a? marshal_dump marshal_load method method_missing methods nil? pretty_inspect pretty_print pretty_print_cycle pretty_print_inspect pretty_print_instance_variables private_methods protected_methods public_methods remove_instance_variable respond_to? singleton_method_added singleton_method_removed singleton_method_undefined singleton_methods taint tainted? tap to_ary to_hash to_int to_io to_proc to_regexp to_yaml to_yaml_properties to_yaml_style untaint