#ifndef FILEREADERSUBCLASS_H #define FILEREADERSUBCLASS_H #include "file_reader_class.h" typedef struct FileReaderSubclass_st { char* filename; int f; char* buf; ssize_t bufLen; int bufIndex; int nFileOps; // this field is new, compared with file_reader_class } * FileReaderSubclass; FileReaderSubclass FileReaderSubclass_new(const char *filename); #define FileReaderSubclass_nextChar(p) ( p->bufIndex < p->bufLen ? p->buf[p->bufIndex++] : FileReaderSubclass__newBuf(p) ) char FileReaderSubclass__newBuf(FileReaderSubclass r); void FileReaderSubclass_delete(FileReaderSubclass r); int FileReaderSubclass_fileOps(FileReaderSubclass r); #endif // FILEREADERSUBCLAS_H