static int Task_init(PyTask * self, PyObject * args, PyObject * kwds) { PyObject * arg; if (!PyArg_ParseTuple(args, "O", &arg)) { return -1; } if (PyTask_Check(arg)) { PyTask * wrap_task = (PyTask *)arg; #ifndef NDEBUG if (wrap_task->m_task == NULL) { PyErr_SetString(PyExc_AssertionError, "NULL task Task.__init__"); return -1; } #endif // NDEBUG self->m_task = wrap_task->m_task; return 0; } if (PyLocatedEntity_Check(arg)) { PyEntity * owner = (PyEntity *)arg; #ifndef NDEBUG if (owner->m_entity.l == NULL) { PyErr_SetString(PyExc_AssertionError, "NULL owner Task.__init__"); return -1; } #endif // NDEBUG self->m_task = new Task(*owner->m_entity.l); return 0; } PyErr_SetString(PyExc_TypeError, "Task requires a Task, or Entity"); return -1; }
static PyObject * null_wrapper(PyObject * self, PyTask * o) { if (PyTask_Check(o)) { #ifdef CYPHESIS_DEBUG o->m_task = NULL; #endif // NDEBUG } else if (PyCharacter_Check(o)) { #ifdef CYPHESIS_DEBUG ((PyEntity*)o)->m_entity.c = 0; #endif // NDEBUG } else { PyErr_SetString(PyExc_TypeError, "Unknown Object type"); return NULL; } Py_INCREF(Py_None); return Py_None; }