種類
- 特異メソッド (9)
- インスタンスメソッド (8)
- クラス (3)
- 定数 (2)
クラス
-
Fiddle
:: Closure (1) -
Fiddle
:: Closure :: BlockCaller (1) -
Fiddle
:: Function (8) -
Fiddle
:: Handle (2) -
Fiddle
:: Pointer (2)
モジュール
- Fiddle (2)
-
Fiddle
:: Importer (3)
検索結果
先頭5件
-
Fiddle
:: Function (69007.0) -
C の関数を表すクラスです。
C の関数を表すクラスです。 -
Fiddle
:: Function . new(ptr , args , ret _ type , abi=Fiddle :: Function :: DEFAULT , name: nil) -> Fiddle :: Function (63715.0) -
ptr (関数ポインタ)から Fiddle::Function オブジェクトを 生成します。
...ptr (関数ポインタ)から Fiddle::Function オブジェクトを
生成します。
ptr には Fiddle::Handle から Fiddle::Handle#sym などで取りだした
関数ポインタ(を表す整数)、もしくは関数を指している
Fiddle::Pointer を渡します。
args、ret_type で関......* Fiddle::TYPE_VOID
* Fiddle::TYPE_VOIDP
* Fiddle::TYPE_CHAR
* Fiddle::TYPE_SHORT
* Fiddle::TYPE_INT
* Fiddle::TYPE_LONG
* Fiddle::TYPE_LONG_LONG
* Fiddle::TYPE_FLOAT
* Fiddle::TYPE_DOUBLE
* Fiddle::TYPE_INTPTR_T
* Fiddle::TYPE_UINTPTR_T
* Fiddle::TYPE_PTRDIFF_T
* Fiddle::T......E_SIZE_T
* Fiddle::TYPE_SSIZE_T
abi で呼出規約を指定します。
* Fiddle::Function::DEFAULT
* Fiddle::Function::STDCALL
のどちらかを指定します。
require 'fiddle'
h = Fiddle::Handle.new('libc.so.6')
func = Fiddle::Function.new(h.sym("strlen"), [Fiddle::TYPE_VOID... -
Fiddle
:: Function # ptr -> Integer | Fiddle :: Function (63328.0) -
関数ポインタを返します。
...関数ポインタを返します。
Fiddle::Function.new の第1引数として指定したものを返します。... -
Fiddle
:: Function # call(*args) -> Integer|DL :: CPtr|nil (63043.0) -
関数を呼び出します。
...関数を呼び出します。
Fiddle::Function.new で指定した引数と返り値の型に基いて
Ruby のオブジェクトを適切に C のデータに変換して C の関数を呼び出し、
その返り値を Ruby のオブジェクトに変換して返します。
引数の変換は......以下の通りです。
: void* (つまり任意のポインタ型)
nil ならば C の NULL に変換されます
Fiddle::Pointer は保持している C ポインタに変換されます。
文字列であればその先頭ポインタになります。
IO オブジェクトであれば......渡されます。
整数であればそれがアドレスとみなされます。
to_ptr を持っているならば、それを呼びだし Fiddle::Pointer に
変換したものを用います。
to_i を持っているならば、それを呼びだし結果の整数を
アドレスと... -
Fiddle
:: Function # abi -> Integer (63025.0) -
呼出規約を返します。
...呼出規約を返します。
@see Fiddle::Function.new... -
Fiddle
:: Function # name -> nil | String (63025.0) -
関数の名前を返します。
...関数の名前を返します。
名前が定義されていない場合は nil を返します。
@see Fiddle::Function.new... -
Fiddle
:: Function # to _ i -> Integer (63025.0) -
関数ポインタのアドレスを整数で返します。
...関数ポインタのアドレスを整数で返します。
@see Fiddle::Function#ptr... -
Fiddle
:: Function :: DEFAULT -> Integer (63025.0) -
デフォルトの呼出規約を表します。
...デフォルトの呼出規約を表します。
@see Fiddle::Function.new... -
Fiddle
:: Function :: STDCALL -> Integer (63025.0) -
Windows の stdcall 呼出規約を表します。
...Windows の stdcall 呼出規約を表します。
stdcall 呼出規約を持つ環境でのみ定義されます。
@see Fiddle::Function.new... -
Fiddle
:: Importer # [](name) -> Fiddle :: Function|nil (355.0) -
Fiddle::Importer#extern でインポートした関数の Fiddle::Function オブジェクト を返します。
...Fiddle::Importer#extern でインポートした関数の
Fiddle::Function オブジェクト
を返します。
name という名前の関数が存在しない場合は nil を返します。
@param name 関数の名前の文字列... -
Fiddle
:: Importer # bind(signature , *opts) { . . . } -> Fiddle :: Function (343.0) -
Ruby のブロックを C の関数で wrap し、その関数をモジュールに インポートします。
...インポートします。
これでインポートされた関数はモジュール関数として定義されます。
また、Fiddle::Importer#[] で Fiddle::Function オブジェクトとして
取り出すことができます。
signature で関数の名前とシネグチャを指定し......す。
@return インポートした関数を表す Fiddle::Function オブジェクトを返します。
@param signature 関数の名前とシネグチャ
@param opts オプション
例
require 'fiddle/import'
module M
extend Fiddle::Importer
dlload "libc.so.6"
typealias "si......are(void*, void*)"){|px, py|
x = px.to_s(Fiddle::SIZEOF_INT).unpack("i!")
y = py.to_s(Fiddle::SIZEOF_INT).unpack("i!")
x <=> y
}
end
data = [32, 180001, -13, -1, 0, 49].pack("i!*")
M.qsort(Fiddle::Pointer[data], 6, Fiddle::SIZEOF_INT, M["compare"])
p data.unpack("i!... -
Fiddle
:: Closure . new(ret , args , abi=Fiddle :: Function :: DEFAULT) -> Fiddle :: Closure (328.0) -
そのクラスの call メソッドを呼びだすような Fiddle::Closure オブジェクトを返します。
...そのクラスの call メソッドを呼びだすような
Fiddle::Closure オブジェクトを返します。
args、ret で関数の引数と返り値の型を指定します。
指定は Fiddle::Function.new と同様なので、そちら
を参照してください。
@param ret 返り値... -
Fiddle
:: Closure :: BlockCaller . new(ret , args , abi=Fiddle :: Function :: DEFAULT) { . . . } -> Fiddle :: Closure :: BlockCaller (328.0) -
Ruby のブロックを呼び出す Fiddle::Closure オブジェクトを返します。
...Ruby のブロックを呼び出す Fiddle::Closure オブジェクトを返します。
args、ret で関数の引数と返り値の型を指定します。
指定は Fiddle::Function.new と同様なので、そちら
を参照してください。
@param ret 返り値の型
@param args 引数... -
Fiddle
:: Importer # extern(signature , *opts) -> Fiddle :: Function (325.0) -
Fiddle::Importer#dlload で取り込んだライブラリから C の関数をインポートします。
...
Fiddle::Importer#dlload で取り込んだライブラリから
C の関数をインポートします。
インポートした関数はそのモジュールにモジュール関数として定義されます。
signature で関数の名前とシネグチャを指定します。例えば
"int str......す。
@return インポートした関数を表す Fiddle::Function オブジェクトを返します。
@param signature 関数の名前とシネグチャ
@param opts オプション
例
require 'fiddle/import'
module M
extern Fiddle::Importer
dlload "libc.so.6"
extern "int s... -
Fiddle
. last _ error -> Integer (55.0) -
最後に Fiddle::Function#call で C の関数を呼び出した 結果設定された errno を返します。
...最後に Fiddle::Function#call で C の関数を呼び出した
結果設定された errno を返します。
この値はスレッドローカルです。... -
Fiddle
. win32 _ last _ error -> Integer (55.0) -
最後に Fiddle::Function#call で C の関数を呼び出した 結果設定された errno を返します。
...最後に Fiddle::Function#call で C の関数を呼び出した
結果設定された errno を返します。
このメソッドは Windows 環境でのみ定義されています。
この値はスレッドローカルです。... -
Fiddle
:: Closure (25.0) -
コールバック関数を表すクラスです。
...ドを定義し、
new でオブジェクトを生成することで利用します。
require 'fiddle'
include Fiddle # TYPE_* を使うために include する
class Compare < Fiddle::Closure
# qsort の比較関数は 型が int(*)(void*, void*) であるため、
# このメ......字の文字列に変換している
def call(x, y)
x.to_s(1) <=> y.to_s(1)
end
end
libc = DL.dlopen("/lib/libc.so.6")
qs = Fiddle::Function.new(libc["qsort"],
[TYPE_VOIDP, TYPE_INT, TYPE_INT, TYPE_VOIDP],
TYPE_VOID)
s......'fiddle'
include Fiddle # TYPE_* を使うために include する
compare = Class.new(Fiddle::Closure){
def call(x, y)
x.to_s(1) <=> y
end
}.new(TYPE_INT, [TYPE_VOIDP, TYPE_VOIDP])
単に Ruby のブロックを C の(コールバック)関数に変換したい場合は
Fiddle:... -
Fiddle
:: Closure :: BlockCaller (25.0) -
Ruby のブロックをラップしたコールバック関数を表すクラスです。
...ラスです。
require 'fiddle'
include Fiddle
libc = Fiddle.dlopen("/lib/libc.so.6")
qs = Fiddle::Function.new(libc["qsort"],
[TYPE_VOIDP, TYPE_INT, TYPE_INT, TYPE_VOIDP],
TYPE_VOID)
compare = Fiddle::Closure::BlockCaller.new(TYPE... -
Fiddle
:: Handle . new(lib , flags=Fiddle :: Handle :: RTLD _ LAZY|Fiddle :: Handle :: RTLD _ GLOBAL) -> Fiddle :: Handle (25.0) -
ライブラリ lib をオープンし、Handle オブジェクトとして返します。
...flags で dlopen(3) の第2引数として渡すフラグを指定できます。
Fiddle::Handle::RTLD_LAZY、Fiddle::Handle::RTLD_NOW
のどちらか一方を指定する必要があり、
またそれに Fiddle::Handle::RTLD_GLOBAL と OR を取ることができます。
詳しい意味は man......@param flags フラグ
@raise Fiddle::DLError ライブラリのオープンに失敗した場合に発生します
例:
require 'fiddle'
h = Fiddle::Handle.new('libc.so.6')
i = h.sym('strlen')
func = Fiddle::Function.new(i, [Fiddle::TYPE_VOIDP], Fiddle::TYPE_INT)
p func.call("uxyz")... -
Fiddle
:: Handle . new(lib , flags=Fiddle :: Handle :: RTLD _ LAZY|Fiddle :: Handle :: RTLD _ GLOBAL) {|handle| . . . } -> Fiddle :: Handle (25.0) -
ライブラリ lib をオープンし、Handle オブジェクトとして返します。
...flags で dlopen(3) の第2引数として渡すフラグを指定できます。
Fiddle::Handle::RTLD_LAZY、Fiddle::Handle::RTLD_NOW
のどちらか一方を指定する必要があり、
またそれに Fiddle::Handle::RTLD_GLOBAL と OR を取ることができます。
詳しい意味は man......@param flags フラグ
@raise Fiddle::DLError ライブラリのオープンに失敗した場合に発生します
例:
require 'fiddle'
h = Fiddle::Handle.new('libc.so.6')
i = h.sym('strlen')
func = Fiddle::Function.new(i, [Fiddle::TYPE_VOIDP], Fiddle::TYPE_INT)
p func.call("uxyz")... -
Fiddle
:: Pointer . malloc(size , free = nil) -> Fiddle :: Pointer (25.0) -
与えられた長さ size のメモリ領域を確保し、それを表す Pointer オブジェクトを生成して返します。
...Pointer オブジェクトを生成して返します。
@param size 確保したいメモリ領域のサイズを整数で指定します。
@param free GC 時に呼ばれる Pointer オブジェクトの free 関数を
Fiddle::Function オブジェクトか整数で指定します。... -
Fiddle
:: Pointer . new(addr , size = 0 , free = nil) -> Fiddle :: Pointer (25.0) -
与えられた addr が指すメモリ領域を表す Pointer オブジェクトを生成して返します。
...トが指すアドレスを整数で指定します。
@param size 生成する Pointer オブジェクトが指すメモリ領域のサイズを整数で指定します。
@param free GC 時に呼ばれる free 関数を Fiddle::Function オブジェクトか
整数で指定します。...