PST File Format SDK v0.4
Loading...
Searching...
No Matches
pstsdk::disk::bt_page< T, EntryType > Struct Template Reference

The fundamental page structure which forms the basis of the two BTrees. More...

#include <disk.h>

+ Inheritance diagram for pstsdk::disk::bt_page< T, EntryType >:
+ Collaboration diagram for pstsdk::disk::bt_page< T, EntryType >:

Public Attributes

union { 
 
   EntryType   entries [max_entries
 
   byte   _ignore [extra_space
 
};  
 
byte num_entries
 Number of entries on this page.
 
byte num_entries_max
 Maximum number of entries on this page.
 
byte entry_size
 The size of each entry.
 
byte level
 The level of this page. A level of zero indicates a leaf.
 
page_trailer< T > trailer
 The page trailer.
 

Static Public Attributes

static const size_t extra_space = page<T>::page_data_size - (sizeof(T) * sizeof(byte))
 
static const size_t max_entries = extra_space / sizeof(EntryType)
 Maximum number of entries on a page.
 

Detailed Description

template<typename T, typename EntryType>
struct pstsdk::disk::bt_page< T, EntryType >

The fundamental page structure which forms the basis of the two BTrees.

Generally speaking, the generic form of a BTree page contains a fixed array of entries, followed by metadata about those entries and the page. The entry type (and entry size, and thus the max number of entries) varies between NBT and BBT pages.

Template Parameters
Tulonglong for a unicode store, ulong for an ANSI store
EntryTypeThe type of entry on this page. In practice either a bbt_leaf_entry, nbt_leaf_entry, or bt_entry
See also
[MS-PST] 2.2.2.7.7.1

Definition at line 850 of file disk.h.

Member Data Documentation

◆ [union]

union { ... } pstsdk::disk::bt_page< T, EntryType >

◆ _ignore

template<typename T , typename EntryType >
byte pstsdk::disk::bt_page< T, EntryType >::_ignore[extra_space]

Definition at line 857 of file disk.h.

◆ entries

template<typename T , typename EntryType >
EntryType pstsdk::disk::bt_page< T, EntryType >::entries[max_entries]

Definition at line 856 of file disk.h.

◆ entry_size

template<typename T , typename EntryType >
byte pstsdk::disk::bt_page< T, EntryType >::entry_size

The size of each entry.

Definition at line 862 of file disk.h.

◆ extra_space

template<typename T , typename EntryType >
const size_t pstsdk::disk::bt_page< T, EntryType >::extra_space = page<T>::page_data_size - (sizeof(T) * sizeof(byte))
static

Definition at line 852 of file disk.h.

◆ level

template<typename T , typename EntryType >
byte pstsdk::disk::bt_page< T, EntryType >::level

The level of this page. A level of zero indicates a leaf.

Definition at line 863 of file disk.h.

◆ max_entries

template<typename T , typename EntryType >
const size_t pstsdk::disk::bt_page< T, EntryType >::max_entries = extra_space / sizeof(EntryType)
static

Maximum number of entries on a page.

Definition at line 853 of file disk.h.

◆ num_entries

template<typename T , typename EntryType >
byte pstsdk::disk::bt_page< T, EntryType >::num_entries

Number of entries on this page.

Definition at line 860 of file disk.h.

◆ num_entries_max

template<typename T , typename EntryType >
byte pstsdk::disk::bt_page< T, EntryType >::num_entries_max

Maximum number of entries on this page.

Definition at line 861 of file disk.h.

◆ trailer

template<typename T , typename EntryType >
page_trailer<T> pstsdk::disk::bt_page< T, EntryType >::trailer

The page trailer.

Definition at line 865 of file disk.h.


The documentation for this struct was generated from the following file: