itom 1.0.14
D:/git-itom/sources/itom/Qitom/python/pythonNpDataObject.h
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
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends