/*
- * Copyright (c) 1995-1999, Index Data
+ * Copyright (c) 1995-2001, Index Data
* See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
*
* $Log: odr.c,v $
- * Revision 1.29 1999-04-27 08:34:10 adam
+ * Revision 1.34 2001-02-21 13:46:53 adam
+ * C++ fixes.
+ *
+ * Revision 1.33 2000/02/29 13:44:55 adam
+ * Check for config.h (currently not generated).
+ *
+ * Revision 1.32 2000/01/31 13:15:21 adam
+ * Removed uses of assert(3). Cleanup of ODR. CCL parser update so
+ * that some characters are not surrounded by spaces in resulting term.
+ * ILL-code updates.
+ *
+ * Revision 1.31 1999/11/30 13:47:11 adam
+ * Improved installation. Moved header files to include/yaz.
+ *
+ * Revision 1.30 1999/08/27 09:40:32 adam
+ * Renamed logf function to yaz_log. Removed VC++ project files.
+ *
+ * Revision 1.29 1999/04/27 08:34:10 adam
* Modified odr_destroy so that file is not closed when file is 0.
*
* Revision 1.28 1998/07/20 12:38:13 adam
*
*
*/
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
#include <stdio.h>
#include <stdlib.h>
-#include <xmalloc.h>
-#include <odr.h>
+#include <yaz/xmalloc.h>
+#include <yaz/odr.h>
-Odr_null *ODR_NULLVAL = "NULL"; /* the presence of a null value */
+Odr_null *ODR_NULLVAL = (Odr_null *) "NULL"; /* the presence of a null value */
Odr_null *odr_nullval (void)
{
o->print = file;
}
-#include <log.h>
+#include <yaz/log.h>
ODR odr_createmem(int direction)
{
r->direction = direction;
r->print = stderr;
r->buf = 0;
- r->ecb.buf = 0;
- r->ecb.size = r->ecb.pos = r->ecb.top = 0;
- r->ecb.can_grow = 1;
- r->buflen = 0;
+ r->size = r->pos = r->top = 0;
+ r->can_grow = 1;
r->mem = nmem_create();
r->enable_bias = 1;
r->odr_ber_tag.lclass = -1;
odr_reset(r);
- logf (LOG_DEBUG, "odr_createmem dir=%d o=%p", direction, r);
+ yaz_log (LOG_DEBUG, "odr_createmem dir=%d o=%p", direction, r);
return r;
}
o->error = ONONE;
o->bp = o->buf;
odr_seek(o, ODR_S_SET, 0);
- o->ecb.top = 0;
- o->left = o->buflen;
+ o->top = 0;
o->t_class = -1;
o->t_tag = -1;
o->indent = 0;
nmem_reset(o->mem);
o->choice_bias = -1;
o->lenlen = 1;
- logf (LOG_DEBUG, "odr_reset o=%p", o);
+ yaz_log (LOG_DEBUG, "odr_reset o=%p", o);
}
void odr_destroy(ODR o)
{
nmem_destroy(o->mem);
- if (o->ecb.buf && o->ecb.can_grow)
- xfree(o->ecb.buf);
+ if (o->buf && o->can_grow)
+ xfree(o->buf);
if (o->print && o->print != stderr)
fclose(o->print);
xfree(o);
- logf (LOG_DEBUG, "odr_destroy o=%p", o);
+ yaz_log (LOG_DEBUG, "odr_destroy o=%p", o);
}
void odr_setbuf(ODR o, char *buf, int len, int can_grow)
{
- o->buf = o->bp = (unsigned char *) buf;
- o->buflen = o->left = len;
+ o->bp = (unsigned char *) buf;
- o->ecb.buf = (unsigned char *) buf;
- o->ecb.can_grow = can_grow;
- o->ecb.top = o->ecb.pos = 0;
- o->ecb.size = len;
+ o->buf = (unsigned char *) buf;
+ o->can_grow = can_grow;
+ o->top = o->pos = 0;
+ o->size = len;
}
char *odr_getbuf(ODR o, int *len, int *size)
{
- *len = o->ecb.top;
+ *len = o->top;
if (size)
- *size = o->ecb.size;
- return (char*) o->ecb.buf;
+ *size = o->size;
+ return (char*) o->buf;
}