3 * Test driver for darray.
18 static void dump(vec *v)
20 printf("# len = %lu, sz = %lu, off = %lu; push = %u, unshift = %u\n",
21 (unsigned long)v->b.len,
22 (unsigned long)v->b.sz,
23 (unsigned long)v->b.off,
24 v->b.push, v->b.unshift);
28 printf(" %i", DA(v)[0]);
29 for (i = 1; i < DA_LEN(v); i++)
30 printf(", %i", DA(v)[i]);
33 assert(v->b.sz + v->b.off == 128);
44 /* setvbuf(stdout, 0, _IOLBF, BUFSIZ); */
46 while (fgets(buf, sizeof(buf), stdin)) {
47 buf[strlen(buf) - 1] = 0;
48 /* printf("# %s\n", buf); */
52 if (strcmp(p, "push") == 0) {
53 int n = atoi(strtok(0, " "));
55 } else if (strcmp(p, "unshift") == 0) {
56 int n = atoi(strtok(0, " "));
58 } else if (strcmp(p, "pop") == 0) {
59 printf("%i\n", DA_POP(&v));
60 } else if (strcmp(p, "shift") == 0) {
61 printf("%i\n", DA_SHIFT(&v));
62 } else if (strcmp(p, "insert") == 0 ||
63 strcmp(p, "append") == 0) {
68 while ((p = strtok(0, " ")) != 0) {
72 if (strcmp(q, "insert") == 0) {
73 DA_SHUNT(&v, DA_LEN(&vv));
74 DA_SLIDE(&v, DA_LEN(&vv));
75 memcpy(DA(&v), DA(&vv), DA_LEN(&vv) * sizeof(int));
77 size_t l = DA_LEN(&v);
78 DA_ENSURE(&v, DA_LEN(&vv));
79 DA_EXTEND(&v, DA_LEN(&vv));
80 memcpy(DA(&v) + l, DA(&vv), DA_LEN(&vv) * sizeof(int));
83 } else if (strcmp(p, "delete") == 0) {
84 int n = atoi(strtok(0, " "));
86 } else if (strcmp(p, "reduce") == 0) {
87 int n = atoi(strtok(0, " "));
89 } else if (strcmp(p, "set") == 0) {
90 size_t i = atoi(strtok(0, " "));
91 int n = atoi(strtok(0, " "));
92 size_t l = DA_LEN(&v);
96 for (j = l; j < i; j++)
100 } else if (strcmp(p, "get") == 0) {
101 size_t i = atoi(strtok(0, " "));
105 printf("%i\n", DA(&v)[i]);
106 } else if (strcmp(p, "first") == 0) {
108 printf("%i\n", DA_FIRST(&v));
111 } else if (strcmp(p, "last") == 0) {
113 printf("%i\n", DA_LAST(&v));
116 } else if (strcmp(p, "show") == 0) {
121 printf("%i", DA(&v)[0]);
122 for (i = 1; i < DA_LEN(&v); i++)
123 printf(" %i", DA(&v)[i]);
128 } CATCH switch (exc_type) {
139 puts("*UNKNOWN-EXCEPTION*");