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);
 
 
 };


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to