7#include <welder/vocabulary.hpp>
11 Reading and writing World of Warcraft client files: client filesystem access
12 (MPQ and CASC), listfile databases, and a project-directory overlay for
31 Client filesystem access: storage backends, listfile databases, the
32 project-directory overlay and the FileSystem gateway.)")]]
54 Client file formats: chunked binary serialization with byte-perfect
55 round-trips. Versioned formats are flat suffixed classes (WMOWotlk,
56 WMOShadowlands, ...) plus for_version factories keyed on an Expansion or
57 on a full ClientVersion — the latter being the only axis that can name a
77 The WMO (world map object) format: the WMO assembly and its per-version
78 classes, split into submodules that mirror the C++ layout (root, root.chunks,
79 group, group.chunks). The pre-declaration order is the submodule weld order —
80 within each of root/group the chunks binary structs are declared first, so they
81 weld before the entities that name them as NSDMI defaults.)")]]
84 [[=welder::doc(
"The WMO root-file entity: WMORoot and its per-version "
88 [[=welder::doc(
"WMO root-file chunk binary structs (MOHD, MOMT, lights, "
89 "doodads, fog, ambient volumes) and their flag enums.")]]
94 [[=welder::doc(
"The WMO group-file entities: WMOGroup, WMOGroupBody and "
95 "their per-version classes.")]]
99 "WMO group-file chunk binary structs (the MOGP header, render "
100 "batches, BSP nodes, group lights) and their flag enums.")]]
116 The M2 model format: the M2 assembly (the MD20 body plus every baked
117 satellite file) and the shared Skeleton entity, with the per-family
118 submodules mirroring the C++ layout (root, root.record, chunked,
119 chunked.record, skin, bone).)")]]
122 [[=welder::doc(
"The MD20 model body (M2Root) with its per-version "
126 [[=welder::doc(
"M2 body record structs (sequences, bones, tracks, "
127 "textures, cameras, emitters) and their flag enums.")]]
132 [[=welder::doc(
"The Legion+ chunked .m2 shell (M2ChunkedFile) with its "
133 "per-version classes and the companion-chunk payload "
134 "records (AFID entries, extended particles, parent-model "
138 [[=welder::doc(
"Companion-chunk payload records of the chunked .m2 "
144 [[=welder::doc(
"The external LOD view entity (.skin file, WotLK+) and the "
145 "skin profile records (submeshes, render batches).")]]
149 [[=welder::doc(
"The .bone facial-pose file entity (WoD+).")]]
161 The WDT map-description format: the WDT assembly (the main .wdt file plus
162 its era's _occ/_lgt/_fogs/_mpv satellite files) with the per-file
163 submodules mirroring the C++ layout (root, occlusion, lights, fogs,
167 [[=welder::doc(
"The WDT main-file entity: WDTRoot and its per-version "
172 "WDT main-file chunk binary structs (the MPHD map header, MAIN "
173 "tile table, MAID FileDataIDs) and their flag enums.")]]
178 [[=welder::doc(
"The _occ.wdt occlusion satellite entity (WoD+).")]]
181 [[=welder::doc(
"_occ.wdt chunk binary structs (the MAOI tile index).")]]
186 [[=welder::doc(
"The _lgt.wdt lights satellite entity (WoD+).")]]
190 "_lgt.wdt chunk binary structs (point lights, spot lights, "
191 "light animations).")]]
196 [[=welder::doc(
"The _fogs.wdt volumetric-fog satellite entity (Legion "
201 "_fogs.wdt chunk binary structs (volumetric fogs and their "
207 [[=welder::doc(
"The _mpv.wdt particulate-volume satellite entity (BfA+).")]]
210 [[=welder::doc(
"_mpv.wdt chunk binary structs (particulate points and "
222 The WDL low-resolution heightmap format: the WDL entity and its
223 per-version classes, with the chunk binary structs in the chunks
228 "WDL chunk binary structs (per-tile heightmaps, hole and ocean "
229 "masks, low-resolution placements, sky scenes).")]]
240 The ADT terrain-tile format: the ADT tile entity and its 256 MapChunk
241 terrain cells (both per-version classes), the structured MH2O/MCLQ liquid,
242 and the chunk binary structs in the chunks submodule. One unified ADT spans
243 the pre-Cataclysm single .adt and the Cataclysm+ root/_tex0/_obj0 split.)")
248 "ADT chunk binary structs (the MCNK cell header, texture layers, "
249 "liquid records, flying bounds) and their flag enums.")]]
261 The BLP texture format: the version-stable BLP2 entity with byte-perfect
262 round-trips, RGBA8 decode of every shipped encoding (palettized,
263 DXT1/3/5, BC5, raw BGRA) and full re-encoding (palette quantization, DXT
264 compression, mip-chain generation).)")]]
288 Exhaustive round-trip auditing: enumerate a client's files (see
289 FileSystem.enumerate_paths) and round-trip them one at a time through
290 the matching format entity, collecting per-file outcome reports —
291 read->write->compare only, no semantic validation.)")]]
ADT version conversion (namespace wowlib::formats): the ADT's contribution to the generic convert<to>...
The ADT terrain-tile entity (namespace wowlib::formats::adt): ADT<V>, one map tile,...
The BLP entity (namespace wowlib::formats::blp): Blizzard's texture format.
The owning byte buffer file contents are read into.
The CascLib-backed storage for CASC-era clients.
The chunk framework, vocabulary and engine in one header.
The static composition of one client's file access.
Reading a client installation's own identity off disk: which product it is, which build,...
Client version identity, the flavor axis that separates a client's CONTENT version from the engine ge...
Version conversion scaffolding: convert<to>() composes hand-written adjacent-version steps along a fo...
The CSV-backed listfile provider: one working file ('fileDataId;filepath' per line) that is both read...
The error-handling vocabulary: ErrorCode, Error and the Result<T> alias every fallible wowlib operati...
The Expansion enum — the coarse, enumerable version axis the scripting bindings key on — and its mapp...
The monotonic allocator behind custom (non-Blizzard) FileDataIDs.
File identity types: the strong FileDataID and the FileKey a read request travels as.
The runtime facade over the static compositions — the primary welder binding surface of the fs layer.
Flag-testing convenience for the binary formats' bit-mask enums.
The pluggable listfile-provider contract and the no-database provider for clients that need none.
M2 version conversion (namespace wowlib::formats): the M2's contribution to the generic convert<to>()...
The M2 entity (namespace wowlib::formats::m2): a whole model with its satellite files baked in,...
The map-placement binary records SHARED across the world file formats (namespace wowlib::formats::com...
Per-version MPQ archive chain tables and their expansion against a real or fake Data/ directory.
The StormLib-backed storage for MPQ-era clients.
Client-internal path canonicalization.
The project-directory overlay: a local directory acting as the ultimate patch over any client storage...
Internal C++26 reflection utilities (<meta> based).
The round-trip audit surface (namespace wowlib::audit): one welded entry point that read->write->comp...
The storage-backend concept ClientFileSystem composes over.
StringBlock — the decoded representation of a chunk of zero-terminated strings (MOTX,...
The binary-level math and color primitives shared across WoW file formats (wowdev....
WDL version conversion (namespace wowlib::formats): the WDL's contribution to the generic convert<to>...
The WDL entity (namespace wowlib::formats::wdl): a map's low-resolution heightmap — the background mo...
WDT version conversion (namespace wowlib::formats): the WDT's contribution to the generic convert<to>...
The WDT entity (namespace wowlib::formats::wdt): a map description — the main .wdt file plus its era'...
WMO version conversion (namespace wowlib::formats): the WMO's contribution to the generic convert<to>...
The WMO entity (namespace wowlib::formats::wmo): a v17 world map object with its root file (wmo::root...