xref: /petsc/include/petscbt.h (revision bd3dcc6d868bc58cd972dac31d4dc5715f0a1236)
1*bd3dcc6dSSatish Balay /* $Id: pc.h,v 1.52 1996/01/26 02:02:46 curfman Exp $ */
2*bd3dcc6dSSatish Balay 
319fee000SSatish Balay /*
419fee000SSatish Balay       BT_LOOKUP - Expexts a charecter array -'array' as input, and
519fee000SSatish Balay       treats it as  an array of bits. It Checks if a given bit location
619fee000SSatish Balay       ( specified by 'index') is marked, and later marks that location.
719fee000SSatish Balay 
819fee000SSatish Balay       Input:
919fee000SSatish Balay       array  - an array of char. Initially all bits are to be set to zero
1019fee000SSatish Balay                by using PetscMemzero().
1119fee000SSatish Balay       index  - specifies the index of the required bit in the bit array.
1219fee000SSatish Balay 
1319fee000SSatish Balay       Output:
1419fee000SSatish Balay       return val - 0 if the bit is not found,
1519fee000SSatish Balay                  - nonzero if found.
1619fee000SSatish Balay 
1719fee000SSatish Balay       Usage :
1819fee000SSatish Balay       BT_LOOKUP(char * array,  int index) ;
1919fee000SSatish Balay 
2019fee000SSatish Balay       Summary:
2119fee000SSatish Balay           The bit operations are euivalent to:
2219fee000SSatish Balay               1: retval = array[idx];
2319fee000SSatish Balay               2: array[index] = 1;
2419fee000SSatish Balay               3: return retval;
2519fee000SSatish Balay */
2619fee000SSatish Balay 
2719fee000SSatish Balay static char _mask, _BT_c;
2819fee000SSatish Balay static int  _BT_idx;
2919fee000SSatish Balay #define BT_LOOKUP( array,  index) (_BT_idx         = index/8, \
3019fee000SSatish Balay                                    _BT_c           = array[_BT_idx], \
3119fee000SSatish Balay                                    _BT_idx         = index/8, \
3219fee000SSatish Balay                                    _mask           = (char)1 << (index%8), \
3319fee000SSatish Balay                                    array[_BT_idx]  = _BT_c|_mask, \
3419fee000SSatish Balay                                    _BT_c & _mask )
3519fee000SSatish Balay 
3619fee000SSatish Balay 
37