# File lib/rex/struct2/s_struct.rb, line 38 def <<(obj) self.add_element(obj) end
# File lib/rex/struct2/s_struct.rb, line 63 def [](obj) return elements[obj] end
# File lib/rex/struct2/s_struct.rb, line 30 def add_element(*objs) objs.each { |o| elements << o o.container = self } return self end
# File lib/rex/struct2/s_struct.rb, line 67 def each(&block) return elements.each(&block) end
# File lib/rex/struct2/s_struct.rb, line 71 def from_s(obytes) # make my own copy so I can chop it up bytes = obytes.dup length = 0 # I don't think we should call update_restraint here, but # I could have mis thought or something # if we have a restraint (and if there is a val) truncate if restraint max = restraint.max bytes = bytes.slice(0, max) if max end elements.each { |e| used = e.from_s(bytes) return if !used bytes.slice!(0, used) length += used } # make sure we matched out min restraint, else return failure if restraint min = restraint.min return if min && length < min end # I guess this is me getting "set", so I should have a value # and I should update my restraints on set self.value = obytes.slice(0, length) self.leftover = bytes return(length) end
# File lib/rex/struct2/s_struct.rb, line 59 def length return elements.length end
# File lib/rex/struct2/s_struct.rb, line 25 def reset elements.each {|e| e.reset} return self end
# File lib/rex/struct2/s_struct.rb, line 42 def to_s # !!! what do we do on mix restraint issues? just fail? # maybe throw an exception, because that is most likely # a usage error buff = "" elements.each do |e| buff << e.to_s end if restraint && restraint.max return buff.slice(0, restraint.max) else return buff end end
Generated with the Darkfish Rdoc Generator 2.