#ifndef _SFIO_T_H
#define _SFIO_T_H 1
/* This header file is for library writers who need to know certain
** internal info concerning the full Sfio_t structure. Including this
** file means that you agree to track closely with sfio development
** in case its internal architecture is changed.
**
** Written by Kiem-Phong Vo (02/02/1993).
*/
/* the parts of Sfio_t private to sfio functions */
#define _SFIO_PRIVATE \
Sfoff_t extent; /* current file size */ \
Sfoff_t here; /* current physical location */ \
unsigned char getr; /* the last sfgetr separator */ \
unsigned char tiny[1];/* for unbuffered read stream */ \
unsigned short bits; /* private flags */ \
unsigned int mode; /* current io mode */ \
struct _sfdisc_s* disc; /* discipline */ \
struct _sfpool_s* pool; /* the pool containing this */ \
Void_t* noop; /* unused for now */
#include "sfio.h"
/* mode bit to indicate that the structure hasn't been initialized */
#define SF_INIT 0000004
/* short-hand for common stream types */
#define SF_RDWR (SF_READ|SF_WRITE)
#define SF_RDSTR (SF_READ|SF_STRING)
#define SF_WRSTR (SF_WRITE|SF_STRING)
#define SF_RDWRSTR (SF_RDWR|SF_STRING)
/* macro to initialize an Sfio_t structure */
#define SFNEW(data,size,file,type,disc) \
{ (unsigned char*)(data), /* next */ \
(unsigned char*)(data), /* endw */ \
(unsigned char*)(data), /* endr */ \
(unsigned char*)(data), /* endb */ \
(Sfio_t*)0, /* push */ \
(unsigned short)((type)&SF_FLAGS), /* flags */ \
(short)(file), /* file */ \
(unsigned char*)(data), /* data */ \
(ssize_t)(size), /* size */ \
(ssize_t)(-1), /* val */ \
(Sfoff_t)0, /* extent */ \
(Sfoff_t)0, /* here */ \
0, /* getr */ \
"", /* tiny */ \
0, /* bits */ \
(unsigned int)(((type)&(SF_RDWR))|SF_INIT), /* mode */ \
(struct _sfdisc_s*)(disc), /* disc */ \
(struct _sfpool_s*)0, /* pool */ \
(Void_t*)0, /* noop */ \
}
#endif /* _SFIO_T_H */
syntax highlighted by Code2HTML, v. 0.9.1