static PyObject *Revision_get_objects( Revision *self, PyObject *args, PyObject *kwds) { xorn_object_t *objects; size_t count; PyObject *list; size_t i; if (xorn_get_objects(self->rev, &objects, &count) == -1) return PyErr_NoMemory(); list = PyList_New(count); if (list == NULL) return NULL; for (i = 0; i < count; i++) { PyObject *ob_item = build_object(objects[i]); if (ob_item == NULL) { Py_DECREF(list); free(objects); return NULL; } PyList_SET_ITEM(list, i, ob_item); } free(objects); return list; }
int main(void) { xorn_revision_t rev0, rev1, rev2, rev3; xorn_object_t ob0, ob1a, ob1b; xorn_selection_t sel0, sel1; xorn_revision_t rev4; xorn_object_t *objects; size_t count; setup(&rev0, &rev1, &rev2, &rev3, &ob0, &ob1a, &ob1b); rev4 = xorn_new_revision(rev2); assert(rev4 != NULL); sel0 = xorn_select_all(rev3); assert(sel0 != NULL); sel1 = xorn_copy_objects(rev4, rev2, sel0, NULL); assert(sel1 != NULL); xorn_finalize_revision(rev4); assert(xorn_object_is_selected(rev4, sel0, ob0)); assert(!xorn_object_is_selected(rev4, sel0, ob1a)); assert(xorn_object_is_selected(rev4, sel0, ob1b)); assert(!xorn_object_is_selected(rev4, sel1, ob0)); assert(!xorn_object_is_selected(rev4, sel1, ob1a)); assert(!xorn_object_is_selected(rev4, sel1, ob1b)); assert(xorn_get_objects(rev4, &objects, &count) == 0); assert(objects != NULL); assert(count == 5); assert(objects[0] == ob0); assert(objects[1] == ob1a); assert(objects[2] == ob1b); assert(!xorn_object_is_selected(rev4, sel0, objects[3])); assert(!xorn_object_is_selected(rev4, sel0, objects[4])); assert(xorn_object_is_selected(rev4, sel1, objects[3])); assert(xorn_object_is_selected(rev4, sel1, objects[4])); free(objects); xorn_free_selection(sel1); xorn_free_selection(sel0); xorn_free_revision(rev4); xorn_free_revision(rev3); xorn_free_revision(rev2); xorn_free_revision(rev1); xorn_free_revision(rev0); return 0; }
int main(void) { xorn_revision_t rev0, rev1, rev2, rev3; xorn_object_t ob0, ob1a, ob1b; xorn_object_t *objects; size_t count; setup(&rev0, &rev1, &rev2, &rev3, &ob0, &ob1a, &ob1b); assert(xorn_get_objects(rev0, &objects, &count) == 0); assert(count == 0); free(objects); assert(xorn_get_objects(rev1, &objects, &count) == 0); assert(objects != NULL); assert(count == 1); assert(objects[0] == ob0); free(objects); assert(xorn_get_objects(rev2, &objects, &count) == 0); assert(objects != NULL); assert(count == 3); assert(objects[0] == ob0); assert(objects[1] == ob1a); assert(objects[2] == ob1b); free(objects); assert(xorn_get_objects(rev3, &objects, &count) == 0); assert(objects != NULL); assert(count == 2); assert(objects[0] == ob0); assert(objects[1] == ob1b); free(objects); xorn_free_revision(rev3); xorn_free_revision(rev2); xorn_free_revision(rev1); xorn_free_revision(rev0); return 0; }
static void check_attached(xorn_revision_t rev, xorn_object_t ob0, xorn_object_t ob1) { xorn_object_t *objects; size_t count; assert(xorn_get_objects(rev, &objects, &count) == 0); assert(objects != NULL); assert(count == 2); assert(objects[0] == ob0); assert(objects[1] == ob1); free(objects); assert(xorn_relocate_object(rev, ob0, NULL, NULL) == 0); assert(xorn_get_objects(rev, &objects, &count) == 0); assert(objects != NULL); assert(count == 2); assert(objects[0] == ob0); assert(objects[1] == ob1); free(objects); }
static void assert_this_net(xorn_revision_t rev, xorn_object_t ob, int color) { xorn_object_t *objects; size_t count; assert(xorn_get_objects(rev, &objects, &count) == 0); assert(objects != NULL); assert(count == 1); assert(objects[0] == ob); assert(xorn_get_object_type(rev, ob) == xornsch_obtype_net); assert(xornsch_get_net_data(rev, ob)->color == color); free(objects); }
static void check_delete_0(xorn_revision_t rev, xorn_object_t del) { xorn_revision_t r; xorn_object_t *objects; size_t count; assert(r = xorn_new_revision(rev)); xorn_delete_object(r, del); assert(xorn_get_objects(r, &objects, &count) == 0); assert(count == 0); free(objects); xorn_free_revision(r); }
static void check(xorn_revision_t rev, xorn_object_t ob, xorn_object_t attach_to, xorn_object_t insert_before, int result, xorn_object_t ob0, xorn_object_t ob1, xorn_object_t ob2) { xorn_object_t *objects; size_t count; assert(xorn_relocate_object( rev, ob, attach_to, insert_before) == result); assert(xorn_get_objects(rev, &objects, &count) == 0); assert(objects != NULL); assert(count == 3); assert(objects[0] == ob0); assert(objects[1] == ob1); assert(objects[2] == ob2); free(objects); }
static void check_delete_2(xorn_revision_t rev, xorn_object_t del, xorn_object_t ob0, xorn_object_t ob1) { xorn_revision_t r; xorn_object_t *objects; size_t count; assert(r = xorn_new_revision(rev)); xorn_delete_object(r, del); assert(xorn_get_objects(r, &objects, &count) == 0); assert(objects != NULL); assert(count == 2); assert(objects[0] == ob0); assert(objects[1] == ob1); free(objects); xorn_free_revision(r); }
static void relocate_and_assert_2( xorn_revision_t rev, xorn_object_t ob, xorn_object_t insert_before, xorn_error_t expected_result, xorn_object_t ob0, xorn_object_t ob1) { xorn_error_t err; xorn_object_t *objects; size_t count; err = E_OK; assert(xorn_relocate_object(rev, ob, NULL, insert_before, &err) == (expected_result == E_OK ? 0 : -1)); assert(err == expected_result); assert(xorn_get_objects(rev, &objects, &count) == 0); assert(objects != NULL); assert(count == 2); assert(objects[0] == ob0); assert(objects[1] == ob1); free(objects); }
int main(void) { xorn_revision_t rev; rev = xorn_new_revision(NULL); /** [discrete] */ xorn_object_t *objects; size_t count; unsigned int i; xorn_get_objects(rev, &objects, &count); for (i = 0; i < count; i++) { xorn_obtype_t type = xorn_get_object_type(rev, objects[i]); if (type == xornsch_obtype_circle && xornsch_get_circle_data(rev, objects[i])->radius == 0.) xorn_delete_object(rev, objects[i], NULL); if (type == xornsch_obtype_arc && xornsch_get_arc_data(rev, objects[i])->radius == 0.) xorn_delete_object(rev, objects[i], NULL); } free(objects); /** [discrete] */ /** [integrated] */ xorn_selection_t sel = xornsch_select_by_radius(rev, 0.); xorn_delete_selected_objects(rev, sel, NULL); xorn_free_selection(sel); /** [integrated] */ xorn_free_revision(rev); return 0; }
int main(void) { xorn_revision_t rev0, rev1, rev2, rev3; xorn_object_t ob0, ob1a, ob1b; xorn_object_t *objects; size_t count; xorn_revision_t rev4; setup(&rev0, &rev1, &rev2, &rev3, &ob0, &ob1a, &ob1b); rev4 = xorn_new_revision(rev2); assert(xorn_get_objects(rev4, &objects, &count) == 0); assert(objects != NULL); assert(count == 3); assert(objects[0] == ob0); assert(objects[1] == ob1a); assert(objects[2] == ob1b); free(objects); relocate_and_assert_3(rev4, ob0, ob0, E_OK, ob0, ob1a, ob1b); relocate_and_assert_3(rev4, ob0, ob1a, E_OK, ob0, ob1a, ob1b); relocate_and_assert_3(rev4, ob0, ob1b, E_OK, ob1a, ob0, ob1b); relocate_and_assert_3(rev4, ob0, NULL, E_OK, ob1a, ob1b, ob0); relocate_and_assert_3(rev4, ob1a, ob0, E_OK, ob1b, ob1a, ob0); relocate_and_assert_3(rev4, ob1a, ob1a, E_OK, ob1b, ob1a, ob0); relocate_and_assert_3(rev4, ob1a, ob1b, E_OK, ob1a, ob1b, ob0); relocate_and_assert_3(rev4, ob1a, NULL, E_OK, ob1b, ob0, ob1a); relocate_and_assert_3(rev4, ob1b, ob0, E_OK, ob1b, ob0, ob1a); relocate_and_assert_3(rev4, ob1b, ob1a, E_OK, ob0, ob1b, ob1a); relocate_and_assert_3(rev4, ob1b, ob1b, E_OK, ob0, ob1b, ob1a); relocate_and_assert_3(rev4, ob1b, NULL, E_OK, ob0, ob1a, ob1b); relocate_and_assert_3(rev4, NULL, ob0, E_NOEXIST, ob0, ob1a, ob1b); relocate_and_assert_3(rev4, NULL, ob1a, E_NOEXIST, ob0, ob1a, ob1b); relocate_and_assert_3(rev4, NULL, ob1b, E_NOEXIST, ob0, ob1a, ob1b); relocate_and_assert_3(rev4, NULL, NULL, E_NOEXIST, ob0, ob1a, ob1b); relocate_and_assert_3(rev4, ob0, ob0, E_OK, ob0, ob1a, ob1b); relocate_and_assert_3(rev4, ob1a, ob1a, E_OK, ob0, ob1a, ob1b); relocate_and_assert_3(rev4, ob1b, ob1b, E_OK, ob0, ob1a, ob1b); assert(xorn_delete_object(rev4, ob0, NULL) == 0); assert(xorn_get_objects(rev4, &objects, &count) == 0); assert(objects != NULL); assert(count == 2); assert(objects[0] == ob1a); assert(objects[1] == ob1b); free(objects); relocate_and_assert_2(rev4, ob0, ob0, E_NOEXIST, ob1a, ob1b); relocate_and_assert_2(rev4, ob0, ob1a, E_NOEXIST, ob1a, ob1b); relocate_and_assert_2(rev4, ob0, ob1b, E_NOEXIST, ob1a, ob1b); relocate_and_assert_2(rev4, ob0, NULL, E_NOEXIST, ob1a, ob1b); relocate_and_assert_2(rev4, ob1a, ob0, E_NOSUCC, ob1a, ob1b); relocate_and_assert_2(rev4, ob1a, ob1a, E_OK, ob1a, ob1b); relocate_and_assert_2(rev4, ob1a, ob1b, E_OK, ob1a, ob1b); relocate_and_assert_2(rev4, ob1a, NULL, E_OK, ob1b, ob1a); relocate_and_assert_2(rev4, ob1b, ob0, E_NOSUCC, ob1b, ob1a); relocate_and_assert_2(rev4, ob1b, ob1a, E_OK, ob1b, ob1a); relocate_and_assert_2(rev4, ob1b, ob1b, E_OK, ob1b, ob1a); relocate_and_assert_2(rev4, ob1b, NULL, E_OK, ob1a, ob1b); relocate_and_assert_2(rev4, NULL, ob0, E_NOEXIST, ob1a, ob1b); relocate_and_assert_2(rev4, NULL, ob1a, E_NOEXIST, ob1a, ob1b); relocate_and_assert_2(rev4, NULL, ob1b, E_NOEXIST, ob1a, ob1b); relocate_and_assert_2(rev4, NULL, NULL, E_NOEXIST, ob1a, ob1b); xorn_finalize_revision(rev4); relocate_and_assert_2(rev4, ob1a, ob1a, E_NOTRANS, ob1a, ob1b); relocate_and_assert_2(rev4, ob1a, ob1b, E_NOTRANS, ob1a, ob1b); relocate_and_assert_2(rev4, ob1a, NULL, E_NOTRANS, ob1a, ob1b); relocate_and_assert_2(rev4, ob1b, ob1a, E_NOTRANS, ob1a, ob1b); relocate_and_assert_2(rev4, ob1b, ob1b, E_NOTRANS, ob1a, ob1b); relocate_and_assert_2(rev4, ob1b, NULL, E_NOTRANS, ob1a, ob1b); xorn_free_revision(rev4); xorn_free_revision(rev3); xorn_free_revision(rev2); xorn_free_revision(rev1); xorn_free_revision(rev0); return 0; }
int main(void) { xorn_revision_t rev; rev = xorn_new_revision(NULL); { /** [add object] */ struct xornsch_line line_data; memset(&line_data, 0, sizeof line_data); line_data.pos.x = 0; line_data.pos.y = 0; line_data.size.x = 100; line_data.size.y = 100; line_data.line.width = 1; xorn_object_t ob; ob = xorn_add_object(rev, xornsch_obtype_line, &line_data); if (ob == NULL) /* handle error */; /** [add object] */ /** [get object data] */ const struct xornsch_line *data; data = xorn_get_object_data(rev, ob, xornsch_obtype_line); if (data == NULL) /* ob doesn't exist or isn't a line */; /** [get object data] */ } { struct xornsch_net net_data; xorn_object_t ob; memset(&net_data, 0, sizeof net_data); ob = xornsch_add_net(rev, &net_data); /** [set object data] */ struct xornsch_line line_data; memset(&line_data, 0, sizeof line_data); line_data.pos.x = 0; line_data.pos.y = 0; line_data.size.x = 100; line_data.size.y = 100; line_data.line.width = 1; if (xorn_set_object_data(rev, ob, xornsch_obtype_line, &line_data) == -1) /* handle error */; /** [set object data] */ } { /** [get objects] */ xorn_object_t *objects; size_t count; unsigned int i; if (xorn_get_objects(rev, &objects, &count) == -1) /* handle error */; for (i = 0; i < count; i++) /* do something with objects[i] */; free(objects); /** [get objects] */ } { struct xornsch_component component_data; xorn_object_t component; memset(&component_data, 0, sizeof component_data); component = xornsch_add_component(rev, &component_data); /** [add attribute] */ struct xornsch_text text_data; memset(&text_data, 0, sizeof text_data); text_data.text.s = "refdes=R1"; text_data.text.len = strlen(text_data.text.s); xorn_object_t ob; ob = xornsch_add_text(rev, &text_data); if (ob == NULL) /* handle error */; if (xorn_relocate_object(rev, ob, component, NULL) == -1) /* handle error */; /** [add attribute] */ } xorn_free_revision(rev); return 0; }