+ /** Returns a list of the names of objects of one type in the collection or
+ available from sources. */
+ template<typename T>
+ std::list<std::string> get_names()
+ {
+ std::list<std::string> result;
+ collect_items<T>(0, &result, &result);
+ return result;
+ }
+
+ /// Returns a list of objects of one type in the collection.
+ template<typename T>
+ std::list<T *> get_list() const
+ {
+ std::list<T *> result;
+ collect_items<T>(&result, 0, 0);
+ return result;
+ }
+
+ /** Returns a list of objects of one type, loading them from sources if
+ necessary. */
+ template<typename T>
+ std::list<T *> get_list()