- const std::set<Marklin::Track *> &get_tracks() const { return tracks; }
- Marklin::Track *get_track() const;
- unsigned size() const { return tracks.size(); }
+ const std::set<R2C2::Object *> &get_objects() const { return objects; }
+ R2C2::Object *get_object() const;
+
+ template<typename T>
+ std::set<T *> get_objects() const
+ {
+ std::set<T *> result;
+ for(std::set<R2C2::Object *>::const_iterator i=objects.begin(); i!=objects.end(); ++i)
+ if(T *to = dynamic_cast<T *>(*i))
+ result.insert(to);
+ return result;
+ }
+
+ template<typename T>
+ T *get_object() const
+ {
+ for(std::set<R2C2::Object *>::const_iterator i=objects.begin(); i!=objects.end(); ++i)
+ if(T *to = dynamic_cast<T *>(*i))
+ return to;
+ return 0;
+ }
+
+ unsigned size() const { return objects.size(); }
+ bool empty() const { return objects.empty(); }
+