るりまサーチ

最速Rubyリファレンスマニュアル検索!
113件ヒット [1-100件を表示] (0.140秒)
トップページ > クエリ:E[x] > クエリ:import[x] > クエリ:struct[x]

別のキーワード

  1. open3 popen2e
  2. socket af_e164
  3. matrix rank_e
  4. matrix det_e
  5. open3 capture2e

ライブラリ

モジュール

キーワード

検索結果

<< 1 2 > >>

Fiddle::Importer#struct(signature) -> Class (24225.0)

C の構造体型に対応する Ruby のクラスを構築して返します。

...す。そしてそれを
配列で signature に渡してデータを定義します。例えば C における
struct
timeval {
long tv_sec;
long tv_usec;
};
という構造体型に対応して
Timeval = struct(["long tv_sec", "long tv_usec"])
として構造体に対応するクラ...
...ze
* to_ptr
* to_i
* 構造体の各メンバへのアクセサ
返されるクラスは Fiddle::CStruct を継承しています。詳しくは
そちらを参照してください。


@param signature 構造体の各要素を文字列で表現したものの配列

require 'fiddle/import'...
...module M
e
xtend Fiddle::Importer
dlload "libc.so.6"
e
xtern "int gettimeofday(void*, void*)"
Timeval = struct(["long tv_sec", "long tv_usec"])
e
nd

time = M::Timeval.malloc
M.gettimeofday(time, Fiddle::NULL)
p time.tv_sec
p time.tv_usec...

fiddle/import (12036.0)

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

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

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

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

=== 高度な使用法

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

require 'fiddle/import'
module M
e
xtend Fiddle::Importer
dlload './libsum.so'
e
xter...
...e.dlwrap(t)}.pack('l!*')
M.qsort(a, buff.size, Fiddle::SIZEOF_VOIDP, M::QsortCallback)
p a.unpack('l!*').map{|t| Fiddle.dlunwrap(t).to_i } #=> [1, 10, 100, 1241603848]

==== 複雑な構造体を定義したい

構造体をメンバとして持つ構造体を Fiddle::Importer#struct...

Fiddle::Importer#create_value(type, val = nil) -> Fiddle::CStruct (9222.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
e
xtend Fiddle::Importer
e
nd

v = M.value("int", 32)
p v.value # => 32
v.value = 48
p v.value # => 48...

Fiddle::Importer#value(type, val = nil) -> Fiddle::CStruct (9222.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
e
xtend Fiddle::Importer
e
nd

v = M.value("int", 32)
p v.value # => 32
v.value = 48
p v.value # => 48...

Fiddle::Importer#typealias(new, orig) -> () (9122.0)

extern や struct で利用する型の別名を定義します。

...extern や struct で利用する型の別名を定義します。

@param new 別名(文字列)
@param orig 別名を付けたい型の名前(文字列)
@see Fiddle::Importer#extern, Fiddle::Importer#sizeof,
Fiddle::Importer#struct, Fiddle::Importer#union...

絞り込み条件を変える

Fiddle::Importer#sizeof(t) -> Integer (9118.0)

C における sizeof(t) の値を返します。

...ける sizeof(t) の値を返します。

t が文字列の場合、その文字列が表す C の型の size が返されます。
例えば、sizeof("char") は 1 を返します。
sizeof("char*") は環境によって 4 や 8 といった値を返します。

Fiddle::Importer#struct で定義...
...ズを返します。
Fiddle::Importer#union で定義した共用体クラスも同様です。

t がクラスの場合、t が to_ptr というインスタンスメソッドを持っている
ならば t.size を返します。

それ以外の場合は Pointer[t].size を返します。

@param...
...
@raise Fiddle::DLError t として文字列を渡し、それが表している型を Fiddle が知らなかった
場合に発生します

例:

require 'fiddle/import'

module M
e
xtend Fiddle::Importer
Timeval = struct(["long tv_sec", "long tv_usec"])
p sizeof("char")...

Fiddle::CStruct (9030.0)

C の構造体を表すクラスです。

...造体を表すクラスです。

このクラスは直接は使わず、Fiddle::Importer#struct を用いて
このクラスを継承したクラスを生成し、それを利用します。

Fiddle::Importer#struct が生成するクラスには
構造体の各メンバへのアクセサが定義...
...ます。
例えば
require 'fiddle/import'
include Fiddle::Importer
S = struct(["long foo", "void* bar"])
とすると、 S#foo, S#foo= というアクセサが Integer とやりとり
するように定義され、 S#bar, S#bar= というアクセサが Fiddle::Pointer
でやりとりする...
...されます。

このクラスは実際にはこのドキュメントに書かれているメソッドを保持していません。
Fiddle::Importer#struct によって動的にメソッドが定義されます。
このドキュメントは説明の便宜のためだと考えてください。...

Fiddle::Importer#union(signature) -> Class (6112.0)

C の共用体型に対応する Ruby のクラスを構築して返します。

...Fiddle::Importer#struct
ほぼ同様です。C における
typedef union epoll_data
{
void *ptr;
int fd;
uint32_t u32;
uint64_t u64;
} epoll_data_t;
は、Ruby上では
require 'fiddle/import'

module M
e
xtend Fiddle::Importer
dlload "libc.so.6"
typealias...
...unsigned int")
typealias("uint64_t", "unsigned long long")

E
PollData = union(["void *ptr",
"int fd",
"uint32_t u32",
"uint64_t u64",
])
e
nd
となります。

返されるクラスは Fiddle::CUn...
...ion を継承しています。

1.9.x ではこのメソッドで返されるクラスは正しく動作しません。
2.0以降では修正されています。

@param signature 共用体の各要素を文字列で表現したものの配列...

fiddle (6060.0)

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

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

=== 使い方

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

require "fiddle/import"
module M
e
xtend Fiddle::Importer
e
nd

...
...gettimeofday(2)
を使って現在時刻を得たい場合は以下のとおりです。

require 'fiddle/import'
module M
e
xtend Fiddle::Importer
dlload "libc.so.6"
e
xtern('int gettimeofday(void *, void *)')
Timeval = struct( ["long tv_sec",
"long tv_usec"])
e
n...
...すが、
dl は 2.0 以降deprecated となり、2.2.0 で削除されました。このライブラリ
を代わりに使います。

=== 使い方

通常は fiddle/import ライブラリを require して
Fiddle::Importer モジュールを使用します。
Fiddle モジュール自体はプ...
...していません。
Fiddle::Importer モジュールは以下のようにユーザが定義した
モジュールを拡張する形で使います。

require "fiddle/import"
module M
e
xtend Fiddle::Importer
e
nd

以後、このモジュールで dlload や extern などのメソッド...

NEWS for Ruby 3.1.0 (6048.0)

NEWS for Ruby 3.1.0 このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。

...NEWS for Ruby 3.1.0
このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。

それぞれのエントリーは参照情報があるため短いです。
十分な情報と共に書かれた全ての変更のリス...
...(Kernel.#fork、Process.fork、IO.popen("-"))によって呼び出されます。アプリケーションモニタリングライブラリは、このメソッドを上書きしてforkイベントをフックすることができます。 17795

* Struct
* 新規メソッド
* StructClas...
...itorがFiberセーフになりました。 17827
* コピーコルーチンをpthread実装に置き換えました。 18015

* Refinement
* Module#refineで作成されたモジュールを表す新しいクラス。includeとprependは非推奨になり、代わりにimport_methodsが...

絞り込み条件を変える

<< 1 2 > >>