#ifndef __PLAtab_h__
#define __PLAtab_h__

#include "BDD.h"
#include <iostream>
using namespace std;

/* --- pomocna datova struktura pro nacitani BDD --- */
/* --- podobne matici, ale funkce navic --- */
/* --- dvojrozmerne pole data, pocet rad-rad, pocet sloupcu-sl  --- */

  class PLAtab
   {
     int ** data;
     int    rad;
     int    sl;


     public:

                  PLAtab ( int r = 0, int s=0, int load = 0 );
                  PLAtab ( const PLAtab & src );
                 ~PLAtab ();

      PLAtab   & operator= ( const PLAtab & src );
      PLAtab     addR      ( );

      PLAtab     delR      ( int radek );
      PLAtab     delS      ( int sloupec );
      PLAtab     expanse1  (Node * parent, BDD * dest_bdd);
      PLAtab     expanse0  (Node * parent, BDD * dest_bdd);
      void       expEnd1   (Node * parent, BDD * dest_bdd);
      void       expEnd0   (Node * parent, BDD * dest_bdd);
      void       bdd_z_termu(BDD * dest_bdd);
      int          operator == ( const PLAtab & x )  const;
      int          operator != ( const PLAtab & x )  const;
      int *        operator[]  ( int ind );
      const int *  operator[]  ( int ind )  const;



      friend ostream & operator<< ( ostream & out, const PLAtab & x );

   };




  #endif
