3 * Test driver for darray.
19 static void dump(vec
*v
)
21 printf("# len = %lu, sz = %lu, off = %lu; push = %u, unshift = %u\n",
22 (unsigned long)v
->b
.len
,
23 (unsigned long)v
->b
.sz
,
24 (unsigned long)v
->b
.off
,
25 v
->b
.push
, v
->b
.unshift
);
29 printf(" %i", DA(v
)[0]);
30 for (i
= 1; i
< DA_LEN(v
); i
++)
31 printf(", %i", DA(v
)[i
]);
34 assert(v
->b
.sz
+ v
->b
.off
== 128);
45 /* setvbuf(stdout, 0, _IOLBF, BUFSIZ); */
47 while (fgets(buf
, sizeof(buf
), stdin
)) {
48 buf
[strlen(buf
) - 1] = 0;
49 /* printf("# %s\n", buf); */
53 if (STRCMP(p
, ==, "push")) {
54 int n
= atoi(strtok(0, " "));
56 } else if (STRCMP(p
, ==, "unshift")) {
57 int n
= atoi(strtok(0, " "));
59 } else if (STRCMP(p
, ==, "pop")) {
60 printf("%i\n", DA_POP(&v
));
61 } else if (STRCMP(p
, ==, "shift")) {
62 printf("%i\n", DA_SHIFT(&v
));
63 } else if (STRCMP(p
, ==, "insert") ||
64 STRCMP(p
, ==, "append")) {
69 while ((p
= strtok(0, " ")) != 0) {
73 if (STRCMP(q
, ==, "insert")) {
74 DA_SHUNT(&v
, DA_LEN(&vv
));
75 DA_SLIDE(&v
, DA_LEN(&vv
));
76 memcpy(DA(&v
), DA(&vv
), DA_LEN(&vv
) * sizeof(int));
78 size_t l
= DA_LEN(&v
);
79 DA_ENSURE(&v
, DA_LEN(&vv
));
80 DA_EXTEND(&v
, DA_LEN(&vv
));
81 memcpy(DA(&v
) + l
, DA(&vv
), DA_LEN(&vv
) * sizeof(int));
84 } else if (STRCMP(p
, ==, "delete")) {
85 int n
= atoi(strtok(0, " "));
87 } else if (STRCMP(p
, ==, "reduce")) {
88 int n
= atoi(strtok(0, " "));
90 } else if (STRCMP(p
, ==, "set")) {
91 size_t i
= atoi(strtok(0, " "));
92 int n
= atoi(strtok(0, " "));
93 size_t l
= DA_LEN(&v
);
97 for (j
= l
; j
< i
; j
++)
101 } else if (STRCMP(p
, ==, "get")) {
102 size_t i
= atoi(strtok(0, " "));
106 printf("%i\n", DA(&v
)[i
]);
107 } else if (STRCMP(p
, ==, "first")) {
109 printf("%i\n", DA_FIRST(&v
));
112 } else if (STRCMP(p
, ==, "last")) {
114 printf("%i\n", DA_LAST(&v
));
117 } else if (STRCMP(p
, ==, "show")) {
122 printf("%i", DA(&v
)[0]);
123 for (i
= 1; i
< DA_LEN(&v
); i
++)
124 printf(" %i", DA(&v
)[i
]);
129 } CATCH
switch (exc_type
) {
140 puts("*UNKNOWN-EXCEPTION*");