[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16473] trunk/blender/source/gameengine/ Ketsji/KXNetwork: BGE message python api could return a CList type or None which makes exception checks annoying .

Campbell Barton ideasman42 at gmail.com
Thu Sep 11 16:58:14 CEST 2008


Revision: 16473
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16473
Author:   campbellbarton
Date:     2008-09-11 16:58:13 +0200 (Thu, 11 Sep 2008)

Log Message:
-----------
BGE message python api could return a CList type or None which makes exception checks annoying. just return an empty CList rather then None.

Modified Paths:
--------------
    trunk/blender/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp
    trunk/blender/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.h

Modified: trunk/blender/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp	2008-09-11 13:00:54 UTC (rev 16472)
+++ trunk/blender/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp	2008-09-11 14:58:13 UTC (rev 16473)
@@ -196,19 +196,19 @@
 
 PyMethodDef KX_NetworkMessageSensor::Methods[] = {
 	{"setSubjectFilterText", (PyCFunction)
-		KX_NetworkMessageSensor::sPySetSubjectFilterText, METH_VARARGS,
+		KX_NetworkMessageSensor::sPySetSubjectFilterText, METH_O,
 		SetSubjectFilterText_doc},
 	{"getFrameMessageCount", (PyCFunction)
-		KX_NetworkMessageSensor::sPyGetFrameMessageCount, METH_VARARGS,
+		KX_NetworkMessageSensor::sPyGetFrameMessageCount, METH_NOARGS,
 		GetFrameMessageCount_doc},
 	{"getBodies", (PyCFunction)
-		KX_NetworkMessageSensor::sPyGetBodies, METH_VARARGS,
+		KX_NetworkMessageSensor::sPyGetBodies, METH_NOARGS,
 		GetBodies_doc},
 	{"getSubject", (PyCFunction)
-		KX_NetworkMessageSensor::sPyGetSubject, METH_VARARGS,
+		KX_NetworkMessageSensor::sPyGetSubject, METH_NOARGS,
 		GetSubject_doc},
 	{"getSubjects", (PyCFunction)
-		KX_NetworkMessageSensor::sPyGetSubjects, METH_VARARGS,
+		KX_NetworkMessageSensor::sPyGetSubjects, METH_NOARGS,
 		GetSubjects_doc},
 	{NULL,NULL} //Sentinel
 };
@@ -222,22 +222,16 @@
 "\tsetSubjectFilterText(value)\n"
 "\tChange the message subject text that this sensor is listening to.\n";
 
-PyObject* KX_NetworkMessageSensor::PySetSubjectFilterText(
-	PyObject* self,
-	PyObject* args,
-	PyObject* kwds)
+PyObject* KX_NetworkMessageSensor::PySetSubjectFilterText( PyObject* self, PyObject* value)
 {
-	char* Subject;
-
-	if (PyArg_ParseTuple(args, "s", &Subject))
-	{
-	     m_subject = Subject;
-	}
-	else {
+	char* Subject = PyString_AsString(value);
+	if (Subject==NULL) {
+		PyErr_SetString(PyExc_TypeError, "expected a string message");
 		return NULL;
 	}
-
-	Py_Return;
+	
+	m_subject = Subject;
+	Py_RETURN_NONE;
 }
 
 // 2. Get the number of messages received since the last frame
@@ -245,10 +239,7 @@
 "\tgetFrameMessageCount()\n"
 "\tGet the number of messages received since the last frame.\n";
 
-PyObject* KX_NetworkMessageSensor::PyGetFrameMessageCount(
-	PyObject* self,
-	PyObject* args,
-	PyObject* kwds)
+PyObject* KX_NetworkMessageSensor::PyGetFrameMessageCount( PyObject* )
 {
 	return PyInt_FromLong(long(m_frame_message_count));
 }
@@ -258,16 +249,13 @@
 "\tgetBodies()\n"
 "\tGet the list of message bodies.\n";
 
-PyObject* KX_NetworkMessageSensor::PyGetBodies(
-	PyObject* self,
-	PyObject* args,
-	PyObject* kwds)
+PyObject* KX_NetworkMessageSensor::PyGetBodies( PyObject* )
 {
 	if (m_BodyList) {
 		return ((PyObject*) m_BodyList->AddRef());
+	} else {
+		return ((PyObject*) new CListValue());
 	}
-
-	Py_Return;
 }
 
 // 4. Get the message subject: field of the message sensor
@@ -275,16 +263,9 @@
 "\tgetSubject()\n"
 "\tGet the subject: field of the message sensor.\n";
 
-PyObject* KX_NetworkMessageSensor::PyGetSubject(
-	PyObject* self,
-	PyObject* args,
-	PyObject* kwds)
+PyObject* KX_NetworkMessageSensor::PyGetSubject( PyObject* )
 {
-	if (m_subject) {
-		return PyString_FromString(m_subject);
-	}
-
-	Py_Return;
+	return PyString_FromString(m_subject ? m_subject : "");
 }
 
 // 5. Get the message subjects
@@ -292,14 +273,11 @@
 "\tgetSubjects()\n"
 "\tGet list of message subjects.\n";
 
-PyObject* KX_NetworkMessageSensor::PyGetSubjects(
-	   PyObject* self,
-	   PyObject* args,
-	   PyObject* kwds)
+PyObject* KX_NetworkMessageSensor::PyGetSubjects( PyObject* )
 {
 	if (m_SubjectList) {
-	  return ((PyObject*) m_SubjectList->AddRef());
-	  }
-
-	Py_Return;
+		return ((PyObject*) m_SubjectList->AddRef());
+	} else {
+		return ((PyObject*) new CListValue());
+	}
 }

Modified: trunk/blender/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.h
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.h	2008-09-11 13:00:54 UTC (rev 16472)
+++ trunk/blender/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.h	2008-09-11 14:58:13 UTC (rev 16473)
@@ -74,11 +74,11 @@
 
 	virtual PyObject* _getattr(const STR_String& attr);
 
-	KX_PYMETHOD_DOC(KX_NetworkMessageSensor, SetSubjectFilterText);
-	KX_PYMETHOD_DOC(KX_NetworkMessageSensor, GetFrameMessageCount);
-	KX_PYMETHOD_DOC(KX_NetworkMessageSensor, GetBodies);
-	KX_PYMETHOD_DOC(KX_NetworkMessageSensor, GetSubject);
-	KX_PYMETHOD_DOC(KX_NetworkMessageSensor, GetSubjects);
+	KX_PYMETHOD_DOC_O(KX_NetworkMessageSensor, SetSubjectFilterText);
+	KX_PYMETHOD_DOC_NOARGS(KX_NetworkMessageSensor, GetFrameMessageCount);
+	KX_PYMETHOD_DOC_NOARGS(KX_NetworkMessageSensor, GetBodies);
+	KX_PYMETHOD_DOC_NOARGS(KX_NetworkMessageSensor, GetSubject);
+	KX_PYMETHOD_DOC_NOARGS(KX_NetworkMessageSensor, GetSubjects);
 
 
 };





More information about the Bf-blender-cvs mailing list