+2005-01-07 Clinton Ebadi <clinton@unknownlamer.org>
+
+ * source/BotConfig.C (set_option_value): call watcher list
+ (run_fun_): Added to support watcher list calling
+
2005-01-06 Clinton Ebadi <clinton@unknownlamer.org>
* source/BotConfig.C (set_option_value): Fuck you STL
: lst (l)
{}
- void operator()(BotConfig::t_value val)
+ void operator() (BotConfig::t_value val)
{
lst->push_back (val);
}
};
+
+ struct run_fun_
+ {
+ std::string key;
+ BotConfig::t_value_list& vals;
+ bool appended;
+
+ run_fun_ (std::string k, BotConfig::t_value_list& vl, bool a)
+ : key (k), vals (vl), appended (a)
+ {}
+
+ void operator() (BotConfig::t_watcher w)
+ {
+ w (key, vals, appended);
+ }
+ };
}
void BotConfig::set_option_value (std::string key, t_value_list values,
bool append)
{
t_options_db::iterator cf_iter = options_db.find (key);
+
if (cf_iter != options_db.end ())
{
if (append)
std::for_each (values.begin (), values.end (),
push_back_ (&cf_iter->second.first));
}
- else
- cf_iter->second.first = values;
+ else
+ cf_iter->second.first = values;
}
-}
-
+ // Call Watchers
+ std::for_each (cf_iter->second.second.begin (),
+ cf_iter->second.second.end (),
+ run_fun_ (key, values, append));
+}
typedef std::string t_value;
typedef std::list<t_value> t_value_list;
- typedef void (*t_watcher) (std::string, t_value_list, bool);
+ typedef void (*t_watcher) (std::string key, t_value_list vals, bool appended);
typedef std::list<t_watcher> t_watcher_list;
typedef std::pair<t_value_list, t_watcher_list> t_option_values;