diff options
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/genspec.py | 13 | ||||
-rwxr-xr-x | tools/get_descriptions.py | 2 | ||||
-rw-r--r-- | tools/tosa.py | 17 |
3 files changed, 31 insertions, 1 deletions
diff --git a/tools/genspec.py b/tools/genspec.py index 38ae6e3..2bc1283 100755 --- a/tools/genspec.py +++ b/tools/genspec.py @@ -8,6 +8,15 @@ class TOSASpecAsciidocGenerator: def __init__(self, spec): self.spec = spec + def generate_enum(self, enum, file): + file.write(f"\n=== {enum.name}\n") + file.write(f"{enum.description}\n") + file.write("|===\n") + file.write("|Name|Value|Description\n\n") + for val in enum.values: + file.write(f"|{val[0]}|{val[1]}|{val[2]}\n") + file.write("|===\n") + def generate_operator(self, op, file): file.write("\n*Arguments:*\n") file.write("\n|===\n") @@ -75,7 +84,9 @@ class TOSASpecAsciidocGenerator: for op in group.operators: with open(os.path.join(opdir, op.name + ".adoc"), "w") as f: self.generate_operator(op, f) - + with open(os.path.join(outdir, "enums.adoc"), 'w') as f: + for enum in self.spec.enums: + self.generate_enum(enum, f) if __name__ == "__main__": import argparse diff --git a/tools/get_descriptions.py b/tools/get_descriptions.py index 0a39a19..2f29879 100755 --- a/tools/get_descriptions.py +++ b/tools/get_descriptions.py @@ -49,5 +49,7 @@ for name in args.filenames: # skip comments elif re.match(r"\w*\/\/", text): continue + elif re.match(r"include::", text): + continue else: print(text) diff --git a/tools/tosa.py b/tools/tosa.py index 74d43d6..9af0756 100644 --- a/tools/tosa.py +++ b/tools/tosa.py @@ -7,6 +7,12 @@ class TOSAOperatorArgumentCategory: self.name = name self.profiles = profiles +class TOSAEnum: + def __init__(self, name, description, values): + self.name = name + self.description = description + self.values = values + class TOSAOperatorArgument: def __init__(self, name, description, categories, ty, shape, levellimits): @@ -44,12 +50,15 @@ class TOSASpec: tree = ET.parse(xmlpath) self.xmlroot = tree.getroot() self.operatorgroups = [] + self.enums = [] self.__load_spec() def __load_spec(self): self.__load_version() for group in self.xmlroot.findall("./operators/operatorgroup"): self.operatorgroups.append(self.__load_operator_group(group)) + for enum in self.xmlroot.findall("./enum"): + self.enums.append(self.load_enum(enum)) def __load_version(self): version = self.xmlroot.find("./version") @@ -112,3 +121,11 @@ class TOSASpec: argcats.append(TOSAOperatorArgumentCategory(cat[0], cat[1].split(","))) return TOSAOperatorArgument(name, desc, argcats, argtype, shape, levellimits) + + def load_enum(self, arg): + name = arg.get("name") + desc = arg.get("description").strip() + values = [] + for val in arg.findall("enumval"): + values.append((val.get("name"), val.get("value"), val.get("description"))) + return TOSAEnum(name, desc, values)
\ No newline at end of file |