/* Copyright (c) Xerox Corporation 1993. All rights reserved. */ /* tread.h -- Low-level Tioga reader routines. David Nichols December, 1990 */ struct tread_Stream { unsigned char *next; unsigned char *limit; }; struct tread_Procs { int (*startNode)(/* reader, format, comment */); int (*endNode)(/* reader */); int (*addLooks)(/* reader, looks, start, len */); int (*insertText)(/* reader, text, len */); int (*handleProp)(/* reader, propName, prop, len */); }; struct tread_Reader { struct tread_Procs *procs; char *data; /* private data for client */ /* Full buffer. */ char *buf; long totalLen; /* Start and end of each region. */ struct tread_Stream text; struct tread_Stream com; struct tread_Stream control; /* Generic piece of text */ int strLen; unsigned char *str; /* Formats */ int nFormats; /* number in use */ char *formats[tioga_NumFormats]; /* list of them */ /* Look combos */ int nLooks; /* number in use */ long looks[tioga_NumLooks]; /* list of them */ /* Property names */ int nProps; char *props[tioga_NumProps]; }; /* Initialize from buffer holding entire file. */ extern int tread_Init(/* struct tread_Reader *r, char *buf, long len, struct tread_Procs *procs, char *data */); /* Get next opcode from control stream. */ extern enum tioga_ControlOp tread_GetOp(/* struct tread_Reader *r */); /* Get a byte from the control stream. */ extern int tread_GetInt(/* struct tread_Reader *r */); /* Get an integer from the control stream. */ extern long tread_GetInt(/* struct tread_Reader *r */); /* Get text from control stream. */ extern tread_GetStr(/* struct tread_Reader *r */); /* Get text from a specific stream. */ extern tread_SGetRope(/* struct tread_Reader *r, struct tread_Stream *s, long len */); /* Add a new format, and return its index. */ extern int tread_AddFormat(/* struct ReaderState *r, char *format */); /* Add a new looks vector, return its index. */ extern int tread_AddLooks(/* struct ReaderState *r, long l */); /* Add a new property name, return its index. */ extern int tread_AddProp(/* struct ReaderState *r, char *propName */);