#ifndef FILE_SPBITA2D
#define FILE_SPBITA2D

/**************************************************************************/
/* File:   spbita2d.hh                                                    */
/* Author: Joachim Schoeberl                                              */
/* Date:   01. Jun. 95                                                    */
/**************************************************************************/

/** 
   Implementation of sparse 2 dimensional bitarray
*/

namespace netgen
{

class SPARSE_BIT_Array_2D
  {
  class linestruct { public: INDEX size; INDEX maxsize; INDEX * col; };

  ///
  linestruct * lines;
  ///
  INDEX height, width;

  public:

  ///
  SPARSE_BIT_Array_2D (INDEX ah = 0, INDEX aw = 0);
  ///
  ~SPARSE_BIT_Array_2D ();

  ///
  void SetSize (INDEX ah, INDEX aw = 0);
  ///
  void DeleteElements ();

  ///
  int Get (INDEX i, INDEX j) const;

  ///
  INDEX Height () const { return height; }
  ///
  INDEX Width () const { return width; }

  ///
  void Set (INDEX i, INDEX j);
  ///
  int Test (INDEX i, INDEX j) const;

  ///
  INDEX BitsInLine (INDEX i) const { return lines[i-1].size; }
  ///
  INDEX GetIndex (INDEX i, INDEX nr) const { return lines[i-1].col[nr-1]; }
  };

}

#endif
