00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef PREFERENCES_HH
00020 #define PREFERENCES_HH
00021
00022 #include <string>
00023 #include <vector>
00024 #include <list>
00025 extern "C" {
00026 #include <sys/types.h>
00027 #include <regex.h>
00028 }
00029 #include "RegExp.hh"
00030 #include "mailfilter.hh"
00031
00032
00033 #define CASE_DEFAULT 0
00034 #define CASE_SENSITIVE 1
00035 #define CASE_INSENSITIVE 2
00036
00037
00038 #define MIN_VERBOSE 0
00039 #define MAX_VERBOSE 6
00040
00041 using namespace std;
00042
00043 namespace pref {
00044
00045 struct serverInfo {
00046 string name;
00047 string user;
00048 string pass;
00049 int protocol;
00050 int port;
00051 };
00052
00053
00054 struct filterInfo {
00055 string filter;
00056 int case_sensitive;
00057
00058
00059 bool negative;
00060
00061 regex_t cFilter;
00062 };
00063
00064
00065 struct friendInfo {
00066 string filter;
00067 regex_t cFilter;
00068 };
00069
00070
00071 struct scoreInfo {
00072 string filter;
00073 int score;
00074 int case_sensitive;
00075 bool negative;
00076 regex_t cFilter;
00077 };
00078
00079
00080 class Preferences {
00081 private:
00082
00083 vector<serverInfo> servers;
00084 vector<filterInfo> filters;
00085 vector<friendInfo> friends;
00086 vector<scoreInfo> scores;
00087 serverInfo popServer;
00088 string logfile;
00089 string file;
00090 int highscore;
00091 int maxsize;
00092 int maxsizeFriends;
00093 bool icase;
00094 bool normal;
00095 int regType;
00096 int regNewline;
00097 int verboseLevel;
00098 int timeOut;
00099 bool test;
00100 bool showHeaders;
00101 bool delDuplicates;
00102 bool compiled;
00103 int maxLineLength;
00104 re::RegExp regExp;
00105
00106
00107 int cmpNoCase(const string&, const string&);
00108
00109 public:
00110 Preferences(const string&);
00111 ~Preferences();
00112
00113 const vector<serverInfo>& getServers(void);
00114 int getMaxsize(void);
00115 int getMaxsizeFriends(void);
00116 bool getIcase(void);
00117 bool isNormal(void);
00118 int getVerboseLevel(void);
00119 void setVerboseLevel(int);
00120 const string& getLogfile(void);
00121 void setLogfile(const string&);
00122 vector<filterInfo>* getFilters(void);
00123 vector<friendInfo>* getFriends(void);
00124 vector<scoreInfo>* getScores(void);
00125 int getRegType(void);
00126 int getRegNewline(void);
00127 bool getTestMode(void);
00128 void setTestMode(bool);
00129 bool getDelDubs(void);
00130 bool getShowHeaders(void);
00131 int getMaxLineLength(void);
00132 void showErrorDeprecated(const string&);
00133 void showErrorParameter(const string&, const string&, const string&);
00134 void showErrorParameter(const string&, const string&, int);
00135 int getTimeOut(void);
00136 void setTimeOut(int);
00137 int getHighscore(void);
00138 void setHighscore(int);
00139 void keyword(const string, const string, const string);
00140 void keyword(const string, const string, int);
00141 void keyword(const string, int, const string, const string);
00142 int precompileExpressions(void);
00143 void setCompiled(bool);
00144 bool getCompiled(void);
00145 };
00146
00147
00148 class MalformedPrefsFile { };
00149 class IOException { };
00150 class RegExException { };
00151 }
00152
00153 #endif