mirror of
https://github.com/CPunch/gopenfusion.git
synced 2024-11-14 03:50:05 +00:00
genstructs.py: minor refactoring, clean up emitted tags
This commit is contained in:
parent
6d42933189
commit
bdd7b5ba86
@ -75,30 +75,12 @@ class StructTranspiler:
|
||||
self.type = "[%d]byte" % self.size
|
||||
self.ctype = "char"
|
||||
self.cname += "[%d]" % self.size
|
||||
elif type == "int[]":
|
||||
self.size = int(marshal[(marshal.find("SizeConst = ") + len("SizeConst = ")):marshal.find(")]")])
|
||||
self.type = "[%d]int32" % self.size
|
||||
self.ctype = "int"
|
||||
self.cname += "[%d]" % self.size
|
||||
self.size *= 4
|
||||
elif type == "short[]":
|
||||
self.size = int(marshal[(marshal.find("SizeConst = ") + len("SizeConst = ")):marshal.find(")]")])
|
||||
self.type = "[%d]int16" % self.size
|
||||
self.ctype = "short"
|
||||
self.cname += "[%d]" % self.size
|
||||
self.size *= 2
|
||||
elif type == "long[]":
|
||||
self.size = int(marshal[(marshal.find("SizeConst = ") + len("SizeConst = ")):marshal.find(")]")])
|
||||
self.type = "[%d]int64" % self.size
|
||||
self.ctype = "long"
|
||||
self.cname += "[%d]" % self.size
|
||||
self.size *= 8
|
||||
elif type == "float[]":
|
||||
self.size = int(marshal[(marshal.find("SizeConst = ") + len("SizeConst = ")):marshal.find(")]")])
|
||||
self.type = "[%d]float32" % self.size
|
||||
self.ctype = "float"
|
||||
self.cname += "[%d]" % self.size
|
||||
self.size *= 4
|
||||
elif type == "string":
|
||||
# all strings in fusionfall are utf16, in a uint16 array
|
||||
self.size = int(marshal[(marshal.find("SizeConst = ") + len("SizeConst = ")):marshal.find(")]")])
|
||||
@ -107,9 +89,27 @@ class StructTranspiler:
|
||||
self.ctype = "short"
|
||||
self.cname += "[%d]" % self.size
|
||||
self.size *= 2
|
||||
elif type == "int[]":
|
||||
self.size = int(marshal[(marshal.find("SizeConst = ") + len("SizeConst = ")):marshal.find(")]")])
|
||||
self.type = "[%d]int32" % self.size
|
||||
self.ctype = "int"
|
||||
self.cname += "[%d]" % self.size
|
||||
self.size *= 4
|
||||
elif type == "float[]":
|
||||
self.size = int(marshal[(marshal.find("SizeConst = ") + len("SizeConst = ")):marshal.find(")]")])
|
||||
self.type = "[%d]float32" % self.size
|
||||
self.ctype = "float"
|
||||
self.cname += "[%d]" % self.size
|
||||
self.size *= 4
|
||||
elif type == "long[]":
|
||||
self.size = int(marshal[(marshal.find("SizeConst = ") + len("SizeConst = ")):marshal.find(")]")])
|
||||
self.type = "[%d]int64" % self.size
|
||||
self.ctype = "long"
|
||||
self.cname += "[%d]" % self.size
|
||||
self.size *= 8
|
||||
else:
|
||||
# assume it's a structure that will be defined later
|
||||
if type.find("[]") != -1:
|
||||
if type.find("[]") != -1: # it's an array!
|
||||
type = type.replace("[]", "")
|
||||
self.size = int(marshal[(marshal.find("SizeConst = ") + len("SizeConst = ")):marshal.find(")]")])
|
||||
self.cname = name + "[%d]" % self.size
|
||||
@ -214,6 +214,8 @@ class StructTranspiler:
|
||||
|
||||
if field.padding > 0:
|
||||
currentSize += field.padding
|
||||
if len(field.tags) > 0: # if there's already a tag defined, make sure there's a space separating them
|
||||
field.tags += " "
|
||||
field.tags += "pad:\"%d\"" % field.padding
|
||||
|
||||
source += "\n\t" + field.name + " " + field.type
|
||||
@ -254,7 +256,7 @@ if __name__ == '__main__':
|
||||
structs[i].fields[f].type = ("[%d]" % struct.fields[f].size) + struct.fields[f].type
|
||||
structs[i].fields[f].size *= s.size # field's size was set to 1 even if it wasn't an array
|
||||
structs[i].fields[f].needsPatching = False # mark done
|
||||
|
||||
break
|
||||
f = struct.needsPatching()
|
||||
|
||||
# we compile a small c program to grab the exact offsets and alignments
|
||||
|
Loading…
Reference in New Issue
Block a user