1 #ifndef COLLECTIONSOURCE_H_
2 #define COLLECTIONSOURCE_H_
6 #include <msp/io/seekable.h>
12 class CollectionItemTypeBase;
15 Provides automatically loadable objects for collections. This is a base class;
16 see DirectorySource and PackSource for concrete classes.
18 class CollectionSource
21 typedef std::list<std::string> NameList;
24 CollectionSource() { }
26 virtual ~CollectionSource() { }
28 /// Determines whether an object is available from this source.
29 virtual bool is_loadable(const CollectionItemTypeBase &type, const std::string &name) const = 0;
31 /** Returns the names of available objects of a specific type. Implementors
32 should use type.match_name to check which names are acceptable. */
33 virtual NameList get_names(const CollectionItemTypeBase &type) const = 0;
35 /// Loads an item into a collection.
36 virtual void load(Collection &, const CollectionItemTypeBase &, const std::string &) const = 0;
38 /** Opens a raw resource. The caller is responsible for deleting the
39 returned object when done with it. */
40 virtual IO::Seekable *open(const std::string &) const = 0;
43 } // namespace DataFile