#ifndef _graf
#define _graf

#include <vector>
#include <map>

#include "uzel.h"
#include "parser.h"
#include "fronta.h"
#include "podskupina.h"

using namespace std;

class Graf{
    public:
      vector <std::pair <string,Uzel*> > inputs; //vstupy grafu
      vector <std::pair <string,Uzel*> > outputs; //vystupy grafu
      map<string,Uzel*> gateMap; //uzly grafu
      
      int count_i, count_o, count_g; //pocet vstupu, vystupu, uzlu
      char *filename; //jmeno souboru

      string getType(gates x);
      string convert (unsigned x);
      
    public:
      Graf(char *_filename);
      Uzel* getNotSigned(); //ziskani neoznaceneho uzlu
      void decompose (int count, int maxGates, int kl_runs, int tests); //dekompozice obvodu
      void reset(); //resetovat docasne informace uzlu
};


#endif
