1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
// Abstract the details of reading from zip files versus FILE *'s.
#ifndef _READER_H_
#define _READER_H_
#include <stdio.h>
#include "snes9x.h"
class Reader {
public:
Reader(void);
virtual ~Reader();
virtual int get_char() = 0;
virtual char *gets(char *buf, size_t len) = 0;
virtual size_t read(char *buf, size_t len) = 0;
};
class fReader : public Reader {
public:
fReader(STREAM fp);
virtual ~fReader(void);
virtual int get_char();
virtual char *gets(char *buf, size_t len);
virtual size_t read(char *buf, size_t len);
private:
STREAM fp;
};
#ifdef UNZIP_SUPPORT
#include "unzip.h"
#define unz_BUFFSIZ 1024
class unzReader : public Reader {
public:
unzReader(unzFile &v);
virtual ~unzReader(void);
virtual int get_char();
virtual char *gets(char *buf, size_t len);
virtual size_t read(char *buf, size_t len);
private:
unzFile file;
char buffer[unz_BUFFSIZ];
char *head;
size_t numbytes;
};
#endif
#endif /* ndef _READER_H_ */
|