class_docstr: Uses the same visitor pattern as c_ast.NodeVisitor, but modified to
  return a value from each visit method, using string accumulation in
  generic_visit.
class_docstr_tok: ["Uses","the","same","visitor","pattern","as","c_ast.NodeVisitor",",","but","modified","to","return","a","value","from","each","visit","method",",","using","string","accumulation","in","generic_visit","."]
docstr: Generates code for structs, unions, and enums. name should be
  'struct', 'union', or 'enum'.
docstr_tok: ["Generates","code","for","structs",",","unions",",","and","enums",".","name","should","be","'struct","'",",","'union","'",",","or","'enum","'","."]
code: def _generate_struct_union_enum(self, n, name):
      """Generates code for structs, unions, and enums. name should be
      'struct', 'union', or 'enum'.
      """
      if name in ("struct", "union"):
          members = n.decls
          body_function = self._generate_struct_union_body
      else:
          assert name == "enum"
          members = None if n.values is None else n.values.enumerators
          body_function = self._generate_enum_body
      s = name + " " + (n.name or "")
      if members is not None:
          # None means no members
          # Empty sequence means an empty list of members
          s += "\n"
          s += self._make_indent()
          self.indent_level += 2
          s += "{\n"
          s += body_function(members)
          self.indent_level -= 2
          s += self._make_indent() + "}"
      return s
  
imports: from .None import c_ast
label_desc: Use image node_id 54 for calling the CGenerator obj's underlying member method code with example usage: obj._generate_struct_union_enum(n, name) and returns: s