A file-based stack: =================== This is the format for a file-based stack which works as any Stackable class. General made up: Purpose: | "magic" | separator | count | position | separator | ---------+-----------+-----------+----------+---------------+-----------+ Bytes: | 9 | 1 | 20 (hex) | 2 - n^2 (hex) | 1 | ---------+-----------+-----------+----------+---------------+-----------+ Example: | STACKv1.0 | 00 | 00...ff | 05 | ff | Continued: Purpose: | hash 0 | separator | name 0 | entry 0 | hash n | separator | name n | entry n | EOF | ---------+--------+-----------+--------+------------+--------+-----------+--------+------------+-----+ Bytes: | ??? | 1 | 10 | 1-n (pack) | ??? | 1 | 10 | 1-n (pack) | 1 | ---------+--------+-----------+--------+------------+--------+-----------+--------+------------+-----+ Example: | abc | ??? | foo | ... | abc | ??? | bar | ... | EOF | Explanations: ------------- magic - Identifies the file and version of format separator - Serves to detect end of strings with unknown/flexible length count - Total amount of entries (not deleted) encoded in hexa-decimal position - Seek position of current entry (which current() will give) hash X - Hash sum of entry X name X - Name of stack the entries belongs in entry X - The actual data, compressed with pack() EOF - End-of-file character ??? - Must be still found out which character/hashing algorthym fits best