#include #include #include #include #include #include #include #include "file_reader_subclass.h" #define BUFLEN 4096 static void fileError(FileReaderSubclass this) { perror(this->filename); fprintf(stderr, "Some error reading file '%s'\n", this->filename); exit(2); } FileReaderSubclass FileReaderSubclass_constructor(FileReaderSubclass this, const char* fname) { FileReader_constructor((FileReader)this, fname); // call superclass constructor // initialize the instance variables peculiar to this class this->nFileOps = 0; return this; } FileReaderSubclass FileReaderSubclass_new(const char* fname) { FileReaderSubclass this = (FileReaderSubclass)malloc(sizeof(struct FileReaderSubclass_st)); if ( this == NULL ) fileError(this); return FileReaderSubclass_constructor(this, fname); } char FileReaderSubclass__newBuf(FileReaderSubclass this) { char result = FileReader__newBuf((FileReader)this); this->nFileOps++; return result; } void FileReaderSubclass_destructor(FileReaderSubclass this) { FileReader_destructor((FileReader)this); // there's nothing peculiar to this class to destroy } void FileReaderSubclass_delete(FileReaderSubclass this) { FileReaderSubclass_destructor(this); free(this); } int FileReaderSubclass_fileOps(FileReaderSubclass this) { return this->nFileOps; }