它提供了在(已添加过DL::Importable的)模块内定义结构体/共用体的功能。
define_struct(contents),
struct(contents)
定义结构体。欲知contents详情,请参考DL::Importable::Struct#initialize。
define_union(contents),
union(contents)
定义共用体。有关contents的详细情况,请参考上面的define_struct。
用来封装DL::PtrData的类。使用dot形式就可以访问结构体和共用体中的元素。调用Struct、Union的实例的malloc、new方法时,就会生成Memory类的实例。因此,通常情况下没有必要直接生成。
initialize(ptr,
names, ty, len, enc,
dec)
动态定义访问DL::PtrData对象ptr的各成员的方法。Struct,Union的实例会保存这些信息。
to_ptr
返回所保存的DL::PtrData对象。
size
调用DL::PtrData#size。
initialize(types,
contents)
像下面这样把DL::Types的实例传给types,把结构体的定义传给contents。
["int size", "char *str"]
这样生成的Struct对象的运作情况类似于下面的结构体。
struct {
int size;
char *str;
}
new(ptr)
返回Memory对象,其中保存着DL::PtrData对象ptr的信息。
malloc(size =
nil)
划出size字节的内存空间,生成DL::PtrData对象,并返回一个保存着该对象的Memory对象。
与Struct基本相同,但它是面向共用体的类。
上述方法和类实际上是定义在DL::Importable::Internal中的。