1: // bit_array -- Implement a subscriptable array of bits, get and set individual bits.

  3: #ifndef __bit_array__H__
  4: #define __bit_array__H__

  6: #define FALSE 0
  7: #define TRUE (!FALSE)

  9: class bit_array {

 11: public:
 12:                                                 // CONSTRUCTORS
 13:   bit_array(long n);                            // one dimensional bit_array
 14:   bit_array(long n, long m);                    // two dimensional bit_array

 16:   ~bit_array();                                 // DESTRUCTOR

 18:   long rows;                                    // number of rows
 19:   long cols;                                    // number of collumns

 21:   unsigned char* bytes;                         // the array of bits as bytes, 8 bits per byte
 22:                                                 // (deliberately public for I/O reasons...)

 24:   int operator()(long i);                       // 1-dimensional getter
 25:   int operator()(long i, long j);               // 2-dimensional getter

 27:   void set(long i, int val);                    // 1-dimensional setter
 28:   void set(long i, long j, int val);            // 2-dimensional setter

 30: };

 32: #endif //  __bit_array__H__