#include "boolean.h"
Boolean* allocBoolean(VarType t) {
- Boolean* tmp=(Boolean*) ourmalloc(sizeof (Boolean));
- tmp->btype=BOOLEANVAR;
- tmp->var.vtype=t;
- return tmp;
+ BooleanVar* tmp=(BooleanVar *) ourmalloc(sizeof (BooleanVar));
+ tmp->base.btype=BOOLEANVAR;
+ tmp->vtype=t;
+ return & tmp->base;
}
Boolean* allocBooleanOrder(Order* order, uint64_t first, uint64_t second) {
- Boolean* tmp=(Boolean*) ourmalloc(sizeof (Boolean));
- tmp->btype=ORDERCONST;
- tmp->order.order=order;
- tmp->order.first=first;
- tmp->order.second=second;
- return tmp;
+ BooleanOrder* tmp=(BooleanOrder *) ourmalloc(sizeof (BooleanOrder));
+ tmp->base.btype=ORDERCONST;
+ tmp->order=order;
+ tmp->first=first;
+ tmp->second=second;
+ return & tmp -> base;
}
void deleteBoolean(Boolean * this) {
#include "mymemory.h"
#include "ops.h"
+/**
+ This is a little sketchy, but apparently legit.
+ https://www.python.org/dev/peps/pep-3123/ */
+
+struct Boolean {
+ BooleanType btype;
+};
+
struct BooleanOrder {
+ Boolean base;
Order* order;
uint64_t first;
uint64_t second;
};
struct BooleanVar {
+ Boolean base;
VarType vtype;
};
struct BooleanLogic {
+ Boolean base;
LogicOp op;
Boolean * left;
Boolean * right;
};
struct BooleanComp {
+ Boolean base;
CompOp op;
Boolean * left;
Boolean * right;
};
-struct Boolean {
- BooleanType btype;
- union {
- BooleanOrder order;
- BooleanVar var;
- BooleanLogic logic;
- BooleanComp comp;
- };
-};
+
Boolean * allocBoolean(VarType t);
Boolean * allocBooleanOrder(Order * order, uint64_t first, uint64_t second);