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
00025 #include "../api/object.h"
00026 #include "../api/list.h"
00027 #include "../api/dict.h"
00028 #include "../api/class.h"
00029
00030 #include <qstring.h>
00031 #include <qstringlist.h>
00032 #include <qvaluelist.h>
00033 #include <qvaluevector.h>
00034 #include <qmap.h>
00035 #include <qvariant.h>
00036
00037 namespace Kross { namespace Python {
00038
00039
00040 class PythonScript;
00041
00048 class PythonExtension : public Py::PythonExtension<PythonExtension>
00049 {
00050 friend class PythonScript;
00051 friend class PythonObject;
00052 friend class PythonModule;
00053
00054 public:
00055
00062 explicit PythonExtension(Kross::Api::Object::Ptr object);
00063
00067 virtual ~PythonExtension();
00068
00069 #if 0
00070
00076 virtual Py::Object str();
00077
00084 virtual Py::Object repr();
00085 #endif
00086
00098 virtual Py::Object getattr(const char* name);
00099
00100
00101
00102
00103 private:
00104
00111 static Kross::Api::List::Ptr toObject(const Py::Tuple& tuple);
00112
00119 static Kross::Api::List::Ptr toObject(const Py::List& list);
00120
00127 static Kross::Api::Dict::Ptr toObject(const Py::Dict& dict);
00128
00135 static Kross::Api::Object::Ptr toObject(const Py::Object& object);
00136
00145 static const Py::Object toPyObject(const QString& s);
00146
00153 static const Py::List toPyObject(const QStringList& list);
00154
00161 static const Py::Dict toPyObject(const QMap<QString, QVariant>& map);
00162
00169 static const Py::List toPyObject(const QValueList<QVariant>& list);
00170
00177 static const Py::Object toPyObject(const QVariant& variant);
00178
00185 static const Py::Object toPyObject(Kross::Api::Object::Ptr object);
00186
00193 static const Py::Tuple toPyTuple(Kross::Api::List::Ptr list);
00194
00196 Kross::Api::Object::Ptr m_object;
00197
00202 Py::MethodDefExt<PythonExtension>* m_proxymethod;
00203
00216 static PyObject* proxyhandler(PyObject* _self_and_name_tuple, PyObject* _args);
00217 };
00218
00219 }}
00220
00221 #endif
|