def implementArgumentProcessors(self, params, context): def isSimple(a): if a.condition or a.action: return False m = a.member return m.valueType == "std::string" and not m.values and not m.condition and not m.action lines = [] for a in self._args: m = a.member poe = ProcessOptionExpander(context, self, m, a) if m.type == "multivalue" and (a.delimiter or not isSimple(a)): lines.extend(codegen.makeLines(processMultivalueArgumentTemplate, poe)) elif m.type == "list" and a.delimiter: lines.extend(codegen.makeLines(processMultivalueListArgumentTemplate, poe)) elif m.type == "list" and not isSimple(a): lines.extend(codegen.makeLines(processListArgumentTemplate, poe)) elif not isSimple(a): lines.extend(codegen.makeLines(processArgumentTemplate, poe)) return lines
def implementOtionProcessors(self, params, context): lines = [] processed = set() for o in self._options: m = o.member if m in processed: continue poe = ProcessOptionExpander(context, self, m, o) if m.type == "help": tmpl = processHelpOptionTemplate lines.extend(codegen.makeLines(tmpl, poe)) processed.add(m) elif m.type == "info": tmpl = processInfoOptionTemplate lines.extend(codegen.makeLines(tmpl, poe)) processed.add(m) elif m.type == "multivalue": tmpl = processMultivalueOptionTemplate lines.extend(codegen.makeLines(tmpl, poe)) elif m.type == "list" and o.delimiter: tmpl = processMultivalueListOptionTemplate lines.extend(codegen.makeLines(tmpl, poe)) elif m.type == "list": tmpl = processListOptionTemplate lines.extend(codegen.makeLines(tmpl, poe)) elif m.type != "final": tmpl = processOptionTemplate lines.extend(codegen.makeLines(tmpl, poe)) return lines