def serialize_class(filename): xml = objectify.parse(filename) doxygen = xml.getroot() clazz = doxygen.compounddef documentation_class = getclass(clazz.compoundname.text) #f = open('documentation/' + classname + ".html.mako",'w') #index.write("[" + classname + "](" + classname + ".html)\n\n") #f.write( '<%inherit file="_templates/documentation.mako" />\n' ) #f.write( '___' + classname + "___\n" ) inheritsfrom = [] if clazz.find('derivedcompoundref')!=None: inheritsfrom = clazz.derivedcompoundref if clazz.find('sectiondef')!=None: for section in clazz.sectiondef: for member in section.memberdef: #if section.get("kind") == public TODO: access, virtual, pure virtual if member.get("kind") == 'enum': pass else: #f.write( "$$code(lang=c++)\n" ) if member.get("kind") == 'variable': var = documentation_class.var_by_name(member.name.text) if not var: var = DocsVar(0) var.name = member.name.text var.access = member.get("prot") var.version_started = currentversion var.version_deprecated = "" var.constant = member.get("mutable")=="no" var.static = member.get("static") var.clazz = documentation_class.name var.type = member.type.ref.text if hasattr(member.type,'ref') else member.type.text documentation_class.var_list.append(var) #f.write( str(member.type.text) + " " + str(member.name.text) + "\n" ) if member.get("kind") == 'function': argstring = str(member.argsstring.text) params = argstring[argstring.find('(')+1:argstring.rfind(')')] returns = member.type.ref.text if hasattr(member.type,'ref') else member.type.text returns = ("" if returns is None else returns) method = documentation_class.function_by_signature(member.name.text, returns, params) method.static = member.get("static") method.clazz = documentation_class.name method.access = member.get("prot") method.returns = returns #method.description = method.description.replace("~~~~{.brush: cpp}","~~~~{.cpp}").replace('</pre>',"~~~~") method.description = method.description.replace('<p>','').replace('</p>','').replace('<code>','').replace('</code>','').replace('<pre>','') if method.new: method.version_started = currentversion #f.write( str(member.type.text) + " " + str(member.name.text) + str(member.argsstring.text) + "\n" ) #f.write( "$$/code\n\n\n\n" ) #f.close() setclass(documentation_class)
def serialize_class(filename): xml = objectify.parse(filename) doxygen = xml.getroot() clazz = doxygen.compounddef documentation_class = getclass(clazz.compoundname.text) inheritsfrom = [] if clazz.find('derivedcompoundref') != None: inheritsfrom = clazz.derivedcompoundref if clazz.find('sectiondef') != None: for section in clazz.sectiondef: for member in section.memberdef: if member.get("kind") == 'enum': pass else: if member.get("kind") == 'variable': var = documentation_class.var_by_name(member.name.text) if not var: var = DocsVar(0) var.name = member.name.text var.access = member.get("prot") var.version_started = currentversion var.version_deprecated = "" var.constant = member.get("mutable") == "no" var.static = member.get("static") var.clazz = documentation_class.name var.type = member.type.ref.text if hasattr( member.type, 'ref') else member.type.text documentation_class.var_list.append(var) if member.get("kind") == 'function': argstring = str(member.argsstring.text) params = argstring[argstring.find('(') + 1:argstring.rfind(')')] returns = member.type.ref.text if hasattr( member.type, 'ref') else member.type.text returns = ("" if returns is None else returns) method = documentation_class.function_by_signature( member.name.text, returns, params) method.static = member.get("static") method.clazz = documentation_class.name method.access = member.get("prot") method.returns = returns if method.new: method.version_started = currentversion setclass(documentation_class)
def serialize_class(filename): xml = objectify.parse(filename) doxygen = xml.getroot() clazz = doxygen.compounddef documentation_class = getclass(clazz.compoundname.text) inheritsfrom = [] if clazz.find('derivedcompoundref')!=None: inheritsfrom = clazz.derivedcompoundref if clazz.find('sectiondef')!=None: for section in clazz.sectiondef: for member in section.memberdef: if member.get("kind") == 'enum': pass else: if member.get("kind") == 'variable': var = documentation_class.var_by_name(member.name.text) if not var: var = DocsVar(0) var.name = member.name.text var.access = member.get("prot") var.version_started = currentversion var.version_deprecated = "" var.constant = member.get("mutable")=="no" var.static = member.get("static") var.clazz = documentation_class.name var.type = member.type.ref.text if hasattr(member.type,'ref') else member.type.text documentation_class.var_list.append(var) if member.get("kind") == 'function': argstring = str(member.argsstring.text) params = argstring[argstring.find('(')+1:argstring.rfind(')')] returns = member.type.ref.text if hasattr(member.type,'ref') else member.type.text returns = ("" if returns is None else returns) method = documentation_class.function_by_signature(member.name.text, returns, params) method.static = member.get("static") method.clazz = documentation_class.name method.access = member.get("prot") method.returns = returns if method.new: method.version_started = currentversion setclass(documentation_class)
def parse_variable(documentation_class, clazz, member): var = documentation_class.var_by_name(member.displayname) if not var: var = DocsVar(0) var.name = member.spelling var.access = member.access_specifier.name.lower() var.version_started = currentversion var.version_deprecated = "" var.constant = member.result_type.is_volatile_qualified() var.static = member.kind == CursorKind.VAR_DECL var.clazz = documentation_class.name #member.type.ref.text if hasattr(member.type,'ref') else member.type.text var.type = substitutetype(member.type.spelling) new_vars.append(var) try: var.inlined_description = parse_docs(member) except: pass return var
def serialize_class(filename,is_addon=False): xml = objectify.parse(filename) doxygen = xml.getroot() clazz = doxygen_compound.parse(filename).compounddef #doxygen.compounddef documentation_class = getclass(clazz.compoundname) current_variables_list = [] current_methods_list = [] #f = open('documentation/' + classname + ".html.mako",'w') #index.write("[" + classname + "](" + classname + ".html)\n\n") #f.write( '<%inherit file="_templates/documentation.mako" />\n' ) #f.write( '___' + classname + "___\n" ) inheritsfrom = [] #if clazz.find('derivedcompoundref')!=None: inheritsfrom = clazz.derivedcompoundref documentation_class.detailed_inline_description = "" #clazz_for_description = doxygen_compound.parse(filename).compounddef for p in clazz.briefdescription.get_para(): documentation_class.detailed_inline_description = documentation_class.detailed_inline_description + serialize_doxygen_paragraph(p) documentation_class.detailed_inline_description = documentation_class.detailed_inline_description + "\n" for p in clazz.detaileddescription.get_para(): documentation_class.detailed_inline_description = documentation_class.detailed_inline_description + serialize_doxygen_paragraph(p) #if clazz.find('sectiondef')!=None: for section in clazz.sectiondef: for member in section.memberdef: #if section.get("kind") == public TODO: access, virtual, pure virtual if member.kind == 'enum': pass else: #f.write( "$$code(lang=c++)\n" ) if member.kind == 'variable': var = documentation_class.var_by_name(member.name) if not var: var = DocsVar(0) var.name = member.name var.access = member.prot var.version_started = currentversion var.version_deprecated = "" var.constant = member.mutable=="no" var.static = member.static!="no" var.clazz = documentation_class.name #member.type.ref.text if hasattr(member.type,'ref') else member.type.text var.type = "" try: for e in member.type_.content_: if type(e.value) == doxygen_compound.refTextType: var.type = var.type + e.value.valueOf_ else: var.type = var.type + e.value + " " except: pass current_variables_list.append(var) #f.write( str(member.type.text) + " " + str(member.name.text) + "\n" ) if member.kind == 'function' and member.name.find("OF_DEPRECATED_MSG")==-1: #print member.name argstring = str(member.argsstring) params = argstring[argstring.find('(')+1:argstring.rfind(')')] returns = "" try: for e in member.type_.content_: if type(e.value) == doxygen_compound.refTextType: returns = returns + e.value.valueOf_ else: returns = returns + e.value except: pass returns = ("" if returns is None else returns) method = documentation_class.function_by_signature(member.name, returns, params) method.static = member.static!="no" method.clazz = documentation_class.name method.access = member.prot method.returns = returns #method.description = method.description.replace("~~~~{.brush: cpp}","~~~~{.cpp}").replace('</pre>',"~~~~") method.description = method.description.replace('<p>','').replace('</p>','').replace('<code>','').replace('</code>','').replace('<pre>','') if method.new: print "new method " + method.name + " in " + method.clazz method.version_started = currentversion method.inlined_description = "" for p in member.briefdescription.get_para(): method.inlined_description = method.inlined_description + serialize_doxygen_paragraph(p) method.inlined_description = method.inlined_description + "\n" for p in member.detaileddescription.get_para(): method.inlined_description = method.inlined_description + serialize_doxygen_paragraph(p) current_methods_list.append(method) #f.write( str(member.type.text) + " " + str(member.name.text) + str(member.argsstring.text) + "\n" ) """if member.name.text.find("OF_DEPRECATED_MSG")!=-1: print "found deprecated function " + member.name.text print "argstring = " + str(member.argsstring.text) print "params = " + member.argsstring.text[member.argsstring.text.find('(')+1:member.argsstring.text.rfind(')')] returns = member.type.ref.text if hasattr(member.type,'ref') else member.type.text print "returns = " + ("" if returns is None else returns)""" #f.write( "$$/code\n\n\n\n" ) #f.close() deprecated_methods = [] for method in documentation_class.function_list: if method.name.find("OF_DEPRECATED_MSG")!=-1: deprecated_methods.append(method) for method in deprecated_methods: documentation_class.function_list.remove(method); class_name_printed = False for method in documentation_class.function_list: if not method in current_methods_list: if method.description.strip("\n ") != "": if not class_name_printed: print "\n\n\n\n" print "========================================" print "class " + documentation_class.name class_name_printed = True print "\n\n\n\n" print "removing method " + method.returns + " " + method.name + "(" + method.parameters + ")" print "with description:" print method.description documentation_class.function_list = current_methods_list for var in documentation_class.var_list: if not var in current_variables_list: if var.description.strip("\n ") != "": if not class_name_printed: print "\n\n\n\n" print "========================================" print "class " + documentation_class.name class_name_printed = True print "removing " + var.name print "with description:" print var.description documentation_class.var_list = current_variables_list documentation_class.function_list.sort(key=lambda function: function.name) documentation_class.var_list.sort(key=lambda variable: variable.name) setclass(documentation_class,is_addon)
def serialize_class(filename, is_addon=False): xml = objectify.parse(filename) doxygen = xml.getroot() clazz = doxygen_compound.parse(filename).compounddef #doxygen.compounddef documentation_class = getclass(clazz.compoundname) current_variables_list = [] current_methods_list = [] #f = open('documentation/' + classname + ".html.mako",'w') #index.write("[" + classname + "](" + classname + ".html)\n\n") #f.write( '<%inherit file="_templates/documentation.mako" />\n' ) #f.write( '___' + classname + "___\n" ) inheritsfrom = [] #if clazz.find('derivedcompoundref')!=None: inheritsfrom = clazz.derivedcompoundref documentation_class.detailed_inline_description = "" #clazz_for_description = doxygen_compound.parse(filename).compounddef for p in clazz.briefdescription.get_para(): documentation_class.detailed_inline_description = documentation_class.detailed_inline_description + serialize_doxygen_paragraph( p) documentation_class.detailed_inline_description = documentation_class.detailed_inline_description + "\n" for p in clazz.detaileddescription.get_para(): documentation_class.detailed_inline_description = documentation_class.detailed_inline_description + serialize_doxygen_paragraph( p) #if clazz.find('sectiondef')!=None: for section in clazz.sectiondef: for member in section.memberdef: #if section.get("kind") == public TODO: access, virtual, pure virtual if member.kind == 'enum': pass else: #f.write( "$$code(lang=c++)\n" ) if member.kind == 'variable': var = documentation_class.var_by_name(member.name) if not var: var = DocsVar(0) var.name = member.name var.access = member.prot var.version_started = currentversion var.version_deprecated = "" var.constant = member.mutable == "no" var.static = member.static != "no" var.clazz = documentation_class.name #member.type.ref.text if hasattr(member.type,'ref') else member.type.text var.type = "" try: for e in member.type_.content_: if type(e.value ) == doxygen_compound.refTextType: var.type = var.type + e.value.valueOf_ else: var.type = var.type + e.value + " " except: pass current_variables_list.append(var) #f.write( str(member.type.text) + " " + str(member.name.text) + "\n" ) if member.kind == 'function' and member.name.find( "OF_DEPRECATED_MSG") == -1: #print member.name argstring = str(member.argsstring) params = argstring[argstring.find('(') + 1:argstring.rfind(')')] returns = "" try: for e in member.type_.content_: if type(e.value) == doxygen_compound.refTextType: returns = returns + e.value.valueOf_ else: returns = returns + e.value except: pass returns = ("" if returns is None else returns) method = documentation_class.function_by_signature( member.name, returns, params) method.static = member.static != "no" method.clazz = documentation_class.name method.access = member.prot method.returns = returns #method.description = method.description.replace("~~~~{.brush: cpp}","~~~~{.cpp}").replace('</pre>',"~~~~") method.description = method.description.replace( '<p>', '').replace('</p>', '').replace('<code>', '').replace( '</code>', '').replace('<pre>', '') if method.new: print "new method " + method.name + " in " + method.clazz method.version_started = currentversion method.inlined_description = "" for p in member.briefdescription.get_para(): method.inlined_description = method.inlined_description + serialize_doxygen_paragraph( p) method.inlined_description = method.inlined_description + "\n" for p in member.detaileddescription.get_para(): method.inlined_description = method.inlined_description + serialize_doxygen_paragraph( p) current_methods_list.append(method) #f.write( str(member.type.text) + " " + str(member.name.text) + str(member.argsstring.text) + "\n" ) """if member.name.text.find("OF_DEPRECATED_MSG")!=-1: print "found deprecated function " + member.name.text print "argstring = " + str(member.argsstring.text) print "params = " + member.argsstring.text[member.argsstring.text.find('(')+1:member.argsstring.text.rfind(')')] returns = member.type.ref.text if hasattr(member.type,'ref') else member.type.text print "returns = " + ("" if returns is None else returns)""" #f.write( "$$/code\n\n\n\n" ) #f.close() deprecated_methods = [] for method in documentation_class.function_list: if method.name.find("OF_DEPRECATED_MSG") != -1: deprecated_methods.append(method) for method in deprecated_methods: documentation_class.function_list.remove(method) class_name_printed = False for method in documentation_class.function_list: if not method in current_methods_list: if method.description.strip("\n ") != "": if not class_name_printed: print "\n\n\n\n" print "========================================" print "class " + documentation_class.name class_name_printed = True print "\n\n\n\n" print "removing method " + method.returns + " " + method.name + "(" + method.parameters + ")" print "with description:" print method.description documentation_class.function_list = current_methods_list for var in documentation_class.var_list: if not var in current_variables_list: if var.description.strip("\n ") != "": if not class_name_printed: print "\n\n\n\n" print "========================================" print "class " + documentation_class.name class_name_printed = True print "removing " + var.name print "with description:" print var.description documentation_class.var_list = current_variables_list documentation_class.function_list.sort(key=lambda function: function.name) documentation_class.var_list.sort(key=lambda variable: variable.name) setclass(documentation_class, is_addon)