X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=doc%2Fodr.xml;h=627f5c91966e6af38424bc8e636af35aa1ae6f4d;hb=1fb26db29805d4822763c205358f394725b0f02c;hp=38d300e61ff3daa77662abe574ab8dfe882ec48a;hpb=757c8c0ffb82023c9059d9a5997515f65ad68561;p=yaz-moved-to-github.git diff --git a/doc/odr.xml b/doc/odr.xml index 38d300e..627f5c9 100644 --- a/doc/odr.xml +++ b/doc/odr.xml @@ -1,4 +1,3 @@ - The ODR Module Introduction @@ -105,7 +104,7 @@ - void odr_reset(ODR o, int size); + void odr_reset(ODR o); @@ -322,23 +321,23 @@ void do_nothing_useful(int value) if (!(decode = odr_createmem(ODR_DECODE))) return; - valp = &value; - if (odr_integer(encode, &valp, 0, 0) == 0) + valp = &value; + if (odr_integer(encode, &valp, 0, 0) == 0) { printf("encoding went bad\n"); return; } - bufferp = odr_getbuf(encode, &len); - printf("length of encoded data is %d\n", len); + bufferp = odr_getbuf(encode, &len, 0); + printf("length of encoded data is %d\n", len); /* now let's decode the thing again */ - odr_setbuf(decode, bufferp, len); - if (odr_integer(decode, &resvalp, 0, 0) == 0) + odr_setbuf(decode, bufferp, len, 0); + if (odr_integer(decode, &resvalp, 0, 0) == 0) { printf("decoding went bad\n"); return; } - printf("the value is %d\n", *resvalp); + printf("the value is %d\n", *resvalp); /* clean up */ odr_destroy(encode); @@ -492,7 +491,7 @@ void do_nothing_useful(int value) - char *odr_errlist[] + char *odr_errlist[] @@ -505,7 +504,7 @@ void do_nothing_useful(int value) Summary and Synopsis - #include <odr.h> + #include <yaz/odr.h> ODR odr_createmem(int direction); @@ -513,19 +512,17 @@ void do_nothing_useful(int value) void odr_reset(ODR o); - char *odr_getbuf(ODR o, int *len); + char *odr_getbuf(ODR o, int *len, int *size); - void odr_setbuf(ODR o, char *buf, int len); + void odr_setbuf(ODR o, char *buf, int len, int can_grow); void *odr_malloc(ODR o, int size); - ODR_MEM odr_extract_mem(ODR o); - - void odr_release_mem(ODR_MEM r); + NMEM odr_extract_mem(ODR o); int odr_geterror(ODR o); - void odr_perror(char *message); + void odr_perror(ODR o, const char *message); extern char *odr_errlist[]; @@ -759,9 +756,9 @@ int odr_oid(ODR o, Odr_oid **p, int optional, const char *name); The C OID representation is simply an array of integers, terminated by the value -1 (the Odr_oid type is synonymous with - the int type). + the short type). We suggest that you use the OID database module (see - ) to handle object identifiers + ) to handle object identifiers in your application. @@ -789,7 +786,7 @@ int odr_explicit_tag(ODR o, Odr_fun fun, int class, int tag, - MyInt ::= [210] IMPLICIT INTEGER + MyInt ::= [210] IMPLICIT INTEGER @@ -923,7 +920,7 @@ int mySequence(ODR o, MySequence **p, int optional, const char *name) -MySequence ::= [10] IMPLICIT SEQUENCE { +MySequence ::= [10] IMPLICIT SEQUENCE { intval INTEGER, boolval BOOLEAN OPTIONAL } @@ -976,7 +973,7 @@ int mySequence(ODR o, MySequence **p, int optional, const char *name) -MySequence ::= [10] IMPLICIT SEQUENCE { +MySequence ::= [10] IMPLICIT SEQUENCE { intval INTEGER, boolval BOOLEAN OPTIONAL } @@ -1107,7 +1104,7 @@ int myArray(ODR o, MyArray **p, int optional, const char *name) -int odr_choice(ODR o, Odr_arm arm[], void *p, void *whichp, +int odr_choice(ODR o, Odr_arm arm[], void *p, void *whichp, const char *name); @@ -1152,7 +1149,7 @@ typedef struct odr_arm which The value of the discriminator that corresponds to - this CHOICE element. Typically, it will be a #defined constant, or + this CHOICE element. Typically, it will be a #defined constant, or an enum member. @@ -1177,7 +1174,7 @@ typedef struct odr_arm MyChoice ::= CHOICE { untagged INTEGER, - tagged [99] IMPLICIT INTEGER, + tagged [99] IMPLICIT INTEGER, other BOOLEAN } @@ -1211,7 +1208,7 @@ typedef struct MyChoice int myChoice(ODR o, MyChoice **p, int optional, const char *name) { - static Odr_arm arm[] = + static Odr_arm arm[] = { {-1, -1, -1, MyChoice_untagged, odr_integer, "untagged"}, {ODR_IMPLICIT, ODR_CONTEXT, 99, MyChoice_tagged, odr_integer,