00001 #ifndef _OUTPUTSTREAM_H_ 00002 #define _OUTPUTSTREAM_H_ 00003 00004 #include <stdio.h> 00008 class TOutputStream 00009 { 00010 protected: 00011 TOutputStream(); 00012 public: 00013 virtual ~TOutputStream(); 00014 virtual void Close(void); 00015 virtual void Flush(void); 00016 virtual int Size(void) = 0; 00017 virtual void Write(int) = 0; 00018 void Writes(void *, int); 00019 }; 00023 class TFileOutputStream : public TOutputStream 00024 { 00025 protected: 00026 FILE *fout; 00027 unsigned char *cache; 00028 int cacheSize; 00029 int cacheDataSize; 00030 00031 void FlushCache(void); 00032 public: 00033 TFileOutputStream(); 00034 TFileOutputStream(int); 00035 ~TFileOutputStream(); 00036 bool Open(char *); 00037 void Close(void); 00038 void Flush(void); 00039 int Size(void); 00040 void Write(int); 00041 }; 00045 class TFilterOutputStream : public TOutputStream 00046 { 00047 protected: 00048 TOutputStream *Out; 00049 00050 TFilterOutputStream(TOutputStream *); 00051 public: 00052 virtual ~TFilterOutputStream(); 00053 virtual void Close(void); 00054 virtual void Flush(void); 00055 virtual int Size(void); 00056 virtual void Write(int); 00057 }; 00061 class TDataOutputStream : public TFilterOutputStream 00062 { 00063 public: 00064 TDataOutputStream(TOutputStream *); 00065 ~TDataOutputStream(); 00066 void WriteChar(char); 00067 void WriteDouble(double); 00068 void WriteFloat(float); 00069 void WriteInt(int); 00070 void WriteString(char *); 00071 }; 00075 class TCipherOutputStream : public TFilterOutputStream 00076 { 00077 private: 00078 int index; 00079 protected: 00080 int keySize; 00081 char *key; 00082 public: 00083 TCipherOutputStream(TOutputStream *); 00084 ~TCipherOutputStream(); 00085 void SetKey(char *); 00086 virtual void Write(int); 00087 }; 00088 00089 #endif 00090