るりまサーチ (Ruby 2.4.0)

最速Rubyリファレンスマニュアル検索!
37件ヒット [1-37件を表示] (0.108秒)
トップページ > クエリ:l[x] > クエリ:id[x] > バージョン:2.4.0[x] > クエリ:struct[x]

別のキーワード

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

検索結果

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

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

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

構造体の各要素は C と似せた表記ができます。そしてそれを
配列で signature に渡してデータを定義します。例えば C における
struct timeval {
long tv_sec;
long tv_usec;
};
という構造体型に対応して
Timeval = struct(["long tv_sec", "long tv_usec"])
として構造体に対応するクラスを生成します。

このメソッドが返すクラスには以下のメソッドが定義されています
* クラスメソッド malloc
...

Fiddle::CStruct.malloc -> Fiddle::CStruct (36937.0)

構造体のためのメモリを確保し、Fiddle::CStruct の(子孫クラスの) オブジェクトで返します。

構造体のためのメモリを確保し、Fiddle::CStruct の(子孫クラスの)
オブジェクトで返します。

C における
return (struct foo*)malloc(sizeof(struct foo));
というコードと対応していると言えます。

Fiddle::CStruct (36073.0)

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

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

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

Fiddle::Importer#struct が生成するクラスには
構造体の各メンバへのアクセサが定義されています。
このアクセサはシグネチャの型とメンバ名に従って定義されます。
例えば
require 'fiddle/import'
include Fiddle::Importer
S = struct(["long foo", "void* bar"])
とすると、 S#foo, S#foo= という...

fiddle/import (36073.0)

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

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

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

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

=== 高度な使用法

==== ○○の配列を関数に渡したい

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

require 'fiddle/import'
m...

fiddle (36019.0)

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

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

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

=== 使い方

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

require ...

絞り込み条件を変える

fiddle/types (36019.0)

C の型の別名を定義するライブラリです。

C の型の別名を定義するライブラリです。

Fiddle::Win32Types や Fiddle::BasicTypes を Module#include する
ことで、Fiddle::Importer#extern や Fiddle::Importer#struct で
利用できる型が増えます。内部で Fiddle::Importer#typealias を
呼び出しています。

実装の問題があるため、 Fiddle::Importer#dlload を呼びだしてから
include してください。


require 'fiddle/import'
require 'fiddl...

Fiddle::Importer#create_value(type, val = nil) -> Fiddle::CStruct (27949.0)

型が type で要素名が "value" であるような構造体を 定義(Fiddle::Importer#struct)し、 その構造体のメモリを Fiddle::CStruct#malloc で確保し、 確保したメモリを保持しているオブジェクトを返します。

型が type で要素名が "value" であるような構造体を
定義(Fiddle::Importer#struct)し、
その構造体のメモリを Fiddle::CStruct#malloc で確保し、
確保したメモリを保持しているオブジェクトを返します。

type は "int", "void*" といった文字列で型を指定します。
val に nil 以外を指定すると、確保された構造体に
その値を代入します。

@param type 型を表す文字列
@param val 構造体に確保される初期値


require 'fiddle/import'

module M
...

Fiddle::Importer#value(type, val = nil) -> Fiddle::CStruct (27949.0)

型が type で要素名が "value" であるような構造体を 定義(Fiddle::Importer#struct)し、 その構造体のメモリを Fiddle::CStruct#malloc で確保し、 確保したメモリを保持しているオブジェクトを返します。

型が type で要素名が "value" であるような構造体を
定義(Fiddle::Importer#struct)し、
その構造体のメモリを Fiddle::CStruct#malloc で確保し、
確保したメモリを保持しているオブジェクトを返します。

type は "int", "void*" といった文字列で型を指定します。
val に nil 以外を指定すると、確保された構造体に
その値を代入します。

@param type 型を表す文字列
@param val 構造体に確保される初期値


require 'fiddle/import'

module M
...

Fiddle::CStruct.new(addr) -> Fiddle::CStruct (27919.0)

addr のアドレスが指すメモリを構造体のアドレスとみなし、 構造体を作ります。

addr のアドレスが指すメモリを構造体のアドレスとみなし、
構造体を作ります。

C におけるキャストと似ています。
return (struct foo*)addr;
というコードと対応していると言えます。

@param addr アドレス

Fiddle::CStruct#to_ptr -> Fiddle::Pointer (27601.0)

保持している構造体へのポインタを返します。

保持している構造体へのポインタを返します。

絞り込み条件を変える

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

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

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

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

Fiddle::CStruct#to_i -> Integer (27001.0)

保持している構造体の先頭アドレスを整数で返します。

保持している構造体の先頭アドレスを整数で返します。

Fiddle::CStruct.size -> Integer (27001.0)

構造体のサイズをバイト数で返します。

構造体のサイズをバイト数で返します。

このメソッドが返す値は C の構造体としてのサイズです。
Ruby のオブジェクトとしてはより大きなメモリを消費しています。

static void val_setter(VALUE val, ID id, void *data, struct global_variable *var) (20101.0)

struct global_entry * rb_global_entry(ID id) (19501.0)

絞り込み条件を変える

VALUE Data_Wrap_Struct(VALUE klass, RUBY_DATA_FUNC mark, RUBY_DATA_FUNC free, void *sval) (19273.0)

C の構造体 sval をラップして klass クラスの インスタンスである Ruby オブジェクトを生成し、それを返します。 mark、free はそれぞれ sval のマーク用・解放用の 関数へのポインタです。どちらも、必要ないときはかわりに 0 を渡します。

C の構造体 sval をラップして klass クラスの
インスタンスである Ruby オブジェクトを生成し、それを返します。
mark、free はそれぞれ sval のマーク用・解放用の
関数へのポインタです。どちらも、必要ないときはかわりに 0 を渡します。

また RUBY_DATA_FUNC の定義は以下のようです。

typedef void (*RUBY_DATA_FUNC)(void *st)

第一引数 st には sval が渡されます。

使用例

struct mytype {
int i;
char *s;
...

static int mark_global_entry(ID key, struct global_entry *entry) (19201.0)

void Data_Get_Struct(VALUE obj, type, type *svar) (18973.0)

Ruby のオブジェクト obj から type 型へのポインタを とりだし svar に代入します。

Ruby のオブジェクト obj から type 型へのポインタを
とりだし svar に代入します。

使用例

struct mytype {
int i;
char *s;
};

VALUE
my_i(VALUE self)
{
struct mytype *m;
Data_Get_Struct(self, struct mytype, m);
return INT2NUM(m->i);
}

static struct BLOCKTAG * new_blktag(void) (18901.0)

static void blk_copy_prev(struct BLOCK *block) (18901.0)

絞り込み条件を変える

static void blk_free(struct BLOCK *data) (18901.0)

static void blk_mark(struct BLOCK *data) (18901.0)

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

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

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

共用体型を 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
extend Fiddle::Importer
dlload "lib...

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

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

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

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

Fiddle::Importer#struct で定義した
構造体クラスを渡すと、その構造体のサイズを返します。
Fiddle::Importer#union で定義した共用体クラスも同様です。

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

それ...

Ruby用語集 (9145.0)

Ruby用語集 A B C D E F G I J M N O R S Y

Ruby用語集
A B C D E F G I J M N O R S Y

a ka sa ta na ha ma ya ra wa

=== 記号・数字
: %記法
: % notation
「%」記号で始まる多種多様なリテラル記法の総称。

参照:d:spec/literal#percent

: 0 オリジン
: zero-based
番号が 0 から始まること。

例えば、
Array や Vector、Matrix などの要素の番号、
String における文字の位置、
といったものは 0 オリジンである。

: 1 オリジン
: one-based
...

絞り込み条件を変える

static struct RVarmap * new_dvar(ID id, VALUE value, struct RVarmap *prev) (1801.0)

static void undef_setter(VALUE val, ID id, void *data, struct global_variable *var) (1801.0)

static int fc_i(ID key, VALUE value, struct fc_result *res) (1201.0)

static struct kwtable * rb_reserved_word(const char *str, unsigned int len) (955.0)

長さ len の文字列 str が予約語であれば そのフラグテーブルを返します。str が予約語でなければ NULL を返します。

長さ len の文字列 str が予約語であれば
そのフラグテーブルを返します。str が予約語でなければ
NULL を返します。

struct kwtable {
char *name; /* 予約語の名前 */
int id[2]; /* 0: 非修飾型シンボル
1: 修飾型シンボル (kIF_MOD など) があれば
それを格納する。なければ id[0]...

static VALUE fc_path(struct fc_result *fc, ID name) (901.0)

絞り込み条件を変える

static int gvar_i(ID key, struct global_entry *entry, VALUE ary) (901.0)

static int ivar_i(ID key, struct global_entry *entry, VALUE ary) (901.0)

static void remove_trace(struct global_variable *var) (901.0)

void rb_thread_wait_for(struct timeval time) (901.0)

time の長さの時間が経過するまでカレントスレッドを停止します。

time の長さの時間が経過するまでカレントスレッドを停止します。

void * DATA_PTR(VALUE dta) (649.0)

実際は struct RData* 型である dta から、 それがラップしているポインタを取り出します。

実際は struct RData* 型である dta から、
それがラップしているポインタを取り出します。

絞り込み条件を変える

Array#dig(idx, ...) -> object | nil (619.0)

self 以下のネストしたオブジェクトを dig メソッドで再帰的に参照して返し ます。途中のオブジェクトが nil であった場合は nil を返します。

self 以下のネストしたオブジェクトを dig メソッドで再帰的に参照して返し
ます。途中のオブジェクトが nil であった場合は nil を返します。

@param idx インデックスを整数で任意個指定します。

//emlist[例][ruby]{
a = [[1, [2, 3]]]

a.dig(0, 1, 1) # => 3
a.dig(1, 2, 3) # => nil
a.dig(0, 0, 0) # => TypeError: Integer does not have #di...

ruby 1.8.2 feature (163.0)

ruby 1.8.2 feature ruby 1.8.2 での ruby 1.8.1 からの変更点です。

ruby 1.8.2 feature
ruby 1.8.2 での ruby 1.8.1 からの変更点です。

掲載方針

*バグ修正の影響も含めて動作が変わるものを収録する。
*単にバグを直しただけのものは収録しない。
*ライブラリへの単なる定数の追加は収録しない。

以下は各変更点に付けるべきタグです。

*カテゴリ
* [ruby]: ruby インタプリタの変更
* [api]: 拡張ライブラリ API
* [lib]: ライブラリ
*レベル
* [bug]: バグ修正
* [new]: 追加されたクラス/メソッドなど
* [compat]: 変更されたクラス/...