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
		
			
				
	
	
		
			74 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
 | |
| def flatten(tup):
 | |
|     elts = []
 | |
|     for elt in tup:
 | |
|         if isinstance(elt, tuple):
 | |
|             elts = elts + flatten(elt)
 | |
|         else:
 | |
|             elts.append(elt)
 | |
|     return elts
 | |
| 
 | |
| class Set:
 | |
|     def __init__(self):
 | |
|         self.elts = {}
 | |
|     def __len__(self):
 | |
|         return len(self.elts)
 | |
|     def __contains__(self, elt):
 | |
|         return elt in self.elts
 | |
|     def add(self, elt):
 | |
|         self.elts[elt] = elt
 | |
|     def elements(self):
 | |
|         return self.elts.keys()
 | |
|     def has_elt(self, elt):
 | |
|         return elt in self.elts
 | |
|     def remove(self, elt):
 | |
|         del self.elts[elt]
 | |
|     def copy(self):
 | |
|         c = Set()
 | |
|         c.elts.update(self.elts)
 | |
|         return c
 | |
| 
 | |
| class Stack:
 | |
|     def __init__(self):
 | |
|         self.stack = []
 | |
|         self.pop = self.stack.pop
 | |
|     def __len__(self):
 | |
|         return len(self.stack)
 | |
|     def push(self, elt):
 | |
|         self.stack.append(elt)
 | |
|     def top(self):
 | |
|         return self.stack[-1]
 | |
|     def __getitem__(self, index): # needed by visitContinue()
 | |
|         return self.stack[index]
 | |
| 
 | |
| MANGLE_LEN = 256 # magic constant from compile.c
 | |
| 
 | |
| def mangle(name, klass):
 | |
|     if not name.startswith('__'):
 | |
|         return name
 | |
|     if len(name) + 2 >= MANGLE_LEN:
 | |
|         return name
 | |
|     if name.endswith('__'):
 | |
|         return name
 | |
|     try:
 | |
|         i = 0
 | |
|         while klass[i] == '_':
 | |
|             i = i + 1
 | |
|     except IndexError:
 | |
|         return name
 | |
|     klass = klass[i:]
 | |
| 
 | |
|     tlen = len(klass) + len(name)
 | |
|     if tlen > MANGLE_LEN:
 | |
|         klass = klass[:MANGLE_LEN-tlen]
 | |
| 
 | |
|     return "_%s%s" % (klass, name)
 | |
| 
 | |
| def set_filename(filename, tree):
 | |
|     """Set the filename attribute to filename on every node in tree"""
 | |
|     worklist = [tree]
 | |
|     while worklist:
 | |
|         node = worklist.pop(0)
 | |
|         node.filename = filename
 | |
|         worklist.extend(node.getChildNodes())
 |