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; }
static void try_modify(xorn_revision_t rev, xorn_object_t existing_ob, bool expected_result) { xorn_object_t ob0, ob1; xorn_selection_t sel0, sel1; xorn_error_t err; xorn_error_t expected_err = expected_result ? NO_ERROR : xorn_error_revision_not_transient; err = NO_ERROR; ob0 = xornsch_add_line(rev, &line_data, &err); assert((ob0 != NULL) == expected_result); assert(err == expected_err); err = NO_ERROR; assert((xornsch_set_box_data(rev, existing_ob, &box_data, &err) == 0) == expected_result); assert(err == expected_err); err = NO_ERROR; ob1 = xorn_copy_object(rev, rev, existing_ob, &err); assert((ob1 != NULL) == expected_result); assert(err == expected_err); xorn_object_t del_ob = expected_result ? ob1 : existing_ob; err = NO_ERROR; assert((xorn_delete_object(rev, del_ob, &err) == 0) == expected_result); assert(err == expected_err); assert(xorn_object_exists_in_revision(rev, del_ob) == !expected_result); sel0 = xorn_select_all(rev); assert(sel0 != NULL); err = NO_ERROR; sel1 = xorn_copy_objects(rev, rev, sel0, &err); assert((sel1 != NULL) == expected_result); assert(err == expected_err); xorn_free_selection(sel1); err = NO_ERROR; assert((xorn_delete_selected_objects(rev, sel0, &err) == 0) == expected_result); assert(err == expected_err); assert(xorn_object_exists_in_revision(rev, existing_ob) == !expected_result); xorn_free_selection(sel0); }
int main() { xorn_revision_t rev; xorn_object_t ob0, ob1; struct xornsch_component component_data; struct xornsch_picture picture_data; xorn_selection_t sel0, sel1; assert(rev = xorn_new_revision(NULL)); memset(&component_data, 0, sizeof component_data); component_data.symbol.ptr = &refcnt0; component_data.symbol.incref = (void (*)(void *))inc; component_data.symbol.decref = (void (*)(void *))dec; assert(ob0 = xornsch_add_component(rev, &component_data)); assert(refcnt0 == 1); memset(&picture_data, 0, sizeof picture_data); picture_data.pixmap.ptr = &refcnt1; picture_data.pixmap.incref = (void (*)(void *))inc; picture_data.pixmap.decref = (void (*)(void *))dec; assert(ob1 = xornsch_add_picture(rev, &picture_data)); assert(refcnt0 == 1); assert(refcnt1 == 1); assert(sel0 = xorn_select_all(rev)); assert(sel1 = xorn_copy_objects(rev, rev, sel0)); assert(refcnt0 != 0); assert(refcnt1 != 0); memset(&picture_data, 0, sizeof picture_data); assert(xornsch_set_picture_data(rev, ob1, &picture_data) == 0); assert(refcnt0 != 0); assert(refcnt1 != 0); xorn_delete_selected_objects(rev, sel1); assert(refcnt0 == 1); assert(refcnt1 == 0); xorn_free_selection(sel1); xorn_free_selection(sel0); xorn_free_revision(rev); assert(refcnt0 == 0); assert(refcnt1 == 0); return 0; }
static PyObject *Revision_copy_objects( Revision *self, PyObject *args, PyObject *kwds) { PyObject *rev_arg = NULL, *sel_arg = NULL; static char *kwlist[] = { "rev", "sel", NULL }; if (!PyArg_ParseTupleAndKeywords( args, kwds, "O!O!:Revision.copy_objects", kwlist, &RevisionType, &rev_arg, &SelectionType, &sel_arg)) return NULL; if (!xorn_revision_is_transient(self->rev)) return not_transient(); xorn_selection_t sel = xorn_copy_objects( self->rev, ((Revision *)rev_arg)->rev, ((Selection *)sel_arg)->sel); return sel ? build_selection(sel) : PyErr_NoMemory(); }
int main(void) { xorn_revision_t src, dest; struct xornsch_net net_data; struct xornsch_text text_data; xorn_object_t net0, net1, text0, text1, copy; xorn_selection_t sel, copies; assert(src = xorn_new_revision(NULL)); memset(&net_data, 0, sizeof net_data); net_data.color = 1; assert(net0 = xornsch_add_net(src, &net_data, NULL)); net_data.color = 2; assert(net1 = xornsch_add_net(src, &net_data, NULL)); memset(&text_data, 0, sizeof text_data); text_data.color = 3; assert(text0 = xornsch_add_text(src, &text_data, NULL)); text_data.color = 4; assert(text1 = xornsch_add_text(src, &text_data, NULL)); assert(xorn_relocate_object(src, text1, net1, NULL, NULL) == 0); xorn_finalize_revision(src); /* text1 is attached to net1, text0 is not attached */ assert(dest = xorn_new_revision(NULL)); assert(copy = xorn_copy_object(dest, src, net0, NULL)); assert_this_net(dest, copy, 1); xorn_free_revision(dest); assert(dest = xorn_new_revision(NULL)); assert(copy = xorn_copy_object(dest, src, net1, NULL)); assert_this_net_with_text(dest, copy, 2, 4); xorn_free_revision(dest); assert(dest = xorn_new_revision(NULL)); assert(sel = xorn_select_object(net0)); assert(copies = xorn_copy_objects(dest, src, sel, NULL)); assert_this_net(dest, get_only_selected_object(dest, copies), 1); xorn_free_selection(copies); xorn_free_selection(sel); xorn_free_revision(dest); assert(dest = xorn_new_revision(NULL)); assert(sel = xorn_select_object(net1)); assert(copies = xorn_copy_objects(dest, src, sel, NULL)); assert_this_net_with_text( dest, get_only_selected_object(dest, copies), 2, 4); xorn_free_selection(copies); xorn_free_selection(sel); xorn_free_revision(dest); assert(dest = xorn_new_revision(NULL)); assert(sel = xorn_select_attached_to(src, NULL)); assert(copies = xorn_copy_objects(dest, src, sel, NULL)); assert_four(dest, copies, 1, 2, 3, 4); xorn_free_selection(copies); xorn_free_selection(sel); xorn_free_revision(dest); xorn_free_revision(src); return 0; }