if self.kind=="value":
if self.base_ctype.startswith("const "):
self.base_ctype = self.base_ctype[6:]
- self.io = iomap[self.base_ctype]
else:
if self.direction=="in":
self.ctype = "const "+self.ctype
self.ctype = self.ctype+" *"
+ self.io = iomap[self.base_ctype]
def derive_csize(self):
if self.kind=="array" and self.size is not None:
self.csize = "%d*sizeof(%s)"%(self.size, self.base_ctype)
elif self.size.startswith("COMPSIZE("):
self.csize = self.func.compsize(self.size[9:-1], self.base_ctype)
- elif self.size=="" and (self.type=="charARB" or self.type=="Char"):
- self.csize = "strlen"
+ elif self.size=="pname":
+ self.csize = "paramsize(pname)*sizeof(%s)"%self.base_ctype
else:
s = self.func.get_param(self.size.split('*')[0])
if (s.type=="SizeI" or s.type.endswith("Int32") or s.type.startswith("BufferSize")) and s.kind=="value":
have_type = True
elif cn.endswith("Format"):
res += "formatsize(%s)"%param.name
- elif cn.endswith(("Parameter", "ParameterPName", "ParameterName")) or cn=="GetPName":
+ elif param.name=="pname" or cn.endswith("Parameter"):
res += "paramsize(%s)"%param.name
elif cn=="MapTarget":
res += "mapsize(%s)"%param.name
sys.stderr.write("Compsize '%s' for function '%s' failed: Parameter '%s' has unknown type '%s'\n"%(size, self.name, param.name, param.type))
return
if not have_type:
- res += "*sizeof(%s)"%param.ctype
+ res += "*sizeof(%s)"%btype
return res
def finalize(self):
class Template:
def __init__(self, fn):
self.sections = []
+ self.handcode = []
literal = True
text = ""
text = ""
text += line[1:]+"\n"
literal = True
+ elif line[0]=='!':
+ parts = line[1:].split()
+ if parts[0]=="handcode":
+ self.handcode.append(parts[1])
else:
if literal and text:
self.add_section(text, literal)
print sect
else:
for func in functions:
+ if func.name in self.handcode:
+ continue
globals = {
"w": self.write,
"wl": self.writeln,