Ruby 2.1.0 リファレンスマニュアル > ライブラリ一覧 > dl/importライブラリ > DL::Importerモジュール > struct
struct(signature) -> Class
[permalink][rdoc]C の構造体型に対応する Ruby のクラスを構築して返します。
構造体の各要素は C と似せた表記ができます。そしてそれを 配列で signature に渡してデータを定義します。例えば C における
struct timeval { long tv_sec; long tv_usec; };
という構造体型に対応して
Timeval = struct(["long tv_sec", "long tv_usec"])
として構造体に対応するクラスを生成します。
このメソッドが返すクラスには以下のメソッドが定義されています
返されるクラスは DL::CStruct を継承しています。詳しくは そちらを参照してください。
require 'dl/import module M extend DL::Importer dlload "libc.so.6" extern "int gettimeofday(void*, void*)" Timeval = struct(["long tv_sec", "long tv_usec"]) end time = Timeval.malloc M.gettimeofday(time, DL::NULL) p time.tv_sec p time.tv_usec