X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=odr%2Ftest.c;h=6a3feef9b892087ea5b307e2fe764c7d0fc63525;hb=9287c96097c00d28310becb14ea3dd7cfb9f2ab0;hp=6da7b89ce8002720ff45499a103eec0c74f6f531;hpb=b0df126f997b4d9f51be961a2fdbd4ebea001b84;p=yaz-moved-to-github.git diff --git a/odr/test.c b/odr/test.c index 6da7b89..6a3feef 100644 --- a/odr/test.c +++ b/odr/test.c @@ -1,6 +1,7 @@ #include -#include -#include +#include + +#if 0 typedef Odr_bitmask Z_ReferenceId; @@ -70,7 +71,7 @@ int f_A(ODR o, struct A **p, int opt) }; if (o->direction == ODR_DECODE && !*p) - *p = nalloc(o, sizeof(**p)); + *p = odr_malloc(o, sizeof(**p)); res = odr_choice(o, arm, &(*p)->u, &(*p)->which); if (!res) { @@ -118,11 +119,14 @@ int main() o.buf = buf; o.bp=o.buf; o.left = o.buflen = 1024; - o.direction = ODR_ENCODE; + o.direction = ODR_PRINT; + o.print = stdout; o.t_class = -1; odr_oid(&o, &oidp1, 0); + exit(0); + o.direction = ODR_DECODE; o.bp = o.buf; @@ -130,30 +134,32 @@ int main() } #endif +#endif + int main() { - struct A ch, *chp1, *chp2; - int b = 9999; - char *c = "Nu tester vi en satans forpulet CHOICE!"; - struct odr o; - unsigned char buf[4096]; - - ch.u.c = c; - ch.which = 1; - chp1 = &ch; + Odr_bitmask a; + char command; + int val; + char line[100]; - o.buf = buf; - o.bp=o.buf; - o.left = o.buflen = 1024; - o.direction = ODR_ENCODE; - o.t_class = -1; - - f_A(&o, &chp1, 0); - - o.direction = ODR_DECODE; - o.bp = o.buf; - - f_A(&o, &chp2, 0); - - return 0; + ODR_MASK_ZERO(&a); + while (gets(line)) + { + int i; + + sscanf(line, "%c %d", &command, &val); + switch (command) + { + case 's': ODR_MASK_SET(&a, val); break; + case 'c': ODR_MASK_CLEAR(&a, val); break; + case 'g': printf("%d\n", ODR_MASK_GET(&a, val)); break; + case 'l': break; + default: printf("enter c or s or l\n"); continue; + } + printf("top is %d\n", a.top); + for (i = 0; i <= a.top; i++) + printf("%2.2x ", a.bits[i] ); + printf("\n"); + } }