wowlib 0.0.0
Read & write World of Warcraft client files — a C++26 core
Loading...
Searching...
No Matches
mpq_chain.hpp File Reference

Per-version MPQ archive chain tables and their expansion against a real or fake Data/ directory. More...

#include <filesystem>
#include <span>
#include <string_view>
#include <vector>
#include <wowlib/core/client_version.hpp>
#include <wowlib/core/error.hpp>
Include dependency graph for mpq_chain.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  wowlib::fs::detail::ChainEntry
 One base-tier row. More...
struct  wowlib::fs::detail::MpqChainSpec
 A client version's archive chain: the fixed base tier plus how its patch tier is found. More...
struct  wowlib::fs::detail::ChainMember
 One resolved member of a chain, in load order. More...

Namespaces

namespace  wowlib
namespace  wowlib::fs
namespace  wowlib::fs::detail

Enumerations

enum class  wowlib::fs::detail::ChainEntryKind { wowlib::fs::detail::Fixed , wowlib::fs::detail::LocaleFixed }
 How one base-tier row produces its archive path. More...
enum class  wowlib::fs::detail::PatchScheme { wowlib::fs::detail::None , wowlib::fs::detail::ClassicWildcard , wowlib::fs::detail::UpdateChain }
 How a version's patch tier is discovered on disk. More...

Functions

const MpqChainSpec * wowlib::fs::detail::findChainSpec (const ClientVersion &version)
 The chain spec for version: exact build match first, then major.minor.patch.
Result< std::vector< ChainMember > > wowlib::fs::detail::expandChain (const MpqChainSpec &spec, const std::filesystem::path &dataDir, Locale locale)
 Expand a chain spec against a Data directory into concrete members in load order (lowest -> highest priority): the base tier in table order, then the patch tier as ONE list sorted by the client's case-insensitive, extension-stripped filename order (so patch < patch-2 < ..., with base and locale patches interleaved — a high base letter-patch like patch-Z outranks the locale patches).

Detailed Description

Per-version MPQ archive chain tables and their expansion against a real or fake Data/ directory.

Implementation detail of MpqStorage — pure (no StormLib types), so ordering rules are unit-testable without a client.

Definition in file mpq_chain.hpp.