種類
- インスタンスメソッド (132)
- ライブラリ (36)
- モジュール (12)
ライブラリ
-
fiddle
/ import (144)
モジュール
-
Fiddle
:: Importer (132)
キーワード
- [] (12)
- bind (12)
-
create
_ value (12) - dlload (12)
- extern (12)
- fiddle (12)
-
fiddle
/ import (12) -
fiddle
/ types (12) -
import
_ symbol (12) - sizeof (12)
- struct (12)
- typealias (12)
- union (12)
- value (12)
検索結果
先頭5件
-
Fiddle
:: Importer (24000.0) -
C の関数をモジュールにインポートするためのモジュールです。
...の関数をモジュールにインポートするためのモジュールです。
対象となるモジュールに Object#extend することで、
そのモジュールにインポートできるようになります。
使いかたは fiddle や fiddle/import を参照してください。... -
Fiddle
:: Importer # import _ symbol(name) -> Fiddle :: Pointer (12200.0) -
取り込んだライブラリからシンボルをインポートします。
...取り込んだライブラリからシンボルをインポートします。
返り値はシンボルがロードされたメモリのアドレスを持つ Fiddle::Pointer
オブジェクトを返します。
@param name シンボル名(文字列)... -
Fiddle
:: Importer # typealias(new , orig) -> () (9124.0) -
extern や struct で利用する型の別名を定義します。
...extern や struct で利用する型の別名を定義します。
@param new 別名(文字列)
@param orig 別名を付けたい型の名前(文字列)
@see Fiddle::Importer#extern, Fiddle::Importer#sizeof,
Fiddle::Importer#struct, Fiddle::Importer#union... -
Fiddle
:: Importer # create _ value(type , val = nil) -> Fiddle :: CStruct (6134.0) -
型が type で要素名が "value" であるような構造体を 定義(Fiddle::Importer#struct)し、 その構造体のメモリを Fiddle::CStruct#malloc で確保し、 確保したメモリを保持しているオブジェクトを返します。
...型が type で要素名が "value" であるような構造体を
定義(Fiddle::Importer#struct)し、
その構造体のメモリを Fiddle::CStruct#malloc で確保し、
確保したメモリを保持しているオブジェクトを返します。
type は "int", "void*" といった文字列......された構造体に
その値を代入します。
@param type 型を表す文字列
@param val 構造体に確保される初期値
例
require 'fiddle/import'
module M
extend Fiddle::Importer
end
v = M.value("int", 32)
p v.value # => 32
v.value = 48
p v.value # => 48... -
Fiddle
:: Importer # value(type , val = nil) -> Fiddle :: CStruct (6134.0) -
型が type で要素名が "value" であるような構造体を 定義(Fiddle::Importer#struct)し、 その構造体のメモリを Fiddle::CStruct#malloc で確保し、 確保したメモリを保持しているオブジェクトを返します。
...型が type で要素名が "value" であるような構造体を
定義(Fiddle::Importer#struct)し、
その構造体のメモリを Fiddle::CStruct#malloc で確保し、
確保したメモリを保持しているオブジェクトを返します。
type は "int", "void*" といった文字列......された構造体に
その値を代入します。
@param type 型を表す文字列
@param val 構造体に確保される初期値
例
require 'fiddle/import'
module M
extend Fiddle::Importer
end
v = M.value("int", 32)
p v.value # => 32
v.value = 48
p v.value # => 48... -
Fiddle
:: Importer # extern(signature , *opts) -> Fiddle :: Function (6122.0) -
Fiddle::Importer#dlload で取り込んだライブラリから C の関数をインポートします。
...e::Importer#dlload で取り込んだライブラリから
C の関数をインポートします。
インポートした関数はそのモジュールにモジュール関数として定義されます。
signature で関数の名前とシネグチャを指定します。例えば
"int strcmp(ch......す。
opts には :stdcall もしくは :cdecl を渡すことができ、
呼出規約を明示することができます。
@return インポートした関数を表す Fiddle::Function オブジェクトを返します。
@param signature 関数の名前とシネグチャ
@param opts オプ......ション
例
require 'fiddle/import'
module M
extern Fiddle::Importer
dlload "libc.so.6"
extern "int strcmp(char*, char*)"
end
M.strcmp("abc", "abc") # => 0
M.strcmp("abc", "abd") # => -1... -
Fiddle
:: Importer # bind(signature , *opts) { . . . } -> Fiddle :: Function (6118.0) -
Ruby のブロックを C の関数で wrap し、その関数をモジュールに インポートします。
...Ruby のブロックを C の関数で wrap し、その関数をモジュールに
インポートします。
これでインポートされた関数はモジュール関数として定義されます。
また、Fiddle::Importer#[] で Fiddle::Function オブジェクトとして
取り出す......ば
"int compare(void*, void*)" のように指定します。
opts には :stdcall もしくは :cdecl を渡すことができ、
呼出規約を明示することができます。
@return インポートした関数を表す Fiddle::Function オブジェクトを返します。
@param signatu......グチャ
@param opts オプション
例
require 'fiddle/import'
module M
extend Fiddle::Importer
dlload "libc.so.6"
typealias "size_t", "unsigned long"
extern "int qsort(void*, size_t, size_t, void*)"
bind("int compare(void*, void*)"){|px, py|
x = px.to_s(Fid... -
fiddle
/ import (6054.0) -
fiddle ライブラリのための高レベルインターフェースを提供するライブラリです。
...のための高レベルインターフェースを提供するライブラリです。
通常は fiddle ライブラリを使わずこの fiddle/import ライブラリを使います。
主な使い方は fiddle も参照してください。
=== 高度な使用法
==== ○○の配列を関数......れを呼び出したい場合は以下のように Array#pack を使用します。
require 'fiddle/import'
module M
extend Fiddle::Importer
dlload './libsum.so'
extern 'double sum(double*, int)'
end
p M.sum([2.0, 3.0, 4.0].pack('d*'), 3) #=> 9.0
また与えられた文字列の......以下のように Array#pack を使用します。
require 'fiddle/import'
module M
extend Fiddle::Importer
dlload './libstrfirst.so'
extern 'void first_char(char **, char *, int)'
end
buf = '111'
M.first_char(['Abc', 'Def', 'Ghi'].pack('p*'), buf, 3)
p buf #=> 'ADG'
==== Ruby... -
Fiddle
:: Importer # sizeof(t) -> Integer (6036.0) -
C における sizeof(t) の値を返します。
...った値を返します。
Fiddle::Importer#struct で定義した
構造体クラスを渡すと、その構造体のサイズを返します。
Fiddle::Importer#union で定義した共用体クラスも同様です。
t がクラスの場合、t が to_ptr というインスタンスメソッ...... Pointer[t].size を返します。
@param t サイズを計算する対象
@raise Fiddle::DLError t として文字列を渡し、それが表している型を Fiddle が知らなかった
場合に発生します
例:
require 'fiddle/import'
module M
extend Fiddle::Importer......Timeval = struct(["long tv_sec", "long tv_usec"])
p sizeof("char") # => 1
p sizeof("void*") # => 8
p sizeof(Timeval) # => 16
end...
