/*
- * Copyright (c) 1995-2003, Index Data.
+ * Copyright (c) 1995-2004, Index Data.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation, in whole or in part, for any purpose, is hereby granted,
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*
- * $Id: odr.h,v 1.14 2003-11-26 16:24:04 mike Exp $
+ * $Id: odr.h,v 1.17 2004-10-15 00:18:59 adam Exp $
+ */
+
+/**
+ * \file odr.h
+ * \brief Header for ODR (Open Data Representation)
*/
#ifndef ODR_H
typedef int Odr_oid; /* terminate by -1 */
-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;
-
#define ODR_S_SET 0
#define ODR_S_CUR 1
#define ODR_S_END 2
int choice_bias; /* force choice */
int lenlen; /* force length-of-lenght (odr_setlen()) */
- FILE *print; /* output file for direction print */
+ FILE *print; /* output file handler for direction print */
int indent; /* current indent level for printing */
NMEM mem; /* memory handle for decoding (primarily) */
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 char *odr_getelement(ODR o);
+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 int odr_set_charset(ODR o, const char *to, const char *from);
+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);
+
YAZ_END_CDECL
#include <yaz/xmalloc.h>