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, const SWKey *, const SWModule * = 0);
00049 virtual ~SWBasicFilter();
00050
00051 protected:
00052 const SWModule *module;
00053 const SWKey *key;
00054 typedef map<string, string> DualStringMap;
00055 DualStringMap tokenSubMap;
00056 DualStringMap escSubMap;
00057 void setEscapeStart(const char *escStart);
00058 void setEscapeEnd(const char *escEnd);
00059 void setTokenStart(const char *tokenStart);
00060 void setTokenEnd(const char *tokenEnd);
00061 void setPassThruUnknownToken(bool val);
00062 void setPassThruUnknownEscapeString(bool val);
00063 void setTokenCaseSensitive(bool val);
00064 void setEscapeStringCaseSensitive(bool val);
00065 void addTokenSubstitute(const char *findString, const char *replaceString);
00066 void addEscapeStringSubstitute(const char *findString, const char *replaceString);
00067 bool substituteToken(char **buf, const char *token);
00068 bool substituteEscapeString(char **buf, const char *escString);
00069 void pushString(char **buf, const char *format, ...);
00070
00071 virtual bool handleToken(char **buf, const char *token, DualStringMap &userData);
00072 virtual bool handleEscapeString(char **buf, const char *escString, DualStringMap &userData);
00073 };
00074
00075 #endif