00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef FILTER_HH
00020 #define FILTER_HH
00021
00022 #include <string>
00023 extern "C" {
00024 #include <regex.h>
00025 #include <sys/types.h>
00026 }
00027
00028
00029 #define CASE_DEFAULT REG_ICASE
00030 #define CASE_SENSITIVE 0
00031 #define CASE_INSENSITIVE REG_ICASE
00032
00033 using namespace std;
00034
00035 class Filter
00036 {
00037 private:
00038 string expr;
00039 regex_t comp_expr;
00040 regex_t comp_normal_expr;
00041
00042 int case_sensitivity;
00043 bool negativity;
00044 bool compiled;
00045
00046 public:
00047 Filter (void);
00048 ~Filter (void);
00049 string expression (void);
00050 void set_expression (const char*);
00051 int compile (void);
00052 void set_negativity (bool);
00053 bool is_negative (void);
00054 int ccase (void);
00055 void set_case (int);
00056 regex_t* comp_exp (void);
00057 };
00058
00059 #endif