Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/gameengine/Expressions')
-rw-r--r--source/gameengine/Expressions/PyObjectPlus.cpp5
-rw-r--r--source/gameengine/Expressions/PyObjectPlus.h92
-rw-r--r--source/gameengine/Expressions/Value.cpp13
-rw-r--r--source/gameengine/Expressions/Value.h1
4 files changed, 64 insertions, 47 deletions
diff --git a/source/gameengine/Expressions/PyObjectPlus.cpp b/source/gameengine/Expressions/PyObjectPlus.cpp
index 88a38b35ad4..2b331d7f728 100644
--- a/source/gameengine/Expressions/PyObjectPlus.cpp
+++ b/source/gameengine/Expressions/PyObjectPlus.cpp
@@ -111,6 +111,11 @@ PyObject *PyObjectPlus::_getattr(const STR_String& attr)
return Py_FindMethod(Methods, this, const_cast<char *>(attr.ReadPtr()));
}
+int PyObjectPlus::_delattr(const STR_String& attr)
+{
+ return 1;
+}
+
int PyObjectPlus::_setattr(const STR_String& attr, PyObject *value)
{
//return PyObject::_setattr(attr,value);
diff --git a/source/gameengine/Expressions/PyObjectPlus.h b/source/gameengine/Expressions/PyObjectPlus.h
index 05c806ec4ff..7e6b3f29bab 100644
--- a/source/gameengine/Expressions/PyObjectPlus.h
+++ b/source/gameengine/Expressions/PyObjectPlus.h
@@ -119,47 +119,57 @@ PyObject* class_name::Py##method_name(PyObject*, PyObject* args, PyObject*)
------------------------------*/
typedef PyTypeObject * PyParentObject; // Define the PyParent Object
-class PyObjectPlus : public PyObject { // The PyObjectPlus abstract class
-
- Py_Header; // Always start with Py_Header
-
- public:
- PyObjectPlus(PyTypeObject *T);
-
- virtual ~PyObjectPlus() {}; // destructor
- static void PyDestructor(PyObject *P) // python wrapper
- {
- delete ((PyObjectPlus *) P);
- };
-
- //void INCREF(void) {
-// Py_INCREF(this);
-// }; // incref method
- //void DECREF(void) {
-// Py_DECREF(this);
-// }; // decref method
-
- virtual PyObject *_getattr(const STR_String& attr); // _getattr method
- static PyObject *__getattr(PyObject * PyObj, char *attr) // This should be the entry in Type.
- { return ((PyObjectPlus*) PyObj)->_getattr(STR_String(attr)); };
-
- virtual int _setattr(const STR_String& attr, PyObject *value); // _setattr method
- static int __setattr(PyObject *PyObj, // This should be the entry in Type.
- char *attr,
- PyObject *value)
- { return ((PyObjectPlus*) PyObj)->_setattr(STR_String(attr), value); };
-
- virtual PyObject *_repr(void); // _repr method
- static PyObject *__repr(PyObject *PyObj) // This should be the entry in Type.
- { return ((PyObjectPlus*) PyObj)->_repr(); };
-
-
- // isA methods
- bool isA(PyTypeObject *T);
- bool isA(const char *mytypename);
- PyObject *Py_isA(PyObject *args);
- static PyObject *sPy_isA(PyObject *self, PyObject *args, PyObject *kwd)
- {return ((PyObjectPlus*)self)->Py_isA(args);};
+class PyObjectPlus : public PyObject
+{ // The PyObjectPlus abstract class
+ Py_Header; // Always start with Py_Header
+
+public:
+ PyObjectPlus(PyTypeObject *T);
+
+ virtual ~PyObjectPlus() {}; // destructor
+ static void PyDestructor(PyObject *P) // python wrapper
+ {
+ delete ((PyObjectPlus *) P);
+ };
+
+ //void INCREF(void) {
+ // Py_INCREF(this);
+ // }; // incref method
+ //void DECREF(void) {
+ // Py_DECREF(this);
+ // }; // decref method
+
+ virtual PyObject *_getattr(const STR_String& attr); // _getattr method
+ static PyObject *__getattr(PyObject * PyObj, char *attr) // This should be the entry in Type.
+ {
+ return ((PyObjectPlus*) PyObj)->_getattr(STR_String(attr));
+ }
+
+ virtual int _delattr(const STR_String& attr);
+ virtual int _setattr(const STR_String& attr, PyObject *value); // _setattr method
+ static int __setattr(PyObject *PyObj, // This should be the entry in Type.
+ char *attr,
+ PyObject *value)
+ {
+ if (!value)
+ return ((PyObjectPlus*) PyObj)->_delattr(attr);
+ return ((PyObjectPlus*) PyObj)->_setattr(STR_String(attr), value);
+ }
+
+ virtual PyObject *_repr(void); // _repr method
+ static PyObject *__repr(PyObject *PyObj) // This should be the entry in Type.
+ {
+ return ((PyObjectPlus*) PyObj)->_repr();
+ }
+
+ // isA methods
+ bool isA(PyTypeObject *T);
+ bool isA(const char *mytypename);
+ PyObject *Py_isA(PyObject *args);
+ static PyObject *sPy_isA(PyObject *self, PyObject *args, PyObject *kwd)
+ {
+ return ((PyObjectPlus*)self)->Py_isA(args);
+ }
};
#endif // _adr_py_lib_h_
diff --git a/source/gameengine/Expressions/Value.cpp b/source/gameengine/Expressions/Value.cpp
index 07505829737..9233a10b784 100644
--- a/source/gameengine/Expressions/Value.cpp
+++ b/source/gameengine/Expressions/Value.cpp
@@ -698,14 +698,15 @@ CValue* CValue::ConvertPythonToValue(PyObject* pyobj)
return vallie;
}
-int CValue::_setattr(const STR_String& attr,PyObject* pyobj)
+
+int CValue::_delattr(const STR_String& attr)
{
-
- if (!pyobj) { // member deletion
- RemoveProperty(attr);
- return 0;
- }
+ RemoveProperty(attr);
+ return 0;
+}
+int CValue::_setattr(const STR_String& attr,PyObject* pyobj)
+{
CValue* vallie = ConvertPythonToValue(pyobj);
if (vallie)
{
diff --git a/source/gameengine/Expressions/Value.h b/source/gameengine/Expressions/Value.h
index d30e8a26d97..d49c8debfdc 100644
--- a/source/gameengine/Expressions/Value.h
+++ b/source/gameengine/Expressions/Value.h
@@ -249,6 +249,7 @@ public:
virtual CValue* ConvertPythonToValue(PyObject* pyobj);
+ virtual int _delattr(const STR_String& attr);
virtual int _setattr(const STR_String& attr,PyObject* value);
KX_PYMETHOD(CValue,GetName);