1 #ifndef COLLECTIONSOURCE_H_
2 #define COLLECTIONSOURCE_H_
6 #include <msp/io/seekable.h>
7 #include "mspdatafile_api.h"
13 class CollectionItemTypeBase;
16 Provides automatically loadable objects for collections. This is a base class;
17 see DirectorySource and PackSource for concrete classes.
19 class MSPDATAFILE_API CollectionSource
22 typedef std::list<std::string> NameList;
25 CollectionSource() = default;
27 virtual ~CollectionSource() = default;
29 /// Determines whether an object is available from this source.
30 virtual bool is_loadable(const CollectionItemTypeBase &type, const std::string &name) const = 0;
32 /** Returns the names of available objects of a specific type. Implementors
33 should use type.match_name to check which names are acceptable. */
34 virtual NameList get_names(const CollectionItemTypeBase &type) const = 0;
36 /// Loads an item into a collection.
37 virtual void load(Collection &, const CollectionItemTypeBase &, const std::string &) const = 0;
39 /** Opens a raw resource. The caller is responsible for deleting the
40 returned object when done with it. */
41 virtual IO::Seekable *open(const std::string &) const = 0;
44 } // namespace DataFile