summaryrefslogtreecommitdiff
path: root/src/shared/fileregisterfwd.h
diff options
context:
space:
mode:
authorAl <26797547+Al12rs@users.noreply.github.com>2020-11-03 05:48:51 -0800
committerGitHub <noreply@github.com>2020-11-03 05:48:51 -0800
commita7d4f2a0c40d35d547e93994be3f92b6d43a0833 (patch)
tree823e38d3f0af39be96a4a2b2d8264b7c851ed08b /src/shared/fileregisterfwd.h
parent88475677d29a275fd9d25f452f58d3d745720124 (diff)
parentc5e3fb423fd144faa2db8f2bb156adba6c003d39 (diff)
Merge pull request #1276 from ModOrganizer2/alternatives_vector_refactor
Refactor of alternatives vector to use classes for readability.
Diffstat (limited to 'src/shared/fileregisterfwd.h')
-rw-r--r--src/shared/fileregisterfwd.h48
1 files changed, 42 insertions, 6 deletions
diff --git a/src/shared/fileregisterfwd.h b/src/shared/fileregisterfwd.h
index 720e6e30..57b3715a 100644
--- a/src/shared/fileregisterfwd.h
+++ b/src/shared/fileregisterfwd.h
@@ -42,15 +42,51 @@ using OriginID = int;
constexpr FileIndex InvalidFileIndex = UINT_MAX;
constexpr OriginID InvalidOriginID = -1;
-
-// a vector of {originId, {archiveName, order}}
-//
-// if a file is in an archive, archiveName is the name of the bsa and order
+// if a file is in an archive, name is the name of the bsa and order
// is the order of the associated plugin in the plugins list
-//
// is a file is not in an archive, archiveName is empty and order is usually
// -1
-using AlternativesVector = std::vector<std::pair<OriginID, std::pair<std::wstring, int>>>;
+class DataArchiveOrigin
+{
+ std::wstring name_ = L"";
+ int order_ = -1;
+
+public:
+
+ int order() const { return order_; }
+ const std::wstring& name() const { return name_; }
+
+ bool isValid() const {
+ return name_.size() > 0;
+ }
+
+ DataArchiveOrigin(std::wstring name, int order)
+ : name_(std::move(name)), order_(order) {}
+
+ DataArchiveOrigin() = default;
+};
+
+class FileAlternative
+{
+ OriginID originID_ = -1;
+ DataArchiveOrigin archive_;
+
+public:
+
+ OriginID originID() const { return originID_; }
+ const DataArchiveOrigin& archive() const { return archive_; }
+
+ bool isFromArchive() const {
+ return archive_.isValid();
+ }
+
+ FileAlternative() = default;
+
+ FileAlternative(OriginID originID, DataArchiveOrigin archive)
+ : originID_(originID), archive_(std::move(archive)) {}
+};
+
+using AlternativesVector = std::vector<FileAlternative>;
struct DirectoryStats
{