Class/Module Index [+]

Quicksearch

Origami::HintTable

Attributes

entries[RW]
header_items[RW]

Public Class Methods

included(receiver) click to toggle source
# File lib/origami/linearization.rb, line 164
def self.included(receiver)
  receiver.instance_variable_set(:@header_items_size, {})
  receiver.instance_variable_set(:@entry_items_size, {})
  receiver.extend(ClassMethods)
end
new() click to toggle source
# File lib/origami/linearization.rb, line 173
def initialize
  @header_items = {}
  @entries = []
end

Public Instance Methods

to_s() click to toggle source
# File lib/origami/linearization.rb, line 178
def to_s
  data = ""

  nitems = self.class.nb_header_items
  for no in (1..nitems)
    unless @header_items.include?(no)
      raise InvalidHintTableError, "Missing item #{no} in header section of #{self.class}"
    end

    value = @header_items[no]
    item_size = self.class.get_header_item_size(no)
    
    item_size = ((item_size + 7) >> 3) << 3
    item_data = value.to_s(2)
    item_data = "0" * (item_size - item_data.size) + item_data

    data << [ item_data ].pack("B*")
  end
  
  i = 0
  nitems = self.class.nb_entry_items
  @entries.each do |entry|
    for no in (1..items)
      unless entry.include?(no)
        raise InvalidHintTableError, "Missing item #{no} in entry #{i} of #{self.class}"
      end

      value = entry[no]
      item_size = self.class.get_entry_item_size(no)
      
      item_size = ((item_size + 7) >> 3) << 3
      item_data = value.to_s(2)
      item_data = "0" * (item_size - item_data.size) + item_data

      data << [ item_data ].pack("B*")
    end

    i = i + 1
  end

  data
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.