Module: RbStruct

Defined in:
lib/rbstruct/rbstruct.rb

Defined Under Namespace

Classes: StructBase

Constant Summary collapse

TYPES =
{
  :float => {:size => 4, :str => 'f'},
   :int   => {:size => 4, :str => 'i'},
  :short  => {:size => 2, :str => 's'},
  :char    => {:size => 1, :str => 'c'},
  :unsigned_char => {:size => 1, :str => "C"},
  :unsigned_short => {:size => 2, :str => "S"},
  :unsigned_int => {:size => 4, :str => "I"},
  :unsigned_long => {:size => 8, :str => "L_"}
}

Class Method Summary collapse

Class Method Details

.read_struct(f, type, n = 1) ⇒ Object



144
145
146
147
148
149
150
151
# File 'lib/rbstruct/rbstruct.rb', line 144

def self.read_struct(f, type, n=1)
  format = type.format_string*n
  len = type.bsize*n
  array = f.read(len).unpack(format)
  return Array.new(n) {
    type.new(array.slice!(0, type.size))
  }
end

.Struct(&block) ⇒ Object



132
133
134
135
136
# File 'lib/rbstruct/rbstruct.rb', line 132

def self.Struct(&block)
  c = Class.new(StructBase)
  c.class_eval &block
  return c
end

.write_struct(f, *structs) ⇒ Object



138
139
140
141
142
# File 'lib/rbstruct/rbstruct.rb', line 138

def self.write_struct(f, *structs)
  structs.each do |struct|
    f.write(struct.pack(struct.class.format_string))
  end
end