summaryrefslogtreecommitdiff
path: root/gate.h
blob: 535e3b23e4fb391e09b2b8078240f00db1fe04ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#ifndef HENCE_GATE_H
#define HENCE_GATE_H

#include <stddef.h>

#include "token.h"
#include "logic.h"

enum NODE_TYPE {
	NODE_INPUT,
	NODE_OUTPUT
};

struct gate {
	char *name;
	enum BINARY (*operation)(enum BINARY, enum BINARY);
	enum BINARY output;
	struct gate *in1;
	struct gate *in2;
};

void gate_update_output(struct gate *);
int gate_input_add(char *name);
struct gate* gate_get_input_by_name(char *name);
int gate_add(enum TOKEN_TYPE op, char *name, char *left, char* right);
//int gate_add(char *name, enum BINARY (*operation)(enum BINARY, enum BINARY), struct gate *in1, struct gate *in2);
int tick(void);
void gate_init(void);
void gate_dump(void);
int gate_set_input(char *name, enum BINARY value);
void gate_update(void);

#endif