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
00045 class SWDLLEXPORT SWBasicFilter : public SWFilter {
00046
00047 char *tokenStart;
00048 char *tokenEnd;
00049 char *escStart;
00050 char *escEnd;
00051 bool escStringCaseSensitive;
00052 bool tokenCaseSensitive;
00053 bool passThruUnknownToken;
00054 bool passThruUnknownEsc;
00055
00056 public:
00057 SWBasicFilter();
00058 virtual char ProcessText(char *text, int maxlen, const SWKey *, const SWModule * = 0);
00059 virtual ~SWBasicFilter();
00060
00061 protected:
00062 const SWModule *module;
00063 const SWKey *key;
00064 char *resultBuffer;
00065 typedef map<string, string> DualStringMap;
00066 DualStringMap tokenSubMap;
00067 DualStringMap escSubMap;
00068
00070 void setEscapeStart(const char *escStart);
00071
00073 void setEscapeEnd(const char *escEnd);
00074
00076 void setTokenStart(const char *tokenStart);
00077
00079 void setTokenEnd(const char *tokenEnd);
00080
00083 void setPassThruUnknownToken(bool val);
00084
00087 void setPassThruUnknownEscapeString(bool val);
00088
00089 void setTokenCaseSensitive(bool val);
00090 void setEscapeStringCaseSensitive(bool val);
00091
00092 void addTokenSubstitute(const char *findString, const char *replaceString);
00093 void addEscapeStringSubstitute(const char *findString, const char *replaceString);
00094 bool substituteToken(char **buf, const char *token);
00095 bool substituteEscapeString(char **buf, const char *escString);
00096
00098 void pushString(char **buf, const char *format, ...);
00099
00106 virtual bool handleToken(char **buf, const char *token, DualStringMap &userData);
00107
00114 virtual bool handleEscapeString(char **buf, const char *escString, DualStringMap &userData);
00115 };
00116
00117 #endif