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
, "show") == 0) {
111 printf("%i", DA(&v
)[0]);
112 for (i
= 1; i
< DA_LEN(&v
); i
++)
113 printf(" %i", DA(&v
)[i
]);
118 } CATCH
switch (exc_type
) {
129 puts("*UNKNOWN-EXCEPTION*");