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

Methods

new   size   to_ptr  

Public Class methods

[Source]

# File dl/lib/dl/struct.rb, line 22
        def initialize(ptr, names, ty, len, enc, dec)
          @ptr = ptr
          @names = names
          @ty    = ty
          @len   = len
          @enc   = enc
          @dec   = dec

          # define methods
          @names.each{|name|
            instance_eval [
              "def #{name}",
              "  v = @ptr[\"#{name}\"]",
              "  if( @len[\"#{name}\"] )",
              "    v = v.collect{|x| @dec[\"#{name}\"] ? @dec[\"#{name}\"].call(x) : x }",
              "  else",
              "    v = @dec[\"#{name}\"].call(v) if @dec[\"#{name}\"]",
              "  end",
              "  return v",
              "end",
              "def #{name}=(v)",
              "  if( @len[\"#{name}\"] )",
              "    v = v.collect{|x| @enc[\"#{name}\"] ? @enc[\"#{name}\"].call(x) : x }",
              "  else",
              "    v = @enc[\"#{name}\"].call(v) if @enc[\"#{name}\"]",
              "  end",
              "  @ptr[\"#{name}\"] = v",
              "  return v",
              "end",
            ].join("\n")
          }
        end

Public Instance methods

[Source]

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

[Source]

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

[Validate]