るりまサーチ

最速Rubyリファレンスマニュアル検索!
33件ヒット [1-33件を表示] (0.097秒)
トップページ > クエリ:l[x] > クエリ:unpack[x] > クエリ:fiddle/import[x]

別のキーワード

  1. socket unpack_sockaddr_in
  2. socket unpack_sockaddr_un
  3. addrinfo ip_unpack
  4. installer unpack
  5. option unpack

ライブラリ

モジュール

キーワード

検索結果

fiddle/import (44042.0)

fiddle ライブラリのための高レベルインターフェースを提供するライブラリです。

...fiddle ライブラリのための高レベルインターフェースを提供するライブラリです。

通常は fiddle ライブラリを使わずこの fiddle/import ライブラリを使います。

主な使い方は fiddle も参照してください。

=== 高度な使用法

====...
...た長さ len の double の配列の和を計算する関数
double sum(double *arry, int len);
があったとします。これを呼び出したい場合は以下のように Array#pack を使用します。

require 'fiddle/import'
module M
extend Fiddle::Importer
dlload './libsum.so'...
...Fiddle.dlunwrap(b.ptr.to_i)
a0 <=> b0
}
extern 'void qsort(void *, int, int, void *)'
end

buff = [Time.at(1), Time.now, Time.at(100), Time.at(10)]
a = buff.map{|t| Fiddle.dlwrap(t)}.pack('l!*')
M.qsort(a, buff.size, Fiddle::SIZEOF_VOIDP, M::QsortCallback)
p a.unpack('l!*')...

Fiddle::Importer#bind(signature, *opts) { ... } -> Fiddle::Function (11124.0)

Ruby のブロックを C の関数で wrap し、その関数をモジュールに インポートします。

...た、Fiddle::Importer#[] で Fiddle::Function オブジェクトとして
取り出すことができます。

signature で関数の名前とシネグチャを指定します。例えば
"int compare(void*, void*)" のように指定します。

opts には :stdcall もしくは :cdecl を渡...
...関数を表す Fiddle::Function オブジェクトを返します。

@param signature 関数の名前とシネグチャ
@param opts オプション


require 'fiddle/import'

module M
extend Fiddle::Importer
dlload "libc.so.6"
typealias "size_t", "unsigned long"
extern "in...
..., 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!*") # => [-13, -1, 0, 3...

fiddle (6048.0)

*.dllや*.soなど、ダイナミックリンクライブラリを扱うためのライブラリです。

...*.dllや*.soなど、ダイナミックリンクライブラリを扱うためのライブラリです。

dl と同等の機能を持ちますが、
dl は 2.0 以降deprecated となり、2.2.0 で削除されました。このライブラリ
を代わりに使います。

=== 使い方

通常...
...ます。
Fiddle モジュール自体はプリミティブな機能しか提供していません。
Fiddle::Importer モジュールは以下のようにユーザが定義した
モジュールを拡張する形で使います。

require "fiddle/import"
module M
extend Fiddle::Importer...
...列を渡します。

require "fiddle/import"
module M
extend Fiddle::Importer
dlload 'libm.so.6'
extern 'double modf(double, double *)'
end

s = ' ' * 8
p M2.modf(1.25, s) #=> 0.25
p s.unpack('d')[0] #=> 1.0

==== 関数の引数と返り値
fiddle でインポートした C の...
...ddle::Importer モジュールを使用します。
Fiddle モジュール自体はプリミティブな機能しか提供していません。
Fiddle::Importer モジュールは以下のようにユーザが定義した
モジュールを拡張する形で使います。

require "fiddle/import"...