First kick.
[yaz-moved-to-github.git] / odr / test.c
1 #include <stdio.h>
2
3 #include <odr.h>
4
5 int odr_dummy(ODR o, int **p, int opt)
6 {
7     return odr_implicit(o, odr_integer, p, ODR_PRIVATE, 10, opt);
8 }
9
10 struct dummy
11 {
12     int *alfa;
13     int *beta;
14 };
15
16 int odr_dummy2(ODR o, struct dummy **p, int opt)
17 {
18     struct dummy *pp;
19
20     if (!odr_sequence_begin(o, p, sizeof(**p)))
21         return opt;
22     pp = *p;
23     return
24         odr_implicit(o, odr_integer, &pp->alfa, ODR_CONTEXT, 1, 1) &&
25         odr_implicit(o, odr_integer, &pp->beta, ODR_CONTEXT, 2, 1) &&
26         odr_sequence_end(o);
27 }
28
29 int main()
30 {
31     int i;
32     unsigned char buf[1024];
33     struct odr o;
34     int test=-99999;
35     int *tp = &test, *tp2;
36     ODR_OCT bbb, *bbb1, *bbb2;
37     ODR_OCT ccc, *ccc1;
38     char *str1 = "FOO", *str2 = "BAR";
39
40     o.buf = buf;
41     o.bp=o.buf;
42     o.left = o.buflen = 1024;
43     o.direction = ODR_ENCODE;
44     o.t_class = -1;
45
46     bbb.buf = (unsigned char *) str1;
47     bbb.len = bbb.size = strlen(str1);
48     bbb1 = &bbb;
49
50     ccc.buf = (unsigned char*) str2;
51     ccc.len = ccc.size = strlen(str2);
52     ccc1 = &ccc;
53
54     odr_constructed_begin(&o, &bbb1, ODR_UNIVERSAL, ODR_OCTETSTRING, 0);
55     odr_octetstring(&o, &bbb1, 0);
56     odr_octetstring(&o, &ccc1, 0);
57     odr_constructed_end(&o);
58
59     o.direction = ODR_DECODE;
60     o.bp = o.buf;
61
62     odr_octetstring(&o, &bbb2, 0);
63 }