+ class Options
+ {
+ private:
+ typedef std::map<std::string, std::string> OptionMap;
+
+ OptionMap opts;
+
+ public:
+ Options() { }
+ Options(const std::string &);
+
+ void set(const std::string &, const std::string &);
+
+ template<typename T>
+ T get(const std::string &k, const T &d = T()) const
+ {
+ OptionMap::const_iterator i = opts.find(k);
+ if(i==opts.end())
+ return d;
+ return Msp::lexical_cast<T>(i->second);
+ }
+ };
+
+ struct DetectedLocomotive
+ {
+ std::string protocol;
+ unsigned address;
+ std::string name;
+ };
+