#ifndef PLA_H
#define PLA_H
#include "behavioral.h"
#include <list>
namespace hub {

// ---------------------------------------------------------------------
class PlaDescr: public BehavDescr {
private:
  int inputNo_;
  int outputNo_;
  std::list<std::vector<char>*> inputMatrix;
  std::list<std::vector<char>*> outputMatrix;
  bool f_;
  bool d_;
  bool r_;
public:
  std::string getDescrName();
  bool operator==(BehavDescr&);
  void type(std::string type);
  void setMatrices(std::list<std::string> *m);
  int inputNo(void) { return inputNo_; }
  int outputNo(void) { return outputNo_; }
  void inputNo(int n) { inputNo_ = n; }
  void outputNo(int n) { outputNo_ = n; }
  PlaDescr():f_(false), d_(false), r_(false) {}
  ~PlaDescr();
};
// ---------------------------------------------------------------------
class PlaAgent: public BehavAgent {
	virtual bool Eq (const BehavDescr*) const;		// compare func equivalence
	virtual BehavDescr* CreateDescr (void) const;	// create log representation
};

// =====================================================================
class FsmDescr: public BehavDescr {
private:
public:
};
// ---------------------------------------------------------------------
class FsmAgent: public BehavAgent {
	virtual bool Eq (const BehavDescr*) const;		// compare func equivalence
	virtual BehavDescr* CreateDescr (void) const;	// create log representation
};

}
#endif
