Wdb2Header

Struct Wdb2Header 

Source
pub struct Wdb2Header {
Show 14 fields pub magic: [u8; 4], pub record_count: u32, pub field_count: u32, pub record_size: u32, pub string_block_size: u32, pub table_hash: u32, pub build: u32, pub timestamp: u32, pub min_index: i32, pub max_index: i32, pub locale: i32, pub copy_table_size: u32, pub has_extended_header: bool, pub index_array_size: u64,
}
Expand description

WDB2 header (Cataclysm 4.0+)

The WDB2 format was introduced in Cataclysm and has two variants:

  • Basic header (build <= 12880): 28 bytes
  • Extended header (build > 12880): 48 bytes + optional index arrays

Reference: https://wowdev.wiki/DB2 Reference: TrinityCore DB2StorageLoader.cpp

Fields§

§magic: [u8; 4]

The magic signature, should be “WDB2”

§record_count: u32

Number of records in the file

§field_count: u32

Number of fields in each record

§record_size: u32

Size of each record in bytes

§string_block_size: u32

Size of the string block in bytes

§table_hash: u32

Table hash

§build: u32

Build number

§timestamp: u32

Timestamp (only present in extended header)

§min_index: i32

Minimum ID in the file

§max_index: i32

Maximum ID in the file

§locale: i32

Locale flags

§copy_table_size: u32

Copy table size (unused in Cataclysm, always 0)

§has_extended_header: bool

Whether this header uses the extended format

§index_array_size: u64

Size of the index array section (to be skipped)

Implementations§

Source§

impl Wdb2Header

Source

pub const BASIC_SIZE: usize = 28

The size of a basic WDB2 header in bytes (build <= 12880)

Source

pub const EXTENDED_SIZE: usize = 48

The size of an extended WDB2 header in bytes (build > 12880)

Source

pub const EXTENDED_BUILD_THRESHOLD: u32 = 12880

Build number threshold for extended header format

Source

pub fn parse<R: Read + Seek>(reader: &mut R) -> Result<Self>

Parse a WDB2 header from a reader

This handles both the basic (build <= 12880) and extended (build > 12880) formats. For builds > 12880, also skips the index arrays if max_index != 0.

Source

pub fn to_dbc_header(&self) -> DbcHeader

Convert to a standard DBC header

Source

pub fn header_size(&self) -> u64

Calculates the size of the header including any index arrays

Source

pub fn record_data_offset(&self) -> u64

Calculates the offset to the record data

Source

pub fn string_block_offset(&self) -> u64

Calculates the offset to the string block

Source

pub fn total_size(&self) -> u64

Calculates the total size of the WDB2 file

Trait Implementations§

Source§

impl Clone for Wdb2Header

Source§

fn clone(&self) -> Wdb2Header

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Wdb2Header

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Wdb2Header

Source§

fn eq(&self, other: &Wdb2Header) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for Wdb2Header

Source§

impl StructuralPartialEq for Wdb2Header

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.