class Rex::Struct2::SString
Attributes
default[RW]
pad[RW]
size[R]
Public Class Methods
new(size=nil, default=nil, pad=nil)
click to toggle source
# File lib/rex/struct2/s_string.rb, line 15 def initialize(size=nil, default=nil, pad=nil) self.size = size @default = default @pad = pad reset() end
Public Instance Methods
from_s(bytes)
click to toggle source
# File lib/rex/struct2/s_string.rb, line 52 def from_s(bytes) # we don't have enough bytes to satisfy our minimum if restraint && restraint.min && bytes.length < restraint.min return end if restraint && restraint.max self.value = bytes.slice(0, restraint.max) else self.value = bytes.dup end return(self.slength) end
reset()
click to toggle source
# File lib/rex/struct2/s_string.rb, line 31 def reset self.value = @default end
size=(newsize)
click to toggle source
# File lib/rex/struct2/s_string.rb, line 22 def size=(newsize) if !newsize self.restraint = nil else res = Rex::Struct2::Constant.new(newsize) self.restraint = Rex::Struct2::Restraint.new(res, res, false) end end
to_s()
click to toggle source
# File lib/rex/struct2/s_string.rb, line 35 def to_s string = self.value return if !string # pad if short if restraint && restraint.min && self.pad && restraint.min > string.length string += self.pad * (restraint.min - string.length) end # truncate if long if restraint && restraint.max string = string.slice(0, restraint.max) end return string end