mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	 f95a1b3c53
			
		
	
	
		f95a1b3c53
		
	
	
	
	
		
			
			svn+ssh://pythondev@svn.python.org/python/trunk ........ r81029 | antoine.pitrou | 2010-05-09 16:46:46 +0200 (dim., 09 mai 2010) | 3 lines Untabify C files. Will watch buildbots. ........
		
			
				
	
	
		
			66 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
 | |
| /* Bitset primitives used by the parser generator */
 | |
| 
 | |
| #include "pgenheaders.h"
 | |
| #include "bitset.h"
 | |
| 
 | |
| bitset
 | |
| newbitset(int nbits)
 | |
| {
 | |
|     int nbytes = NBYTES(nbits);
 | |
|     bitset ss = (char *)PyObject_MALLOC(sizeof(BYTE) *  nbytes);
 | |
| 
 | |
|     if (ss == NULL)
 | |
|         Py_FatalError("no mem for bitset");
 | |
| 
 | |
|     ss += nbytes;
 | |
|     while (--nbytes >= 0)
 | |
|         *--ss = 0;
 | |
|     return ss;
 | |
| }
 | |
| 
 | |
| void
 | |
| delbitset(bitset ss)
 | |
| {
 | |
|     PyObject_FREE(ss);
 | |
| }
 | |
| 
 | |
| int
 | |
| addbit(bitset ss, int ibit)
 | |
| {
 | |
|     int ibyte = BIT2BYTE(ibit);
 | |
|     BYTE mask = BIT2MASK(ibit);
 | |
| 
 | |
|     if (ss[ibyte] & mask)
 | |
|         return 0; /* Bit already set */
 | |
|     ss[ibyte] |= mask;
 | |
|     return 1;
 | |
| }
 | |
| 
 | |
| #if 0 /* Now a macro */
 | |
| int
 | |
| testbit(bitset ss, int ibit)
 | |
| {
 | |
|     return (ss[BIT2BYTE(ibit)] & BIT2MASK(ibit)) != 0;
 | |
| }
 | |
| #endif
 | |
| 
 | |
| int
 | |
| samebitset(bitset ss1, bitset ss2, int nbits)
 | |
| {
 | |
|     int i;
 | |
| 
 | |
|     for (i = NBYTES(nbits); --i >= 0; )
 | |
|         if (*ss1++ != *ss2++)
 | |
|             return 0;
 | |
|     return 1;
 | |
| }
 | |
| 
 | |
| void
 | |
| mergebitset(bitset ss1, bitset ss2, int nbits)
 | |
| {
 | |
|     int i;
 | |
| 
 | |
|     for (i = NBYTES(nbits); --i >= 0; )
 | |
|         *ss1++ |= *ss2++;
 | |
| }
 |