int main(void) { xorn_revision_t rev; struct xornsch_text data; xorn_object_t ob; char *s; rev = xorn_new_revision(NULL); memset(&data, 0, sizeof data); data.text.s = "Hello"; data.text.len = 5; ob = xornsch_add_text(rev, &data); data.text.s = "World"; data.text.len = 5; xornsch_set_text_data(rev, ob, &data); s = strdup("!"); data.text.s = s; data.text.len = 1; xornsch_set_text_data(rev, ob, &data); free(s); xorn_free_revision(rev); return 0; }
int main() { xorn_revision_t rev; xorn_object_t ob0, ob1; struct xornsch_line line_data; struct xornsch_net net_data; struct xornsch_component component_data; struct xornsch_text text_data; memset(&line_data, 0, sizeof line_data); memset(&net_data, 0, sizeof net_data); memset(&component_data, 0, sizeof component_data); memset(&text_data, 0, sizeof text_data); assert(rev = xorn_new_revision(NULL)); assert(ob0 = xornsch_add_line(rev, &line_data)); assert(ob1 = xornsch_add_line(rev, &line_data)); assert(xornsch_set_net_data(rev, ob0, &net_data) == 0); assert(xornsch_set_text_data(rev, ob1, &text_data) == 0); check_not_attached(rev, ob0, ob1); /* data can be set without the object being reordered */ assert(xornsch_set_line_data(rev, ob0, &line_data) == 0); check_not_attached(rev, ob0, ob1); assert(xornsch_set_net_data(rev, ob0, &net_data) == 0); check_not_attached(rev, ob0, ob1); assert(xornsch_set_line_data(rev, ob1, &line_data) == 0); check_not_attached(rev, ob0, ob1); assert(xornsch_set_net_data(rev, ob1, &net_data) == 0); check_not_attached(rev, ob0, ob1); /* objects are re-added at the end */ xorn_delete_object(rev, ob0); assert(xornsch_set_line_data(rev, ob0, &line_data) == 0); check_not_attached(rev, ob1, ob0); xorn_delete_object(rev, ob0); assert(xornsch_set_line_data(rev, ob0, &line_data) == 0); check_not_attached(rev, ob1, ob0); xorn_delete_object(rev, ob1); assert(xornsch_set_line_data(rev, ob1, &line_data) == 0); check_not_attached(rev, ob0, ob1); xorn_delete_object(rev, ob1); assert(xornsch_set_line_data(rev, ob1, &line_data) == 0); check_not_attached(rev, ob0, ob1); xorn_delete_object(rev, ob0); assert(xornsch_set_net_data(rev, ob0, &net_data) == 0); check_not_attached(rev, ob1, ob0); xorn_delete_object(rev, ob0); assert(xornsch_set_net_data(rev, ob0, &net_data) == 0); check_not_attached(rev, ob1, ob0); xorn_delete_object(rev, ob1); assert(xornsch_set_net_data(rev, ob1, &net_data) == 0); check_not_attached(rev, ob0, ob1); xorn_delete_object(rev, ob1); assert(xornsch_set_net_data(rev, ob1, &net_data) == 0); check_not_attached(rev, ob0, ob1); /* can change ob0 to any type while no object is attached */ assert(xornsch_set_line_data(rev, ob0, &line_data) == 0); check_not_attached(rev, ob0, ob1); assert(xornsch_set_component_data(rev, ob0, &component_data) == 0); check_not_attached(rev, ob0, ob1); assert(xornsch_set_text_data(rev, ob0, &text_data) == 0); check_not_attached(rev, ob0, ob1); assert(xornsch_set_net_data(rev, ob0, &net_data) == 0); check_not_attached(rev, ob0, ob1); /* can change type of ob1 while not attached */ assert(xornsch_set_line_data(rev, ob1, &line_data) == 0); check_not_attached(rev, ob0, ob1); assert(xornsch_set_net_data(rev, ob1, &net_data) == 0); check_not_attached(rev, ob0, ob1); assert(xornsch_set_component_data(rev, ob1, &component_data) == 0); check_not_attached(rev, ob0, ob1); assert(xornsch_set_text_data(rev, ob1, &text_data) == 0); check_not_attached(rev, ob0, ob1); assert(xorn_relocate_object(rev, ob1, ob0, NULL) == 0); check_attached(rev, ob0, ob1); /* can't change ob0 to line or text while an object is attached */ assert(xornsch_set_line_data(rev, ob0, &line_data) == -1); check_attached(rev, ob0, ob1); assert(xornsch_set_net_data(rev, ob0, &net_data) == 0); check_attached(rev, ob0, ob1); assert(xornsch_set_component_data(rev, ob0, &component_data) == 0); check_attached(rev, ob0, ob1); assert(xornsch_set_text_data(rev, ob0, &text_data) == -1); check_attached(rev, ob0, ob1); /* can't change type of ob1 while attached */ assert(xornsch_set_line_data(rev, ob1, &line_data) == -1); check_attached(rev, ob0, ob1); assert(xornsch_set_net_data(rev, ob1, &net_data) == -1); check_attached(rev, ob0, ob1); assert(xornsch_set_component_data(rev, ob1, &component_data) == -1); check_attached(rev, ob0, ob1); assert(xornsch_set_text_data(rev, ob1, &text_data) == 0); check_attached(rev, ob0, ob1); xorn_free_revision(rev); return 0; }