lib
pythonextension.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef KROSS_PYTHON_EXTENSION_H
00021 #define KROSS_PYTHON_EXTENSION_H
00022
00023 #include "pythonconfig.h"
00024 #include "../api/object.h"
00025 #include "../api/list.h"
00026 #include "../api/dict.h"
00027 #include "../api/class.h"
00028
00029 #include <qstring.h>
00030 #include <qstringlist.h>
00031 #include <qvaluelist.h>
00032 #include <qvaluevector.h>
00033 #include <qmap.h>
00034 #include <qvariant.h>
00035
00036 namespace Kross { namespace Python {
00037
00038
00039 class PythonScript;
00040
00047 class PythonExtension : public Py::PythonExtension<PythonExtension>
00048 {
00049 friend class PythonScript;
00050 friend class PythonObject;
00051 friend class PythonModule;
00052
00053 public:
00054
00061 explicit PythonExtension(Kross::Api::Object::Ptr object);
00062
00066 virtual ~PythonExtension();
00067
00074 virtual Py::Object str();
00075
00082 virtual Py::Object repr();
00083
00095 virtual Py::Object getattr(const char* name);
00096
00097
00098
00099
00100 private:
00101
00108 static Kross::Api::List::Ptr toObject(const Py::Tuple& tuple);
00109
00116 static Kross::Api::List::Ptr toObject(const Py::List& list);
00117
00124 static Kross::Api::Dict::Ptr toObject(const Py::Dict& dict);
00125
00132 static Kross::Api::Object::Ptr toObject(const Py::Object& object);
00133
00142 static const Py::Object toPyObject(const QString& s);
00143
00150 static const Py::List toPyObject(const QStringList& list);
00151
00158 static const Py::Dict toPyObject(const QMap<QString, QVariant>& map);
00159
00166 static const Py::List toPyObject(const QValueList<QVariant>& list);
00167
00174 static const Py::Object toPyObject(const QVariant& variant);
00175
00182 static const Py::Object toPyObject(Kross::Api::Object::Ptr object);
00183
00190 static const Py::Tuple toPyTuple(Kross::Api::List::Ptr list);
00191
00193 Kross::Api::Object::Ptr m_object;
00194
00199 Py::MethodDefExt<PythonExtension>* m_proxymethod;
00200
00213 static PyObject* proxyhandler(PyObject* _self_and_name_tuple, PyObject* _args);
00214 };
00215
00216 }}
00217
00218 #endif
|