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 __ZStrimR_Boundary__
00026 #define __ZStrimR_Boundary__ 1
00027 #include "zconfig.h"
00028
00029 #include "ZStrimmer.h"
00030
00031 #include <string>
00032
00033
00034 #pragma mark -
00035 #pragma mark * ZStrimR_Boundary
00036
00038
00039 class ZStrimR_Boundary : public ZStrimR
00040 {
00041 public:
00042 ZStrimR_Boundary(const string8& iBoundary, const ZStrimR& iStrimSource);
00043 ZStrimR_Boundary(const UTF8* iBoundary, size_t iBoundarySize, const ZStrimR& iStrimSource);
00044 ZStrimR_Boundary(const string32& iBoundary, const ZStrimR& iStrimSource);
00045 ZStrimR_Boundary(const UTF32* iBoundary, size_t iBoundarySize, const ZStrimR& iStrimSource);
00046 ~ZStrimR_Boundary();
00047
00048
00049 virtual void Imp_ReadUTF32(UTF32* iDest, size_t iCount, size_t* oCount);
00050
00051
00052 bool HitBoundary() const;
00053 void Reset();
00054
00055 protected:
00056 void Internal_Init();
00057
00058 const ZStrimR& fStrimSource;
00059 string32 fBoundary;
00060 size_t fSkip[256];
00061 UTF32* fBuffer;
00062 size_t fStart;
00063 size_t fEnd;
00064 bool fHitBoundary;
00065 };
00066
00067
00068 #pragma mark -
00069 #pragma mark * ZStrimerR_Boundary
00070
00072
00073 class ZStrimmerR_Boundary : public ZStrimmerR
00074 {
00075 public:
00076 ZStrimmerR_Boundary(const string8& iBoundary, ZRef<ZStrimmerR> iStrimmerSource);
00077
00078 ZStrimmerR_Boundary(
00079 const UTF8* iBoundary, size_t iBoundarySize, ZRef<ZStrimmerR> iStrimmerSource);
00080
00081 ZStrimmerR_Boundary(const string32& iBoundary, ZRef<ZStrimmerR> iStrimmerSource);
00082
00083 ZStrimmerR_Boundary(
00084 const UTF32* iBoundary, size_t iBoundarySize, ZRef<ZStrimmerR> iStrimmerSource);
00085
00086 virtual ~ZStrimmerR_Boundary();
00087
00088
00089 virtual const ZStrimR& GetStrimR();
00090
00091 protected:
00092 ZRef<ZStrimmerR> fStrimmerSource;
00093 ZStrimR_Boundary fStrim;
00094 };
00095
00096
00097
00098
00099
00100 #endif // __ZStrimR_Boundary__