3 #include "imi_option_event.h"
5 COptionEvent::variant_::variant_(int v)
11 COptionEvent::variant_::variant_(const std::string& v)
17 COptionEvent::variant_::variant_(const std::vector<std::string>& v)
18 : type(VAL_STRING_LIST)
23 COptionEvent::variant_::variant_(const std::vector<string_pair>& v)
24 : type(VAL_STRING_PAIR_LIST)
26 data.d_string_pair_list = v;
29 COptionEvent::variant_::variant_(bool v)
36 COptionEvent::get_int() const
38 return value.data.d_int;
42 COptionEvent::get_bool() const
44 return value.data.d_bool;
48 COptionEvent::get_string() const
50 return value.data.d_string;
53 std::vector<std::string>
54 COptionEvent::get_string_list() const
56 return value.data.d_strings;
59 std::vector<string_pair>
60 COptionEvent::get_string_pair_list() const
62 return value.data.d_string_pair_list;
65 IConfigurable::IConfigurable()
67 AOptionEventBus::instance().registerAsListener(this);
70 IConfigurable::~IConfigurable()
72 AOptionEventBus::instance().unregisterAsListener(this);
76 COptionEventBus::registerAsListener(IConfigurable* listener)
78 Subscribers::iterator found = find(m_listeners.begin(),
81 if (found == m_listeners.end())
82 m_listeners.push_back(listener);
84 assert(false && "already subscribed");
88 COptionEventBus::unregisterAsListener(IConfigurable* listener)
90 Subscribers::iterator found = find(m_listeners.begin(),
93 if (found != m_listeners.end())
94 m_listeners.erase(found);
96 assert(false && "not yet subscribed");
100 COptionEventBus::publishEvent(const COptionEvent& event)
102 Subscribers::iterator end = m_listeners.end();
103 for (Subscribers::iterator it = m_listeners.begin();
105 if ((*it)->onConfigChanged(event))