/usr/include/python2.7/pysparse/spmatrix_api.h is in python-sparse 1.1.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 | #ifndef SPMATRIX_API_H
#define SPMATRIX_API_H
/*
* C API
*/
/* Type definitions */
#define LLMatType_NUM 0
#define CSRMatType_NUM 1
#define SSSMatType_NUM 2
/* Function definitions */
#define SpMatrix_ParseVecOpArgs_NUM 3
#define SpMatrix_ParseVecOpArgs_RET int
#define SpMatrix_ParseVecOpArgs_PROTO (PyObject *args, double **x_data, double **y_data, int n)
#define SpMatrix_GetShape_NUM 4
#define SpMatrix_GetShape_RET int
#define SpMatrix_GetShape_PROTO (PyObject *, int[])
#define SpMatrix_GetOrder_NUM 5
#define SpMatrix_GetOrder_RET int
#define SpMatrix_GetOrder_PROTO (PyObject *, int*)
#define SpMatrix_GetItem_NUM 6
#define SpMatrix_GetItem_RET double
#define SpMatrix_GetItem_PROTO (PyObject *, int, int)
#define SpMatrix_Matvec_NUM 7
#define SpMatrix_Matvec_RET int
#define SpMatrix_Matvec_PROTO (PyObject *matrix, int nx, double *x, int ny, double *y)
#define SpMatrix_Precon_NUM 8
#define SpMatrix_Precon_RET int
#define SpMatrix_Precon_PROTO (PyObject *repc, int n, double *x, double *y)
#define SpMatrix_NewLLMatObject_NUM 9
#define SpMatrix_NewLLMatObject_RET PyObject *
#define SpMatrix_NewLLMatObject_PROTO (int dim[], int sym, int sizeHint)
#define SpMatrix_LLMatGetItem_NUM 10
#define SpMatrix_LLMatGetItem_RET double
#define SpMatrix_LLMatGetItem_PROTO (LLMatObject *a, int i, int j)
#define SpMatrix_LLMatSetItem_NUM 11
#define SpMatrix_LLMatSetItem_RET int
#define SpMatrix_LLMatSetItem_PROTO (LLMatObject *a, int i, int j, double x)
#define SpMatrix_LLMatUpdateItemAdd_NUM 12
#define SpMatrix_LLMatUpdateItemAdd_RET int
#define SpMatrix_LLMatUpdateItemAdd_PROTO (LLMatObject *a, int i, int j, double x)
#define SpMatrix_LLMatBuildColIndex_NUM 13
#define SpMatrix_LLMatBuildColIndex_RET int
#define SpMatrix_LLMatBuildColIndex_PROTO (struct llColIndex **idx, LLMatObject *self, int includeDiagonal)
#define SpMatrix_LLMatDestroyColIndex_NUM 14
#define SpMatrix_LLMatDestroyColIndex_RET void
#define SpMatrix_LLMatDestroyColIndex_PROTO (struct llColIndex **idx)
#define ItSolvers_Solve_NUM 15
#define ItSolvers_Solve_RET int
#define ItSolvers_Solve_PROTO (PyObject *linsolver, PyObject *A, int n, \
double *b, double *x, double tol, int itmax, PyObject *K, \
int *info, int *iter, double *relres)
/* Total number of C API pointers */
#define SpMatrix_API_pointers 16
#ifdef SPMATRIX_MODULE
static SpMatrix_ParseVecOpArgs_RET SpMatrix_ParseVecOpArgs SpMatrix_ParseVecOpArgs_PROTO;
static SpMatrix_GetShape_RET SpMatrix_GetShape SpMatrix_GetShape_PROTO;
static SpMatrix_GetOrder_RET SpMatrix_GetOrder SpMatrix_GetOrder_PROTO;
static SpMatrix_GetItem_RET SpMatrix_GetItem SpMatrix_GetItem_PROTO;
static SpMatrix_Matvec_RET SpMatrix_Matvec SpMatrix_Matvec_PROTO;
static SpMatrix_Precon_RET SpMatrix_Precon SpMatrix_Precon_PROTO;
static SpMatrix_NewLLMatObject_RET SpMatrix_NewLLMatObject SpMatrix_NewLLMatObject_PROTO;
static SpMatrix_LLMatGetItem_RET SpMatrix_LLMatGetItem SpMatrix_LLMatGetItem_PROTO;
static SpMatrix_LLMatSetItem_RET SpMatrix_LLMatSetItem SpMatrix_LLMatSetItem_PROTO;
static SpMatrix_LLMatUpdateItemAdd_RET SpMatrix_LLMatUpdateItemAdd SpMatrix_LLMatUpdateItemAdd_PROTO;
static SpMatrix_LLMatBuildColIndex_RET SpMatrix_LLMatBuildColIndex SpMatrix_LLMatBuildColIndex_PROTO;
static SpMatrix_LLMatDestroyColIndex_RET SpMatrix_LLMatDestroyColIndex SpMatrix_LLMatDestroyColIndex_PROTO;
static ItSolvers_Solve_RET ItSolvers_Solve ItSolvers_Solve_PROTO;
#define init_c_api(MODULE_DICT) \
{ \
static void *SpMatrix_API[SpMatrix_API_pointers]; \
PyObject *c_api_object; \
\
/* initialize C API pointer array */ \
SpMatrix_API[LLMatType_NUM] = (void *) &LLMatType; \
SpMatrix_API[CSRMatType_NUM] = (void *) &CSRMatType; \
SpMatrix_API[SSSMatType_NUM] = (void *) &SSSMatType; \
SpMatrix_API[SpMatrix_ParseVecOpArgs_NUM] = (void *) SpMatrix_ParseVecOpArgs; \
SpMatrix_API[SpMatrix_GetShape_NUM] = (void *) SpMatrix_GetShape; \
SpMatrix_API[SpMatrix_GetOrder_NUM] = (void *) SpMatrix_GetOrder; \
SpMatrix_API[SpMatrix_GetItem_NUM] = (void *) SpMatrix_GetItem; \
SpMatrix_API[SpMatrix_Matvec_NUM] = (void *) SpMatrix_Matvec; \
SpMatrix_API[SpMatrix_Precon_NUM] = (void *) SpMatrix_Precon; \
SpMatrix_API[SpMatrix_NewLLMatObject_NUM] = (void *) SpMatrix_NewLLMatObject; \
SpMatrix_API[SpMatrix_LLMatGetItem_NUM] = (void *) SpMatrix_LLMatGetItem; \
SpMatrix_API[SpMatrix_LLMatSetItem_NUM] = (void *) SpMatrix_LLMatSetItem; \
SpMatrix_API[SpMatrix_LLMatUpdateItemAdd_NUM] = (void *) SpMatrix_LLMatUpdateItemAdd; \
SpMatrix_API[SpMatrix_LLMatBuildColIndex_NUM] = (void *) SpMatrix_LLMatBuildColIndex; \
SpMatrix_API[SpMatrix_LLMatDestroyColIndex_NUM] = (void *) SpMatrix_LLMatDestroyColIndex; \
SpMatrix_API[ItSolvers_Solve_NUM] = (void *) ItSolvers_Solve; \
\
/* Create a CObject containing the API pointer array s address */ \
c_api_object = PyCObject_FromVoidPtr((void *)SpMatrix_API, NULL); \
\
/* create a name for this object in the module's namespace */ \
if (c_api_object != NULL) { \
PyDict_SetItemString((MODULE_DICT), "_C_API", c_api_object); \
Py_DECREF(c_api_object); \
} \
}
#else
#ifdef SPMATRIX_UNIQUE_SYMBOL
#define SpMatrix_API SPMATRIX_UNIQUE_SYMBOL
#endif
/* C API address pointer */
#ifdef NO_IMPORT_SPMATRIX
extern void **SpMatrix_API;
#else
#ifdef SPMATRIX_UNIQUE_SYMBOL
void **SpMatrix_API;
#else
static void **SpMatrix_API;
#endif
#endif
#define LLMatType *(PyTypeObject *)SpMatrix_API[LLMatType_NUM]
#define CSRMatType *(PyTypeObject *)SpMatrix_API[CSRMatType_NUM]
#define SSSMatType *(PyTypeObject *)SpMatrix_API[SSSMatType_NUM]
#define SpMatrix_ParseVecOpArgs \
(*(SpMatrix_ParseVecOpArgs_RET (*)SpMatrix_ParseVecOpArgs_PROTO) \
SpMatrix_API[SpMatrix_ParseVecOpArgs_NUM])
#define SpMatrix_GetShape \
(*(SpMatrix_GetShape_RET (*)SpMatrix_GetShape_PROTO) \
SpMatrix_API[SpMatrix_GetShape_NUM])
#define SpMatrix_GetOrder \
(*(SpMatrix_GetOrder_RET (*)SpMatrix_GetOrder_PROTO) \
SpMatrix_API[SpMatrix_GetOrder_NUM])
#define SpMatrix_GetItem \
(*(SpMatrix_GetItem_RET (*)SpMatrix_GetItem_PROTO) \
SpMatrix_API[SpMatrix_GetItem_NUM])
#define SpMatrix_Matvec \
(*(SpMatrix_Matvec_RET (*)SpMatrix_Matvec_PROTO) \
SpMatrix_API[SpMatrix_Matvec_NUM])
#define SpMatrix_Precon \
(*(SpMatrix_Precon_RET (*)SpMatrix_Precon_PROTO) \
SpMatrix_API[SpMatrix_Precon_NUM])
#define SpMatrix_NewLLMatObject \
(*(SpMatrix_NewLLMatObject_RET (*)SpMatrix_NewLLMatObject_PROTO) \
SpMatrix_API[SpMatrix_NewLLMatObject_NUM])
#define SpMatrix_LLMatGetItem \
(*(SpMatrix_LLMatGetItem_RET (*)SpMatrix_LLMatGetItem_PROTO) \
SpMatrix_API[SpMatrix_LLMatGetItem_NUM])
#define SpMatrix_LLMatSetItem \
(*(SpMatrix_LLMatSetItem_RET (*)SpMatrix_LLMatSetItem_PROTO) \
SpMatrix_API[SpMatrix_LLMatSetItem_NUM])
#define SpMatrix_LLMatUpdateItemAdd \
(*(SpMatrix_LLMatUpdateItemAdd_RET (*)SpMatrix_LLMatUpdateItemAdd_PROTO) \
SpMatrix_API[SpMatrix_LLMatUpdateItemAdd_NUM])
#define SpMatrix_LLMatBuildColIndex \
(*(SpMatrix_LLMatBuildColIndex_RET (*)SpMatrix_LLMatBuildColIndex_PROTO) \
SpMatrix_API[SpMatrix_LLMatBuildColIndex_NUM])
#define SpMatrix_LLMatDestroyColIndex \
(*(SpMatrix_LLMatDestroyColIndex_RET (*)SpMatrix_LLMatDestroyColIndex_PROTO) \
SpMatrix_API[SpMatrix_LLMatDestroyColIndex_NUM])
#define ItSolvers_Solve \
(*(ItSolvers_Solve_RET (*)ItSolvers_Solve_PROTO) \
SpMatrix_API[ItSolvers_Solve_NUM])
#define import_spmatrix() \
{ \
PyObject *spmatrix = PyImport_ImportModule("pysparse.spmatrix"); \
if (spmatrix != NULL) { \
PyObject *module_dict = PyModule_GetDict(spmatrix); \
PyObject *c_api_object = PyDict_GetItemString(module_dict, "_C_API"); \
if (PyCObject_Check(c_api_object)) { \
SpMatrix_API = (void **)PyCObject_AsVoidPtr(c_api_object); \
} \
} \
assert(SpMatrix_API != NULL); \
}
#endif
#endif
|