別のキーワード
種類
- インスタンスメソッド (24)
- ライブラリ (24)
- 文書 (24)
ライブラリ
-
fiddle
/ import (24)
モジュール
-
Fiddle
:: Importer (24)
キーワード
-
1
. 6 . 8から1 . 8 . 0への変更点(まとめ) (12) - bind (12)
-
fiddle
/ import (12) -
fiddle
/ types (12) -
ruby 1
. 6 feature (12)
検索結果
先頭5件
-
Fiddle
:: Importer # sizeof(t) -> Integer (18153.0) -
C における sizeof(t) の値を返します。
...C における sizeof(t) の値を返します。
t が文字列の場合、その文字列が表す C の型の size が返されます。
例えば、sizeof("char") は 1 を返します。
sizeof("char*") は環境によって 4 や 8 といった値を返します。
Fiddle::Importer#struct......ている型を Fiddle が知らなかった
場合に発生します
例:
require 'fiddle/import'
module M
extend Fiddle::Importer
Timeval = struct(["long tv_sec", "long tv_usec"])
p sizeof("char") # => 1
p sizeof("void*") # => 8
p sizeof(Timeval) # => 16
end... -
ruby 1
. 6 feature (42.0) -
ruby 1.6 feature ruby version 1.6 は安定版です。この版での変更はバグ修正がメイン になります。
...), ((<ruby-ext:01778>)), ((<ruby-dev:13659>))
: sync
: mutex_m
Fixed for obj.extend(Sync_m) and obj.extend(Mutex_m).((<ruby-dev:13463>))
$ ruby -v -rsocket -rmutex_m -e 's=TCPSocket.new("localhost",25); s.extend(Mutex_m)'
ruby 1.6.4 (2001-06-04) [i386-linux]
/usr/lib/ruby/1.6/mutex_......uby/1.6/mutex_m.rb:104:in `initialize'
from /usr/lib/ruby/1.6/mutex_m.rb:50:in `mu_extended'
from /usr/lib/ruby/1.6/mutex_m.rb:34:in `extend_object'
from -e:1:in `extend'
from -e:1
: $SAFE / ((<load|組み込み関数>))
1 <= $SAFE <= 3 で、第......p
((<Float>)) を dump するときの精度が "%.12g" から "%.16g" になりました。
((<ruby-list:29349>))
: ((<Fixnum>))#[]
sizeof(long) > sizeof(int) なシステムでのバグが修正されたようです。
: 正規表現
まれなバグが2件修正されました ((<ruby... -
1
. 6 . 8から1 . 8 . 0への変更点(まとめ) (30.0) -
1.6.8から1.8.0への変更点(まとめ) * ((<1.6.8から1.8.0への変更点(まとめ)/インタプリタの変更>)) * ((<1.6.8から1.8.0への変更点(まとめ)/追加されたクラス/モジュール>)) * ((<1.6.8から1.8.0への変更点(まとめ)/追加されたメソッド>)) * ((<1.6.8から1.8.0への変更点(まとめ)/追加された定数>)) * ((<1.6.8から1.8.0への変更点(まとめ)/拡張されたクラス/メソッド(互換性のある変更)>)) * ((<1.6.8から1.8.0への変更点(まとめ)/変更されたクラス/メソッド(互換性のない変更)>)) * ((<1.6.8から1.8.0への変更点(まとめ)/文法の変更>)) * ((<1.6.8から1.8.0への変更点(まとめ)/正規表現>)) * ((<1.6.8から1.8.0への変更点(まとめ)/Marshal>)) * ((<1.6.8から1.8.0への変更点(まとめ)/Windows 対応>)) * ((<1.6.8から1.8.0への変更点(まとめ)/廃止された(される予定の)機能>)) * ((<1.6.8から1.8.0への変更点(まとめ)/ライブラリ>)) * ((<1.6.8から1.8.0への変更点(まとめ)/拡張ライブラリAPI>)) * ((<1.6.8から1.8.0への変更点(まとめ)/バグ修正>)) * ((<1.6.8から1.8.0への変更点(まとめ)/サポートプラットフォームの追加>))
...第二引数に true を指定した load でロード
されるスクリプトのもとではモジュールの機能を self に
((<Object/extend>)) するように変更されました。
: ((<Module#include|Module/include>)) [change], [experimental]
wrapper モジュールで評価さ......))
: ((<Module#include|Module/include>)) [change]
: ((<Object#extend|Object/extend>)) [change]
複数のモジュールを渡したときにインクルードされる順序が変更されました。
((<ruby-dev:16035>))
extend も同様だそうです。((<ruby-dev:16183>))
一つ一......[lib] [new]
追加
: ((<"io/wait">)) [lib] [new]
追加
: ((<mkmf>)) [lib] [new]
新しい判定メソッド have_type(), check_sizeof() が追加されました。
: ((<pathname>)) [lib] [new]
追加
: ((<resolv>)) [lib] [compat]
Win32 に対応しました... -
Fiddle
:: Importer # bind(signature , *opts) { . . . } -> Fiddle :: Function (24.0) -
Ruby のブロックを C の関数で wrap し、その関数をモジュールに インポートします。
...module M
extend Fiddle::Importer
dlload "libc.so.6"
typealias "size_t", "unsigned long"
extern "int qsort(void*, size_t, size_t, void*)"
bind("int compare(void*, void*)"){|px, py|
x = px.to_s(Fiddle::SIZEOF_INT).unpack("i!")
y = py.to_s(Fiddle::SIZEOF_INT).unpa......ck("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, 32, 49, 180001]... -
fiddle
/ import (24.0) -
fiddle ライブラリのための高レベルインターフェースを提供するライブラリです。
...ったとします。これを呼び出したい場合は以下のように Array#pack を使用します。
require 'fiddle/import'
module M
extend Fiddle::Importer
dlload './libsum.so'
extern 'double sum(double*, int)'
end
p M.sum([2.0, 3.0, 4.0].pack('d*'), 3) #=> 9.0
また与......en)
があったとします。これを呼び出すにも以下のように Array#pack を使用します。
require 'fiddle/import'
module M
extend Fiddle::Importer
dlload './libstrfirst.so'
extern 'void first_char(char **, char *, int)'
end
buf = '111'
M.first_char(['Abc', 'Def', '......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!*').map{|t| Fiddle.dlunwrap(t).to_i } #=> [1, 10, 100, 1241603848]
==== 複雑な構造体... -
fiddle
/ types (18.0) -
C の型の別名を定義するライブラリです。
...e 'fiddle/types'
module M
extend Fiddle::Importer
dlload "libc.so.6" # include の前に dlload を呼ぶ
include Fiddle::BasicTypes
end
# uint は Fiddle::BasicTypes によって定義された型で、unsigned int の別名
p(M.sizeof("uint") == M.sizeof("unsigned int"))...
