wowlib 0.0.0
Read & write World of Warcraft client files — a C++26 core
Loading...
Searching...
No Matches
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
 NstdSTL namespace
 Chash< wowlib::FileDataID >
 Nwowlib
 Naudit
 Ndetail
 CFormatDriversThe per-format round-trip drivers behind Auditor::roundtrip
 CRoundtripReport
 CAuditor
 Ndb
 Nblob
 CTableEntryOne table's directory entry, decoded
 CRangeEntryOne schema range: a run of columns valid for the eras in the mask
 CColumnEntryOne column, decoded to the raw blob facts (the catalog turns this into a wowlib::db::Column with an interned name)
 CViewA structural view over one WDBS blob
 Ndetail
 CColumnAccessEverything the erased core needs to touch one column of a record: where it lives, what it is, and how its array elements stride
 CColumnRowsThe column-store row storage: one exact-width POD buffer per numeric column, one string vector per string-bearing column, one flags vector per LocString column — implementing both codec interfaces over them
 CFactsThe per-column access facts, derived from the schema at bind
 CElementTraitsTrait: the element type / extent of a member — unwraps std::array
 CElementTraits< std::array< T, N > >
 CFixedStringA compile-time string NTTP (the column<"id">() spelling)
 CIdSpecStored form of id: the member is the table's primary key ($id$)
 CLocstringTraitsTrait: is T a LocString<N>?
 CLocstringTraits< LocString< N > >
 CNoninlineSpecStored form of noninline: the member holds no bytes inside the record image — its values come from a satellite block (the WDC id list for ids, the relationship block for relations)
 CRecordOpsThe one thing that stays per-record: a table of thunks over the record VECTOR (only they know sizeof(Record)) plus the access table above
 CRelationSpecStored form of relation: the member is a relationship key referencing the parent table's id ($relation$)
 CStringPoolA writable string block resolving values to byte-perfect offsets: the journaled original offset while the value still matches, else an equal existing entry, else a fresh append
 CTypedMismatchThe consteval-validation failure carrier: throwing it inside constant evaluation aborts compilation with the message in the diagnostic
 Nwdc
 CBitReaderA bounds-guarded little-endian bit reader over a record's byte span
 CBitWriterA little-endian bit writer over a record buffer — the encode counterpart of BitReader
 CWdc1HeaderThe 84-byte WDC1 top header
 CWdc3HeaderThe 72-byte WDC3 top header (WDC4 reuses it verbatim; WDC5 prepends Wdc5HeaderPrefix in front of the fields after magic)
 CWdc3SectionHeaderThe 40-byte per-section header of WDC3/WDC4/WDC5
 CWdc5HeaderPrefixThe 132 bytes WDC5 splices between magic and recordCount: a numeric schema version and a zero-padded schema-name string (e.g
 CWdcFieldStorageThe 24-byte field_storage_info entry: how one column is stored
 CWdcFieldStructureThe 4-byte fieldStructure entry: (32 - size) / 8 is the field's storage byte width, position its byte offset in a record
 CWdcImageA parsed WDC-family file: the (normalized) header, shared tables, and located sections
 CWdcSectionA located, structurally-validated section
 CColumnOne column of a record schema, derived from a record member by reflection (typed records) or from the schema catalog (the generic table)
 CColumnAccessEverything the erased core needs to touch one column of a record: where it lives, what it is, and how its array elements stride
 CDynTableThe generic client-database table: schema resolved at runtime from the schema catalog, rows in a column store, format engine and preserved decode state inherited from TableBase (read/write/validate/strings/ encryptedSections all bind once, there)
 CEncryptedSectionOne WDC section whose records could not be decoded because they are encrypted under a TACT key wowlib does not hold
 CErasedRecordSinkRecordSink over a live std::vector<Record>& — the decode target
 CErasedRecordSourceRecordSource over a const std::vector<Record>& — the encode source
 CLocStringA decoded pre-Cataclysm localized string column: Langs language slots (8 before TBC 2.1.0.6692 added ruRU, 16 after) plus the trailing locale flags field
 CPodColumnViewA scalar column's whole storage, for zero-copy array views: the raw exact-width buffer plus the facts to type it (rows x elements_per_row matrix, row-major)
 CRecordOpsThe one thing that stays per-record: a table of thunks over the record VECTOR (only they know sizeof(Record)) plus the access table above
 CRecordSinkThe decode target: the codecs build the record vector through this, one field at a time
 CRecordSourceThe encode source: the codecs read the record vector through this
 CSchemaCatalogThe parsed, materialized form of one WDBS schema blob
 CTableA client database table: the typed records of one DBFilesClient file
 CTableBaseThe welded supertype of every generated table class: the whole table surface — decode, encode, validation, the preserved-state getters — bound ONCE and inherited, in every language, by all ~4200 generated (table x era) classes
 CTableCoreThe erased engine of one table: identity + records access + preserved decode state, with every operation's body compiled once
 CTableInfoThe per-table identity a codec needs beyond the record data: the client version (format selection, diagnostics), the WoWDBDefs table name (diagnostics), and the runtime schema
 CTableSchemaOne resolved (table, client version) schema: what SchemaCatalog::lookup hands the engine
 CTableStateThe preserved decode state a table carries between read() and write() so a WDBC/WDB2 write is byte-perfect and a WDC write reproduces the original compression
 CTypedTableA typed, consteval-validated face over one DynTable: the table itself stays fully generic (every column decodes, byte-perfect round-trip holds); this projects rows into Record values, copies edits back, and hands out zero-copy typed column spans
 CWdb2HeaderThe 48-byte WDB2 header (wowdev.wiki/DB2)
 CWdbcHeaderThe 20-byte WDBC header (wowdev.wiki/DBC)
 Ndetail
 CEngineGenerationOne retail engine generation on the global build counter: the build at which that major became the live/PTR client — the point from which concurrently built Classic clients fork off it — and the release wowlib models the generation with
 Nformats
 Nadt
 NchunksADT chunk binary structs (the MCNK cell header, texture layers, liquid records, flying bounds) and their flag enums
 CCWSoundEmitterOne sound emitter (MCSE, 28 bytes): the client reads 0x1C bytes per entry — a sound-entry id and a position/size pair
 CCWSoundEmitterVanillaOne pre-WotLK sound emitter (MCSE, 52 bytes): the full inline emitter parameters later folded into SoundEntriesAdvanced
 CMCNREntryOne MCNR normal (3 signed bytes, x Z Y; 127 == 1.0)
 CMFBOPlanesThe flying bounding box (MFBO, BC+): two 3x3 grids of int16 heights — a maximum plane you fall through and a minimum plane below the world
 CMHDRDataThe tile header (MHDR, 64 bytes, root/monolithic)
 CSLVertOne legacy liquid vertex (MCLQ, 8 bytes)
 CSMChunkThe per-cell MCNK header — 128 bytes, memcpy'd verbatim
 CSMDoodadSetRangeOne Shadowlands doodad-set range (MWDR): a [begin, end] span into MWDS
 CSMLayerA per-cell texture layer (MCLY, 16 bytes)
 CSMTerrainMaterialOne MCMT terrain-material record (Cata+): a TerrainMaterial id per layer
 CSMTextureColorGradingOne MTCG color-grading record (Shadowlands+): the color-grading LUT FileDataIDs for the same-index diffuse texture
 CSMTextureFlagsOne MTXF texture-flags record (WotLK+): flags for the same-index MTEX texture
 CSMTextureParamsOne MTXP texture-parameter record (MoP+): the MTXF flags plus the _h height-texture scale/offset that drive height-based blending
 CSMVertThe magma/slime reading of an MCLQ vertex (8 bytes): two u16 texcoords and the shared height
 CSWFlowvOne legacy liquid flow vector (MCLQ SWFlowv, 40 bytes)
 CUVMapEntryOne MH2O UV texture-coordinate entry (two u16, divided by 8 in shaders)
 Ndetail
 CADTA terrain tile for one client version
 CADTFlyingThe flying bounds (MFBO), BC+
 CADTSplitCataclysm+ split-file tile chunks (the tile now spans root/_tex0/_obj0/ _obj1/_lod files)
 CADTTexFdidsThe 8.1+ FileDataID texture tables (_tex0), which replace MTEX names on height-texturing maps
 CADTWotlkWotLK+ tile chunks: the water (MH2O) and the texture flags (MTXF)
 CAlphaCodecMCAL codec: decode/encode the per-layer 64x64 alpha maps through AlphaMapCodec, indexing the sibling layers' flags + offsetInMcal
 CAlphaMapCodecThe MCAL alpha-map codec
 CInFileSpecStored form of an inFile annotation: a binary chunk's physical-file group
 CLayerCodecMCLY codec: the texture layers, plus sizing alphaMaps to the layer count (MCAL may be absent on Cata+ when empty, so alphaMaps must be sized here to keep it aligned with layers)
 CMapChunkA terrain chunk (MCNK) for one client version
 CMapChunkCataVertex lighting (MCLV) and terrain materials (MCMT), Cata+
 CMapChunkColorVertex colors (MCCV), WotLK+
 CMapChunkLegacyLiquidLegacy liquid (MCLQ)
 CMapChunkReadCtxContext a sub-chunk codec needs to read one MCNK sub-chunk: the (already parsed) header, the sibling texture layers (MCAL indexes them), the tile alpha bit depth and whether to repair the 63x63 "unfixed" edge form
 CMapChunkWriteCtxContext a sub-chunk codec needs to write one MCNK sub-chunk
 CNormalCodecMCNR codec: 145 XZY normal triples followed by 13 undeclared padding bytes (a near-constant client pattern preserved for the semantic round-trip)
 CSerializerSpecStored form of a serializedBy annotation: the reflection of a codec type handling a sub-chunk that a plain readValue/writeValue cannot (external length, a transform, or a companion member)
 CShadowCodecMCSH codec: the 64x64 shadow map through ShadowMapCodec
 CShadowMapCodecThe MCSH shadow-map codec: a 512-byte 1-bit bitmap on disk, a 4096-texel 0/1 surface in memory
 CSoundEmitterCodecMCSE codec: typed emitter records — the era picks the entry (pre-WotLK 52-byte CWSoundEmitterVanilla, 28-byte CWSoundEmitter after; the member's value_type carries the choice)
 CTerrainMapCodecShared geometry for the 64x64 terrain map codecs: the last-row/column repair the client applies to "unfixed" maps on load
 CADTBaseThe version-agnostic base of every ADT<V> (welded as "ADT"): the language bindings attach for_version/read/write/convert here
 CLiquidInstanceOne liquid layer of one terrain cell, fully decoded (an MH2O instance)
 CMapChunkBaseThe version-agnostic base of every MapChunk<V> (welded as "MapChunk"): the language bindings attach for_version here and give the per-version chunks a common welded supertype
 CMapChunkLiquidAll liquid of one terrain cell: the attribute masks plus its layers
 CMCLQDataThe legacy per-chunk liquid (MCLQ, up to and including WotLK): a 9x9 vertex grid, an 8x8 tile-flag grid and up to two flow vectors, decoded
 CMH2ODataThe whole-tile MH2O chunk: liquid for each of the 256 cells, decoded
 Nblp
 Ndetail
 CBLPHeaderThe 148-byte BLP2 file header, exactly as on disk (the 1024-byte palette follows it)
 CDxtCodecThe DXT/BC block codec
 CMipmapScalerThe mip-chain downscaler: one box-filter halving step per call, the standard non-sRGB-aware average every BLP toolchain uses
 CPaletteCodecThe palettized codec
 CRawCodecThe uncompressed-BGRA codec (ColorEncoding::Bgra / BgraAlt): a pure channel swizzle
 CStoredLayoutThe on-disk placement a read recorded, replayed by write() while the payloads are unmodified so unusual files (inter-mip gaps, trailing bytes, non-contiguous or shared mip placement) still round-trip byte-perfectly
 CRunOne run of file bytes covered by neither the header region nor any mip payload (an inter-mip gap or a trailing tail)
 CImage
 CEncodeSettings
 CBLP
 Ncommon
 CC2IVectorA 2D integer vector
 CC2VectorA 2D float vector: texture coordinates, UV animation speeds
 CC33MatrixA 3x3 matrix as three column C3Vectors
 CC34MatrixA 3x4 matrix as four column C3Vectors
 CC3IVectorA 3D integer vector
 CC3VectorA 3D float vector — the workhorse: positions, normals, rotations-as-Euler-degrees in placements
 CC44MatrixA 4x4 matrix as four column C4Vectors
 CC4PlaneA plane as a normal and its signed distance from the origin
 CC4Quaternion
 CC4VectorA 4D float vector
 CCAaBoxAn axis-aligned bounding box: minimum and maximum corners
 CCAaSphereAn axis-aligned sphere: position and radius
 CCArgbA color stored as r, g, b, a bytes
 CCImVectorA color stored as b, g, r, a bytes — the client's immediate-mode vertex color layout (WMO MOCV, doodad colors)
 CCRangeA float range: minimum and maximum
 Cfixed16A signed 16-bit fixed-point value with an implicit 0x7FFF scale
 CSMDoodadDef
 CSMMapObjDef
 Ndetail
 CChunkSpecStored form of a chunk annotation: the member's binary identity
 CChunkWriterAppend-only chunk emission with size backpatching
 CContainerSpecStored form of container: the chunk payload is itself a chunk stream; the member is a nested chunked entity read recursively
 CCountExactlySpecStored form of countExactly: the member's element count is fixed by the format (an ADT map chunk's 145 height samples)
 CCountMatchesSpecStored form of countMatches: when the member is engaged, its element count times scale must equal the named sibling member's count
 CCountMultipleOfSpecStored form of countMultipleOf: the member's element count must be a multiple of divisor
 CExpectedValueSpecStored form of expectedValue: the (integral) data member must hold exactly this value (format-version fields)
 CGatedBySpecStored form of gatedBy (offset entities): the member occupies binary bytes only when the entity's globalFlags has any mask bit set
 CHeaderSpecStored form of header: raw leading bytes of a container payload, memcpy'd before chunk scanning starts — not a chunk of its own
 CIndexesInRootSpecStored form of indexesInRoot: every element of the (integral) vector member must be a valid index into the named member of the ASSEMBLY's root entity
 CIndexesOptionalSpecStored form of indexesOptional: like indexes, but the client's "no reference" sentinel (a negative value, or the all-ones value of an unsigned element) is a legal element
 CIndexesSpecStored form of indexes: every element of the (integral) vector member must be a valid index into the named sibling member
 CNonemptySpecStored form of nonempty: the member must hold data for the file to be meaningful to the client, even though read() tolerates its absence
 COffsetAfterSpecStored form of offsetAfter (offset entities): the trait-base member's positional layout position — right after the named own member of the entity
 COptionalSpecStored form of optional: absence on read is not an error
 CRepeatedTraitsTrait: is T a Repeated<U, N> (a repeats-annotated member)?
 CRepeatedTraits< Repeated< U, N > >
 CRepeatingSpecStored form of repeating: the chunk appears once per element, any number of times (WDL MARE tiles, _mpv PVMI/PVPD/PVBD groups)
 CRepeatsSpecStored form of repeats: the chunk may appear up to max times
 CSequenceDataSpecStored form of SequenceData (offset entities): the member's nested per-element data may live in an external buffer (M2 .anim files) — the engine resolves each outer element's base span/sink through the I/O context instead of assuming the entity's own buffer
 CSinceSpecStored form of since: member active for entity versions >= v
 CUntilSpecStored form of until: member active for entity versions < v
 Nm2
 NboneThe .bone facial-pose file entity (WoD+)
 CBoneFilePreludeThe .bone raw prelude: a version marker, always 1 so far
 CBoneFileOne .bone file: which bones get facial-pose offset matrices, and the matrices
 NchunkedThe Legion+ chunked .m2 shell (M2ChunkedFile) with its per-version classes and the companion-chunk payload records (AFID entries, extended particles, parent-model overrides)
 NrecordCompanion-chunk payload records of the chunked .m2 shell
 CAnimFileEntryOne AFID entry: which FileDataID serves a sequence's .anim data
 CM2ExtendedParticleSimpleOne EXPT record: the pre-EXP2 extended particle parameters (the client reconstructs EXP2 from these when EXP2 is absent)
 CM2ExtendedParticleAn EXP2 record: the EXPT parameters plus the per-lifetime alpha-cutoff ramp
 CM2LightDetailOne DETL record: per-light shadow/diffuse overrides (9.0+); the halves are raw IEEE half-floats
 CExp2DataThe EXP2 chunk payload: extended particle records, one per particle emitter
 CPabcDataThe PABC chunk payload: the parent-model sequence-id blacklist ('BlacklistAnimData')
 CPsbcDataThe PSBC chunk payload: parent sequence bounds
 CPgd1DataThe PGD1 chunk payload: per-particle-emitter geoset assignments
 CM2ChunkedFileBaseThe version-agnostic base of every M2ChunkedFile<V> (welded as "M2ChunkedFile")
 CM2ChunkedFileThe chunked .m2 shell for one Legion+ client version
 NdetailA shared model skeleton (.skel, 7.3+): the bones, attachments and sequences a skel-based model moved out of its MD20 image, plus the satellite ids
 CAssemblyLegionLegion+ assembly members: the chunk stream and the satellites it references
 CAssemblyLegion< V >
 CAssemblySkinsWotLK+ assembly members: the external .skin LOD views baked in
 CAssemblySkins< V >
 CM2A whole M2 model for one client version: the MD20 body plus every baked-in satellite
 CSkelAttachmentsThe SKA1 payload: the attachments that moved out of the model (external sequences' track data lives in the .anim AFSA chunks)
 CSkelBonesThe SKB1 payload: the bones that moved out of the model (external sequences' track data lives in the .anim AFSB chunks)
 CSkeleton
 CSkelHeaderThe SKL1 payload: the skeleton's identity
 CSkelSequencesThe SKS1 payload: the sequence set that moved out of the model
 NrootThe MD20 model body (M2Root) with its per-version classes
 Ndetail
 CDataPreWotlkPre-WotLK members: the embedded skin profiles and the vanilla/TBC-only lookup blocks
 CDataWotlkWotLK+ members: the external-skin count replacing the embedded profiles
 CDataTbcTBC+ members: the flag-gated combiner-combo tail
 NrecordM2 body record structs (sequences, bones, tracks, textures, cameras, emitters) and their flag enums
 Ndetail
 CM2AttachmentAn attachment point (weapons, effects, name plates), relative to a bone
 CM2Camera
 CM2Camera< V >A camera, pre-Cata layout: a static diagonal FOV plus position/target/roll spline tracks
 CM2ColorA vertex color + alpha animation pair, referenced from skin batches by color index
 CM2CompBone
 CM2CompBone< V >
 CM2EventA timed event ($DTH death thud, footsteps, sounds); every enabled-track key fires
 CM2LightA model light: type 0 directional (login screens only), 1 point
 CM2Particle
 CM2Particle< V >A particle emitter, vanilla layout: wide u16 blending/emitter header, static color/scale/UV ramps, a single spin value
 CM2RibbonA ribbon (trail) emitter; the priority/color-index tail exists WotLK+
 CM2Sequence
 CM2Sequence< V >An animation sequence, pre-WotLK layout: global start/end timestamps, one u32 blend time
 CM2TextureFlipbookA pre-WotLK texture flipbook slot; never observed engaged in files
 CM2TextureTransformA UV animation: translation/rotation/scaling keyframes for the texture matrix (rotation pivots at texture center 0.5, 0.5)
 CM2TextureWeightA global texture weight (transparency) track
 CM2TrackAn animation track for value type T, laid out for client version V
 CM2Track< T, V >An animation track, pre-WotLK layout: one global timeline with per-sequence interpolation ranges
 CM2TrackBaseA timestamp-only track (event triggers: every key is an implicit "fire now")
 CM2TrackBase< V >
 CFBlock
 CM2AttachmentBaseThe version-agnostic base of every M2Attachment<V> (welded as "M2Attachment")
 CM2BoundsA bounding volume: axis-aligned extent plus sphere radius
 CM2BoxA model-space box: minimum and maximum corner vectors
 CM2CameraBaseThe version-agnostic base of every M2Camera<V> (welded as "M2Camera")
 CM2ColorBaseThe version-agnostic base of every M2Color<V> (welded as "M2Color")
 CM2CompBoneBaseThe version-agnostic base of every M2CompBone<V> (welded as "M2CompBone")
 CM2CompQuatA quaternion compressed to i16 x, y, z, w (TBC+ bone rotations); decompress as (v < 0 ?
 CM2EventBaseThe version-agnostic base of every M2Event<V> (welded as "M2Event")
 CM2EventTrackBaseThe version-agnostic base of every M2EventTrack<V> (welded as "M2EventTrack")
 CM2LightBaseThe version-agnostic base of every M2Light<V> (welded as "M2Light")
 CM2LoopA global-loop entry: the timestamp a global sequence wraps at
 CM2MaterialAn M2 material: render flags (see MaterialFlags) and the blending mode (see M2/Rendering M2BLEND)
 CM2ParticleBaseThe version-agnostic base of every M2Particle<V> (welded as "M2Particle")
 CM2PartTrack
 CM2RangeAn inclusive u32 range: pre-WotLK track interpolation ranges, sequence replay bounds
 CM2RibbonBaseThe version-agnostic base of every M2Ribbon<V> (welded as "M2Ribbon")
 CM2SequenceBaseThe version-agnostic base of every M2Sequence<V> (welded as "M2Sequence")
 CM2SequenceFallbackA pre-WotLK playable-animation fallback: the substitute animation id plus how to play it (0 normal, 1 backwards, 2 frame-by-frame, 3 freeze)
 CM2SplineKeyA spline keyframe: the value plus incoming/outgoing tangents (bezier/hermite camera tracks)
 CM2TextureA texture definition: type 0 references the filename (TXID FileDataIDs replace it in 8.0+); non-zero types are runtime component slots (skin, hair, monster skins, ...)
 CM2TextureFlipbookBaseThe version-agnostic base of every M2TextureFlipbook<V> (welded as "M2TextureFlipbook")
 CM2TextureTransformBaseThe version-agnostic base of every M2TextureTransform<V> (welded as "M2TextureTransform")
 CM2TextureWeightBaseThe version-agnostic base of every M2TextureWeight<V> (welded as "M2TextureWeight")
 CM2TrackFamilyBaseThe version-agnostic base of every M2Track<T, V> VALUE FAMILY, one base per value type T (welded per family as "M2TrackC3Vector", ... — see the alias tables in bindings/instantiations/m2_ranges.hpp)
 CM2Vec2FP69A 2D vector of 6.9 fixed-point values (raw u16 storage)
 CM2VertexAn M2 vertex: position, 4-bone weights/indices, normal and two texture coordinate sets
 CM2RootBaseThe version-agnostic base of every M2Root<V> (welded as "M2Root")
 CM2RootThe MD20 model body for one client version: header scalars plus every offset-addressed block, decoded into vectors
 NskinThe external LOD view entity (.skin file, WotLK+) and the skin profile records (submeshes, render batches)
 NdetailOne external LOD view of a model ("{model}0N.skin", or SFID FileDataIDs in Legion+)
 CM2SkinProfileOne LOD view: local vertex/bone lookups into the model, submeshes and render batches; embedded in the model pre-WotLK, an own .skin file after
 CM2SkinSection
 CM2SkinSection< V >A skin submesh, vanilla layout (no sort data yet)
 CSkin
 CM2BatchAn M2 skin render batch (texture unit): submesh + material + the lookup bases the shaders consume
 CM2ShadowBatchAn M2 skin shadow batch (Cata+); the client can also generate these from the render batches
 CM2SkinProfileBaseThe version-agnostic base of every M2SkinProfile<V> (welded as "M2SkinProfile")
 CM2SkinSectionBaseThe version-agnostic base of every M2SkinSection<V> (welded as "M2SkinSection")
 CSkinBaseThe version-agnostic base of every Skin<V> (welded as "Skin")
 CAnimBuffersThe per-sequence external write buffers every M2-family write path shares: an external sequence's data lands in its own per-key buffer as the tracks route their blocks through sink(); inline sequences (and aliases, whose flags never mark them external) stay in the entity image
 CAnimCacheA lazy per-sequence .anim loader handing out resolution windows: for a chunked file (leading AFM2) the requested chunk's payload, for a raw file the whole content when AFM2 is asked for (raw files predate the split sections)
 CBoneFileOne .bone file: which bones get facial-pose offset matrices, and the matrices
 CM2BaseThe version-agnostic base of every M2<V> (welded as "M2")
 CM2OffsetBaseThe non-template marker base every offset block carries (what the OffsetEntity concept detects)
 CM2OffsetBlockThe serialization face of an offset block, mixed in CRTP-style: an entity struct E : M2OffsetBlock<E> gains read()/write() plus the imageSize() and memberOffset() layout queries
 CM2ArrayRefThe on-disk shape of an offset-array reference: element count and the byte offset of the data block, relative to the entity image base
 COffsetReadContextResolution of SequenceData members while reading: where each outer element's nested data lives
 COffsetWriteContextResolution of SequenceData members while writing: which buffer each outer element's nested data blocks are appended to (offsets recorded relative to that buffer)
 CSatellitePathsThe satellite-file naming conventions around one model path: every companion file of "creature\\x\\x.m2" derives from the same stem
 CSequenceKeyA sequence's satellite identity: the (animation id, variation) pair the .anim naming convention ("{stem}AAAA-SS.anim") and the AFID entries key on
 CSkeletonBaseThe version-agnostic base of every Skeleton<V> (welded as "Skeleton")
 CSkelParentDataThe SKPD payload: the parent-skeleton link used for de-duplication (e.g
 Nwdl
 NchunksWDL chunk binary structs (per-tile heightmaps, hole and ocean masks, low-resolution placements, sky scenes)
 CLodDoodadFade
 CLodExtent
 CLodMapObjDef
 CSceneLivingDefOne scene-living (world) definition (an MSLD record, The War Within+): a time-windowed scene schedule
 CSkySceneOne sky scene (an MSSN record, Shadowlands+), tying a SkySceneID to its condition and object ranges
 CSkySceneConditionOne sky-scene condition (an MSSC record, Shadowlands+)
 CSkySceneObjectOne sky-scene object (an MSSO record, Shadowlands+): a placed distant M2
 CSkySceneObjectParamsOne sky-scene object params record (an MSSF record; documented as Dragonflight+ but observed in 9.2.7 files)
 CTileHeights
 CTileHoles
 CTileOcean
 Ndetail
 CWdlPreLegionThe pre-Legion per-tile occlusion mesh
 CWdlTbcThe TBC+ per-tile hole masks
 CWdlLegionThe Legion object swap (low-resolution placements) and ocean masks
 CWdlBfAThe BfA fade distances and WMO-map byte
 CWdlSLThe Shadowlands sky scenes and undocumented blobs
 CWdlTwwThe War Within scene-living schedule
 CWDLA WDL low-resolution heightmap file for one client version
 CWDLBaseThe version-agnostic base of every WDL<V> (welded as "WDL")
 Nwdt
 Ndetail
 CSatellitesWodThe WoD satellites: occlusion and lights
 CSatellitesLegion725The Legion 7.2.5 satellite: volumetric fogs
 CSatellitesBfaThe BfA satellite: particulate volumes
 CWDTA whole WDT (map description) for one client version: the main file and its era's satellite files unified as one entity
 NfogsThe _fogs.wdt volumetric-fog satellite entity (Legion 7.2.5+)
 Nchunks_fogs.wdt chunk binary structs (volumetric fogs and their extensions)
 CVolumetricFogOne volumetric fog (VFOG, 8.0+)
 CVolumetricFogExtraOne VFEX extension record (11.0+, format version 2): optional extra data for a VFOG entry, matched by fog id
 Ndetail
 CFogsBfaThe fog volumes, first shipped with content in 8.0.1.25902
 CFogsTwwThe version-2 extension records (11.0+)
 CWDTFogsA _fogs.wdt volumetric-fog satellite for one client version (Legion 7.2.5+)
 CWDTFogsBaseThe version-agnostic base of every WDTFogs<V> (welded as "WDTFogs"); bindings-only, like every *Base
 NlightsThe _lgt.wdt lights satellite entity (WoD+)
 Nchunks_lgt.wdt chunk binary structs (point lights, spot lights, light animations)
 CMapPointLightLegacyOne WoD point light (MPLT); Legion clients stop reading these in favor of MPL2
 CMapPointLightOne Legion point light (MPL2)
 CMapPointLight3One Shadowlands point light (MPL3; replaces MPL2 in 9.0+ files)
 CMapSpotLightOne Legion spot light (MSLT)
 CLightAnimationOne light texture animation (MLTA), referenced by mlta_index
 Ndetail
 CLightsWodThe WoD-only point lights, dropped when Legion introduces MPL2
 CLightsLegionThe Legion light set (point v2, spot, textures, animations)
 CLightsSLThe Shadowlands point-light revision
 CWDTLightsA _lgt.wdt lights satellite for one client version (WoD+): the map's freely placed lights
 CWDTLightsBaseThe version-agnostic base of every WDTLights<V> (welded as "WDTLights"); bindings-only, like every *Base
 NmpvThe _mpv.wdt particulate-volume satellite entity (BfA+)
 Nchunks_mpv.wdt chunk binary structs (particulate points and bounds)
 CParticulatePointOne PVPD particulate-volume point
 CParticulateBoundsOne PVBD particulate-volume bounds record
 Ndetail
 CWDTParticulatesA _mpv.wdt particulate-volume satellite for one client version (BfA 8.0.1+)
 CWDTParticulatesBaseThe version-agnostic base of every WDTParticulates<V> (welded as "WDTParticulates"); bindings-only, like every *Base
 NocclusionThe _occ.wdt occlusion satellite entity (WoD+)
 Nchunks_occ.wdt chunk binary structs (the MAOI tile index)
 COcclusionIndex
 Ndetail
 CWDTOcclusionA _occ.wdt occlusion satellite for one client version (WoD+): the MAOI tile index and the packed MAOH heightmap block
 CWDTOcclusionBaseThe version-agnostic base of every WDTOcclusion<V> (welded as "WDTOcclusion"); bindings-only, like every *Base
 NrootThe WDT main-file entity: WDTRoot and its per-version classes
 NchunksWDT main-file chunk binary structs (the MPHD map header, MAIN tile table, MAID FileDataIDs) and their flag enums
 NdetailThe 32-byte MPHD map header
 CSMMapHeader
 CSMMapHeader< V >The MPHD map header: the map-wide flags; the rest of the record is unused before 8.1
 CWDTHeaderBaseThe version-agnostic base of every SMMapHeader<V>, welded as "WDTHeader"
 CSMAreaInfo
 CMapFileDataIDs
 Ndetail
 CRoot818.1+ main-file chunks (the FileDataID era)
 CRoot909.0+ main-file chunks
 CWDTRootA WDT main file for one client version
 CWDTRootBaseThe version-agnostic base of every WDTRoot<V> (welded as "WDTRoot")
 CWDTBaseThe version-agnostic base of every WDT<V> (welded as "WDT")
 Nwmo
 Ndetail
 CWMOA whole WMO (world map object) for one client version: the root file and all its group files unified as one entity
 NgroupThe WMO group-file entities: WMOGroup, WMOGroupBody and their per-version classes
 NchunksWMO group-file chunk binary structs (the MOGP header, render batches, BSP nodes, group lights) and their flag enums
 NdetailOne render batch, 24 bytes
 CSMOBatch
 CSMOBatch< V >One MOBA render batch: an index range sharing one material, with its low-resolution culling box
 CSMOGroupHeader
 CSMOGroupHeader< V >The MOGP group header: names, flags, bounds, portal and batch ranges, fog and liquid
 CCAaBspNodeOne MOBN BSP node for collision: a split plane or a leaf referencing faces through MOBR
 CLightSet
 CMLIQData
 CPointLightOne MOLP point light (Legion+)
 CPointLightAnimOne MOP2 entry (8.1+): an animated point light with flicker and light-cookie texture data
 CPoly2
 CRenderBatchOverride
 CShadowBatchOne MOBS shadow batch (Cata+): the shadow-pass counterpart of a MOBA render batch
 CSMOLTile
 CSMOLVert
 CSMOMVert
 CSMOPolyPer-triangle material info (MOPY)
 CWMOBatchBaseThe version-agnostic base of every SMOBatch<V>, welded as "WMOBatch"
 CWMOGroupHeaderBaseThe version-agnostic base of every SMOGroupHeader<V>, welded as "WMOGroupHeader"
 Ndetail
 CGroupBodyCataCata+ (4.0) group-body chunks
 CGroupBodyMopMoP+ (5.0) group-body chunks
 CGroupBodyWodWoD+ (6.0) group-body chunks
 CGroupBodyLegionLegion+ (7.0.1) group-body chunks
 CGroupBody818.1+ group-body light-set chunks
 CGroupBody838.3+ group-body chunks
 CGroupBody909.0+ group-body chunks (large-mesh indices and the volume/light refs)
 CGroupBody10010.0+ (Dragonflight) group-body chunks: the query surface and the second vertex-color weights
 CWMOGroupBodyThe MOGP container payload for one client version
 CWMOGroupOne WMO group file for one client version: the format version (MVER) and the MOGP container holding the group's geometry
 CWMOGroupBodyBaseThe version-agnostic base of every WMOGroupBody<V> (welded as "WMOGroupBody")
 CWMOGroupBaseThe version-agnostic base of every WMOGroup<V> (welded as "WMOGroup")
 NrootThe WMO root-file entity: WMORoot and its per-version classes
 NchunksWMO root-file chunk binary structs (MOHD, MOMT, lights, doodads, fog, ambient volumes) and their flag enums
 CAmbientBoxVolumeOne MBVD entry (8.3+): a box-shaped ambient volume bounded by six planes
 CAmbientVolume
 CFogExtraOne MFED entry (9.0+): fog extra data; same count as MFOG
 CGroupInfo2
 CLightExtension
 CGradientOne directional gradient sample: a direction (usually axis-aligned) and its value
 CNewLight
 CPortalExtra
 CSMODoodadDefOne MODD doodad placement: an M2 instance inside the WMO, quaternion-oriented in model space
 CSMODoodadSet
 CSMOFogOne MFOG entry: a fog volume with regular and under-water settings
 CFogOne fog band: end distance, start scalar and color
 CSMOGroupInfoOne MOGI entry: per-group flags, bounds and name, mirrored from the group file's own header
 CSMOHeaderThe MOHD root header: entity counts, ambient color, bounds and root-wide flags
 CSMOLightOne MOLT light
 CSMOMaterial
 CSMOPortalOne MOPT portal: a polygon plane separating two groups
 CSMOPortalRefOne MOPR entry: a group's reference to a portal and the group on the other side
 CSMOVisibleBlock
 CUVAnimation
 Ndetail
 CRootLegionLegion+ (7.0.1) root chunks
 CRoot737.3+ root chunks
 CRootPre83Pre-8.3 root chunks: the by-name file-reference blocks
 CRoot818.1+ root chunks (the FileDataID chunks that replace name lookups)
 CRoot838.3+ root chunks (per-doodad colour + the volume family)
 CRoot909.0+ root chunks (fog/group v2, dynamic lights, detail doodads)
 CRoot919.1+ root chunks
 CRoot11011.0+ root chunks
 CRoot11111.1+ root chunks
 CWMORootA WMO (world map object) root file for one client version
 CWMORootBaseThe version-agnostic base of every WMORoot<V> (welded as "WMORoot")
 CWMOBaseThe version-agnostic base of every WMO<V> (welded as "WMO")
 CAbsentA distinct empty base per Trait, so an entity inheriting several inactive version slots never inherits the same empty type twice (ill-formed)
 CChunkBlobAn unparsed chunk payload, preserved verbatim for round-trip
 CChunkedFileThe serialization face of a chunked entity, mixed in CRTP-style: an entity struct E : ChunkedFile<E> carries the ChunkExtras bookkeeping and gains the read()/write() methods every file representation shares
 CChunkExtrasRound-trip bookkeeping common to every chunked entity: the encounter journal, unmodeled chunks, and stray trailing bytes
 CFileEntityBaseThe version-agnostic root of every file-level entity (welded as "FileEntity")
 CJournalEntryOne chunk encounter in file order — the write path replays the journal to reproduce the original byte layout exactly
 CRangeRowOne row of a family's welded range table: the alias suffix (stringized from the x-macro) and the range's canonical version
 CRepeatedStorage for a chunk that may appear up to N times in one entity (MOTV texcoord sets, MOCV vertex-color layers)
 CStringBlock
 CEntryOne decoded string and the blob byte offset other chunks reference it by
 CUnknownChunkA chunk the entity does not model, preserved verbatim for round-trip
 CValidationIssueOne validate() finding: where it is, how bad it is, and what is wrong
 CValidationReport
 CVersionTagTags the target version in convert_step overload signatures
 Nfs
 Ndetail
 CChainEntryOne base-tier row
 CChainMemberOne resolved member of a chain, in load order
 CFdidAllocatorMonotonic allocator for custom (non-Blizzard) FileDataIDs
 CMpqChainSpecA client version's archive chain: the fixed base tier plus how its patch tier is found
 CCascStorageLocal CASC storage
 COptionsWhat to open and how
 CClientFileSystemThe static composition of one client's file access: storage backend + listfile database + optional project-directory overlay
 CClientInstall
 CCsvListfileThe CSV-backed path<->FileDataID database ('fileDataId;filepath' per line, the community listfile format of github.com/wowdev/wow-listfile)
 CCsvListfileOptionsTuning knobs for loading a listfile
 CFileSystem
 CFileSystemSettings
 CMpqStorageMPQ chain storage
 COptionsWhat to open and how
 COpenedArchiveOne opened member of the chain, for introspection and tests
 CNullListfileThe no-database provider for clients that need none (MPQ-era)
 CProjectDirectoryA local directory acting as the ultimate patch: files here override every client archive, and new files are added here
 CClientVersion
 CErrorA wowlib operation failure: a machine-readable code, a human-readable message, and the originating native (StormLib/CascLib/OS) error value when one exists
 CFileDataID
 CFileKey