@@ -17,6 +17,10 @@ def snake_case(s):
def generate_cpp(controls):
+ enum_doc_start_template = string.Template('''/**
+ * \enum ${name}Values\n * Supported ${name} values\n\n''')
+ enum_doc_value_template = string.Template(''' * \\var ${name}Values::${value}
+${description}\n *\n''')
doc_template = string.Template('''/**
* \\var extern const Control<${type}> ${name}
${description}
@@ -42,6 +46,27 @@ ${description}
'id_name': id_name,
}
+ enum_doc = []
+ try:
+ enum = ctrl['enum']
+ enum_doc += enum_doc_start_template.substitute(info)
+
+ for value in enum:
+ enum_description = value['description'].strip('\n').split('\n')
+ enum_description[0] = '\\brief ' + enum_description[0]
+ enum_description = '\n'.join([' * ' + line for line in enum_description])
+ value_info = {
+ 'name' : name,
+ 'value': list(value.keys())[0],
+ 'description': enum_description,
+ }
+ enum_doc += enum_doc_value_template.substitute(value_info)
+ enum_doc += " */"
+ enum_doc = ''.join(enum_doc)
+ ctrls_doc.append(enum_doc)
+ except KeyError:
+ pass
+
ctrls_doc.append(doc_template.substitute(info))
ctrls_def.append(def_template.substitute(info))
ctrls_map.append('\t{ ' + id_name + ', &' + name + ' },')
@@ -54,6 +79,8 @@ ${description}
def generate_h(controls):
+ enum_template_start = string.Template('''enum ${name}Values {''')
+ enum_value_template = string.Template('''\t${name} = ${value},''')
template = string.Template('''extern const Control<${type}> ${name};''')
ctrls = []
@@ -71,6 +98,20 @@ def generate_h(controls):
'type': ctrl['type'],
}
+ try:
+ enum = ctrl['enum']
+ ctrls.append(enum_template_start.substitute(info))
+
+ for value in enum:
+ value_info = {
+ 'name': list(value.keys())[0],
+ 'value': value['value'],
+ }
+ ctrls.append(enum_value_template.substitute(value_info))
+ ctrls.append("};")
+ except KeyError:
+ pass
+
ctrls.append(template.substitute(info))
id_value += 1