class YARP::Pack::Directive
def describe
def describe case type when SPACE 'whitespace' when COMMENT 'comment' when INTEGER if size == SIZE_8 base = "#{SIGNED_DESCRIPTIONS[signed]} #{SIZE_DESCRIPTIONS[size]} integer" else base = "#{SIGNED_DESCRIPTIONS[signed]} #{SIZE_DESCRIPTIONS[size]} #{ENDIAN_DESCRIPTIONS[endian]} integer" end case length_type when LENGTH_FIXED if length > 1 base + ", x#{length}" else base end when LENGTH_MAX base + ', as many as possible' end when UTF8 'UTF-8 character' when BER 'BER-compressed integer' when FLOAT "#{SIZE_DESCRIPTIONS[size]} #{ENDIAN_DESCRIPTIONS[endian]} float" when STRING_SPACE_PADDED 'arbitrary binary string (space padded)' when STRING_NULL_PADDED 'arbitrary binary string (null padded, count is width)' when STRING_NULL_TERMINATED 'arbitrary binary string (null padded, count is width), except that null is added with *' when STRING_MSB 'bit string (MSB first)' when STRING_LSB 'bit string (LSB first)' when STRING_HEX_HIGH 'hex string (high nibble first)' when STRING_HEX_LOW 'hex string (low nibble first)' when STRING_UU 'UU-encoded string' when STRING_MIME 'quoted printable, MIME encoding' when STRING_BASE64 'base64 encoded string' when STRING_FIXED 'pointer to a structure (fixed-length string)' when STRING_POINTER 'pointer to a null-terminated string' when MOVE 'move to absolute position' when BACK 'back up a byte' when NULL 'null byte' else raise end end
def initialize(version, variant, source, type, signed, endian, size, length_type, length)
def initialize(version, variant, source, type, signed, endian, size, length_type, length) @version = version @variant = variant @source = source @type = type @signed = signed @endian = endian @size = size @length_type = length_type @length = length end