7 *\brief Tape data block base class.
9 * This class represents a Honeywell paper tape block.
10 * That may be some kind of data block or a end of tape mark.
20 TBT_DATA=0x10, //!< Data block
21 TBT_EOT, //!< End of tape block
22 TBT_BROKEN, //!< A broken block
26 *\brief Local base class for exceptions.
33 tape_block * get_block();
35 tape_block * m_broken_block;
39 *\brief Checksum error exception.
41 class checksum_error_exception
44 checksum_error_exception(tape_block * block);
48 *\brief EOF while reading block exception.
50 class eof_illegal_exception
53 eof_illegal_exception(tape_block * block);
57 *\brief EOF after reading block exception.
59 class eof_legal_exception
62 eof_legal_exception(int bytes_consumed);
66 tape_block * get_block();
70 *\brief IO error exception.
72 class io_error_exception
77 tape_block * get_block();
81 virtual ~tape_block();
83 tape_block(tape_block &);
84 void operator=(tape_block &);
86 virtual int get_type();
87 virtual int get_subtype();
88 virtual vector<string> get_description();
90 int get_discarded_bytes();
91 unsigned char * get_raw_data();
93 static tape_block * gen_from_fd(int fd,
94 void(*input_start)(void *)=0,
95 void (*input_stop)(void *)=0,
96 void * start_stop_arg=0
101 string get_typestring();
104 tape_block (int fd_p,
105 void(*input_start)(void *)=0,
106 void (*input_stop)(void *)=0,
107 void * start_stop_arg=0
110 int init_words(void);
113 protected: // members
114 int block_type; //!< Type of this block.
115 int discarded_bytes; //!< Amount of bytes discarded before beginning.
116 unsigned char * raw_data; //!< Raw block data in bytes.
117 int raw_size; //!< Size of the raw data.
118 unsigned short * word_data; //!< Data organized in machine words.
119 int word_size; //!< Size of the blocks in machine words.
120 int poolsize; //!< Amount of data malloc'ed
121 }; // class tape_block