wowlib 0.0.0
Read & write World of Warcraft client files — a C++26 core
Loading...
Searching...
No Matches
File List
Here is a list of all files with brief descriptions:
 
docs
 src
 wowlib
 audit
 
detail.hpp
Internals of the round-trip audit (namespace wowlib::audit::detail): the per-format driver class — one static member per format, each defined in its own translation unit so the version matrices compile in parallel — plus the small shared primitives (outcome construction, byte-divergence description, unknown-chunk tallying, and the runtime-to-compile-time version dispatch)
 
roundtrip.cpp
 
roundtrip.hpp
The round-trip audit surface (namespace wowlib::audit): one welded entry point that read->write->compares a single client file with the matching format entity and reports the outcome as a value instead of raising — built for exhaustive sweeps over FileSystem::enumeratePaths() driven from the scripting side, one file per call
 
roundtrip_adt.cpp
The ADT round-trip driver: the write -> parse -> write-again stability compare of one terrain tile (ADT is not byte-perfect — alpha maps are re-encoded and the MHDR/MCIN/MCNK offset tables re-derived), modeled on tests/integration/test_adt_roundtrip.cpp with the reflection diff replaced by the write-stability byte compare and returned outcomes in place of Catch2 assertions
 
roundtrip_blp.cpp
The BLP round-trip driver: byte-perfect rewrite of one texture, modeled on tests/integration/test_blp_roundtrip.cpp with returned outcomes in place of Catch2 assertions
 
roundtrip_m2.cpp
The M2 round-trip driver: the assembly read (satellites baked in) followed by write -> parse -> write-again stability compares of the body, the skel blocks and every skin — offset formats carry no byte-perfect promise, so stability replaces the round-trip tests' reflection diff
 
roundtrip_wdt_wdl.cpp
The WDT and WDL round-trip drivers: byte-perfect rewrite of one main .wdt or .wdl file, modeled on tests/integration/test_wdt_wdl_roundtrip.cpp with returned outcomes in place of Catch2 assertions (the WDT satellite files are separate formats, filtered to skipped:aux-wdt by the classifier)
 
roundtrip_wmo.cpp
The WMO round-trip driver: byte-perfect rewrite of one root and all its group files, modeled on tests/integration/test_wmo_roundtrip.cpp with returned outcomes in place of Catch2 assertions
 core
 
buffer.hpp
The owning byte buffer file contents are read into
 
client_builds.hpp
Named ClientVersion constants for the exact client builds format features appeared (or vanished) at — the vocabulary the =since()/=until() chunk annotations and the canonicalization pivot lists spell their versions with, instead of repeating raw ClientVersion{...} literals
 
client_version.cpp
 
client_version.hpp
Client version identity, the flavor axis that separates a client's CONTENT version from the engine generation its files are laid out for, the storage-kind split both imply, locales, and the versions namespace of release constants
 
error.hpp
The error-handling vocabulary: ErrorCode, Error and the Result<T> alias every fallible wowlib operation returns
 
expansion.hpp
The Expansion enum — the coarse, enumerable version axis the scripting bindings key on — and its mapping onto the ClientVersion constants wowlib targets (versions::)
 
file_key.hpp
File identity types: the strong FileDataID and the FileKey a read request travels as
 
lang.hpp
Binding-language identities welder's core does not name
 
path.cpp
 
path.hpp
Client-internal path canonicalization
 
reflect.hpp
Internal C++26 reflection utilities (<meta> based)
 
shared_mutex.cpp
 
shared_mutex.hpp
Reader/writer mutex used across the library
 db
 wdc
 
binary.hpp
The on-disk binary structures of the WDC family of .db2 formats (wowdev.wiki/DB2): WDC1 (Legion 7.3.5), WDC3 (BfA 8.1
 
bit_stream.hpp
Little-endian bit streams over record buffers — the primitive the WDC family's bitpacked column storage is built on
 
image.cpp
WdcImage::parse for all four supported flavors, plus the per-field value decoding (declarations and the normalization story in image.hpp)
 
image.hpp
WdcImage — the structural parser of the WDC family (WDC1/WDC3/WDC4/WDC5) and the per-field value decoder
 
read.cpp
The WDC-family decoder (entry point declared in wdc.hpp): drives a parsed WdcImage through the runtime schema into a RecordSink
 
wdc.hpp
The WDC-family codec: the non-templated entry points Table<Record> dispatches to for every column-compressed .db2 flavor — WDC1 (Legion 7.3.5), WDC3 (BfA 8.1
 
write.cpp
The WDC-family canonical encoder (entry point declared in wdc.hpp)
 
annotations.hpp
The column annotation vocabulary generated client-database record structs declare their schema roles with
 
codec.hpp
The type-erased boundary between the templated Table<Record> facade (table.hpp) and the per-format codecs (wdbc
 
codec_common.cpp
Shared fixed-stride codec internals (codec_detail.hpp): the byte-perfect string pool and the schema-driven inline field decode/encode used by the WDBC and WDB2 codecs
 
codec_detail.hpp
Shared codec internals for the fixed-stride formats (WDBC, WDB2): the string pool that reproduces byte-perfect offsets, and the per-record inline field decode/encode driven by the runtime schema
 
dbd_loader.cpp
SchemaCatalog::fromDbdDir — the runtime WoWDBDefs loader: parse a checkout's definitions directory of .dbd files, resolve every targeted era's member list with EXACTLY dbdgen's rules, assemble a WDBS blob in memory and hand it to fromBlob
 
dyn_table.cpp
DynTable + ColumnRows bodies
 
dyn_table.hpp
DynTable — the generic, runtime-schema client-database table: the ONE table class every binding welds, replacing the ~8.5k generated per-era classes on the binding surface entirely
 
locstring.hpp
LocString — the decoded form of a pre-Cataclysm localized string column (wowdev.wiki "langstringref"): one string per client language slot plus the locale flags field
 
record_bridge.cpp
The erased record bridge's field-access core: every kind-dispatching move between a codec value and a record member, compiled ONCE for all record types (see record_bridge.hpp for why)
 
record_bridge.hpp
The record bridge: ErasedRecordSink / ErasedRecordSource implement the non-templated RecordSink / RecordSource (codec.hpp) over a std::vector<Record> — with the field-access machinery compiled ONCE (record_bridge.cpp), not once per record type
 
schema.hpp
Schema reflection over generated client-database record structs: the column list, record stride and field counts the table engine and the per-magic codecs derive from a record type
 
schema_blob.hpp
The WDBS schema-blob format: a constexpr-parseable view over the compact binary dbdgen emits (--schema-blob-out), carrying every table's per-range column lists for every targeted era
 
schema_catalog.cpp
 
schema_catalog.hpp
The runtime schema source of the generic ClientDB engine: table name + client version in, a wowlib::db::Column span out — no generated record types involved
 
table.hpp
Table<Record> — the typed client-database facade over the non-templated TableCore engine (table_core.hpp)
 
table_core.cpp
TableCore's method bodies — the whole table engine, compiled once for all generated tables (see table_core.hpp for why)
 
table_core.hpp
TableCore + TableBase — the non-templated heart of every client-database table, and the ONE welded supertype whose methods every generated table class inherits
 
typed.hpp
Typed C++ access to the generic client-database engine: DECLARE YOUR OWN row struct, validated at COMPILE TIME against the same WoWDBDefs data the runtime engine uses
 
wdb2.cpp
The WDB2 codec (declarations in wdb2.hpp)
 
wdb2.hpp
WDB2 — the .db2 format of the Cataclysm..WoD MPQ/early-CASC era (4.0.1.12911
 
wdbc.cpp
The WDBC codec (declarations in wdbc.hpp)
 
wdbc.hpp
WDBC — the client-database format of every pre-Cataclysm .dbc (and the .dbc leftovers of Cataclysm..Legion clients): a 20-byte header, recordCount fixed-stride records, then the string block
 formats
 adt
 chunks
 
header.hpp
ADT header binary structs (namespace wowlib::formats::adt::chunks): the per-cell MCNK header (SMChunk, 128 bytes) and the flying bounding box (MFBO)
 
liquid.hpp
ADT liquid binary pieces (namespace wowlib::formats::adt::chunks): the small trivially-copyable records the structured liquid entities (adt/liquid.hpp) build on — the MH2O vertex-format enum and UV entry, and the legacy MCLQ vertex union / tile / flow records
 
object.hpp
ADT object/misc binary structs (namespace wowlib::formats::adt::chunks): the per-cell sound emitter (MCSE) and the Shadowlands doodad-set range (MWDR)
 
texture.hpp
ADT texture binary structs (namespace wowlib::formats::adt::chunks): the per-cell texture layer (SMLayer / MCLY), the MTEX texture flags (MTXF) and parameters (MTXP), the terrain-material map (MCMT), color grading (MTCG) and the alpha-map downscale factor (MAMP)
 
adt.hpp
The ADT terrain-tile entity (namespace wowlib::formats::adt): ADT<V>, one map tile, unified across the split ADT files it is stored in
 
boundaries.hpp
ADT version grids, layout pivots and the alpha-format context
 
codec.hpp
The MCAL alpha-map and MCSH shadow-map codecs (namespace wowlib::formats::adt::detail): AlphaMapCodec and ShadowMapCodec
 
convert.hpp
ADT version conversion (namespace wowlib::formats): the ADT's contribution to the generic convert<to>() ladder (formats/convert.hpp) — its SupportedVersions list and, as they are written, the adjacent-version convert_step overloads
 
liquid.hpp
Structured ADT liquid entities (namespace wowlib::formats::adt): the modern MH2O (WotLK+) and the legacy MCLQ (up to and including WotLK), decoded to an editable form
 
map_chunk.hpp
The per-chunk terrain entity (namespace wowlib::formats::adt): MapChunk<V>, one of the 256 MCNK terrain chunks of a tile, fully decoded
 blp
 
blp.cpp
Definitions for the BLP entity and its pixel codecs
 
blp.hpp
The BLP entity (namespace wowlib::formats::blp): Blizzard's texture format
 
codec.hpp
The BLP pixel codecs (namespace wowlib::formats::blp::detail): DxtCodec, PaletteCodec, RawCodec and MipmapScaler
 common
 
annotations.hpp
The chunk annotation vocabulary format entities declare their binary mapping with
 
chunked_file.hpp
The chunk framework, vocabulary and engine in one header
 
entity_reflect.hpp
The reflection helpers every format engine shares: reading a member's annotations, gating it by the entity's client version, and enumerating an entity's members with its public bases flattened in (how conditionally inherited version-trait bases stay invisible to the engines)
 
file_entity.hpp
 
flags.hpp
Flag-testing convenience for the binary formats' bit-mask enums
 
fourcc.hpp
FourCC chunk identifiers: compile-time conversion of the four-letter codes to the host integers chunk scanning compares against, and back for diagnostics
 
map_placements.hpp
The map-placement binary records SHARED across the world file formats (namespace wowlib::formats::common, like the math primitives): SMMapObjDef places a WMO on a map (WDT MODF, WDL MODF, ADT MODF) and SMDoodadDef places an M2 (ADT MDDF, WDL MLDD), under their canonical client names
 
string_block.hpp
StringBlock — the decoded representation of a chunk of zero-terminated strings (MOTX, MOGN, MODN, ...), keyed by the byte offsets other chunks reference entries with
 
types.hpp
The binary-level math and color primitives shared across WoW file formats (wowdev.wiki Common_Types), under their established client names
 
validation.hpp
The validation vocabulary: the severity scale, the single finding and the report validate() fills
 
version_range.hpp
Version-range canonicalization: the machinery behind collapsing a versioned family's instantiations to its REAL layout permutations
 
version_slot.hpp
The conditional-base mechanism that gives a versioned chunked entity exactly the fields its client version defines
 m2
 bone
 
bone.hpp
The .bone entity (namespace wowlib::formats::m2::bone), WoD+: a tiny chunked file (with a raw u32 prelude) carrying facial-pose bone offset matrices — one file per variant of the FacePose (808) sequence, referenced by BFID
 chunked
 
chunked.hpp
The Legion+ chunked .m2 shell (namespace wowlib::formats::m2::chunked): M2ChunkedFile — the on-disk chunk stream that wraps the MD20 image (MD21) beside the satellite chunks (FileDataID references, extended particle data, parent-model overrides, inline physics)
 
records.hpp
Legion+ companion-chunk records (namespace wowlib::formats::m2::chunked::record): the payload types of the chunked .m2 shell's satellite chunks (AFID entries, extended-particle blocks, parent-model overrides)
 root
 record
 
bone.hpp
M2 skeleton records (namespace wowlib::formats::m2::root::record): M2CompBone across its eras
 
effects.hpp
M2 effect-emitter records (namespace wowlib::formats::m2::root::record): ribbon emitters and the particle emitters — the format's most layout-turbulent record, in four eras (vanilla statics, late-TBC packed header, WotLK FBlock ramps + four spin fields, Cata+ multi-texturing)
 
material.hpp
M2 geometry, texture and material records (namespace wowlib::formats::m2::root::record): the global vertex, the texture definitions and their animated color/weight/transform companions
 
scene.hpp
M2 scene records (namespace wowlib::formats::m2::root::record): attachments, events, lights and cameras — the non-geometry model furniture
 
sequence.hpp
M2 animation-sequence records (namespace wowlib::formats::m2::root::record): M2Sequence across its three layout eras, the sequence flags, and the pre-WotLK playable-animation fallback entry
 
track.hpp
The M2 animation vocabulary (namespace wowlib::formats::m2::root::record): the small fixed-size primitives (M2Range, M2Bounds, M2Loop, M2CompQuat, M2Box, M2SplineKey) and the track types every animated record embeds
 
root.hpp
The MD20 body entity (namespace wowlib::formats::m2::root): M2Root — the client's own name for the offset-addressed model payload
 skin
 
records.hpp
M2 skin-profile records (namespace wowlib::formats::m2::skin): the LOD view onto the model — local vertex/index/bone lookups, submeshes and render batches
 
skin.hpp
The external .skin file entity (namespace wowlib::formats::m2::skin), WotLK+: the 'SKIN' magic followed by one M2SkinProfile — held as an inline member, so the on-disk layout is byte-identical to the embedded pre-WotLK profiles while the entity keeps a single welded facade base
 
boundaries.hpp
The M2 version vocabulary: the layout pivots record/entity partial specializations key on, and the MD20 formatVersion written for each targeted client
 
convert.hpp
M2 version conversion (namespace wowlib::formats): the M2's contribution to the generic convert<to>() ladder (formats/convert.hpp) — its SupportedVersions list and, as they are written, the adjacent-version convert_step overloads translating one era's layout to the next
 
m2.hpp
The M2 entity (namespace wowlib::formats::m2): a whole model with its satellite files baked in, versioned on the client it is laid out for
 
offset_block.hpp
The offset-format storage vocabulary and serializer engine for the M2 family, in one header
 
satellites.hpp
The M2 family's satellite-file vocabulary (namespace wowlib::formats::m2), shared by the fs-level read/write definitions in m2.hpp and skeleton.hpp:
 
skeleton.hpp
The .skel skeleton entity (namespace wowlib::formats::m2), 7.3+: a FIRST-CLASS entity with its own filesystem read/write — skeletons are SHARED between models (SKPD parent links), so an M2 references its skeleton rather than owning it exclusively
 wdl
 chunks
 
objects.hpp
WDL object-placement chunk binary structs (namespace wowlib::formats::wdl::chunks)
 
skyscene.hpp
WDL sky-scene chunk binary structs (namespace wowlib::formats::wdl::chunks), Shadowlands+: distant scripted scenery — sky scenes tied to SkySceneXPlayerCondition, their conditions and placed objects, plus the War Within scene-living schedule records
 
tiles.hpp
WDL per-tile chunk binary structs (namespace wowlib::formats::wdl::chunks): the MARE low-resolution heightmap, the MAHO hole mask and the MAOE ocean mask
 
boundaries.hpp
WDL version grid and canonicalization pivots
 
convert.hpp
WDL version conversion (namespace wowlib::formats): the WDL's contribution to the generic convert<to>() ladder (formats/convert.hpp) — its SupportedVersions list and, as they are written, the adjacent-version convert_step overloads
 
wdl.hpp
The WDL entity (namespace wowlib::formats::wdl): a map's low-resolution heightmap — the background mountain silhouettes and the minimap fallback
 wdt
 fogs
 chunks
 
records.hpp
_fogs.wdt chunk binary structs (namespace wowlib::formats::wdt::fogs::chunks)
 
fogs.hpp
The _fogs.wdt volumetric-fog satellite entity (namespace wowlib::formats::wdt::fogs), Legion 7.2.5+: placed fog volumes for terrain maps
 lights
 chunks
 
records.hpp
_lgt.wdt chunk binary structs (namespace wowlib::formats::wdt::lights::chunks): the WoD point lights (MPLT), their Legion replacement (MPL2), the Shadowlands revision (MPL3), spot lights (MSLT) and the light texture animations (MLTA)
 
lights.hpp
The _lgt.wdt lights satellite entity (namespace wowlib::formats::wdt::lights), WoD+: freely placed map lights — point lights under lamp posts and the like, plus Legion's spot lights and light texture animations
 mpv
 chunks
 
records.hpp
_mpv.wdt chunk binary structs (namespace wowlib::formats::wdt::mpv::chunks)
 
mpv.hpp
The _mpv.wdt particulate-volume satellite entity (namespace wowlib::formats::wdt::mpv), BfA 8.0.1+: weather particulate volumes
 occlusion
 chunks
 
records.hpp
_occ.wdt chunk binary structs (namespace wowlib::formats::wdt::occlusion::chunks)
 
occlusion.hpp
The _occ.wdt occlusion satellite entity (namespace wowlib::formats::wdt::occlusion), WoD+: low-resolution heightmaps that occlude everything behind them, one per ADT tile
 root
 chunks
 
header.hpp
WDT main-file chunk binary structs (namespace wowlib::formats::wdt::root::chunks): the MPHD map header (both the pre-8.1 layout and the 8.1+ FileDataID layout), the MAIN tile table entry and the MAID per-tile FileDataID record, with their flag enums
 
root.hpp
The WDT main-file entity (namespace wowlib::formats::wdt::root): the map header, the 64x64 tile table, the per-tile FileDataID table (8.1+) and the global-WMO reference of WMO-only maps
 
boundaries.hpp
WDT version grids and per-family canonicalization pivots
 
convert.hpp
WDT version conversion (namespace wowlib::formats): the WDT's contribution to the generic convert<to>() ladder (formats/convert.hpp) — its SupportedVersions list and, as they are written, the adjacent-version convert_step overloads
 
wdt.hpp
The WDT entity (namespace wowlib::formats::wdt): a map description — the main .wdt file plus its era's satellite files (_occ/_lgt since WoD, _fogs since Legion 7.2.5, _mpv since BfA) unified, versioned on the client it is laid out for
 wmo
 group
 chunks
 
geometry.hpp
WMO group geometry: polys, batches, BSP (MOPY, MOBA, MOBN) (namespace wowlib::formats::wmo::group::chunks)
 
header.hpp
The MOGP group header and group flag bits (namespace wowlib::formats::wmo::group::chunks)
 
light.hpp
WMO group lights and light sets (MOLP, MLSS/MLSP/MLSK, MOP2) (namespace wowlib::formats::wmo::group::chunks)
 
liquid.hpp
WMO group liquid (MLIQ) (namespace wowlib::formats::wmo::group::chunks)
 
group.hpp
The WMO group-file entities (namespace wowlib::formats::wmo::group): the MOGP container body (geometry, batches, collision, liquid and the later-expansion light/volume references) and the group file wrapping it
 root
 chunks
 
doodad.hpp
WMO doodad sets and placements (MODS, MODD) (namespace wowlib::formats::wmo::root::chunks)
 
environment.hpp
WMO fog and ambient volumes (MFOG, MAVD/MAVG/MBVD) (namespace wowlib::formats::wmo::root::chunks)
 
header.hpp
WMO root header (MOHD) and its flag bits (namespace wowlib::formats::wmo::root::chunks)
 
light.hpp
WMO lights and their extensions (MOLT, MOLV, MNLD) (namespace wowlib::formats::wmo::root::chunks)
 
material.hpp
WMO materials and UV animation (MOMT, MOUV) (namespace wowlib::formats::wmo::root::chunks)
 
structure.hpp
WMO group info, portals and visible blocks (namespace wowlib::formats::wmo::root::chunks)
 
root.hpp
The WMO root-file entity (namespace wowlib::formats::wmo::root): header, materials, group metadata, portals, lights, doodads, fog and the later-expansion volume/light extensions
 
boundaries.hpp
WMO version pivots that change a binary-struct layout (not just chunk presence)
 
convert.hpp
WMO version conversion (namespace wowlib::formats): the WMO's contribution to the generic convert<to>() ladder (formats/convert.hpp) — its SupportedVersions list and, as they are written, the adjacent-version convert_step overloads that translate one era's chunk-set changes to the next
 
wmo.hpp
The WMO entity (namespace wowlib::formats::wmo): a v17 world map object with its root file (wmo::root) and all group files (wmo::group) unified, versioned on the client it is laid out for
 
convert.hpp
Version conversion scaffolding: convert<to>() composes hand-written adjacent-version steps along a format's supported-version ladder
 fs
 casc
 
casc_storage.cpp
 
casc_storage.hpp
The CascLib-backed storage for CASC-era clients
 mpq
 
mpq_chain.cpp
 
mpq_chain.hpp
Per-version MPQ archive chain tables and their expansion against a real or fake Data/ directory
 
mpq_storage.cpp
 
mpq_storage.hpp
The StormLib-backed storage for MPQ-era clients
 
client_filesystem.hpp
The static composition of one client's file access
 
client_install.cpp
 
client_install.hpp
Reading a client installation's own identity off disk: which product it is, which build, and therefore which flavor and format lineage
 
csv_listfile.cpp
 
csv_listfile.hpp
The CSV-backed listfile provider: one working file ('fileDataId;filepath' per line) that is both read from and written to
 
fdid_allocator.hpp
The monotonic allocator behind custom (non-Blizzard) FileDataIDs
 
filesystem.cpp
 
filesystem.hpp
The runtime facade over the static compositions — the primary welder binding surface of the fs layer
 
listfile.hpp
The pluggable listfile-provider contract and the no-database provider for clients that need none
 
project_directory.cpp
 
project_directory.hpp
The project-directory overlay: a local directory acting as the ultimate patch over any client storage
 
storage_backend.hpp
The storage-backend concept ClientFileSystem composes over
 
wowlib.hpp
Umbrella header: the whole public wowlib API