itom 1.0.14
|
00001 /* ******************************************************************** 00002 itom software 00003 URL: http://www.uni-stuttgart.de/ito 00004 Copyright (C) 2013, Institut für Technische Optik (ITO), 00005 Universität Stuttgart, Germany 00006 00007 This file is part of itom. 00008 00009 itom is free software; you can redistribute it and/or modify it 00010 under the terms of the GNU Library General Public Licence as published by 00011 the Free Software Foundation; either version 2 of the Licence, or (at 00012 your option) any later version. 00013 00014 itom is distributed in the hope that it will be useful, but 00015 WITHOUT ANY WARRANTY; without even the implied warranty of 00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library 00017 General Public Licence for more details. 00018 00019 You should have received a copy of the GNU Library General Public License 00020 along with itom. If not, see <http://www.gnu.org/licenses/>. 00021 *********************************************************************** */ 00022 00023 #ifndef PYTHONNPDATAOBJECT_H 00024 #define PYTHONNPDATAOBJECT_H 00025 00026 #include "pythonDataObject.h" 00027 00028 //using namespace ito; 00029 namespace ito { 00030 00031 class PythonNpDataObject 00032 { 00033 00034 public: 00035 //------------------------------------------------------------------------------------------------- 00036 // typedefs 00037 //------------------------------------------------------------------------------------------------- 00038 typedef struct 00039 { 00040 PyArrayObject numpyArray; 00041 PyObject* tags; //PyDictObject 00042 PyObject* axisScales; //PyListObject 00043 PyObject* axisOffsets; //PyListObject 00044 PyObject* axisDescriptions; //PyListObject 00045 PyObject* axisUnits; //PyListObject 00046 PyObject* valueUnit; //PyUnicode 00047 PyObject* valueDescription; //PyUnicode 00048 double valueOffset; 00049 double valueScale; 00050 } 00051 PyNpDataObject; 00052 00053 //------------------------------------------------------------------------------------------------- 00054 // constructor, deconstructor, alloc, dellaoc 00055 //------------------------------------------------------------------------------------------------- 00056 static void PyNpDataObject_dealloc(PyNpDataObject *self); 00057 static PyObject* PyNpDataObject_new(PyTypeObject *type, PyObject *args, PyObject *kwds); 00058 static int PyDataObject_init(PyNpDataObject *self, PyObject *args, PyObject *kwds); 00059 00060 //uncomment the following methods for finding the bug described in comment at begin of pythonNpDataObject.cpp 00061 //static PyObject * __PyArray_View(PyArrayObject *self, PyArray_Descr *type, PyTypeObject *pytype); 00062 //static int __PyArray_SetBaseObject(PyArrayObject *arr, PyObject *obj); 00063 00064 //------------------------------------------------------------------------------------------------- 00065 // numpy subclassing methods 00066 //------------------------------------------------------------------------------------------------- 00067 static PyObject* PyNpDataObject_Array_Finalize(PyNpDataObject *self, PyObject *args); 00068 //static PyObject* PyNpDataObject_Array_Wrap(PyNPDataObject *self, PyObject *args); 00069 //static PyObject* PyNpDataObject_Array_Prepare(PyNPDataObject *self, PyObject *args); 00070 00071 static PyObject* PyNpDataObj_Reduce(PyNpDataObject *self, PyObject *args); //PyObject *NPY_UNUSED(args)); 00072 static PyObject* PyNpDataObj_SetState(PyNpDataObject *self, PyObject *args); 00073 00074 //------------------------------------------------------------------------------------------------- 00075 // general members 00076 //------------------------------------------------------------------------------------------------- 00077 static PyObject *PyNpDataObject_name(PyNpDataObject *self); 00078 00079 //------------------------------------------------------------------------------------------------- 00080 // getter / setter 00081 //------------------------------------------------------------------------------------------------- 00082 static PyObject* PyNpDataObject_getTags(PyNpDataObject *self, void *closure); 00083 static int PyNpDataObject_setTags(PyNpDataObject *self, PyObject *value, void *closure); 00084 static PyObject* PyNpDataObject_getAxisScales(PyNpDataObject *self, void *closure); 00085 static int PyNpDataObject_setAxisScales(PyNpDataObject *self, PyObject *value, void *closure); 00086 static PyObject* PyNpDataObject_getAxisOffsets(PyNpDataObject *self, void *closure); 00087 static int PyNpDataObject_setAxisOffsets(PyNpDataObject *self, PyObject *value, void *closure); 00088 static PyObject* PyNpDataObject_getAxisDescriptions(PyNpDataObject *self, void *closure); 00089 static int PyNpDataObject_setAxisDescriptions(PyNpDataObject *self, PyObject *value, void *closure); 00090 static PyObject* PyNpDataObject_getAxisUnits(PyNpDataObject *self, void *closure); 00091 static int PyNpDataObject_setAxisUnits(PyNpDataObject *self, PyObject *value, void *closure); 00092 static PyObject* PyNpDataObject_getValueUnit(PyNpDataObject *self, void *closure); 00093 static int PyNpDataObject_setValueUnit(PyNpDataObject *self, PyObject *value, void *closure); 00094 static PyObject* PyNpDataObject_getValueDescription(PyNpDataObject *self, void *closure); 00095 static int PyNpDataObject_setValueDescription(PyNpDataObject *self, PyObject *value, void *closure); 00096 static PyObject* PyNpDataObject_getValueScale(PyNpDataObject *self, void *closure); 00097 static PyObject* PyNpDataObject_getValueOffset(PyNpDataObject *self, void *closure); 00098 00099 static PyObject* PyNpDataObject_getTagDict(PyNpDataObject *self, void *clousure); 00100 00101 00102 //------------------------------------------------------------------------------------------------- 00103 // type structures 00104 //------------------------------------------------------------------------------------------------- 00105 //static PyMemberDef PyNpDataObject_members[]; 00106 static PyMethodDef PyNpDataObject_methods[]; 00107 static PyTypeObject PyNpDataObjectType; 00108 static PyModuleDef PyNpDataObjectModule; 00109 static PyGetSetDef PyNpDataObject_getseters[]; 00110 00111 00112 }; 00113 00114 }; // namespace ito 00115 00116 #endif