adamj%WEB.Berkeley.EDU@LILAC.BERKELEY.EDU (03/26/89)
typedef unsigned char bool;
static const bool FALSE = 0;
static const bool TRUE = 1;
typedef struct _Bit {
struct _Bit *left, *right; /* Nand */
struct _Bit *same_left_node_forward;
struct _Bit *same_left_node_back;
unsigned long a, b; /* Bit vectors for evaulating 32 values
simultaneously. */
unsigned int height;
bool computed;
bool mark;
struct _Bit *parent;
struct _Bit *chain;
} Bit;
extern void GarbageCollect (void);
extern void SetBitMark (Bit *bit, bool mark_value);
extern Bit *GenPrimitiveBit (void);
extern Bit *GenCompositeBit (Bit *left, Bit *right);
extern Bit *GenNand (Bit *left, Bit *right);
extern Bit *GenNot (Bit *bit);
extern Bit *GenAnd (Bit *bit1, Bit *bit2);
extern Bit *GenOr (Bit *bit1, Bit *bit2);
extern Bit *GenNor (Bit *bit1, Bit *bit2);
extern Bit *GenXor (Bit *bit1, Bit *bit2);
extern Bit *GenConstantBit (bool value);
extern Bit *Build_Mask_Table_Expr (int *mask_table,
Bit **input_vector,
int input_vector_size,
int output_bit);
extern void Initialize_Bits (void);
extern bool Get_Constant_Bit_Value (Bit *bit);
extern void InvalidateAllBits (void);
extern void EvaluateBit (Bit *bit);
extern void SetBitValue (Bit *bit, bool value);
extern bool GetBitValue (Bit *bit);