00001 #ifndef _INPUTSTREAM_H_ 00002 #define _INPUTSTREAM_H_ 00003 00004 #include <stdio.h> 00008 class TInputStream 00009 { 00010 protected: 00011 TInputStream(); 00012 public: 00013 virtual ~TInputStream(); 00014 virtual int Available(void) = 0; 00015 virtual void Close(void); 00016 virtual int Position(void) = 0; 00017 virtual int Read(void) = 0; 00018 int Reads(void *, int); 00019 virtual void Reset(void); 00020 virtual int Skip(int) = 0; 00021 }; 00025 class TFileInputStream : public TInputStream 00026 { 00027 protected: 00028 FILE *fin; 00029 unsigned char *cache; 00030 int position; 00031 int available; 00032 int cacheSize; 00033 int cacheIndex; 00034 int cacheDataSize; 00035 public: 00036 TFileInputStream(); 00037 TFileInputStream(int); 00038 ~TFileInputStream(); 00039 bool Open(char *); 00040 int Available(void); 00041 void Close(void); 00042 int Position(void); 00043 int Read(void); 00044 void Reset(void); 00045 int Skip(int); 00046 }; 00050 class TFilterInputStream : public TInputStream 00051 { 00052 protected: 00053 TInputStream *In; 00054 00055 TFilterInputStream(TInputStream *); 00056 public: 00057 virtual ~TFilterInputStream(); 00058 int Available(void); 00059 virtual void Close(void); 00060 virtual int Position(void); 00061 virtual int Read(void); 00062 virtual void Reset(void); 00063 virtual int Skip(int); 00064 }; 00068 class TDataInputStream : public TFilterInputStream 00069 { 00070 public: 00071 TDataInputStream(TInputStream *); 00072 ~TDataInputStream(); 00073 char ReadChar(void); 00074 float ReadFloat(void); 00075 double ReadDouble(void); 00076 int ReadInt(void); 00077 int ReadLine(char *, int); 00078 }; 00082 class TCipherInputStream : public TFilterInputStream 00083 { 00084 private: 00085 int index; 00086 protected: 00087 int keySize; 00088 char *key; 00089 public: 00090 TCipherInputStream(TInputStream *); 00091 ~TCipherInputStream(); 00092 void SetKey(char *); 00093 virtual int Read(void); 00094 void Reset(void); 00095 int Skip(int); 00096 }; 00097 00098 #endif 00099