66件ヒット
[1-66件を表示]
(0.107秒)
キーワード
- BlockCaller (11)
- Closure (11)
- ConditionVariable (11)
- SizedQueue (11)
- Stat (11)
- Table (11)
検索結果
先頭5件
-
Fiddle
:: Closure :: BlockCaller (9007.0) -
Ruby のブロックをラップしたコールバック関数を表すクラスです。
...。
require 'fiddle'
include Fiddle
libc = Fiddle.dlopen("/lib/libc.so.6")
qs = Fiddle::Function.new(libc["qsort"],
[TYPE_VOIDP, TYPE_INT, TYPE_INT, TYPE_VOIDP],
TYPE_VOID)
compare = Fiddle::Closure::BlockCaller.new(TYPE_INT, [TYPE_......のブロックには DL::CPtr オブジェクトが渡される。
# そのポインタが指す先は比較している文字なので、
# DL::CPtr#to_s で1文字の文字列に変換している
x.to_s(1) <=> y.to_s(1)
}
s = "7x0cba(Uq)"
qs.call(s, s.size, 1, compare)
p s #... -
Thread
:: ConditionVariable (6031.0) -
スレッドの同期機構の一つである状態変数を実現するクラスです。
...である状態変数を実現するクラスです。
以下も ConditionVariable を理解するのに参考になります。
https://ruby-doc.com/docs/ProgrammingRuby/html/tut_threads.html#UF
=== Condition Variable とは
あるスレッド A が排他領域で動いていたとします。......gnal
}
}
以下は 14445 で紹介されている例です。@q が空になった場合、
あるいは満タンになった場合に Condition Variable を使って wait しています。
require 'thread'
class TinyQueue
def initialize(max=2)
@max = max
@full =......ConditionVariable.new
@empty = ConditionVariable.new
@mutex = Mutex.new
@q = []
end
def count
@q.size
end
def enq(v)
@mutex.synchronize{
@full.wait(@mutex) if count == @max
@q.push v
@empty.signal if count == 1
}
end... -
Thread
:: SizedQueue (6019.0) -
サイズの最大値を指定できる Thread::Queue です。
...1 の SizedQueue オブジェクトに
することによって、入力される行と出力される行が同じ順序になります。
q = [] にすると入力と違った順序で行が出力されます。
require 'thread'
q = SizedQueue.new(1)
th = Thread.start {
while line = q.......pop
print line
end
}
while l = gets
q.push(l)
end
q.push(l)
th.join... -
CSV
:: Table (6007.0) -
CSV::Table は CSV ドキュメントを表す二次元のデータ構造です。 行単位や列単位の操作を行うことが出来ます。また必要であれば CSV に 戻すこともできます。
...CSV::Table は CSV ドキュメントを表す二次元のデータ構造です。
行単位や列単位の操作を行うことが出来ます。また必要であれば CSV に
戻すこともできます。
ヘッダ行の処理が有効である場合、CSV から返されるテーブルは全......れます。
以下のメソッドを Array に委譲します。
* Array#empty?
* Array#length
* Array#size
=== アクセスモード
以下の三種類のモードがあります。
: :col_or_row
デフォルトはこのモードです。このマニュアル内ではミックスモ......ードと呼んでいます。
行単位でアクセスするか列単位でアクセスするか自動的に判断します。
: :row
ロウモード。テーブルに行単位でアクセスします。
: :column
カラムモード。テーブルに列単位でアクセスします。... -
Fiddle
:: Closure (6007.0) -
コールバック関数を表すクラスです。
...ラスです。
Ruby のメソッド(call)を C の関数ポインタとして表現するためのクラスです。
FFI の closure の wrapper です。
利用法としては、このクラスのサブクラスを作って
そのサブクラスに call メソッドを定義し、
new でオブ......とで利用します。
require 'fiddle'
include Fiddle # TYPE_* を使うために include する
class Compare < Fiddle::Closure
# qsort の比較関数は 型が int(*)(void*, void*) であるため、
# このメソッドには DL::CPtr オブジェクトが渡される。......def call(x, y)
x.to_s(1) <=> y.to_s(1)
end
end
libc = DL.dlopen("/lib/libc.so.6")
qs = Fiddle::Function.new(libc["qsort"],
[TYPE_VOIDP, TYPE_INT, TYPE_INT, TYPE_VOIDP],
TYPE_VOID)
s = "7x0cba(Uq)"
qs.call(s, s.size, 1, C... -
File
:: Stat (3007.0) -
ファイルの情報を格納したオブジェクトのクラス。
...ラス。
FileTest に同名のモジュール関数がある場合はそれと同じ働きをします。ただ、
ファイル名を引数に取るかわりに Stat 自身について判定する点が違います。
//emlist[][ruby]{
p File::Stat.new($0).directory? #=> false
p FileTest.director......y?($0) #=> false
//}
1.8 以降では、属性メソッドがシステムでサポートされていない場合 nil が返ります。
なお、1.7 以前では 0 が返っていました。
dev デバイス番号(ファイルシステム)
dev_major dev の major 番号部
dev_min......ード
nlink ハードリンクの数
uid オーナーのユーザID
gid オーナーのグループID
rdev デバイスタイプ(スペシャルファイルのみ)
rdev_major rdev の major 番号部
rdev_minor rdev の minor 番号部
size ファ...