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

This commit is contained in:
Campbell Barton 2008-09-11 14:58:13 +00:00
parent 729af67742
commit 97178fecd9
2 changed files with 28 additions and 50 deletions

@ -196,19 +196,19 @@ PyParentObject KX_NetworkMessageSensor::Parents[] = {
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 @@ char KX_NetworkMessageSensor::SetSubjectFilterText_doc[] =
"\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 @@ char KX_NetworkMessageSensor::GetFrameMessageCount_doc[] =
"\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 @@ char KX_NetworkMessageSensor::GetBodies_doc[] =
"\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 @@ char KX_NetworkMessageSensor::GetSubject_doc[] =
"\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 @@ char KX_NetworkMessageSensor::GetSubjects_doc[] =
"\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());
}
}

@ -74,11 +74,11 @@ public:
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);
};