static PyObject* connects(PygtsSegment *self, PyObject *args) { PyObject *v1_,*v2_; GtsVertex *v1,*v2; SELF_CHECK /* Parse the args */ if(! PyArg_ParseTuple(args, "OO", &v1_, &v2_) ) { return NULL; } /* Convert to PygtsObjects */ if(!pygts_vertex_check(v1_)) { PyErr_SetString(PyExc_TypeError,"expected a Vertex"); return NULL; } v1 = PYGTS_VERTEX_AS_GTS_VERTEX(v1_); if(!pygts_vertex_check(v2_)) { PyErr_SetString(PyExc_TypeError,"expected a Vertex"); return NULL; } v2 = PYGTS_VERTEX_AS_GTS_VERTEX(v2_); if(gts_segment_connect(PYGTS_SEGMENT_AS_GTS_SEGMENT(self),v1,v2)) { Py_INCREF(Py_True); return Py_True; } else { Py_INCREF(Py_False); return Py_False; } }
/** * gts_triangle_set: * @triangle: a #GtsTriangle. * @e1: a #GtsEdge. * @e2: another #GtsEdge touching @e1. * @e3: another #GtsEdge touching both @e1 and @e2. * * Sets the edge of @triangle to @e1, @e2 and @e3 while checking that they * define a valid triangle. */ void gts_triangle_set (GtsTriangle * triangle, GtsEdge * e1, GtsEdge * e2, GtsEdge * e3) { g_return_if_fail (e1 != NULL); g_return_if_fail (e2 != NULL); g_return_if_fail (e3 != NULL); g_return_if_fail (e1 != e2 && e1 != e3 && e2 != e3); triangle->e1 = e1; triangle->e2 = e2; triangle->e3 = e3; if (GTS_SEGMENT (e1)->v1 == GTS_SEGMENT (e2)->v1) g_return_if_fail (gts_segment_connect (GTS_SEGMENT (e3), GTS_SEGMENT (e1)->v2, GTS_SEGMENT (e2)->v2)); else if (GTS_SEGMENT (e1)->v2 == GTS_SEGMENT (e2)->v1) g_return_if_fail (gts_segment_connect (GTS_SEGMENT (e3), GTS_SEGMENT (e1)->v1, GTS_SEGMENT (e2)->v2)); else if (GTS_SEGMENT (e1)->v2 == GTS_SEGMENT (e2)->v2) g_return_if_fail (gts_segment_connect (GTS_SEGMENT (e3), GTS_SEGMENT (e1)->v1, GTS_SEGMENT (e2)->v1)); else if (GTS_SEGMENT (e1)->v1 == GTS_SEGMENT (e2)->v2) g_return_if_fail (gts_segment_connect (GTS_SEGMENT (e3), GTS_SEGMENT (e1)->v2, GTS_SEGMENT (e2)->v1)); else return; //finetjul: g_assert_not_reached (); e1->triangles = g_slist_prepend (e1->triangles, triangle); e2->triangles = g_slist_prepend (e2->triangles, triangle); e3->triangles = g_slist_prepend (e3->triangles, triangle); }