static PyObject* nb_subtract (PyObject* o1, PyObject* o2) { float o1w = 0, o1h = 0, o1d = 0; float o2w = 0, o2h = 0, o2d = 0; PyObject *args, *result; PySoy_atoms_Size_Object *so1, *so2; //* parse object attributes if (!PySoy_atoms_Size_Check(o1) || !PySoy_atoms_Size_Check(o2)) { PyErr_SetString(PyExc_TypeError, "unsupported operand type(s)"); return NULL; } so1 = (PySoy_atoms_Size_Object*)o1; o1w = soy_atoms_size_get_width(so1->g); o1h = soy_atoms_size_get_height(so1->g); o1d = soy_atoms_size_get_depth(so1->g); so2 = (PySoy_atoms_Size_Object*)o2; o2w = soy_atoms_size_get_width(so2->g); o2h = soy_atoms_size_get_height(so2->g); o2d = soy_atoms_size_get_depth(so2->g); // build args with calculated values args = Py_BuildValue("((fff))", o1w - o2w, o1h - o2h, o1d - o2d); // create result object result = tp_new(&PySoy_atoms_Size_Type, args, NULL); // decref args tuple and tmp Py_DECREF(args); // return calculated result return result; }
static PyObject* nb_multiply (PyObject* o1, PyObject* o2) { float o1w = 0, o1h = 0, o1d = 0; float o2w = 0, o2h = 0, o2d = 0; PyObject *args, *result; PySoy_atoms_Size_Object *so1, *so2; // parse object 1 if (PyLong_Check(o1)) { o1w = o1h = o1d = PyLong_AsDouble(o1); } else if (PyFloat_Check(o1)) { o1w = o1h = o1d = PyFloat_AsDouble(o1); } else if (PySoy_atoms_Size_Check(o1)) { so1 = (PySoy_atoms_Size_Object*)o1; o1w = soy_atoms_size_get_width(so1->g); o1h = soy_atoms_size_get_height(so1->g); o1d = soy_atoms_size_get_depth(so1->g); } else { PyErr_SetString(PyExc_TypeError, "unsupported operand type(s)"); return NULL; } // parse object 2 if (PyLong_Check(o2)) { o2w = o2h = o2d = PyLong_AsDouble(o2); } else if (PyFloat_Check(o2)) { o2w = o2h = o2d = PyFloat_AsDouble(o2); } else if (PySoy_atoms_Size_Check(o2)) { so2 = (PySoy_atoms_Size_Object*)o2; o2w = soy_atoms_size_get_width(so2->g); o2h = soy_atoms_size_get_height(so2->g); o2d = soy_atoms_size_get_depth(so2->g); } else { PyErr_SetString(PyExc_TypeError, "unsupported operand type(s)"); return NULL; } // build args with calculated values args = Py_BuildValue("((fff))", o1w * o2w, o1h * o2h, o1d * o2d); // create result object result = tp_new(&PySoy_atoms_Size_Type, args, NULL); // decref args tuple and tmp Py_DECREF(args); // return calculated result return result; }
static void _soy_bodies_box_size_set (soybodiesBox* self, soyatomsSize* size) { soyatomsSize* _tmp0_; gfloat _tmp1_; gfloat _tmp2_; soyatomsSize* _tmp3_; gfloat _tmp4_; gfloat _tmp5_; soyatomsSize* _tmp6_; gfloat _tmp7_; gfloat _tmp8_; soyscenesScene* _tmp9_; struct dxGeom* _tmp11_; GLfloat _tmp12_; GLfloat _tmp13_; GLfloat _tmp14_; soyscenesScene* _tmp15_; g_return_if_fail (self != NULL); g_return_if_fail (size != NULL); g_mutex_lock (&((soybodiesBody*) self)->mutex); _tmp0_ = size; _tmp1_ = soy_atoms_size_get_width (_tmp0_); _tmp2_ = _tmp1_; self->priv->_width = (GLfloat) _tmp2_; _tmp3_ = size; _tmp4_ = soy_atoms_size_get_height (_tmp3_); _tmp5_ = _tmp4_; self->priv->_height = (GLfloat) _tmp5_; _tmp6_ = size; _tmp7_ = soy_atoms_size_get_depth (_tmp6_); _tmp8_ = _tmp7_; self->priv->_depth = (GLfloat) _tmp8_; self->priv->_updated = TRUE; g_mutex_unlock (&((soybodiesBody*) self)->mutex); _tmp9_ = ((soybodiesBody*) self)->scene; if (_tmp9_ != NULL) { soyscenesScene* _tmp10_; _tmp10_ = ((soybodiesBody*) self)->scene; g_rw_lock_writer_lock (&_tmp10_->stepLock); } _tmp11_ = ((soybodiesBody*) self)->geom; _tmp12_ = self->priv->_width; _tmp13_ = self->priv->_height; _tmp14_ = self->priv->_depth; dGeomBoxSetLengths ((struct dxGeom*) _tmp11_, (dReal) _tmp12_, (dReal) _tmp13_, (dReal) _tmp14_); _tmp15_ = ((soybodiesBody*) self)->scene; if (_tmp15_ != NULL) { soyscenesScene* _tmp16_; _tmp16_ = ((soybodiesBody*) self)->scene; g_rw_lock_writer_unlock (&_tmp16_->stepLock); } }
static PyObject* tp_repr (SELF self) { char* str; PyObject* ret; // We can't use PyUnicode_FromFormat because it doesn't support floats str = g_strdup_printf("<Size (%f, %f, %f)>", soy_atoms_size_get_width(self->g), soy_atoms_size_get_height(self->g), soy_atoms_size_get_depth(self->g)); ret = PyUnicode_FromString(str); // Free str and return g_free(str); return ret; }