51 d_known_keywords[
"dap"] = vs;
59 d_known_keywords[
"checksum"] = vs2;
71static bool f_parse_keyword(
const string &kw,
string &word,
string &value) {
74 string::size_type i = kw.find(
'(');
75 if (i == string::npos)
77 word = kw.substr(0, i);
78 string::size_type j = kw.find(
')');
79 if (j == string::npos)
82 value = kw.substr(i, j - i);
84 return (!word.empty() && !value.empty());
93void Keywords::m_add_keyword(
const keyword &word,
const keyword_value &value) { d_parsed_keywords[word] = value; }
102bool Keywords::m_is_valid_keyword(
const keyword &word,
const keyword_value &value)
const {
103 map<keyword, value_set_t>::const_iterator ci = d_known_keywords.find(word);
104 if (ci == d_known_keywords.end())
109 if (vs.find(value) == vs.end())
110 throw Error(
"Bad value passed to the keyword/function: " + word);
130 map<keyword, keyword_value>::const_iterator i;
131 for (i = d_parsed_keywords.begin(); i != d_parsed_keywords.end(); ++i)
132 kws.push_front((*i).first);
151 if (d_known_keywords.find(kw) == d_known_keywords.end())
152 throw Error(
"Keyword not known (" + kw +
")");
154 return d_parsed_keywords.find(kw)->second;
164 string projection =
www2id(ce,
"%",
"%20");
165 string selection =
"";
168 string::size_type amp = projection.find(
'&');
169 if (amp != string::npos) {
170 selection = projection.substr(amp);
171 projection = projection.substr(0, amp);
178 while (!projection.empty()) {
179 string::size_type i = projection.find(
',');
180 string next_word = projection.substr(0, i);
182 if (f_parse_keyword(next_word, word, value) && m_is_valid_keyword(word, value)) {
183 m_add_keyword(word, value);
184 if (i != string::npos)
185 projection = projection.substr(i + 1);
194 return projection + selection;
A class for error processing.
virtual keyword_value get_keyword_value(const keyword &kw) const
virtual list< keyword > get_keywords() const
set< keyword_value > value_set_t
virtual bool has_keyword(const keyword &kw) const
virtual bool is_known_keyword(const string &s) const
virtual string parse_keywords(const string &ce)
top level DAP object to house generic methods
string www2id(const string &in, const string &escape, const string &except)