Adding User-Written Code : Mapping Rational Statemate Types into C : Bit-Array Functions

Bit-Array Functions
bit_array *AND(ba1, l_ba1, from1, to1, ba2, l_ba2,
from2, to2)
bit_array *ba1;
int l_ba1;
int from1;
int to1;
bit_array *ba2;
int l_ba2;
int from2;
int to2;
 
bit_array *NOT (ba1, l_ba1, from1, to1)
bit_array *ba1;
int l_ba1;
int from1;
int to1;
 
bit_array *OR(ba1, l_ba1, from1, to1, ba2, l_ba2,
from2, to2)
bit_array *ba1;
int l_ba1;
int from1;
int to1;
bit_array *ba2;
int l_ba2;
int from2;
int to2;
 
bit_array *XOR(ba1, l_ba1, from1, to1, ba2, l_ba2,
from2, to2)
bit_array *ba1;
int l_ba1;
int from1;
int to1;
bit_array *ba2;
int l_ba2;
int from2;
int to2;

The following bit array function names are mapped through macros to their internal names, because these names are used by Ada runtime libraries, therefore they cannot be defined as functions in the intrinsics. (These same intrinsics are used by C and Ada environment.) It is important to include the types.h header containing these macros.

#define ASHR ashr
#define LSHL lshl
#define LSHR lshr
#define BITS_OF bits_of
#define CONCAT_BA concat_ba
#define EXPAND_BIT expand_bit
#define SIGNED signed_b
#define MINUS minus_b
#define NAND nand_b
#define NOR nor_b
#define NXOR nxor

 

 

The functions are:

bit_array *concat_ba
(ba1,l_ba1, from1, to1, ba2, l_ba2, from2,to2)
bit_array *ba1;

int l_ba1;
int from1;
int to1;
bit_array *ba2;
int l_ba2;
int from2;
int to2;

bit_array *lshr(ba, len_ba, from, to, shift)
bit_array *ba;
int len_ba;
int from;

int to;
int shift;

 

bit_array *lshl(ba, len_ba, from, to, shift)
bit_array *ba;
int len_ba;
int from;
int to;
int shift;

 

int signed_b(ba_val, len, from, to)
bit_array *ba_val;
int len;
int from;
int to;

 

bit_array *ashr(ba, len_ba, from, to, shift)
bit_array *ba;
int len_ba;
int from;
int to;
int shift;

 

bit_array *nand_b(ba1, l_ba1, from1, to1, ba2, l_ba2,
from2, to2)
bit_array *ba1;
int l_ba1;
int from1;
int to1;
bit_array *ba2;
int l_ba2;
int from2;
int to2;

 

bit_array *nor_b(ba1, l_ba1, from1, to1, ba2, l_ba2,
from2, to2)
bit_array *ba1;
int l_ba1;
int from1;
int to1;
bit_array *ba2;
int l_ba2;
int from2;
int to2;

 

bit_array *nxor(ba1, l_ba1, from1, to1, ba2, l_ba2,
from2, to2)
bit_array *ba1;
int l_ba1;
int from1;
int to1;
bit_array *ba2;

int l_ba2;
int from2;
int to2;

 

 

Use the following functions to convert between integer and bit-array types:

bit_array *int2ba(int_val)
int int_val;

 

int ba2int(ba, len, from, to)
bit_array *ba;
int len;
int from;
int to;