aboutsummaryrefslogtreecommitdiffstats
path: root/luatablegen.py
diff options
context:
space:
mode:
Diffstat (limited to 'luatablegen.py')
-rwxr-xr-xluatablegen.py46
1 files changed, 23 insertions, 23 deletions
diff --git a/luatablegen.py b/luatablegen.py
index 868afc0..d172939 100755
--- a/luatablegen.py
+++ b/luatablegen.py
@@ -122,7 +122,7 @@ LUA_PUSH_TABLE_SIMPLE_TYPE_SIG = 'int pushluatable_YYY(lua_State* ls, XXX array,
LUA_PUSH_TABLE_SIG = "int pushluatable_YYY(lua_State* ls, XXX array, uint64_t count);\n"
LUA_PUSH_TABLE_CALL = "pushluatable_YYY(lua_State* ls, WWW, XXX array, ZZZ);\n"
-LUA_LIB = ["local wasm = {}\n\n", "return wasm\n"]
+LUA_LIB = ["local XXX = {}\n\n", "return XXX\n"]
LUA_SETMETA_NEW = ["setmetatable(XXX, {__call =\n", "\tfunction(selfAAA)\n",
"\t\tlocal t = self.new(AAA)\n", "\t\treturn t\n\tend\n\t}\n)\n"]
LUA_TO_GENERIC = "lua_to_YYY(__ls, ZZZ);\n"
@@ -343,6 +343,7 @@ class Argparser(object):
parser.add_argument("--outfile", type=str, help="name of the output file if signlefile is set, ignored otherwise")
parser.add_argument("--headeraggr", type=str, help="header aggregate file name")
parser.add_argument("--lualibpath", type=str, help="where the lua module file will be placed")
+ parser.add_argument("--lualibname", type=str, help="the name for the table")
parser.add_argument("--docpath", type=str, help="where the doc file will be placed")
parser.add_argument("--xml", type=str, help="same as --tbg but use an xml file instead")
parser.add_argument("--tbldefs", type=str, help="path to the definitions tablegen creates")
@@ -833,7 +834,7 @@ class TbgParser(object):
d_source.write("\n")
d_source.write("### " + "_" + "setter fields" + "_" + ":\n")
for field_name,lua_type in zip(field_names, lua_types):
- d_source.write("set_" + struct_name + ":" + field_name + "()" + " -- ")
+ d_source.write(struct_name + ":set_" + field_name + "()" + " -- ")
if lua_type == "lightuserdata":
d_source.write("arg type: " + field_name + "_t" + "<br/>" + "\n")
else:
@@ -845,27 +846,16 @@ class TbgParser(object):
d_source.write("\n")
d_source.write("\n")
- def luagen(self):
- l_source = open(self.argparser.args.lualibpath, "w")
- l_source.write("-- automatically generated by luatablegen\n")
- l_source.write("-- " + self.time + "\n")
- l_source.write(LUA_LIB[0])
- for k, v in self.tbg_file.items():
- struct_name = k
- field_names = v['field_name']
- field_types = v['field_type']
- lua_types = v['lua_type']
- l_source.write(LUA_SETMETA_NEW[0].replace("XXX", struct_name))
- arg_list_str = str()
- for i in range(0, len(field_names)):
- arg_list_str += ", arg" + repr(i)
- l_source.write(LUA_SETMETA_NEW[1].replace("AAA", arg_list_str))
- l_source.write(LUA_SETMETA_NEW[2].replace("AAA", arg_list_str[2:]))
- l_source.write(LUA_SETMETA_NEW[3])
- arg_list_str = str()
- l_source.write("\n")
-
- l_source.write(LUA_LIB[1])
+ def luagen(self, l_source, struct_name, field_names, field_types, lua_types):
+ l_source.write(LUA_SETMETA_NEW[0].replace("XXX", struct_name))
+ arg_list_str = str()
+ for i in range(0, len(field_names)):
+ arg_list_str += ", arg" + repr(i)
+ l_source.write(LUA_SETMETA_NEW[1].replace("AAA", arg_list_str))
+ l_source.write(LUA_SETMETA_NEW[2].replace("AAA", arg_list_str[2:]))
+ l_source.write(LUA_SETMETA_NEW[3])
+ arg_list_str = str()
+ l_source.write("\n")
def gen_table_def(self):
tbl_source = open(self.argparser.args.tbldefs + "/tabledefs.c", "w")
@@ -941,6 +931,11 @@ class TbgParser(object):
d_source = open(self.argparser.args.docpath, "w")
d_source.write("The lazy constructors are inside wasm.lua.\n")
d_source.write("```lua\nlocal wasm = require(\"wasm\")\n```\n")
+ if self.argparser.args.lualibpath:
+ l_source = open(self.argparser.args.lualibpath, "w")
+ l_source.write("-- automatically generated by luatablegen\n")
+ l_source.write("-- " + self.time + "\n")
+ l_source.write(LUA_LIB[0].replace("XXX", self.argparser.args.lualibname))
#for k, v in self.tbg_file.items():
for struct_name, field_names, field_types, lua_types in zip(self.struct_names, self.field_names, self.field_types, self.lua_types):
if not self.argparser.args.singlefile:
@@ -985,6 +980,8 @@ class TbgParser(object):
# docs
if self.argparser.args.docpath:
self.docgen_md(d_source, struct_name, field_names, field_types, lua_types)
+ if self.argparser.args.lualibpath:
+ self.luagen(l_source, struct_name, field_names, field_types, lua_types)
# header aggregate
if self.argparser.args.headeraggr:
name = self.argparser.args.headeraggr
@@ -1025,6 +1022,9 @@ class TbgParser(object):
if self.argparser.args.docpath:
d_source.write("_automatically generated by luatablegen._<br/>\n")
d_source.write("_" + self.time + "_")
+ if self.argparser.args.lualibpath:
+ #l_source = open(self.argparser.args.lualibpath, "w")
+ l_source.write(LUA_LIB[0].replace("XXX", self.argparser.args.lualibname))
# write code here
def premain(argparser):