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