*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation, in whole or in part, for any purpose, is hereby granted,
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation, in whole or in part, for any purpose, is hereby granted,
-typedef struct odr_constack
-{
- const unsigned char *base; /* starting point of data */
- int base_offset;
- int len; /* length of data, if known, else -1
- (decoding only) */
- const unsigned char *lenb; /* where to encode length */
- int len_offset;
- int lenlen; /* length of length-field */
-} odr_constack;
-
int indent; /* current indent level for printing */
NMEM mem; /* memory handle for decoding (primarily) */
int indent; /* current indent level for printing */
NMEM mem; /* memory handle for decoding (primarily) */
-YAZ_EXPORT void odr_perror(ODR o, char *message);
+YAZ_EXPORT int odr_geterrorx(ODR o, int *x);
+YAZ_EXPORT void odr_seterror(ODR o, int errorno, int errorid);
+YAZ_EXPORT void odr_setelement(ODR o, const char *addinfo);
+YAZ_EXPORT const char *odr_getelement(ODR o);
+YAZ_EXPORT void odr_perror(ODR o, const char *message);
YAZ_EXPORT void odr_setprint(ODR o, FILE *file);
YAZ_EXPORT ODR odr_createmem(int direction);
YAZ_EXPORT void odr_reset(ODR o);
YAZ_EXPORT void odr_setprint(ODR o, FILE *file);
YAZ_EXPORT ODR odr_createmem(int direction);
YAZ_EXPORT void odr_reset(ODR o);
YAZ_EXPORT char *odr_getbuf(ODR o, int *len, int *size);
YAZ_EXPORT void *odr_malloc(ODR o, int size);
YAZ_EXPORT char *odr_strdup(ODR o, const char *str);
YAZ_EXPORT char *odr_getbuf(ODR o, int *len, int *size);
YAZ_EXPORT void *odr_malloc(ODR o, int size);
YAZ_EXPORT char *odr_strdup(ODR o, const char *str);
YAZ_EXPORT NMEM odr_extract_mem(ODR o);
YAZ_EXPORT Odr_null *odr_nullval(void);
#define odr_release_mem(m) nmem_destroy(m)
#define ODR_MEM NMEM
YAZ_EXPORT NMEM odr_extract_mem(ODR o);
YAZ_EXPORT Odr_null *odr_nullval(void);
#define odr_release_mem(m) nmem_destroy(m)
#define ODR_MEM NMEM
-#define odr_implicit(o, t, p, cl, tg, opt)\
- (odr_implicit_settag((o), cl, tg), t ((o), (p), (opt), 0) )
-
#define odr_implicit_tag(o, t, p, cl, tg, opt, name)\
(odr_implicit_settag((o), cl, tg), t ((o), (p), (opt), name) )
#define odr_implicit_tag(o, t, p, cl, tg, opt, name)\
(odr_implicit_settag((o), cl, tg), t ((o), (p), (opt), name) )
-#define odr_explicit(o, t, p, cl, tg, opt)\
- ((int) (odr_constructed_begin((o), (p), (cl), (tg), 0) ? \
- t ((o), (p), (opt), 0) &&\
- odr_constructed_end(o) : opt))
-
#define odr_explicit_tag(o, t, p, cl, tg, opt, name)\
((int) (odr_constructed_begin((o), (p), (cl), (tg), 0) ? \
t ((o), (p), (opt), name) &&\
#define odr_explicit_tag(o, t, p, cl, tg, opt, name)\
((int) (odr_constructed_begin((o), (p), (cl), (tg), 0) ? \
t ((o), (p), (opt), name) &&\
#define ODR_MASK_ZERO(mask)\
((void) (memset((mask)->bits, 0, ODR_BITMASK_SIZE),\
#define ODR_MASK_ZERO(mask)\
((void) (memset((mask)->bits, 0, ODR_BITMASK_SIZE),\
YAZ_EXPORT int ber_boolean(ODR o, int *val);
YAZ_EXPORT int ber_tag(ODR o, void *p, int zclass, int tag,
YAZ_EXPORT int ber_boolean(ODR o, int *val);
YAZ_EXPORT int ber_tag(ODR o, void *p, int zclass, int tag,
YAZ_EXPORT int ber_enctag(ODR o, int zclass, int tag, int constructed);
YAZ_EXPORT int ber_dectag(const unsigned char *buf, int *zclass,
YAZ_EXPORT int ber_enctag(ODR o, int zclass, int tag, int constructed);
YAZ_EXPORT int ber_dectag(const unsigned char *buf, int *zclass,
YAZ_EXPORT int odr_bool(ODR o, int **p, int opt, const char *name);
YAZ_EXPORT int odr_integer(ODR o, int **p, int opt, const char *name);
YAZ_EXPORT int odr_enum(ODR o, int **p, int opt, const char *name);
YAZ_EXPORT int odr_implicit_settag(ODR o, int zclass, int tag);
YAZ_EXPORT int ber_enclen(ODR o, int len, int lenlen, int exact);
YAZ_EXPORT int odr_bool(ODR o, int **p, int opt, const char *name);
YAZ_EXPORT int odr_integer(ODR o, int **p, int opt, const char *name);
YAZ_EXPORT int odr_enum(ODR o, int **p, int opt, const char *name);
YAZ_EXPORT int odr_implicit_settag(ODR o, int zclass, int tag);
YAZ_EXPORT int ber_enclen(ODR o, int len, int lenlen, int exact);
YAZ_EXPORT void odr_prname(ODR o, const char *name);
YAZ_EXPORT int ber_null(ODR o);
YAZ_EXPORT int odr_null(ODR o, Odr_null **p, int opt, const char *name);
YAZ_EXPORT int ber_integer(ODR o, int *val);
YAZ_EXPORT int odr_constructed_begin(ODR o, void *p, int zclass, int tag,
YAZ_EXPORT void odr_prname(ODR o, const char *name);
YAZ_EXPORT int ber_null(ODR o);
YAZ_EXPORT int odr_null(ODR o, Odr_null **p, int opt, const char *name);
YAZ_EXPORT int ber_integer(ODR o, int *val);
YAZ_EXPORT int odr_constructed_begin(ODR o, void *p, int zclass, int tag,
YAZ_EXPORT int odr_constructed_end(ODR o);
YAZ_EXPORT int odr_sequence_begin(ODR o, void *p, int size, const char *name);
YAZ_EXPORT int odr_set_begin(ODR o, void *p, int size, const char *name);
YAZ_EXPORT int odr_constructed_end(ODR o);
YAZ_EXPORT int odr_sequence_begin(ODR o, void *p, int size, const char *name);
YAZ_EXPORT int odr_set_begin(ODR o, void *p, int size, const char *name);
YAZ_EXPORT int odp_more_chunks(ODR o, const unsigned char *base, int len);
YAZ_EXPORT int odr_constructed_more(ODR o);
YAZ_EXPORT int odr_bitstring(ODR o, Odr_bitmask **p, int opt,
YAZ_EXPORT int odp_more_chunks(ODR o, const unsigned char *base, int len);
YAZ_EXPORT int odr_constructed_more(ODR o);
YAZ_EXPORT int odr_bitstring(ODR o, Odr_bitmask **p, int opt,
YAZ_EXPORT int ber_bitstring(ODR o, Odr_bitmask *p, int cons);
YAZ_EXPORT int odr_generalstring(ODR o, char **p, int opt, const char *name);
YAZ_EXPORT int ber_bitstring(ODR o, Odr_bitmask *p, int cons);
YAZ_EXPORT int odr_generalstring(ODR o, char **p, int opt, const char *name);
YAZ_EXPORT int odr_oid(ODR o, Odr_oid **p, int opt, const char *name);
YAZ_EXPORT int odr_choice(ODR o, Odr_arm arm[], void *p, void *whichp,
YAZ_EXPORT int odr_oid(ODR o, Odr_oid **p, int opt, const char *name);
YAZ_EXPORT int odr_choice(ODR o, Odr_arm arm[], void *p, void *whichp,
YAZ_EXPORT int odr_cstring(ODR o, char **p, int opt, const char *name);
YAZ_EXPORT int odr_iconv_string(ODR o, char **p, int opt, const char *name);
YAZ_EXPORT int odr_sequence_of(ODR o, Odr_fun type, void *p, int *num,
YAZ_EXPORT int odr_cstring(ODR o, char **p, int opt, const char *name);
YAZ_EXPORT int odr_iconv_string(ODR o, char **p, int opt, const char *name);
YAZ_EXPORT int odr_sequence_of(ODR o, Odr_fun type, void *p, int *num,
YAZ_EXPORT int odr_set_of(ODR o, Odr_fun type, void *p, int *num,
YAZ_EXPORT int odr_set_of(ODR o, Odr_fun type, void *p, int *num,
YAZ_EXPORT int odr_any(ODR o, Odr_any **p, int opt, const char *name);
YAZ_EXPORT int ber_any(ODR o, Odr_any **p);
YAZ_EXPORT int completeBER(const unsigned char *buf, int len);
YAZ_EXPORT int odr_any(ODR o, Odr_any **p, int opt, const char *name);
YAZ_EXPORT int ber_any(ODR o, Odr_any **p);
YAZ_EXPORT int completeBER(const unsigned char *buf, int len);
YAZ_EXPORT int odr_initmember(ODR o, void *p, int size);
YAZ_EXPORT int odr_peektag(ODR o, int *zclass, int *tag, int *cons);
YAZ_EXPORT void odr_setlenlen(ODR o, int len);
YAZ_EXPORT int odr_initmember(ODR o, void *p, int size);
YAZ_EXPORT int odr_peektag(ODR o, int *zclass, int *tag, int *cons);
YAZ_EXPORT void odr_setlenlen(ODR o, int len);
- Odr_any *single_ASN1_type;
- Odr_oct *octet_aligned;
- Odr_bitmask *arbitrary; /* we aren't really equipped for this*/
+ Odr_any *single_ASN1_type;
+ Odr_oct *octet_aligned;
+ Odr_bitmask *arbitrary; /* we aren't really equipped for this*/
} u;
} Odr_external;
YAZ_EXPORT int odr_external(ODR o, Odr_external **p, int opt,
} u;
} Odr_external;
YAZ_EXPORT int odr_external(ODR o, Odr_external **p, int opt,
YAZ_EXPORT int odr_visiblestring(ODR o, char **p, int opt,
YAZ_EXPORT int odr_visiblestring(ODR o, char **p, int opt,
YAZ_EXPORT int odr_graphicstring(ODR o, char **p, int opt,
YAZ_EXPORT int odr_graphicstring(ODR o, char **p, int opt,
YAZ_EXPORT int odr_generalizedtime(ODR o, char **p, int opt,
YAZ_EXPORT int odr_generalizedtime(ODR o, char **p, int opt,
+YAZ_EXPORT void odr_set_stream(ODR o, void *handle,
+ void (*stream_write)(ODR o,
+ void *handle,
+ int type,
+ const char *buf,
+ int len),
+ void (*stream_close)(void *handle));
+
+YAZ_EXPORT void odr_printf(ODR o, const char *fmt, ...);
+
+YAZ_EXPORT const char **odr_get_element_path(ODR o);
+