Module Origami::HintTable
In: sources/parser/linearization.rb

Methods

included   new   to_s  

Classes and Modules

Module Origami::HintTable::ClassMethods
Class Origami::HintTable::PageOffsetTable
Class Origami::HintTable::SharedObjectTable

Attributes

entries  [RW] 
header_items  [RW] 

Public Class methods

[Source]

     # File sources/parser/linearization.rb, line 145
145:     def self.included(receiver)
146:       receiver.instance_variable_set(:@header_items_size, {})
147:       receiver.instance_variable_set(:@entry_items_size, {})
148:       receiver.extend(ClassMethods)
149:     end

[Source]

     # File sources/parser/linearization.rb, line 154
154:     def initialize
155:       @header_items = {}
156:       @entries = []
157:     end

Public Instance methods

[Source]

     # File sources/parser/linearization.rb, line 159
159:     def to_s
160:       
161:       data = ""
162: 
163:       nitems = self.class.nb_header_items
164:       for no in (1..nitems)
165:         unless @header_items.include?(no)
166:           raise InvalidHintTable, "Missing item #{no} in header section of #{self.class}"
167:         end
168: 
169:         value = @header_items[no]
170:         item_size = self.class.get_header_item_size(no)
171:         
172:         item_size = ((item_size + 7) >> 3) << 3
173:         item_data = value.to_s(2)
174:         item_data = "0" * (item_size - item_data.size) + item_data
175: 
176:         data << [ item_data ].pack("B*")
177:       end
178:       
179:       i = 0
180:       nitems = self.class.nb_entry_items
181:       @entries.each do |entry|
182:         for no in (1..items)
183:           unless entry.include?(no)
184:             raise InvalidHintTable, "Missing item #{no} in entry #{i} of #{self.class}"
185:           end
186: 
187:           value = entry[no]
188:           item_size = self.class.get_entry_item_size(no)
189:           
190:           item_size = ((item_size + 7) >> 3) << 3
191:           item_data = value.to_s(2)
192:           item_data = "0" * (item_size - item_data.size) + item_data
193: 
194:           data << [ item_data ].pack("B*")
195:         end
196: 
197:         i = i + 1
198:       end
199: 
200:       data
201:     end

[Validate]