+++ /dev/null
-\r
-/* Bitset primitives used by the parser generator */\r
-\r
-#include "pgenheaders.h"\r
-#include "bitset.h"\r
-\r
-bitset\r
-newbitset(int nbits)\r
-{\r
- int nbytes = NBYTES(nbits);\r
- bitset ss = (char *)PyObject_MALLOC(sizeof(BYTE) * nbytes);\r
-\r
- if (ss == NULL)\r
- Py_FatalError("no mem for bitset");\r
-\r
- ss += nbytes;\r
- while (--nbytes >= 0)\r
- *--ss = 0;\r
- return ss;\r
-}\r
-\r
-void\r
-delbitset(bitset ss)\r
-{\r
- PyObject_FREE(ss);\r
-}\r
-\r
-int\r
-addbit(bitset ss, int ibit)\r
-{\r
- int ibyte = BIT2BYTE(ibit);\r
- BYTE mask = BIT2MASK(ibit);\r
-\r
- if (ss[ibyte] & mask)\r
- return 0; /* Bit already set */\r
- ss[ibyte] |= mask;\r
- return 1;\r
-}\r
-\r
-#if 0 /* Now a macro */\r
-int\r
-testbit(bitset ss, int ibit)\r
-{\r
- return (ss[BIT2BYTE(ibit)] & BIT2MASK(ibit)) != 0;\r
-}\r
-#endif\r
-\r
-int\r
-samebitset(bitset ss1, bitset ss2, int nbits)\r
-{\r
- int i;\r
-\r
- for (i = NBYTES(nbits); --i >= 0; )\r
- if (*ss1++ != *ss2++)\r
- return 0;\r
- return 1;\r
-}\r
-\r
-void\r
-mergebitset(bitset ss1, bitset ss2, int nbits)\r
-{\r
- int i;\r
-\r
- for (i = NBYTES(nbits); --i >= 0; )\r
- *ss1++ |= *ss2++;\r
-}\r