23 #ifndef PYTHONDATAOBJECT
24 #define PYTHONDATAOBJECT
29 #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
32 #define PY_ARRAY_UNIQUE_SYMBOL itom_ARRAY_API //see numpy help ::array api :: Miscellaneous :: Importing the api (this line must before including global.h)
33 #define NO_IMPORT_ARRAY
38 #if (defined _DEBUG) && (defined WIN32)
40 #include "pythonWrapper.h"
41 #include "numpy/arrayobject.h"
44 #include "pythonWrapper.h"
45 #include "numpy/arrayobject.h"
49 #include "../../DataObject/dataobj.h"
75 #define PyDataObject_Check(op) PyObject_TypeCheck(op, &PythonDataObject::PyDataObjectType)
77 static inline void PyDataObject_SetBase(
PyDataObject *op, PyObject *base )
79 PyObject* x = op->base;
89 static void PyDataObject_dealloc(PyDataObject *
self);
90 static PyObject *PyDataObject_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
91 static int PyDataObject_init(PyDataObject *
self, PyObject *args, PyObject *kwds);
96 static PyObject *PyDataObject_name(PyDataObject *
self);
98 static PyObject* PyDataObject_repr(PyDataObject *
self);
100 static PyObject* PyDataObject_data(PyDataObject *
self);
101 static PyObject* PyDataObject_conj(PyDataObject *
self);
102 static PyObject* PyDataObject_conjugate(PyDataObject *
self);
103 static PyObject* PyDataObject_adj(PyDataObject *
self);
104 static PyObject* PyDataObject_adjugate(PyDataObject *
self);
105 static PyObject* PyDataObject_trans(PyDataObject *
self);
106 static PyObject* PyDataObject_copy(PyDataObject *
self, PyObject* args, PyObject *kwds);
107 static PyObject* PyDataObject_astype(PyDataObject *
self, PyObject* args, PyObject* kwds);
108 static PyObject* PyDataObject_normalize(PyDataObject *
self, PyObject* args, PyObject* kwds);
109 static PyObject* PyDataObject_size(PyDataObject *
self, PyObject* args);
110 static PyObject* PyDataObject_makeContinuous(PyDataObject *
self);
111 static PyObject* PyDataObject_locateROI(PyDataObject *
self);
112 static PyObject* PyDataObject_adjustROI(PyDataObject *
self, PyObject* args, PyObject *kwds);
113 static PyObject* PyDataObject_squeeze(PyDataObject *
self, PyObject* args);
115 static PyObject* PyDataObject_mul(PyDataObject *
self, PyObject *args);
116 static PyObject* PyDataObject_div(PyDataObject *
self, PyObject *args);
118 static PyObject* PyDataObject_reshape(PyDataObject *
self, PyObject *args, PyObject *kwds);
120 static PyObject* PyDataObject_createMask(PyDataObject *
self, PyObject *args, PyObject* kwds);
123 static PyObject* PyDataObj_SetAxisOffset(PyDataObject *
self, PyObject *args);
124 static PyObject* PyDataObj_SetAxisScale(PyDataObject *
self, PyObject *args);
125 static PyObject* PyDataObj_SetAxisDescription(PyDataObject *
self, PyObject *args);
126 static PyObject* PyDataObj_SetAxisUnit(PyDataObject *
self, PyObject *args);
127 static PyObject* PyDataObj_PhysToPix(PyDataObject *
self, PyObject *args, PyObject *kwds);
128 static PyObject* PyDataObj_PixToPhys(PyDataObject *
self, PyObject *args, PyObject *kwds);
129 static PyObject* PyDataObj_CopyMetaInfo(PyDataObject *
self, PyObject *args, PyObject *kwds);
131 static PyObject* PyDataObj_SetTag(PyDataObject *
self, PyObject *args);
132 static PyObject* PyDataObj_DeleteTag(PyDataObject *
self, PyObject *args);
133 static PyObject* PyDataObj_TagExists(PyDataObject *
self, PyObject *args);
134 static PyObject* PyDataObj_GetTagListSize(PyDataObject *
self);
135 static PyObject* PyDataObj_AddToProtocol(PyDataObject *
self, PyObject *args);
139 static PyObject* PyDataObject_RichCompare(PyDataObject *
self, PyObject *other,
int cmp_op);
141 static PyGetSetDef PyDataObject_getseters[];
142 static PyObject* PyDataObj_GetDims(PyDataObject *
self,
void *closure);
143 static PyObject* PyDataObj_GetType(PyDataObject *
self,
void *closure);
144 static PyObject* PyDataObj_GetShape(PyDataObject *
self,
void *closure);
145 static PyObject* PyDataObj_GetContinuous(PyDataObject *
self,
void *closure);
147 static PyObject* PyDataObject_getTagDict(PyDataObject *
self,
void *closure);
148 static int PyDataObject_setTagDict(PyDataObject *
self, PyObject *value,
void *closure);
150 static PyObject* PyDataObject_getTags(PyDataObject *
self,
void *closure);
151 static int PyDataObject_setTags(PyDataObject *
self, PyObject *value,
void *closure);
153 static PyObject* PyDataObject_getAxisScales(PyDataObject *
self,
void *closure);
154 static int PyDataObject_setAxisScales(PyDataObject *
self, PyObject *value,
void *closure);
156 static PyObject* PyDataObject_getAxisOffsets(PyDataObject *
self,
void *closure);
157 static int PyDataObject_setAxisOffsets(PyDataObject *
self, PyObject *value,
void *closure);
159 static PyObject* PyDataObject_getAxisDescriptions(PyDataObject *
self,
void *closure);
160 static int PyDataObject_setAxisDescriptions(PyDataObject *
self, PyObject *value,
void *closure);
162 static PyObject* PyDataObject_getAxisUnits(PyDataObject *
self,
void *closure);
163 static int PyDataObject_setAxisUnits(PyDataObject *
self, PyObject *value,
void *closure);
165 static PyObject* PyDataObject_getValueUnit(PyDataObject *
self,
void *closure);
166 static int PyDataObject_setValueUnit(PyDataObject *
self, PyObject *value,
void *closure);
168 static PyObject* PyDataObject_getValueDescription(PyDataObject *
self,
void *closure);
169 static int PyDataObject_setValueDescription(PyDataObject *
self, PyObject *value,
void *closure);
171 static PyObject* PyDataObject_getValueScale(PyDataObject *
self,
void *closure);
172 static PyObject* PyDataObject_getValueOffset(PyDataObject *
self,
void *closure);
174 static PyObject* PyDataObject_getReal(PyDataObject *
self,
void *closure);
175 static int PyDataObject_setReal(PyDataObject *
self, PyObject *value,
void *closure);
177 static PyObject* PyDataObject_getImag(PyDataObject *
self,
void *closure);
178 static int PyDataObject_setImag(PyDataObject *
self, PyObject *value,
void *closure);
180 static PyObject* PyDataObject_abs(PyDataObject *
self,
void *closure);
181 static PyObject* PyDataObject_arg(PyDataObject *
self,
void *closure);
183 static int PyDataObject_setXYRotationalMatrix(PyDataObject *
self, PyObject *value,
void *closure);
184 static PyObject* PyDataObject_getXYRotationalMatrix(PyDataObject *
self,
void *closure);
186 static PyObject* PyDataObject_getValue(PyDataObject *
self,
void *closure);
187 static int PyDataObject_setValue(PyDataObject *
self, PyObject *value,
void *closure);
189 static PyObject* PyDataObj_Array_StructGet(PyDataObject *
self);
190 static PyObject* PyDataObj_Array_Interface(PyDataObject *
self);
191 static PyObject* PyDataObj_Array_(PyDataObject *
self, PyObject *args);
193 static PyObject* PyDataObject_real(PyDataObject *
self);
194 static PyObject* PyDataObject_imag(PyDataObject *
self);
196 static PyObject* PyDataObj_ToGray(PyDataObject *
self, PyObject *args, PyObject *kwds);
197 static PyObject* PyDataObj_ToNumpyColor(PyDataObject *
self, PyObject *args, PyObject *kwds);
198 static PyObject* PyDataObj_SplitColor(PyDataObject *
self, PyObject *args, PyObject *kwds);
200 static PyObject* PyDataObj_ToList(PyDataObject *
self);
201 static PyObject* PyDataObj_At(
ito::DataObject *dataObj,
unsigned int *idx);
202 static PyObject* PyDataObj_At(
ito::DataObject *dataObj,
int continuousIdx);
203 static PyObject* PyDataObj_ToListRecursive(
ito::DataObject *dataObj,
unsigned int *currentIdx,
int iterationIndex);
206 static void PyDataObj_Capsule_Destructor(PyObject* capsule);
208 static PyObject* PyDataObj_Reduce(PyDataObject *
self, PyObject *args);
209 static PyObject* PyDataObj_SetState(PyDataObject *
self, PyObject *args);
210 static PyObject* PyDataObj_lineCut(PyDataObject *
self, PyObject *args);
220 static PyObject* PyDataObj_nbAdd(PyObject* o1, PyObject* o2);
221 static PyObject* PyDataObj_nbSubtract(PyObject* o1, PyObject* o2);
222 static PyObject* PyDataObj_nbMultiply(PyObject* o1, PyObject* o2);
223 static PyObject* PyDataObj_nbMatrixMultiply(PyObject* o1, PyObject* o2);
224 static PyObject* PyDataObj_nbDivide(PyObject* o1, PyObject* o2);
225 static PyObject* PyDataObj_nbRemainder(PyObject* o1, PyObject* o2);
226 static PyObject* PyDataObj_nbDivmod(PyObject* o1, PyObject* o2);
227 static PyObject* PyDataObj_nbPower(PyObject* o1, PyObject* o2, PyObject* o3);
228 static PyObject* PyDataObj_nbNegative(PyObject* o1);
229 static PyObject* PyDataObj_nbPositive(PyObject* o1);
230 static PyObject* PyDataObj_nbAbsolute(PyObject* o1);
231 static PyObject* PyDataObj_nbInvert(PyObject* o1);
232 static PyObject* PyDataObj_nbLshift(PyObject* o1, PyObject* o2);
233 static PyObject* PyDataObj_nbRshift(PyObject* o1, PyObject* o2);
234 static PyObject* PyDataObj_nbAnd(PyObject* o1, PyObject* o2);
235 static PyObject* PyDataObj_nbXor(PyObject* o1, PyObject* o2);
236 static PyObject* PyDataObj_nbOr(PyObject* o1, PyObject* o2);
237 static int PyDataObj_nbBool(PyDataObject *
self);
238 static PyObject* PyDataObj_nbInplaceAdd(PyObject* o1, PyObject* o2);
239 static PyObject* PyDataObj_nbInplaceSubtract(PyObject* o1, PyObject* o2);
240 static PyObject* PyDataObj_nbInplaceMultiply(PyObject* o1, PyObject* o2);
241 static PyObject* PyDataObj_nbInplaceRemainder(PyObject* o1, PyObject* o2);
242 static PyObject* PyDataObj_nbInplacePower(PyObject* o1, PyObject* o2, PyObject* o3);
243 static PyObject* PyDataObj_nbInplaceLshift(PyObject* o1, PyObject* o2);
244 static PyObject* PyDataObj_nbInplaceRshift(PyObject* o1, PyObject* o2);
245 static PyObject* PyDataObj_nbInplaceAnd(PyObject* o1, PyObject* o2);
246 static PyObject* PyDataObj_nbInplaceXor(PyObject* o1, PyObject* o2);
247 static PyObject* PyDataObj_nbInplaceOr(PyObject* o1, PyObject* o2);
248 static PyObject* PyDataObj_nbInplaceTrueDivide(PyObject* o1, PyObject* o2);
249 static PyObject* PyDataObj_nbInplaceMatrixMultiply(PyObject* o1, PyObject* o2);
254 static PyObject* PyDataObj_getiter(PyDataObject*
self);
259 static int PyDataObj_mappingLength(PyDataObject*
self);
260 static PyObject* PyDataObj_mappingGetElem(PyDataObject*
self, PyObject* key);
261 static int PyDataObj_mappingSetElem(PyDataObject*
self, PyObject* key, PyObject* value);
266 static PyMemberDef PyDataObject_members[];
267 static PyMethodDef PyDataObject_methods[];
268 static PyTypeObject PyDataObjectType;
269 static PyModuleDef PyDataObjectModule;
271 static PyNumberMethods PyDataObject_numberProtocol;
272 static PyMappingMethods PyDataObject_mappingProtocol;
277 static RetVal PyDataObj_ParseCreateArgs(PyObject *args, PyObject *kwds,
int &typeno, std::vector<unsigned int> &dims,
unsigned char &continuous);
279 static PyDataObjectTypes PyDataObject_types[];
280 static int typeNameToNumber(
const char *name);
281 static char* typeNumberToName(
int typeno);
283 static PyDataObject* createEmptyPyDataObject();
284 static PyObject* createPyDataObjectFromArray(PyObject *npArray);
286 static bool checkPyDataObject(
int number, PyObject* o1 = NULL, PyObject* o2 = NULL, PyObject* o3 = NULL);
288 static RetVal parseTypeNumber(
int typeno,
char &typekind,
int &itemsize);
289 static int parseTypeNumberInverse(
char typekind,
int itemsize);
290 static int getTypenumOfCompatibleType(
char typekind,
int itemsize);
291 static int getNpTypeFromDataObjectType(
int type);
294 static int PyDataObj_CreateFromShapeTypeData(PyDataObject *
self, PyObject *args, PyObject *kwds);
295 static int PyDataObj_CreateFromNpNdArrayAndType(PyDataObject *
self, PyObject *args, PyObject *kwds);
301 static PyObject* PyDataObj_StaticZeros(PyObject *
self, PyObject *args, PyObject *kwds);
302 static PyObject* PyDataObj_StaticOnes(PyObject *
self, PyObject *args, PyObject *kwds);
303 static PyObject* PyDataObj_StaticNans(PyObject *
self, PyObject *args, PyObject *kwds);
304 static PyObject* PyDataObj_StaticRand(PyObject *
self, PyObject *args, PyObject *kwds);
305 static PyObject* PyDataObj_StaticRandN(PyObject *
self, PyObject *args, PyObject *kwds);
306 static PyObject* PyDataObj_StaticEye(PyObject *
self, PyObject *args, PyObject *kwds);
307 static PyObject* PyDataObj_StaticFromNumpyColor(PyObject *
self, PyObject *args, PyObject *kwds);
308 static PyObject* PyDataObj_dstack(PyObject *
self, PyObject *args);
331 static PyObject *PyDataObjectIter_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
332 static int PyDataObjectIter_init(
PyDataObjectIter *
self, PyObject *args, PyObject *kwds);
340 static PyMethodDef PyDataObjectIter_methods[];
341 static PyTypeObject PyDataObjectIterType;
Definition: pythonDataObject.h:60
dataObject contains a n-dimensional matrix
Definition: dataobj.h:511
Class for managing status values (like errors or warning)
Definition: retVal.h:54
Definition: apiFunctionsGraph.cpp:39
Definition: pythonDataObject.h:68
Definition: pythonDataObject.h:54
constant iterator through data object
Definition: dataobj.h:376
Definition: pythonDataObject.h:316
tDataType
Definition: typeDefs.h:87