Skip to content

Commit adb1ffa

Browse files
author
jackjansen
committed
Added methods mkvaluePreCheck and getargsPreCheck, which are called (for
each variable) before calling Py_BuildValue and PyArg_Parse. git-svn-id: http://svn.python.org/projects/python/trunk@39109 6015fed2-1504-0410-9fe1-9d1591cc4771
1 parent 66c6727 commit adb1ffa

3 files changed

Lines changed: 22 additions & 1 deletion

File tree

Tools/bgen/bgen/bgenGenerator.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ def getargs(self):
194194
if arg.flags == SelfMode:
195195
continue
196196
if arg.mode in (InMode, InOutMode):
197+
arg.getargsPreCheck()
197198
fmt = fmt + arg.getargsFormat()
198199
args = arg.getargsArgs()
199200
if args:
@@ -242,6 +243,7 @@ def returnvalue(self):
242243
if not arg: continue
243244
if arg.flags == ErrorMode: continue
244245
if arg.mode in (OutMode, InOutMode):
246+
arg.mkvaluePreCheck()
245247
fmt = fmt + arg.mkvalueFormat()
246248
lst = lst + sep + arg.mkvalueArgs()
247249
if fmt == "":

Tools/bgen/bgen/bgenType.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,18 @@ def getargsArgs(self, name):
6161
"""
6262
return "&" + name
6363

64+
def getargsPreCheck(self, name):
65+
"""Perform any actions needed before calling getargs().
66+
67+
This could include declaring temporary variables and such.
68+
"""
69+
6470
def getargsCheck(self, name):
6571
"""Perform any needed post-[new]getargs() checks.
6672
6773
This is type-dependent; the default does not check for errors.
68-
An example would be a check for a maximum string length."""
74+
An example would be a check for a maximum string length, or it
75+
could do post-getargs() copying or conversion."""
6976

7077
def passInput(self, name):
7178
"""Return an argument for passing a variable into a call.
@@ -119,6 +126,12 @@ def mkvalueArgs(self, name):
119126
"""
120127
return name
121128

129+
def mkvaluePreCheck(self, name):
130+
"""Perform any actions needed before calling mkvalue().
131+
132+
This could include declaring temporary variables and such.
133+
"""
134+
122135
def cleanup(self, name):
123136
"""Clean up if necessary.
124137

Tools/bgen/bgen/bgenVariable.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ def getargsArgs(self):
6363
def getargsCheck(self):
6464
return self.type.getargsCheck(self.name)
6565

66+
def getargsPreCheck(self):
67+
return self.type.getargsPreCheck(self.name)
68+
6669
def passArgument(self):
6770
"""Return the string required to pass the variable as argument.
6871
@@ -95,6 +98,9 @@ def mkvalueArgs(self):
9598
"""Call the type's mkvalueArgs method."""
9699
return self.type.mkvalueArgs(self.name)
97100

101+
def mkvaluePreCheck(self):
102+
return self.type.mkvaluePreCheck(self.name)
103+
98104
def cleanup(self):
99105
"""Call the type's cleanup method."""
100106
return self.type.cleanup(self.name)

0 commit comments

Comments
 (0)