00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #if !defined(AFX_ConsoleRULES_H__F75EC197_F0BD_459C_BC62_929D3A97FB5A__INCLUDED_)
00022 #define AFX_ConsoleRULES_H__F75EC197_F0BD_459C_BC62_929D3A97FB5A__INCLUDED_
00023
00024 #include <console/ConsoleRule.h>
00025
00026 class Console;
00027 class ConsoleRules
00028 {
00029 public:
00030 ConsoleRules();
00031 virtual ~ConsoleRules();
00032
00033 void addLine(Console *console, const char *line);
00034
00035 void addRule(ConsoleRule *rule);
00036 void removeRule(ConsoleRule *rule);
00037
00038 std::string matchRule(const char *line,
00039 std::vector<ConsoleRule *> &matches);
00040 void dump(std::vector<std::string> &resultList);
00041
00042 protected:
00043 typedef std::multimap<std::string, ConsoleRule *> RulesMap;
00044 RulesMap rules_;
00045
00046 bool parseLine(const char *line,
00047 std::vector<ConsoleRuleValue> &split);
00048 void parseAddLine(int position, const char *line,
00049 std::vector<ConsoleRuleValue> &split);
00050 ConsoleRule *matchRule(std::vector<ConsoleRuleValue> &values,
00051 std::vector<ConsoleRule *> &closeMatches);
00052 void getMatchedRules(
00053 std::vector<ConsoleRule *> &result,
00054 std::multimap<int, ConsoleRule *> &matchedRules,
00055 int argCount);
00056 };
00057
00058 #endif // !defined(AFX_ConsoleRULES_H__F75EC197_F0BD_459C_BC62_929D3A97FB5A__INCLUDED_)