#ifndef _FILE68_ISTREAM68_DEF_H_
#define _FILE68_ISTREAM68_DEF_H_
#include "istream68.h"
#define ISTREAM68_OPEN_READ_BIT 0
#define ISTREAM68_OPEN_READ (1<<ISTREAM68_OPEN_READ_BIT)
#define ISTREAM68_OPEN_WRITE_BIT 1
#define ISTREAM68_OPEN_WRITE (1<<ISTREAM68_OPEN_WRITE_BIT)
#define ISTREAM68_OPEN_MASK (ISTREAM68_OPEN_READ|ISTREAM68_OPEN_WRITE)
#define ISTREAM68_IS_OPEN(V) (!!((V)&(ISTREAM68_OPEN_READ|ISTREAM68_OPEN_WRITE)))
#define ISTREAM68_IS_OPEN_READ(V) (((V)>>ISTREAM68_OPEN_READ_BIT)&1)
#define ISTREAM68_IS_OPEN_WRITE(V) (((V)>>ISTREAM68_OPEN_WRITE_BIT)&1)
typedef const char * (* istream68_name_t) (istream68_t *);
typedef int (* istream68_open_t) (istream68_t *);
typedef int (* istream68_close_t) (istream68_t *);
typedef int (* istream68_length_t) (istream68_t *);
typedef int (* istream68_flush_t) (istream68_t *);
typedef int (* istream68_tell_t) (istream68_t *);
typedef int (* istream68_seek_t) (istream68_t *, int);
typedef int (* istream68_read_t) (istream68_t *, void *, int);
typedef int (* istream68_write_t) (istream68_t *, const void *, int);
typedef void (* istream68_destroy_t) (istream68_t *);
struct _istream68_t {
istream68_name_t name;
istream68_open_t open;
istream68_close_t close;
istream68_read_t read;
istream68_write_t write;
istream68_flush_t flush;
istream68_length_t length;
istream68_tell_t tell;
istream68_seek_t seekf;
istream68_seek_t seekb;
istream68_destroy_t destroy;
};
#endif