| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- /*
- * CFilesystemLoader.h, part of VCMI engine
- *
- * Authors: listed in file AUTHORS in main folder
- *
- * License: GNU General Public License v2.0 or later
- * Full text of license available in license.txt file, in main folder
- *
- */
- #pragma once
- #include "ISimpleResourceLoader.h"
- class CFileInfo;
- class CInputStream;
- /**
- * A class which can scan and load files of directories.
- */
- class DLL_LINKAGE CFilesystemLoader : public ISimpleResourceLoader
- {
- public:
- /**
- * Default c-tor.
- */
- CFilesystemLoader();
- /**
- * Ctor.
- *
- * @param baseDirectory Specifies the base directory and their sub-directories which should be indexed.
- *
- * @throws std::runtime_error if the base directory is not a directory or if it is not available
- */
- explicit CFilesystemLoader(const std::string & baseDirectory);
- /**
- * Ctor.
- *
- * @param baseDirectory Specifies the base directory and their sub-directories which should be indexed.
- *
- * @throws std::runtime_error if the base directory is not a directory or if it is not available
- */
- explicit CFilesystemLoader(const CFileInfo & baseDirectory);
- /**
- * Opens a base directory to be read and indexed.
- *
- * @param baseDirectory Specifies the base directory and their sub-directories which should be indexed.
- *
- * @throws std::runtime_error if the base directory is not a directory or if it is not available
- */
- void open(const std::string & baseDirectory);
- /**
- * Opens a base directory to be read and indexed.
- *
- * @param baseDirectory Specifies the base directory and their sub-directories which should be indexed.
- *
- * @throws std::runtime_error if the base directory is not a directory or if it is not available
- */
- void open(const CFileInfo & baseDirectory);
- /**
- * Loads a resource with the given resource name.
- *
- * @param resourceName The unqiue resource name in space of the filesystem.
- * @return a input stream object, not null
- */
- std::unique_ptr<CInputStream> load(const std::string & resourceName) const;
- /**
- * Checks if the file entry exists.
- *
- * @return true if the entry exists, false if not.
- */
- bool existsEntry(const std::string & resourceName) const;
- /**
- * Gets all entries in the filesystem.
- *
- * @return a list of all entries in the filesystem.
- */
- std::list<std::string> getEntries() const;
- private:
- /** The base directory which is scanned and indexed. */
- std::string baseDirectory;
- /** A list of files in the directory */
- std::list<CFileInfo> fileList;
- };
|