#ifndef importH
#define importH

#include <algorithm>
#include "lexan.h"
#include "misc.h"

using namespace std;

// trida realizujici import logicke site z vstupniho souboru ve formatu bench
// --------------------------------------------------------------------------
class Import {

    // privatni data
    Lexan *l;// lexikalni analyzator
    vector<Input_elem> var_list;// seznam vstupnich elementu
    int token;// element po lexikalni analyze
    int input_num;
    int output_num;

    // privatni metody
    void inputs();// metoda, ktera nacte do seznamu var_list vstupni promenne
    void outputs();// metoda, ktera nacte do seznamu var_list vystupni promenne
    void assigns();// metoda, ktera nacte do seznamu var_list hradla (logicke prvky)
    int hradlo(void);// metoda, ktera vrati typ hradla podle obsahu promenne token
    void error();// kdyz se neco posere

public:
    Import(MStr);
    ~Import();

    // verejne metody
    void print_inputs(void);
    vector<Input_elem>& get_var_list(void);
    int get_input_num(void);
    int get_output_num(void);
    bool import_bench();// hlavni, verejne pristupna metoda
};

#endif
