diff options
| author | Al <26797547+Al12rs@users.noreply.github.com> | 2020-11-03 05:48:51 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-03 05:48:51 -0800 |
| commit | a7d4f2a0c40d35d547e93994be3f92b6d43a0833 (patch) | |
| tree | 823e38d3f0af39be96a4a2b2d8264b7c851ed08b /src/shared/fileregisterfwd.h | |
| parent | 88475677d29a275fd9d25f452f58d3d745720124 (diff) | |
| parent | c5e3fb423fd144faa2db8f2bb156adba6c003d39 (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.h | 48 |
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 { |
