[gnu.gcc.bug] bits.h

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);