These files are a subset of the python-2.7.2.tgz distribution from python.org. Changed files from PyMod-2.7.2 have been copied into the corresponding directories of this tree, replacing the original files in the distribution. Signed-off-by: daryl.mcdaniel@intel.com git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13197 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.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++;
 | |
| }
 |