Changeset 388 for python/vendor/current/Parser/bitset.c
- Timestamp:
- Mar 19, 2014, 11:11:30 AM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
python/vendor/current/Parser/bitset.c
r2 r388 8 8 newbitset(int nbits) 9 9 { 10 11 12 13 14 15 16 17 18 19 10 int nbytes = NBYTES(nbits); 11 bitset ss = (char *)PyObject_MALLOC(sizeof(BYTE) * nbytes); 12 13 if (ss == NULL) 14 Py_FatalError("no mem for bitset"); 15 16 ss += nbytes; 17 while (--nbytes >= 0) 18 *--ss = 0; 19 return ss; 20 20 } 21 21 … … 23 23 delbitset(bitset ss) 24 24 { 25 25 PyObject_FREE(ss); 26 26 } 27 27 … … 29 29 addbit(bitset ss, int ibit) 30 30 { 31 32 33 34 35 36 37 31 int ibyte = BIT2BYTE(ibit); 32 BYTE mask = BIT2MASK(ibit); 33 34 if (ss[ibyte] & mask) 35 return 0; /* Bit already set */ 36 ss[ibyte] |= mask; 37 return 1; 38 38 } 39 39 … … 42 42 testbit(bitset ss, int ibit) 43 43 { 44 44 return (ss[BIT2BYTE(ibit)] & BIT2MASK(ibit)) != 0; 45 45 } 46 46 #endif … … 49 49 samebitset(bitset ss1, bitset ss2, int nbits) 50 50 { 51 52 53 54 55 56 51 int i; 52 53 for (i = NBYTES(nbits); --i >= 0; ) 54 if (*ss1++ != *ss2++) 55 return 0; 56 return 1; 57 57 } 58 58 … … 60 60 mergebitset(bitset ss1, bitset ss2, int nbits) 61 61 { 62 63 64 65 62 int i; 63 64 for (i = NBYTES(nbits); --i >= 0; ) 65 *ss1++ |= *ss2++; 66 66 }
Note:
See TracChangeset
for help on using the changeset viewer.