code: def do_memberdef(self, node):
          
          prot = node.attributes['prot'].value
          id = node.attributes['id'].value
          kind = node.attributes['kind'].value
          tmp = node.parentNode.parentNode.parentNode
          compdef = tmp.getElementsByTagName('compounddef')[0]
          cdef_kind = compdef.attributes['kind'].value
          if cdef_kind in ('file', 'namespace', 'class', 'struct'):
              # These cases are now handled by `handle_typical_memberdefs`
              return
          if prot != 'public':
              return
          first = self.get_specific_nodes(node, ('definition', 'name'))
          name = self.extract_text(first['name'])
          if name[:8] == 'operator':  # Don't handle operators yet.
              return
          if not 'definition' in first or kind in ['variable', 'typedef']:
              return
  
          data = self.extract_text(first['definition'])
          self.add_text('\n')
          self.add_text(['/* where did this entry come from??? */', '\n'])
          self.add_text('%feature("docstring") %s "\n%s' % (data, data))
  
          for n in node.childNodes:
              if n not in first.values():
                  self.parse(n)
          self.add_text(['";', '\n'])
docs: Handle cases outside of class, struct, file or namespace. These are
          now dealt with by `handle_overloaded_memberfunction`.
          Do these even exist???