'Generate a member listing, autosummary:: table where possible,
and a table where not.'

def _str_member_list(self, name):

    out = []
    if self[name]:
        out += [('..    rubric::    %s' % name), '']
        prefix = getattr(self, '_name', '')
        if prefix:
            prefix = ('~%s.' % prefix)
        autosum = []
        others = []
        for (param, param_type, desc) in self[name]:
            param = param.strip()
            if ((not self._obj) or hasattr(self._obj, param)):
                autosum += [('            %s%s' % (prefix, param))]
            else:
                others.append((param, param_type, desc))
        if autosum:
            out += ['..    autosummary::', '            :toctree:', '']
            out += autosum
        if others:
            maxlen_0 = max([len(x[0]) for x in others])
            maxlen_1 = max([len(x[1]) for x in others])
            hdr = ((((('=' * maxlen_0) + '        ') + ('=' * maxlen_1)) + '        ') + ('=' * 10))
            fmt = ('%%%ds        %%%ds        ' % (maxlen_0, maxlen_1))
            n_indent = ((maxlen_0 + maxlen_1) + 4)
            out += [hdr]
            for (param, param_type, desc) in others:
                out += [(fmt % (param.strip(), param_type))]
                out += self._str_indent(desc, n_indent)
            out += [hdr]
        out += ['']
    return out
