+#ifndef DISCARD_BLOCK_H
+#define DISCARD_BLOCK_H
+
+#include <string>
+#include <vector>
+
+#include "tape_block.hh"
+
+using namespace std;
+
+/*!
+ *\brief Class representating an invalid block.
+ *
+ *Reasons for a block to be invalid are:\n
+ * - EOF on fd used to initialise,
+ * - Checksum error in a block
+ * - IO error while reading from fd
+ * The reason for the block to be a discard_block can be
+ * resolved by using get_state().
+ */
+class discard_block
+ :public tape_block
+{
+ friend tape_block* tape_block::gen_from_fd(int,void(*)(void*),
+ void(*)(void*),void*);
+public: // methods
+ discard_block(discard_block &);
+ virtual vector<string> get_description();
+
+discard_block(tape_block &);
+private: // methods
+
+ discard_block();
+
+}; // class discard_block
+
+
+#endif