> What, it wasn't obvious in the twisted maze of Python documentation?  :)
> 
>     http://www.python.org/doc/2.4.4/ref/customization.html

*gag* Yes, this is pretty convoluted.  I think I finally managed to
figure some of the object protocol out, though.

The dbm module implements PyMappingMethods and that defines mp_length,
essentially __len__().  However, this object would need to also
implement PyNumberMethods, which contains an:

        inquiry nb_nonzero;

structure member.  (Implementing __nonzero__) Since it doesn't implement
the number protocol, it's always going to fallback to using __len__, as
you observed.

These are the prototypes for inquiry and PyMappingMethods.  All of this
is in /usr/include/python2.4/object.h

        typedef int (*inquiry)(PyObject *);

        typedef struct {
                inquiry mp_length;
                binaryfunc mp_subscript;
                objobjargproc mp_ass_subscript;
        } PyMappingMethods;

Hopefully some of this makes sense. :P

-j

_______________________________________________
pkg-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/pkg-discuss

Reply via email to