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 SWBASICFILTER_H
00026 #define SWBASICFILTER_H
00027
00028 #include <swfilter.h>
00029
00030 #include <defs.h>
00031 #include <map>
00032 using namespace std;
00033
00034
00035 class SWDLLEXPORT SWBasicFilter : public SWFilter {
00036
00037 char *tokenStart;
00038 char *tokenEnd;
00039 char *escStart;
00040 char *escEnd;
00041 bool escStringCaseSensitive;
00042 bool tokenCaseSensitive;
00043 bool passThruUnknownToken;
00044 bool passThruUnknownEsc;
00045
00046 public:
00047 SWBasicFilter();
00048 virtual char ProcessText(char *text, int maxlen = -1);
00049 virtual ~SWBasicFilter();
00050
00051 protected:
00052 typedef map<string, string> DualStringMap;
00053 DualStringMap tokenSubMap;
00054 DualStringMap escSubMap;
00055 void setEscapeStart(const char *escStart);
00056 void setEscapeEnd(const char *escEnd);
00057 void setTokenStart(const char *tokenStart);
00058 void setTokenEnd(const char *tokenEnd);
00059 void setPassThruUnknownToken(bool val);
00060 void setPassThruUnknownEscapeString(bool val);
00061 void setTokenCaseSensitive(bool val);
00062 void setEscapeStringCaseSensitive(bool val);
00063 void addTokenSubstitute(const char *findString, const char *replaceString);
00064 void addEscapeStringSubstitute(const char *findString, const char *replaceString);
00065 bool substituteToken(char **buf, const char *token);
00066 bool substituteEscapeString(char **buf, const char *escString);
00067 void pushString(char **buf, const char *fragToPush);
00068
00069 virtual bool handleToken(char **buf, const char *token, DualStringMap &userData);
00070 virtual bool handleEscapeString(char **buf, const char *escString, DualStringMap &userData);
00071 };
00072
00073 #endif