]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/collectionsource.h
Move the definition of Input's operator bool to the header
[libs/datafile.git] / source / collectionsource.h
index 61bb11555decbbf85d36500f18ed829073b64f31..3aa2190c736fa720766437586e0bbe649c1d7e08 100644 (file)
@@ -3,6 +3,8 @@
 
 #include <list>
 #include <string>
+#include <msp/io/seekable.h>
+#include "mspdatafile_api.h"
 
 namespace Msp {
 namespace DataFile {
@@ -14,23 +16,29 @@ class CollectionItemTypeBase;
 Provides automatically loadable objects for collections.  This is a base class;
 see DirectorySource and PackSource for concrete classes.
 */
-class CollectionSource
+class MSPDATAFILE_API CollectionSource
 {
 public:
        typedef std::list<std::string> NameList;
 
 protected:
-       CollectionSource() { }
-
+       CollectionSource() = default;
 public:
-       /** Determines */
+       virtual ~CollectionSource() = default;
+
+       /// Determines whether an object is available from this source.
        virtual bool is_loadable(const CollectionItemTypeBase &type, const std::string &name) const = 0;
 
-       /** Returns the names of loadable objects of a specific type.  Implementors
-       should use the keyword and/or suffixes of the type to  */
+       /** Returns the names of available objects of a specific type.  Implementors
+       should use type.match_name to check which names are acceptable. */
        virtual NameList get_names(const CollectionItemTypeBase &type) const = 0;
 
+       /// Loads an item into a collection.
        virtual void load(Collection &, const CollectionItemTypeBase &, const std::string &) const = 0;
+
+       /** Opens a raw resource.  The caller is responsible for deleting the
+       returned object when done with it. */
+       virtual IO::Seekable *open(const std::string &) const = 0;
 };
 
 } // namespace DataFile