24 lines
544 B
C++
24 lines
544 B
C++
#include <string>
|
|
#include <vector>
|
|
#include <unordered_map>
|
|
|
|
class Gate {
|
|
public:
|
|
int topo;
|
|
std::string name;
|
|
enum { AND, NAND, OR, NOR, XOR, XNOR, NOT, BUF, INPUT, OUTPUT } type;
|
|
enum { VAL_ZERO, VAL_ONE, VAL_X } value;
|
|
std::vector<Gate*> outputs;
|
|
std::vector<Gate*> inputs;
|
|
};
|
|
|
|
class Circuit {
|
|
public:
|
|
std::vector<Gate*> PIs;
|
|
std::vector<Gate*> POs;
|
|
std::vector<Gate*> gates;
|
|
std::unordered_map<std::string, Gate*> name2gate;
|
|
void parse_from_file(const char *filename);
|
|
void cal_topo_index();
|
|
void cal_headlines();
|
|
}; |