class Rstruct::Type
Attributes
name[R]
params[R]
Public Class Methods
new(name, params={}, &block)
click to toggle source
# File lib/rstruct/base_types/type.rb, line 5 def initialize(name, params={}, &block) @params = params.dup @name = name.to_sym reg = @params.delete(:register) aliases = @params.delete(:alias) regnames = ((aliases)? ([aliases] << @name).flatten : [@name]).uniq.compact reg=nil if reg==true register(regnames, reg) unless reg == false instance_eval &block if block end
Public Instance Methods
claim_value(vals, predecessors=nil)
click to toggle source
# File lib/rstruct/base_types/type.rb, line 33 def claim_value(vals, predecessors=nil) if @claim_cb @claim_cb.call(vals, predecessors) else vals.shift end end
container?()
click to toggle source
# File lib/rstruct/base_types/type.rb, line 29 def container? @container or false end
groupable?()
click to toggle source
# File lib/rstruct/base_types/type.rb, line 25 def groupable? @groupable or false end
register(names=nil, reg=nil)
click to toggle source
# File lib/rstruct/base_types/type.rb, line 19 def register(names=nil, reg=nil) names ||= to_sym reg ||= Registry::DEFAULT_REGISTRY reg.register(self, *names) end
sizeof()
click to toggle source
# File lib/rstruct/base_types/type.rb, line 41 def sizeof raise(NotImplementedError, "sizeof not implemented in #{self.class}") end
Private Instance Methods
claim(&block)
click to toggle source
sets up a call back for claiming values out of an unpacked value array
# File lib/rstruct/base_types/type.rb, line 48 def claim(&block) @claim_cb = block end