Attributes are each stored twice:

attributes => [...]
attribute_by_key => { ... }

An attribute is stored as a hashref:

{
 key => 'attribute_name',
 type => S|SS|N|B|NULL|BOOL|M|L,
 value => '...'
}

new

Instantiate.

  • attributes - arrayref of attributes

each_attribute

Iterates through each attribute on this item.

bytes_used

Resolves to the total number of bytes used by this item.

bytes_for

Calculates how many bytes are used for the given type and value. Used for recursive size calculations (map/list etc.).

Returns an immediate value.

attribute_by_key

Returns the given attribute via key lookup.