]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/packsource.h
Move the definition of Input's operator bool to the header
[libs/datafile.git] / source / packsource.h
index 3694a3bf8b530e22d0ccf366cc4e251e1ce2793c..e163736589f82327d61544fff080d3e2fa5dd543 100644 (file)
@@ -4,6 +4,7 @@
 #include <msp/core/noncopyable.h>
 #include <msp/core/refptr.h>
 #include "collectionsource.h"
+#include "mspdatafile_api.h"
 #include "objectloader.h"
 
 namespace Msp {
@@ -20,13 +21,13 @@ It's possible for a pack file to contain plain collection files as well.  When
 an object from such a file is requested, the entire sub-collection it is stored
 in is loaded.
 */
-class PackSource: public CollectionSource
+class MSPDATAFILE_API PackSource: public CollectionSource
 {
 public:
        struct FileInfo
        {
                std::string name;
-               IO::SeekOffset size;
+               IO::SeekOffset size = 0;
        };
 
 private:
@@ -49,8 +50,8 @@ private:
 
        private:
                std::string filename;
-               IO::Seekable *io;
-               IO::SeekOffset base_offset;
+               IO::Seekable *io = nullptr;
+               IO::SeekOffset base_offset = 0;
                std::list<File> files;
 
        public:
@@ -73,16 +74,16 @@ private:
                public:
                        Loader(File &);
                private:
-                       virtual void finish();
+                       void finish() override;
                        void object(const std::string &, const std::string &);
                };
 
        private:
                const Pack &pack;
                std::string filename;
-               IO::SeekOffset offset;
-               IO::SeekOffset length;
-               bool collection;
+               IO::SeekOffset offset = 0;
+               IO::SeekOffset length = 0;
+               bool collection = false;
                std::list<Object> objects;
 
        public:
@@ -120,7 +121,7 @@ private:
        ObjectMap objects;
 
 public:
-       PackSource() { }
+       PackSource() = default;
        PackSource(const PackSource &);
        PackSource &operator=(const PackSource &);
 private:
@@ -150,10 +151,10 @@ public:
        /// Returns information about the files in the pack.
        std::list<FileInfo> list_files() const;
 
-       virtual bool is_loadable(const CollectionItemTypeBase &, const std::string &) const;
-       virtual NameList get_names(const CollectionItemTypeBase &) const;
-       virtual void load(Collection &, const CollectionItemTypeBase &, const std::string &) const;
-       virtual IO::Seekable *open(const std::string &) const;
+       bool is_loadable(const CollectionItemTypeBase &, const std::string &) const override;
+       NameList get_names(const CollectionItemTypeBase &) const override;
+       void load(Collection &, const CollectionItemTypeBase &, const std::string &) const override;
+       IO::Seekable *open(const std::string &) const override;
 };
 
 } // namespace DataFile