るりまサーチ

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

別のキーワード

  1. kernel $-l
  2. matrix l
  3. _builtin $-l
  4. lupdecomposition l
  5. l matrix

ライブラリ

クラス

モジュール

キーワード

検索結果

fiddle (44144.0)

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

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

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

=== 使い方

通常...
...は fiddle/import ライブラリを require して
Fiddle
::Importer モジュールを使用します。
dl と基本的な使いかたは良く似ています。
Fiddle
モジュール自体はプリミティブな機能しか提供していません。
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 の関...
...は fiddle/import ライブラリを require して
Fiddle
::Importer モジュールを使用します。
Fiddle
モジュール自体はプリミティブな機能しか提供していません。
Fiddle
::Importer モジュールは以下のようにユーザが定義した
モジュールを拡...

Fiddle::Pointer.[](val) -> Fiddle::Pointer (14232.0)

与えられた val と関連した Pointer オブジェクトを生成して返します。

...与えられた val と関連した Pointer オブジェクトを生成して返します。

val が文字列の場合は文字列が格納されているメモリ領域を指す Pointer
オブジェクトを返します。

IO オブジェクトの場合は FILE ポインタを表す Pointer オ...
...al が整数の場合はそれをアドレスとする Pointer オブジェクトを返します。

上以外の場合は、整数に変換(to_int)し
それをアドレスとする Pointer オブジェクトを返します。


@param val Ruby オブジェクトを指定します。

@raise Fiddle...
...LError to_ptr の返り値が Pointer オブジェクトでない場合に発生します
@raise TypeError 上記のいずれの変換も不可能であった場合に発生します

例:

require 'fiddle'
s = "abc"
p Fiddle::Pointer[s].to_i #=> 136186388
p [s].pack('p*').unpack...

Fiddle::Pointer.to_ptr(val) -> Fiddle::Pointer (14232.0)

与えられた val と関連した Pointer オブジェクトを生成して返します。

...与えられた val と関連した Pointer オブジェクトを生成して返します。

val が文字列の場合は文字列が格納されているメモリ領域を指す Pointer
オブジェクトを返します。

IO オブジェクトの場合は FILE ポインタを表す Pointer オ...
...al が整数の場合はそれをアドレスとする Pointer オブジェクトを返します。

上以外の場合は、整数に変換(to_int)し
それをアドレスとする Pointer オブジェクトを返します。


@param val Ruby オブジェクトを指定します。

@raise Fiddle...
...LError to_ptr の返り値が Pointer オブジェクトでない場合に発生します
@raise TypeError 上記のいずれの変換も不可能であった場合に発生します

例:

require 'fiddle'
s = "abc"
p Fiddle::Pointer[s].to_i #=> 136186388
p [s].pack('p*').unpack...

Fiddle::Pointer#+@ -> Fiddle::Pointer (14226.0)

自身の指す値を Pointer にして返します。

...の返り値には、free 関数がセットされず、size は 0 とされます。

例:

require 'fiddle'

s = 'abc'
cptr = Fiddle::Pointer[s]
cref = cptr.ref
p cref.to_s(4).unpack('l*')[0] #=> 136121648
p cptr.to_i #=> 136121648
p cref.ptr.to_s #=> "...

Fiddle::Pointer#-@ -> Fiddle::Pointer (14226.0)

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

...の返り値には、free 関数がセットされず、size は 0 とされます。

例:

require 'fiddle'

s = 'abc'
cptr = Fiddle::Pointer[s]
cref = cptr.ref
p cref.to_s(4).unpack('l*')[0] #=> 136121648
p cptr.to_i #=> 136121648
p cref.ptr.to_s #=> "...

絞り込み条件を変える

Fiddle::Pointer#ptr -> Fiddle::Pointer (14226.0)

自身の指す値を Pointer にして返します。

...の返り値には、free 関数がセットされず、size は 0 とされます。

例:

require 'fiddle'

s = 'abc'
cptr = Fiddle::Pointer[s]
cref = cptr.ref
p cref.to_s(4).unpack('l*')[0] #=> 136121648
p cptr.to_i #=> 136121648
p cref.ptr.to_s #=> "...

Fiddle::Pointer#ref -> Fiddle::Pointer (14226.0)

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

...の返り値には、free 関数がセットされず、size は 0 とされます。

例:

require 'fiddle'

s = 'abc'
cptr = Fiddle::Pointer[s]
cref = cptr.ref
p cref.to_s(4).unpack('l*')[0] #=> 136121648
p cptr.to_i #=> 136121648
p cref.ptr.to_s #=> "...

fiddle/import (12136.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 (6273.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...
...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!*") # => [-13, -1, 0,...