PyObject *call3( PyObject *arg1, PyObject *arg2, PyObject *arg3 ) { return CALL_FUNCTION_WITH_ARGS3( this->asObject0(), arg1, arg2, arg3 ); }
static bool SET_INSTANCE(PyObject *target, PyObject *attr_name, PyObject *value) { CHECK_OBJECT(target); CHECK_OBJECT(attr_name); CHECK_OBJECT(value); assert(PyInstance_Check(target)); assert(PyString_Check(attr_name)); PyInstanceObject *target_instance = (PyInstanceObject *)target; // The special cases should get their own SET_ATTRIBUTE_xxxx_SLOT variants // on the code generation level as SET_ATTRIBUTE is called with constants // only. assert(attr_name != const_str_plain___dict__); assert(attr_name != const_str_plain___class__); if (target_instance->in_class->cl_setattr != NULL) { PyObject *args[] = {target, attr_name, value}; PyObject *result = CALL_FUNCTION_WITH_ARGS3(target_instance->in_class->cl_setattr, args); if (unlikely(result == NULL)) { return false; } Py_DECREF(result); return true; } else { int status = PyDict_SetItem(target_instance->in_dict, attr_name, value); if (unlikely(status != 0)) { return false; } return true; } }