[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21214] branches/blender2.5/blender/source /gameengine: BGE Python API

Campbell Barton ideasman42 at gmail.com
Sun Jun 28 13:22:27 CEST 2009


Revision: 21214
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21214
Author:   campbellbarton
Date:     2009-06-28 13:22:26 +0200 (Sun, 28 Jun 2009)

Log Message:
-----------
BGE Python API
Remove the last of the odd C++/python wrapper code from http://www.python.org/doc/PyCPP.html (~1998)

* Use python subclasses rather then having fake subclassing through get/set attributes calling parent types.
* PyObject getset arrays are created while initializing the types, converted from our own attribute arrays. This way python deals with subclasses and we dont have to define getattro or setattro functions for each type.
* GameObjects and Scenes no longer have attribute access to properties. only dictionary style access - ob['prop']
* remove each class's get/set/dir functions.
* remove isA() methods, can use PyObject_TypeCheck() in C and issubclass() in python.
* remove Parents[] array for each C++ class, was only used for isA() and wasnt correct in quite a few cases.
* remove PyTypeObject that was being passed as the last argument to each class (the parent classes too).

TODO -
* Light and VertexProxy need to be converted to using attributes.
* memory for getset arrays is never freed, not that bad since its will only allocates once.

Modified Paths:
--------------
    branches/blender2.5/blender/source/gameengine/Converter/BL_ActionActuator.cpp
    branches/blender2.5/blender/source/gameengine/Converter/BL_ActionActuator.h
    branches/blender2.5/blender/source/gameengine/Converter/BL_ShapeActionActuator.cpp
    branches/blender2.5/blender/source/gameengine/Converter/BL_ShapeActionActuator.h
    branches/blender2.5/blender/source/gameengine/Expressions/ListValue.cpp
    branches/blender2.5/blender/source/gameengine/Expressions/ListValue.h
    branches/blender2.5/blender/source/gameengine/Expressions/PyObjectPlus.cpp
    branches/blender2.5/blender/source/gameengine/Expressions/PyObjectPlus.h
    branches/blender2.5/blender/source/gameengine/Expressions/Value.cpp
    branches/blender2.5/blender/source/gameengine/Expressions/Value.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_2DFilterActuator.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_ANDController.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_ANDController.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_ActuatorSensor.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_ActuatorSensor.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_AlwaysSensor.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_AlwaysSensor.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_DelaySensor.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_DelaySensor.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_ExpressionController.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_ExpressionController.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_IActuator.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_IActuator.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_IController.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_IController.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_ILogicBrick.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_ILogicBrick.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_IObject.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_IObject.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_ISensor.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_ISensor.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_JoystickSensor.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_JoystickSensor.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_KeyboardSensor.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_MouseSensor.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_MouseSensor.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_NANDController.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_NANDController.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_NORController.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_NORController.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_ORController.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_ORController.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_PropertyActuator.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_PropertyActuator.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_PropertySensor.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_PropertySensor.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_PythonController.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_PythonController.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_RandomActuator.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_RandomActuator.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_RandomSensor.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_RandomSensor.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_XNORController.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_XNORController.h
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_XORController.cpp
    branches/blender2.5/blender/source/gameengine/GameLogic/SCA_XORController.h
    branches/blender2.5/blender/source/gameengine/Ketsji/BL_Shader.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/BL_Shader.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_BlenderMaterial.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_CDActuator.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_CDActuator.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_Camera.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_Camera.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_CameraActuator.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_CameraActuator.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_ConstraintActuator.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_ConstraintActuator.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_ConstraintWrapper.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_GameActuator.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_GameActuator.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_GameObject.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_GameObject.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_IpoActuator.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_IpoActuator.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_Light.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_Light.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_MeshProxy.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_MeshProxy.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_MouseFocusSensor.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_NearSensor.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_NearSensor.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_ObjectActuator.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_ObjectActuator.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_ParentActuator.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_ParentActuator.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_PolyProxy.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_PolyProxy.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_PolygonMaterial.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_PolygonMaterial.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_PyMath.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_PythonInitTypes.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_RadarSensor.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_RadarSensor.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_RaySensor.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_RaySensor.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_SCA_DynamicActuator.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_Scene.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_Scene.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_SceneActuator.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_SceneActuator.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_SoundActuator.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_SoundActuator.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_StateActuator.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_StateActuator.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_TouchSensor.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_TouchSensor.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_TrackToActuator.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_TrackToActuator.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_VehicleWrapper.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_VehicleWrapper.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_VertexProxy.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_VertexProxy.h
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_VisibilityActuator.cpp
    branches/blender2.5/blender/source/gameengine/Ketsji/KX_VisibilityActuator.h

Modified: branches/blender2.5/blender/source/gameengine/Converter/BL_ActionActuator.cpp
===================================================================
--- branches/blender2.5/blender/source/gameengine/Converter/BL_ActionActuator.cpp	2009-06-28 09:35:37 UTC (rev 21213)
+++ branches/blender2.5/blender/source/gameengine/Converter/BL_ActionActuator.cpp	2009-06-28 11:22:26 UTC (rev 21214)
@@ -1006,19 +1006,17 @@
 		0,
 		py_base_repr,
 		0,0,0,0,0,0,
-		py_base_getattro,
-		py_base_setattro,
-		0,0,0,0,0,0,0,0,0,
-		Methods
+		NULL, //py_base_getattro,
+		NULL, //py_base_setattro,
+		0,
+		Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
+		0,0,0,0,0,0,0,
+		Methods,
+		0,
+		0,
+		&SCA_IActuator::Type
 };
 
-PyParentObject BL_ActionActuator::Parents[] = {
-	&BL_ActionActuator::Type,
-		&SCA_IActuator::Type,
-		&SCA_ILogicBrick::Type,
-		&CValue::Type,
-		NULL
-};
 
 PyMethodDef BL_ActionActuator::Methods[] = {
 	//Deprecated ----->
@@ -1065,19 +1063,6 @@
 	{ NULL }	//Sentinel
 };
 
-PyObject* BL_ActionActuator::py_getattro(PyObject *attr) {
-	py_getattro_up(SCA_IActuator);
-}
-
-PyObject* BL_ActionActuator::py_getattro_dict() {
-	py_getattro_dict_up(SCA_IActuator);
-}
-
-int BL_ActionActuator::py_setattro(PyObject *attr, PyObject* value) {
-	py_setattro_up(SCA_IActuator);
-}
-
-
 PyObject* BL_ActionActuator::pyattr_get_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
 {
 	BL_ActionActuator* self= static_cast<BL_ActionActuator*>(self_v);

Modified: branches/blender2.5/blender/source/gameengine/Converter/BL_ActionActuator.h
===================================================================
--- branches/blender2.5/blender/source/gameengine/Converter/BL_ActionActuator.h	2009-06-28 09:35:37 UTC (rev 21213)
+++ branches/blender2.5/blender/source/gameengine/Converter/BL_ActionActuator.h	2009-06-28 11:22:26 UTC (rev 21214)
@@ -49,9 +49,8 @@
 						short	blendin,
 						short	priority,
 						short	end_reset,
-						float	stride,
-						PyTypeObject* T=&Type) 
-		: SCA_IActuator(gameobj,T),
+						float	stride) 
+		: SCA_IActuator(gameobj),
 		
 		m_lastpos(0, 0, 0),
 		m_blendframe(0),
@@ -113,10 +112,6 @@
 
 	KX_PYMETHOD_DOC(BL_ActionActuator,setChannel);
 
-	virtual PyObject* py_getattro(PyObject* attr);
-	virtual PyObject*		py_getattro_dict();
-	virtual int py_setattro(PyObject* attr, PyObject* value);
-
 	static PyObject*	pyattr_get_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
 	static int			pyattr_set_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
 

Modified: branches/blender2.5/blender/source/gameengine/Converter/BL_ShapeActionActuator.cpp
===================================================================
--- branches/blender2.5/blender/source/gameengine/Converter/BL_ShapeActionActuator.cpp	2009-06-28 09:35:37 UTC (rev 21213)
+++ branches/blender2.5/blender/source/gameengine/Converter/BL_ShapeActionActuator.cpp	2009-06-28 11:22:26 UTC (rev 21214)
@@ -428,19 +428,17 @@
 		0,
 		py_base_repr,
 		0,0,0,0,0,0,
-		py_base_getattro,
-		py_base_setattro,
-		0,0,0,0,0,0,0,0,0,
-		Methods
+		NULL, //py_base_getattro,
+		NULL, //py_base_setattro,
+		0,
+		Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
+		0,0,0,0,0,0,0,
+		Methods,
+		0,
+		0,
+		&SCA_IActuator::Type
 };
 
-PyParentObject BL_ShapeActionActuator::Parents[] = {
-	&BL_ShapeActionActuator::Type,
-		&SCA_IActuator::Type,
-		&SCA_ILogicBrick::Type,
-		&CValue::Type,
-		NULL
-};
 
 PyMethodDef BL_ShapeActionActuator::Methods[] = {
 	{"setAction", (PyCFunction) BL_ShapeActionActuator::sPySetAction, METH_VARARGS, (PY_METHODCHAR)SetAction_doc},
@@ -480,19 +478,6 @@
 	{ NULL }	//Sentinel
 };
 
-
-PyObject* BL_ShapeActionActuator::py_getattro(PyObject* attr) {
-	py_getattro_up(SCA_IActuator);
-}
-
-PyObject* BL_ShapeActionActuator::py_getattro_dict() {
-	py_getattro_dict_up(SCA_IActuator);
-}
-
-int BL_ShapeActionActuator::py_setattro(PyObject *attr, PyObject* value) {
-	py_setattro_up(SCA_IActuator);
-}
-
 /*     setStart                                                              */
 const char BL_ShapeActionActuator::GetAction_doc[] = 
 "getAction()\n"

Modified: branches/blender2.5/blender/source/gameengine/Converter/BL_ShapeActionActuator.h
===================================================================
--- branches/blender2.5/blender/source/gameengine/Converter/BL_ShapeActionActuator.h	2009-06-28 09:35:37 UTC (rev 21213)
+++ branches/blender2.5/blender/source/gameengine/Converter/BL_ShapeActionActuator.h	2009-06-28 11:22:26 UTC (rev 21214)
@@ -50,9 +50,8 @@
 						short	playtype,
 						short	blendin,
 						short	priority,
-						float	stride,
-						PyTypeObject* T=&Type) 
-		: SCA_IActuator(gameobj,T),
+						float	stride) 
+		: SCA_IActuator(gameobj),
 		
 		m_lastpos(0, 0, 0),
 		m_blendframe(0),
@@ -106,10 +105,6 @@
 	KX_PYMETHOD_DOC_NOARGS(BL_ShapeActionActuator,GetType);
 	KX_PYMETHOD_DOC_VARARGS(BL_ShapeActionActuator,SetType);
 
-	virtual PyObject* py_getattro(PyObject* attr);
-	virtual PyObject*		py_getattro_dict();
-	virtual int py_setattro(PyObject* attr, PyObject* value);
-
 	static PyObject*	pyattr_get_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
 	static int			pyattr_set_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
 

Modified: branches/blender2.5/blender/source/gameengine/Expressions/ListValue.cpp
===================================================================
--- branches/blender2.5/blender/source/gameengine/Expressions/ListValue.cpp	2009-06-28 09:35:37 UTC (rev 21213)
+++ branches/blender2.5/blender/source/gameengine/Expressions/ListValue.cpp	2009-06-28 11:22:26 UTC (rev 21214)
@@ -289,25 +289,17 @@
 	0,			        /*tp_hash*/
 	0,				/*tp_call */
 	0,
-	py_base_getattro,
-	py_base_setattro,
+	NULL, //py_base_getattro,
+	NULL, //py_base_setattro,
 	0,
-	Py_TPFLAGS_DEFAULT,
+	Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
 	0,0,0,0,0,0,0,
-	Methods
+	Methods,
+	0,
+	0,
+	&CValue::Type
 };
 
-
-
-PyParentObject CListValue::Parents[] = {
-	&CListValue::Type,
-	&CValue::Type,
-		NULL
-};
-
-
-
-
 PyMethodDef CListValue::Methods[] = {
 	/* List style access */
 	{"append", (PyCFunction)CListValue::sPyappend,METH_O},
@@ -329,21 +321,12 @@
 	{ NULL }	//Sentinel
 };
 
-PyObject* CListValue::py_getattro(PyObject* attr) {
-	py_getattro_up(CValue);
-}
-
-PyObject* CListValue::py_getattro_dict() {
-	py_getattro_dict_up(CValue);
-}
-
-
 //////////////////////////////////////////////////////////////////////
 // Construction/Destruction
 //////////////////////////////////////////////////////////////////////
 
-CListValue::CListValue(PyTypeObject *T ) 
-: CPropValue(T)
+CListValue::CListValue()
+: CPropValue()
 {
 	m_bReleaseContents=true;	
 }

Modified: branches/blender2.5/blender/source/gameengine/Expressions/ListValue.h
===================================================================
--- branches/blender2.5/blender/source/gameengine/Expressions/ListValue.h	2009-06-28 09:35:37 UTC (rev 21213)
+++ branches/blender2.5/blender/source/gameengine/Expressions/ListValue.h	2009-06-28 11:22:26 UTC (rev 21214)
@@ -24,7 +24,7 @@
 	//PLUGIN_DECLARE_SERIAL (CListValue,CValue)
 
 public:
-	CListValue(PyTypeObject *T = &Type);
+	CListValue();
 	virtual ~CListValue();
 
 	void AddConfigurationData(CValue* menuvalue);
@@ -60,8 +60,6 @@
 
 	bool CheckEqual(CValue* first,CValue* second);
 
-	virtual PyObject* py_getattro(PyObject* attr);
-	virtual PyObject* py_getattro_dict();
 	virtual PyObject* py_repr(void) {
 		PyObject *py_proxy= this->GetProxy();
 		PyObject *py_list= PySequence_List(py_proxy);

Modified: branches/blender2.5/blender/source/gameengine/Expressions/PyObjectPlus.cpp
===================================================================
--- branches/blender2.5/blender/source/gameengine/Expressions/PyObjectPlus.cpp	2009-06-28 09:35:37 UTC (rev 21213)
+++ branches/blender2.5/blender/source/gameengine/Expressions/PyObjectPlus.cpp	2009-06-28 11:22:26 UTC (rev 21214)
@@ -75,10 +75,15 @@
 	0,
 	py_base_repr,
 	0,0,0,0,0,0,
-	py_base_getattro,
-	py_base_setattro,
-	0,0,0,0,0,0,0,0,0,
-	Methods
+	NULL, //py_base_getattro,
+	NULL, //py_base_setattro,
+	0,
+	Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
+	0,0,0,0,0,0,0,
+	Methods,
+	0,
+	0,
+	NULL // no subtype
 };
 
 
@@ -105,9 +110,8 @@
 	PyObject_DEL( self );
 };
 
-PyObjectPlus::PyObjectPlus(PyTypeObject *T) : SG_QList()				// constructor
+PyObjectPlus::PyObjectPlus() : SG_QList()				// constructor
 {
-	MT_assert(T != NULL);
 	m_proxy= NULL;
 };
   
@@ -115,127 +119,47 @@
  * PyObjectPlus Methods 	-- Every class, even the abstract one should have a Methods
 ------------------------------*/
 PyMethodDef PyObjectPlus::Methods[] = {
-  {"isA",		 (PyCFunction) sPyisA,			METH_O},
   {NULL, NULL}		/* Sentinel */
 };
 
+#define attr_invalid (&(PyObjectPlus::Attributes[0]))
 PyAttributeDef PyObjectPlus::Attributes[] = {
 	KX_PYATTRIBUTE_RO_FUNCTION("invalid",		PyObjectPlus, pyattr_get_invalid),
 	{NULL} //Sentinel
 };
 
+
+
 PyObject* PyObjectPlus::pyattr_get_invalid(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
 {	
-	Py_RETURN_FALSE;
+	return PyBool_FromLong(self_v ? 1:0);
 }
 
-/*------------------------------
- * PyObjectPlus Parents		-- Every class, even the abstract one should have parents
-------------------------------*/
-PyParentObject PyObjectPlus::Parents[] = {&PyObjectPlus::Type, NULL};
-
-/*------------------------------
- * PyObjectPlus attributes	-- attributes
-------------------------------*/
-
-
-/* This should be the entry in Type since it takes the C++ class from PyObjectPlus_Proxy */
-PyObject *PyObjectPlus::py_base_getattro(PyObject * self, PyObject *attr)
+PyObject *PyObjectPlus::py_base_repr(PyObject *self)			// This should be the entry in Type.
 {
+	
 	PyObjectPlus *self_plus= BGE_PROXY_REF(self);
 	if(self_plus==NULL) {
-		if(!strcmp("invalid", PyString_AsString(attr))) {
-			Py_RETURN_TRUE;
-		}
 		PyErr_SetString(PyExc_SystemError, BGE_PROXY_ERROR_MSG);
 		return NULL;
 	}
 	
-	PyObject *ret= self_plus->py_getattro(attr);
-	
-	/* Attribute not found, was this a __dict__ lookup?, otherwise set an error if none is set */
-	if(ret==NULL) {
-		char *attr_str= PyString_AsString(attr);
-		
-		if (strcmp(attr_str, "__dict__")==0)
-		{
-			/* the error string will probably not
-			 * be set but just incase clear it */
-			PyErr_Clear(); 
-			ret= self_plus->py_getattro_dict();
-		}
-		else if (!PyErr_Occurred()) {
-			/* We looked for an attribute but it wasnt found
-			 * since py_getattro didnt set the error, set it here */

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list