[Python-checkins] CVS: python/dist/src/Tools/bgen/bgen bgenGenerator.py,1.6,1.7 bgenlocations.py,1.3,1.4 scantools.py,1.16,1.17

Guido van Rossum python-dev@python.org
2000年6月28日 13:53:36 -0700


Update of /cvsroot/python/python/dist/src/Tools/bgen/bgen
In directory slayer.i.sourceforge.net:/tmp/cvs-serv28490
Modified Files:
	bgenGenerator.py bgenlocations.py scantools.py 
Log Message:
Jack Jansen: Support for conditional inclusion of methods and functions
Index: bgenGenerator.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/bgen/bgen/bgenGenerator.py,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -r1.6 -r1.7
*** bgenGenerator.py	1995年06月18日 20:08:28	1.6
--- bgenGenerator.py	2000年06月28日 20:53:33	1.7
***************
*** 15,23 ****
 class BaseFunctionGenerator:
 
! 	def __init__(self, name):
 		print "<--", name
 		self.name = name
 		self.prefix = name
 		self.objecttype = "PyObject" # Type of _self argument to function
 
 	def setprefix(self, prefix):
--- 15,24 ----
 class BaseFunctionGenerator:
 
! 	def __init__(self, name, condition=None):
 		print "<--", name
 		self.name = name
 		self.prefix = name
 		self.objecttype = "PyObject" # Type of _self argument to function
+ 		self.condition = condition
 
 	def setprefix(self, prefix):
***************
*** 26,32 ****
--- 27,38 ----
 	def generate(self):
 		print "-->", self.name
+ 		if self.condition:
+ 			Output()
+ 			Output(self.condition)
 		self.functionheader()
 		self.functionbody()
 		self.functiontrailer()
+ 		if self.condition:
+ 			Output("#endif")
 
 	def functionheader(self):
***************
*** 51,56 ****
--- 57,67 ----
 			name = self.name
 		docstring = self.docstring()
+ 		if self.condition:
+ 			Output()
+ 			Output(self.condition)		
 		Output("{\"%s\", (PyCFunction)%s_%s, 1,", name, self.prefix, self.name)
 		Output(" %s},", stringify(docstring))
+ 		if self.condition:
+ 			Output("#endif")
 
 	def docstring(self):
***************
*** 74,79 ****
 class ManualGenerator(BaseFunctionGenerator):
 
! 	def __init__(self, name, body):
! 		BaseFunctionGenerator.__init__(self, name)
 		self.body = body
 
--- 85,90 ----
 class ManualGenerator(BaseFunctionGenerator):
 
! 	def __init__(self, name, body, condition=None):
! 		BaseFunctionGenerator.__init__(self, name, condition=condition)
 		self.body = body
 
***************
*** 88,93 ****
 class FunctionGenerator(BaseFunctionGenerator):
 
! 	def __init__(self, returntype, name, *argumentList):
! 		BaseFunctionGenerator.__init__(self, name)
 		self.returntype = returntype
 		self.argumentList = []
--- 99,104 ----
 class FunctionGenerator(BaseFunctionGenerator):
 
! 	def __init__(self, returntype, name, *argumentList, **conditionlist):
! 		BaseFunctionGenerator.__init__(self, name, **conditionlist)
 		self.returntype = returntype
 		self.argumentList = []
Index: bgenlocations.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/bgen/bgen/bgenlocations.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -r1.3 -r1.4
*** bgenlocations.py	1998年02月23日 15:30:40	1.3
--- bgenlocations.py	2000年06月28日 20:53:33	1.4
***************
*** 4,12 ****
 
 # Where to find the Universal Header include files:
! MWERKSDIR="flap:Metrowerks:Metrowerks CodeWarrior:"
! INCLUDEDIR=MWERKSDIR + "MacOS Support:Headers:Universal Headers:"
 
 # Where to put the python definitions file:
! TOOLBOXDIR="flap:Jack:Python:Mac:Lib:lib-toolbox:"
 
 # Creator for C files:
--- 4,12 ----
 
 # Where to find the Universal Header include files:
! MWERKSDIR="Macintosh HD:SWDev:Codewarrior Pro 5:Metrowerks CodeWarrior:"
! INCLUDEDIR=MWERKSDIR + "MacOS Support:Universal:Interfaces:CIncludes:"
 
 # Where to put the python definitions file:
! TOOLBOXDIR="Macintosh HD:SWDev:Jack:Python:Mac:Lib:lib-toolbox:"
 
 # Creator for C files:
Index: scantools.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/bgen/bgen/scantools.py,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -r1.16 -r1.17
*** scantools.py	2000年01月20日 20:49:28	1.16
--- scantools.py	2000年06月28日 20:53:33	1.17
***************
*** 100,103 ****
--- 100,111 ----
 		self.blacklistnames = self.makeblacklistnames()
 		self.blacklisttypes = ["unknown", "-"] + self.makeblacklisttypes()
+ 		self.greydictnames = self.greylist2dict(self.makegreylist())
+ 		
+ 	def greylist2dict(self, list):
+ 		rv = {}
+ 		for define, namelist in list:
+ 			for name in namelist:
+ 				rv[name] = define
+ 		return rv
 
 	def makeblacklistnames(self):
***************
*** 106,109 ****
--- 114,120 ----
 	def makeblacklisttypes(self):
 		return []
+ 		
+ 	def makegreylist(self):
+ 		return []
 
 	def initrepairinstructions(self):
***************
*** 396,399 ****
--- 407,411 ----
 		else:
 			self.defsfile.write("# %s = %s\n" % (name, defn))
+ 		# XXXX No way to handle greylisted names
 
 	def dofuncspec(self):
***************
*** 520,523 ****
--- 532,537 ----
 			self.specfile.write(" (%s, %s, %s),\n" %
 			 (atype, `aname`, amode))
+ 		if self.greydictnames.has_key(name):
+ 			self.specfile.write(" condition=%s,\n"%`self.greydictnames[name]`)
 		self.specfile.write(")\n")
 		self.specfile.write("%s.append(f)\n\n" % listname)

AltStyle によって変換されたページ (->オリジナル) /