[Numpy-discussion] Exporting Numpy C functionality to other extension modules

Jack Jansen Jack.Jansen at oratrix.com
Wed Jan 15 14:34:05 EST 2003

Actually, wrt my previous message on cobjects for communicating between 
extension modules, we can do one better!

This is an idea I've been toying with for the MacPython extension 
types, and I think it's applicable to Numeric too. It goes as follows.

Each Numeric object has an attribute with a well-known name, lets call 
it "__Numeric_C_interface". This is a Cobject, and it is shared among 
all Numeric objects of the same type. The value of this C object is a 
pointer to a C structure with pointers to all the C routines you might 
want to call on the object, basically the PyArray_API structure (I 
think). The descr of the C object is a string with the version number 
of this particular PyArray_API structure.

An extension module that knows about this protocol and gets passed an 
object that it think might be a Numeric array checks whether the object 
has an __Numeric_C_interface attribute. If so it retrieves it, checks 
that it is a Cobject, gets the descriptor and tests it for 
compatibility and if it is compatible gets the cobject pointer and 
happily calls all the Numeric routines it needs.
- Jack Jansen        <Jack.Jansen at oratrix.com>        
http://www.cwi.nl/~jack -
- If I can't dance I don't want to be part of your revolution -- Emma 
Goldman -

More information about the NumPy-Discussion mailing list