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_HexStrim__
00026 #define __ZStream_HexStrim__ 1
00027 #include "zconfig.h"
00028
00029 #include "ZStream.h"
00030
00031
00032 #pragma mark -
00033 #pragma mark * ZStreamR_HexStrim
00034
00035 class ZStrimU;
00036
00038
00039 class ZStreamR_HexStrim : public ZStreamR
00040 {
00041 public:
00042 ZStreamR_HexStrim(const ZStrimU& iStrimU);
00043 ZStreamR_HexStrim(bool iAllowUnderscore, const ZStrimU& iStrimU);
00044
00045 virtual ~ZStreamR_HexStrim();
00046 virtual void Imp_Read(void* iDest, size_t iCount, size_t* oCountRead);
00047
00048 private:
00049 const ZStrimU& fStrimU;
00050 bool fAllowUnderscore;
00051 };
00052
00053
00054 #pragma mark -
00055 #pragma mark * ZStreamW_HexStrim
00056
00057 class ZStrimW;
00058
00060
00061 class ZStreamW_HexStrim : public ZStreamW
00062 {
00063 public:
00064 ZStreamW_HexStrim(const std::string& iByteSeparator,
00065 const std::string& iChunkSeparator, size_t iChunkSize, const ZStrimW& iStrimSink);
00066
00067 ZStreamW_HexStrim(const std::string& iByteSeparator,
00068 const std::string& iChunkSeparator, size_t iChunkSize,
00069 bool iUseUnderscore, const ZStrimW& iStrimSink);
00070
00071
00072 virtual void Imp_Write(const void* iSource, size_t iCount, size_t* oCountWritten);
00073 virtual void Imp_Flush();
00074
00075 protected:
00076 const ZStrimW& fStrimSink;
00077 std::string fByteSeparator;
00078 std::string fChunkSeparator;
00079 size_t fChunkSize;
00080 size_t fCurrentChunkLength;
00081 size_t fWrittenAny;
00082 const char* fHexDigits;
00083 };
00084
00085 #endif // __ZStream_HexStrim__