summaryrefslogtreecommitdiffhomepage
path: root/StarsEx/DataSource.h
diff options
context:
space:
mode:
Diffstat (limited to 'StarsEx/DataSource.h')
-rw-r--r--StarsEx/DataSource.h17
1 files changed, 12 insertions, 5 deletions
diff --git a/StarsEx/DataSource.h b/StarsEx/DataSource.h
index 3c4a84d..5dbc1d7 100644
--- a/StarsEx/DataSource.h
+++ b/StarsEx/DataSource.h
@@ -17,24 +17,31 @@
class DataSource
{
public:
- DataSource();
+ static const char* TYPENAME() { return "DataSource"; }
+
+ enum class Group { DEFAULT, BASE, MOD };
+
+ explicit DataSource(Group group=Group::DEFAULT);
virtual ~DataSource();
- virtual void SetPrefix(const char* prefix=nullptr);
+ Group GetGroup() const;
+ void SetPrefix(const char* prefix=nullptr);
+
virtual bool Find(const char* name) const = 0;
virtual int ListFiles(Text filter, List<Text>& items, bool recurse=false) const = 0;
virtual int Load(const char* name, std::uint8_t*& buf, bool null_terminate=false) const = 0;
protected:
Text m_prefix;
+ Group m_group;
};
class ArchiveDataSource : public DataSource
{
public:
- explicit ArchiveDataSource(const char* name);
- explicit ArchiveDataSource(DataArchive* archive);
+ explicit ArchiveDataSource(const char* name, Group group=Group::DEFAULT);
+ explicit ArchiveDataSource(DataArchive* archive, Group group=Group::DEFAULT);
~ArchiveDataSource() override;
bool Find(const char* name) const override;
@@ -49,7 +56,7 @@ protected:
class FileSystemDataSource : public DataSource
{
public:
- explicit FileSystemDataSource(const char* path=".");
+ explicit FileSystemDataSource(const char* path=".", Group group=Group::DEFAULT);
~FileSystemDataSource() override;
bool Find(const char* name) const override;