#ifndef _libnumarray #define _libnumarray #include "ndarrayinfo.h" #include "numarray.h" #ifdef __cplusplus extern "C" { #endif /* Header file for libnumarray */ #if !defined(_libnumarray_MODULE) static void **libnumarray_API; #define import_libnumarray() \ { \ PyObject *module = PyImport_ImportModule("libnumarray"); \ if (module != NULL) { \ PyObject *module_dict = PyModule_GetDict(module); \ PyObject *c_api_object = \ PyDict_GetItemString(module_dict, "_C_API"); \ if (PyCObject_Check(c_api_object)) { \ libnumarray_API = (void **)PyCObject_AsVoidPtr(c_api_object); \ } \ } \ } #endif /* Macros defining components of function prototypes */ #ifdef _libnumarray_MODULE /* This section is used when compiling libnumarray */ static PyObject *_libnumarrayError; static PyObject* getBuffer (PyObject*o); static int isBuffer (PyObject*o); static int getWriteBufferDataPtr (PyObject*o,void**p); static int isBufferWriteable (PyObject*o); static int getReadBufferDataPtr (PyObject*o,void**p); static int getBufferSize (PyObject*o); static int getNDInfo (PyObject*object,NDInfo*NumArrayInfo); static int getNumInfo (PyObject*object,NDInfo*NumArrayInfo); static void NA_Init (void); static void NA_Done (void); static PyObject* NA_NewAll (int,long*,NumericType,void*,int,int,int,int,int); static PyObject* NA_New (void*,NumericType,int,...); static PyObject* NA_FromInfo (NDInfo*); static PyObject* NA_FromLong (long,NumericType); static PyObject* NA_FromDouble (double,NumericType); static PyObject* NA_One (void); static PyObject* NA_Zero (void); static PyObject* NA_ConvertInput (PyObject*,NDInfo*,NumericType); static PyObject* NA_ShadowOutput (PyObject*,NDInfo*,NumericType); static PyObject* NA_ShadowOptionalOutput (PyObject*,NDInfo*,NumericType,PyObject*); static int NA_ConvertOutput (PyObject*,PyObject*); static PyObject* NA_ReturnShadowedOptionalOutput (PyObject*,PyObject*); static int NA_ShapeMisMatch (NDInfo*,NDInfo*); static int NA_getBufferPtrAndSize (PyObject*,int,void**); static int NA_checkIo (char*,int,int,int,int); static int NA_checkOneCBuffer (char*,long,void*,long,size_t); static int NA_checkNCBuffers (char*,int,long,void**,long*,Int8*,Int8*); static int NA_checkOneStriding (char*,long,long*,long,long*,long,int,int); static PyObject* NA_new_cfunc (CfuncDescriptor*); static int NA_add_cfunc (PyObject*,char*,CfuncDescriptor*); #else /* This section is used in modules that use libnumarray */ #define getBuffer (*(PyObject* (*) (PyObject*o) ) libnumarray_API[0]) #define isBuffer (*(int (*) (PyObject*o) ) libnumarray_API[1]) #define getWriteBufferDataPtr (*(int (*) (PyObject*o,void**p) ) libnumarray_API[2]) #define isBufferWriteable (*(int (*) (PyObject*o) ) libnumarray_API[3]) #define getReadBufferDataPtr (*(int (*) (PyObject*o,void**p) ) libnumarray_API[4]) #define getBufferSize (*(int (*) (PyObject*o) ) libnumarray_API[5]) #define getNDInfo (*(int (*) (PyObject*object,NDInfo*NumArrayInfo) ) libnumarray_API[6]) #define getNumInfo (*(int (*) (PyObject*object,NDInfo*NumArrayInfo) ) libnumarray_API[7]) #define NA_Init (*(void (*) (void) ) libnumarray_API[8]) #define NA_Done (*(void (*) (void) ) libnumarray_API[9]) #define NA_NewAll (*(PyObject* (*) (int,long*,NumericType,void*,int,int,int,int,int) ) libnumarray_API[10]) #define NA_New (*(PyObject* (*) (void*,NumericType,int,...) ) libnumarray_API[11]) #define NA_FromInfo (*(PyObject* (*) (NDInfo*) ) libnumarray_API[12]) #define NA_FromLong (*(PyObject* (*) (long,NumericType) ) libnumarray_API[13]) #define NA_FromDouble (*(PyObject* (*) (double,NumericType) ) libnumarray_API[14]) #define NA_One (*(PyObject* (*) (void) ) libnumarray_API[15]) #define NA_Zero (*(PyObject* (*) (void) ) libnumarray_API[16]) #define NA_ConvertInput (*(PyObject* (*) (PyObject*,NDInfo*,NumericType) ) libnumarray_API[17]) #define NA_ShadowOutput (*(PyObject* (*) (PyObject*,NDInfo*,NumericType) ) libnumarray_API[18]) #define NA_ShadowOptionalOutput (*(PyObject* (*) (PyObject*,NDInfo*,NumericType,PyObject*) ) libnumarray_API[19]) #define NA_ConvertOutput (*(int (*) (PyObject*,PyObject*) ) libnumarray_API[20]) #define NA_ReturnShadowedOptionalOutput (*(PyObject* (*) (PyObject*,PyObject*) ) libnumarray_API[21]) #define NA_ShapeMisMatch (*(int (*) (NDInfo*,NDInfo*) ) libnumarray_API[22]) #define NA_getBufferPtrAndSize (*(int (*) (PyObject*,int,void**) ) libnumarray_API[23]) #define NA_checkIo (*(int (*) (char*,int,int,int,int) ) libnumarray_API[24]) #define NA_checkOneCBuffer (*(int (*) (char*,long,void*,long,size_t) ) libnumarray_API[25]) #define NA_checkNCBuffers (*(int (*) (char*,int,long,void**,long*,Int8*,Int8*) ) libnumarray_API[26]) #define NA_checkOneStriding (*(int (*) (char*,long,long*,long,long*,long,int,int) ) libnumarray_API[27]) #define NA_new_cfunc (*(PyObject* (*) (CfuncDescriptor*) ) libnumarray_API[28]) #define NA_add_cfunc (*(int (*) (PyObject*,char*,CfuncDescriptor*) ) libnumarray_API[29]) #endif /* Total number of C API pointers */ #define libnumarray_API_pointers 30 #ifdef __cplusplus } #endif #endif /* !defined(_libnumarray) */