def do_compounddef(self, node):
kind = node.attributes['<STR_LIT>'].value<EOL>if kind in ('<STR_LIT:class>', '<STR_LIT>'):<EOL><INDENT>prot = node.attributes['<STR_LIT>'].value<EOL>if prot != '<STR_LIT>':<EOL><INDENT>return<EOL><DEDENT>self.add_text('<STR_LIT>')<EOL>classdefn = self.extract_text(self.get_specific_subnodes(node, '<STR_LIT>'))<EOL>classname = classdefn.split('<STR_LIT>')[-<NUM_LIT:1>]<EOL>self.add_text('<STR_LIT>' % classdefn)<EOL>if self.with_constructor_list:<EOL><INDENT>constructor_nodes = []<EOL>for n in self.get_specific_subnodes(node, '<STR_LIT>', recursive=<NUM_LIT:2>):<EOL><INDENT>if n.attributes['<STR_LIT>'].value == '<STR_LIT>':<EOL><INDENT>if self.extract_text(self.get_specific_subnodes(n, '<STR_LIT>')) == classdefn + '<STR_LIT>' + classname:<EOL><INDENT>constructor_nodes.append(n)<EOL><DEDENT><DEDENT><DEDENT>for n in constructor_nodes:<EOL><INDENT>self.add_line_with_subsequent_indent(self.get_function_signature(n))<EOL><DEDENT><DEDENT>names = ('<STR_LIT>','<STR_LIT>')<EOL>sub_dict = self.get_specific_nodes(node, names)<EOL>for n in ('<STR_LIT>','<STR_LIT>'):<EOL><INDENT>if n in sub_dict:<EOL><INDENT>self.parse(sub_dict[n])<EOL><DEDENT><DEDENT>if self.with_constructor_list:<EOL><INDENT>self.make_constructor_list(constructor_nodes, classname)<EOL><DEDENT>if self.with_attribute_list:<EOL><INDENT>self.make_attribute_list(node)<EOL><DEDENT>sub_list = self.get_specific_subnodes(node, '<STR_LIT>')<EOL>if sub_list:<EOL><INDENT>self.parse(sub_list[<NUM_LIT:0>])<EOL><DEDENT>self.add_text(['<STR_LIT>', '<STR_LIT:\n>'])<EOL>names = ['<STR_LIT>', '<STR_LIT>','<STR_LIT>', '<STR_LIT>']<EOL>self.subnode_parse(node, ignore = names)<EOL><DEDENT>elif kind in ('<STR_LIT:file>', '<STR_LIT>'):<EOL><INDENT>nodes = node.getElementsByTagName('<STR_LIT>')<EOL>for n in nodes:<EOL><INDENT>self.parse(n)<EOL><DEDENT><DEDENT>if kind in ['<STR_LIT:class>', '<STR_LIT>','<STR_LIT:file>', '<STR_LIT>']:<EOL><INDENT>md_nodes = self.get_memberdef_nodes_and_signatures(node, kind)<EOL>for sig in md_nodes:<EOL><INDENT>self.handle_typical_memberdefs(sig, md_nodes[sig])<EOL><DEDENT><DEDENT>
This produces %feature("docstring") entries for classes, and handles
        class, namespace and file memberdef entries specially to allow for 
        overloaded functions. For other cases, passes parsing on to standard
        handlers (which may produce unexpected results).