Class DL::Importable::Internal::Memory
In: dl/struct.rb
Parent: Object

Methods

new   size   to_ptr  

Public Class methods

[Source]

    # File dl/struct.rb, line 22
22:         def initialize(ptr, names, ty, len, enc, dec)
23:           @ptr = ptr
24:           @names = names
25:           @ty    = ty
26:           @len   = len
27:           @enc   = enc
28:           @dec   = dec
29: 
30:           # define methods
31:           @names.each{|name|
32:             instance_eval [
33:               "def #{name}",
34:               "  v = @ptr[\"#{name}\"]",
35:               "  if( @len[\"#{name}\"] )",
36:               "    v = v.collect{|x| @dec[\"#{name}\"] ? @dec[\"#{name}\"].call(x) : x }",
37:               "  else",
38:               "    v = @dec[\"#{name}\"].call(v) if @dec[\"#{name}\"]",
39:               "  end",
40:               "  return v",
41:               "end",
42:               "def #{name}=(v)",
43:               "  if( @len[\"#{name}\"] )",
44:               "    v = v.collect{|x| @enc[\"#{name}\"] ? @enc[\"#{name}\"].call(x) : x }",
45:               "  else",
46:               "    v = @enc[\"#{name}\"].call(v) if @enc[\"#{name}\"]",
47:               "  end",
48:               "  @ptr[\"#{name}\"] = v",
49:               "  return v",
50:               "end",
51:             ].join("\n")
52:           }
53:         end

Public Instance methods

[Source]

    # File dl/struct.rb, line 59
59:         def size
60:           return @ptr.size
61:         end

[Source]

    # File dl/struct.rb, line 55
55:         def to_ptr
56:           return @ptr
57:         end

Search

Google

Ruby API Docs

Links