class Blender3d::StructureDefinition

Attributes

fields[R]
name[R]
size[R]

Public Class Methods

new(name, size, fields = []) click to toggle source
# File lib/blender-3d/structure_definition.rb, line 5
def initialize(name, size, fields = [])
  name = name[0].upcase + name[1..-1]
  @name, @size, @fields = name, size, fields
end

Public Instance Methods

read(reader) click to toggle source
# File lib/blender-3d/structure_definition.rb, line 10
def read(reader)
  structure_class.new(reader)
end
structure_class() click to toggle source
# File lib/blender-3d/structure_definition.rb, line 14
def structure_class
  Blender3d.const_defined?(name, false) ? Blender3d.const_get(name, false) : define_structure_class
end

Private Instance Methods

define_structure_class() click to toggle source
# File lib/blender-3d/structure_definition.rb, line 20
def define_structure_class
  fields = self.fields
  struct_class = Class.new(Structure) { attr_accessor(*fields.map(&:name)) }
  struct_class.instance_variable_set :@definition, self
  Blender3d.const_set(name, struct_class)
end