00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef __ZStream_Base64__
00026 #define __ZStream_Base64__ 1
00027 #include "zconfig.h"
00028
00029 #include "ZStream.h"
00030
00031
00032 #pragma mark -
00033 #pragma mark * ZStreamR_Base64Encode
00034
00037 class ZStreamR_Base64Encode : public ZStreamR
00038 {
00039 public:
00040 ZStreamR_Base64Encode(const ZStreamR& iStreamSource);
00041 ~ZStreamR_Base64Encode();
00042
00043
00044 virtual void Imp_Read(void* iDest, size_t iCount, size_t* oCountRead);
00045
00046 protected:
00047 const ZStreamR& fStreamSource;
00048 uint8 fSinkBuf[4];
00049 size_t fSinkCount;
00050 };
00051
00052
00053 #pragma mark -
00054 #pragma mark * ZStreamR_Base64Decode
00055
00059 class ZStreamR_Base64Decode : public ZStreamR
00060 {
00061 public:
00062 ZStreamR_Base64Decode(const ZStreamR& iStreamSource);
00063 ~ZStreamR_Base64Decode();
00064
00065
00066 virtual void Imp_Read(void* iDest, size_t iCount, size_t* oCountRead);
00067
00068 protected:
00069 const ZStreamR& fStreamSource;
00070 uint8 fSinkBuf[3];
00071 size_t fSinkCount;
00072 };
00073
00074
00075 #pragma mark -
00076 #pragma mark * ZStreamW_Base64Encode
00077
00081 class ZStreamW_Base64Encode : public ZStreamW
00082 {
00083 public:
00084 ZStreamW_Base64Encode(const ZStreamW& iStreamSink);
00085 ~ZStreamW_Base64Encode();
00086
00087
00088 virtual void Imp_Write(const void* iSource, size_t iCount, size_t* oCountWritten);
00089 virtual void Imp_Flush();
00090
00091 protected:
00092 const ZStreamW& fStreamSink;
00093 uint8 fSourceBuf[3];
00094 size_t fSourceCount;
00095 };
00096
00097
00098 #pragma mark -
00099 #pragma mark * ZStreamW_Base64Decode
00100
00101
00102
00103
00104 class ZStreamW_Base64Decode : public ZStreamW
00105 {
00106 public:
00107 ZStreamW_Base64Decode(const ZStreamW& iStreamSink);
00108 ~ZStreamW_Base64Decode();
00109
00110
00111 virtual void Imp_Write(const void* iSource, size_t iCount, size_t* oCountWritten);
00112 virtual void Imp_Flush();
00113
00114 protected:
00115 const ZStreamW& fStreamSink;
00116 uint32 fSource;
00117 size_t fSourceCount;
00118 };
00119
00120
00121
00122 #endif // __ZStream_Base64__