Fairport
v1.0.38
|
Contains the definition of all in memory representations of disk structures. More...
Namespaces | |
namespace | detail |
namespace | disk |
Contains the definition of all structures as persisted to disk. | |
Classes | |
class | hid_stream_device |
Defines a stream device for a heap allocation for use by boost iostream. More... | |
class | heap_impl |
The HN implementation. More... | |
class | heap |
Heap-on-Node implementation. More... | |
class | bth_node |
The object which forms the root of the BTH hierarchy. More... | |
class | bth_nonleaf_node |
Contains references to other bth_node allocations. More... | |
class | bth_leaf_node |
Contains the actual key value pairs of the BTH. More... | |
class | named_prop |
A named property. More... | |
class | name_id_map |
A named property map abstraction. More... | |
class | hnid_stream_device |
Defines a stream device which can wrap one of the two prop sources. More... | |
class | const_property_object |
Property object base class. More... | |
class | property_bag |
Property Context (PC) Implementation. More... | |
class | const_table_row |
An abstraction of a table row. More... | |
class | const_table_row_iter |
The iterator type exposed by the table for row iteration. More... | |
class | table_impl |
Table implementation. More... | |
class | empty_table |
Null table implementation. More... | |
class | basic_table |
Implementation of an ANSI TC (64k rows) and a unicode TC. More... | |
class | table |
The actual table object that clients reference. More... | |
class | database_impl |
PST implementation. More... | |
struct | block_info |
An in memory, database format agnostic version of disk::bbt_leaf_entry. More... | |
struct | page_info |
An in memory, database format agnostic version of disk::block_reference used specifically for the page class hierarchy. More... | |
struct | node_info |
An in memory, database format agnostic version of disk::nbt_leaf_entry. More... | |
struct | subnode_info |
An in memory, database format agnostic version of disk::sub_leaf_entry. More... | |
class | db_context |
Database external interface. More... | |
class | node_impl |
The node implementation. More... | |
class | subnode_transform_info |
Defines a transform from a subnode_info to an actual node object. More... | |
class | node_stream_device |
Defines a stream device for a node for use by boost iostream. More... | |
class | node |
An in memory representation of the "node" concept in a PST data file. More... | |
class | block |
The base class of the block class hierarchy. More... | |
class | data_block |
A block which represents end user data. More... | |
class | extended_block |
A data block which refers to other data blocks, in order to extend the physical size limit (8k) to a larger logical size. More... | |
class | external_block |
Contains actual data. More... | |
class | subnode_block |
A block which contains information about subnodes. More... | |
class | subnode_nonleaf_block |
Contains references to subnode_leaf_blocks. More... | |
class | subnode_leaf_block |
Contains the actual subnode information. More... | |
class | page |
Generic base class for all page typesA page which forms a node in the NBT or BBT. More... | |
class | bt_page |
class | bt_nonleaf_page |
Contains references to other bt_pages. More... | |
class | bt_leaf_page |
Contains the actual key value pairs of the btree. More... | |
class | contact |
Encapsulates a contact. More... | |
class | search_folder |
Search Folder object. More... | |
class | folder |
A folder in a PST file. More... | |
class | attachment |
Encapsulates an attachment to a message. More... | |
class | attachment_transform |
Defines a transform from a row to an attachment object. More... | |
class | recipient |
A recipient of a message. More... | |
struct | recipient_transform |
Defines a transform from a row to a recipient object. More... | |
class | message |
Represents a message in a PST file. More... | |
class | pst |
A PST file. More... | |
class | task |
Encapsulates a task. More... | |
class | btree_node |
A BTree Node. More... | |
class | btree_node_leaf |
Represents a leaf node in a BTree structure. More... | |
class | btree_node_nonleaf |
Represents a non-leaf node in a BTree structure. More... | |
struct | btree_iter_impl |
BTree iterator helper class. More... | |
class | const_btree_node_iter |
The actual iterator type used by the btree_node class hierarchy. More... | |
class | not_implemented |
This function or method has not been implemented. More... | |
class | database_corrupt |
The database is corrupt. More... | |
class | invalid_format |
The database was not in the expected format. More... | |
class | unexpected_page |
An unexpected page or page type was encountered. More... | |
class | unexpected_block |
An unexpected block or block type was encountered. More... | |
class | crc_fail |
A CRC of an item failed. More... | |
class | sig_mismatch |
An unexpected signature was encountered. More... | |
class | key_not_found |
The requested key was not found. More... | |
struct | guid |
A Win32 GUID structure. More... | |
class | file |
A generic class to read and write to a file. More... | |
Typedefs | |
typedef std::tr1::shared_ptr < heap_impl > | heap_ptr |
typedef boost::iostreams::stream < hid_stream_device > | hid_stream |
The actual heap allocation stream, defined using the boost iostream library and the hid_stream_device. | |
typedef boost::iostreams::stream < hnid_stream_device > | prop_stream |
The actual property stream, defined using the boost iostream library and the hnid_stream_device. | |
typedef bth_node< prop_id, disk::prop_entry > | pc_bth_node |
typedef bth_nonleaf_node < prop_id, disk::prop_entry > | pc_bth_nonleaf_node |
typedef bth_leaf_node< prop_id, disk::prop_entry > | pc_bth_leaf_node |
typedef std::tr1::shared_ptr < table_impl > | table_ptr |
typedef std::tr1::shared_ptr < const table_impl > | const_table_ptr |
typedef basic_table< ushort > | small_table |
typedef basic_table< ulong > | large_table |
typedef database_impl< ulonglong > | large_pst |
typedef database_impl< ulong > | small_pst |
typedef bt_page< node_id, node_info > | nbt_page |
typedef bt_page< block_id, block_info > | bbt_page |
typedef bt_nonleaf_page < node_id, node_info > | nbt_nonleaf_page |
typedef bt_nonleaf_page < block_id, block_info > | bbt_nonleaf_page |
typedef bt_leaf_page< node_id, node_info > | nbt_leaf_page |
typedef bt_leaf_page< block_id, block_info > | bbt_leaf_page |
typedef const_btree_node_iter < node_id, node_info > | const_nodeinfo_iterator |
typedef const_btree_node_iter < node_id, subnode_info > | const_subnodeinfo_iterator |
typedef const_btree_node_iter < block_id, block_info > | const_blockinfo_iterator |
typedef std::tr1::shared_ptr < db_context > | shared_db_ptr |
typedef std::tr1::weak_ptr < db_context > | weak_db_ptr |
typedef boost::iostreams::stream < node_stream_device > | node_stream |
The actual node stream, defined using the boost iostream library and the node_stream_device. | |
typedef detail::item_transform_row < contact > | contact_transform_row |
typedef detail::item_transform_row < folder > | folder_transform_row |
typedef detail::item_transform_row < search_folder > | search_folder_transform_row |
typedef detail::item_transform_info < folder > | folder_transform_info |
typedef detail::item_transform_row < message > | message_transform_row |
typedef detail::item_transform_info < message > | message_transform_info |
typedef detail::item_transform_row < task > | task_transform_row |
typedef boost::uint32_t | uint |
typedef boost::uint32_t | ulong |
typedef boost::int32_t | slong |
typedef boost::uint64_t | ulonglong |
typedef boost::int64_t | slonglong |
typedef boost::uint8_t | byte |
typedef boost::uint16_t | ushort |
typedef ulong | node_id |
typedef ulonglong | block_id |
typedef block_id | page_id |
typedef ulong | heap_id |
typedef ulong | heapnode_id |
typedef ushort | prop_id |
typedef ulong | row_id |
Enumerations | |
enum | nid_type { nid_type_none = 0x00, nid_type_internal = 0x01, nid_type_folder = 0x02, nid_type_search_folder = 0x03, nid_type_message = 0x04, nid_type_attachment = 0x05, nid_type_search_update_queue = 0x06, nid_type_search_criteria_object = 0x07, nid_type_associated_message = 0x08, nid_type_storage = 0x09, nid_type_contents_table_index = 0x0A, nid_type_receive_folder_table = 0x0B, nid_type_outgoing_queue_table = 0x0C, nid_type_hierarchy_table = 0x0D, nid_type_contents_table = 0x0E, nid_type_associated_contents_table = 0x0F, nid_type_search_contents_table = 0x10, nid_type_attachment_table = 0x11, nid_type_recipient_table = 0x12, nid_type_search_table_index = 0x13, nid_type_contents_smp = 0x14, nid_type_associated_contents_smp = 0x15, nid_type_change_history_table = 0x16, nid_type_tombstone_table = 0x17, nid_type_tombstone_date_table = 0x18, nid_type_lrep_dups_table = 0x19, nid_type_folder_path_tombstone_table = 0x1A, nid_type_ltp = 0x1F, nid_type_max = 0x20 } |
Different node types found in a PST file. More... | |
enum | predefined_nid { nid_message_store = make_nid(nid_type_internal, 0x1), nid_name_id_map = make_nid(nid_type_internal, 0x3), nid_normal_folder_template = make_nid(nid_type_folder, 0x6), nid_search_folder_template = make_nid(nid_type_search_folder, 0x7), nid_root_folder = make_nid(nid_type_folder, 0x9), nid_search_management_queue = make_nid(nid_type_internal, 0xF), nid_search_activity_list = make_nid(nid_type_internal, 0x10), nid_search_domain_alternative = make_nid(nid_type_internal, 0x12), nid_search_domain_object = make_nid(nid_type_internal, 0x13), nid_search_gatherer_queue = make_nid(nid_type_internal, 0x14), nid_search_gatherer_descriptor = make_nid(nid_type_internal, 0x15), nid_table_rebuild_queue = make_nid(nid_type_internal, 0x17), nid_junk_mail_pihsl = make_nid(nid_type_internal, 0x18), nid_search_gatherer_folder_queue = make_nid(nid_type_internal, 0x19), nid_tc_sub_props = make_nid(nid_type_internal, 0x27), nid_index_template = 0x30, nid_hierarchy_table_template = make_nid(nid_type_hierarchy_table, nid_index_template), nid_contents_table_template = make_nid(nid_type_contents_table, nid_index_template), nid_associated_contents_table_template = make_nid(nid_type_associated_contents_table, nid_index_template), nid_search_contents_table_template = make_nid(nid_type_search_contents_table, nid_index_template), nid_smp_template = make_nid(nid_type_contents_smp, nid_index_template), nid_tombstone_table_template = make_nid(nid_type_tombstone_table, nid_index_template), nid_lrep_dups_table_template = make_nid(nid_type_lrep_dups_table, nid_index_template), nid_receive_folders = make_nid(nid_type_receive_folder_table, 0x31), nid_outgoing_queue = make_nid(nid_type_outgoing_queue_table, 0x32), nid_attachment_table = make_nid(nid_type_attachment_table, 0x33), nid_recipient_table = make_nid(nid_type_recipient_table, 0x34), nid_change_history_table = make_nid(nid_type_change_history_table, 0x35), nid_tombstone_table = make_nid(nid_type_tombstone_table, 0x36), nid_tombstone_date_table = make_nid(nid_type_tombstone_date_table, 0x37), nid_all_message_search_folder = make_nid(nid_type_search_folder, 0x39), nid_all_message_search_contents = make_nid(nid_type_search_contents_table, 0x39), nid_lrep_gmp = make_nid(nid_type_internal, 0x40), nid_lrep_folders_smp = make_nid(nid_type_internal, 0x41), nid_lrep_folders_table = make_nid(nid_type_internal, 0x42), nid_folder_path_tombstone_table = make_nid(nid_type_internal, 0x43), nid_hst_hmp = make_nid(nid_type_internal, 0x60), nid_index_prv_pub_base = 0x100, nid_pub_root_folder = make_prv_pub_nid(0), nid_prv_root_folder = make_prv_pub_nid(5), nid_criterr_notification = make_nid(nid_type_internal, 0x3FD), nid_object_notification = make_nid(nid_type_internal, 0x3FE), nid_newemail_notification = make_nid(nid_type_internal, 0x3FF), nid_extended_notification = make_nid(nid_type_internal, 0x400), nid_indexing_notification = make_nid(nid_type_internal, 0x401) } |
The predefined nodes in a PST/OST file. More... | |
enum | prop_type { prop_type_unspecified = 0, prop_type_null = 1, prop_type_short = 2, prop_type_mv_short = 4098, prop_type_long = 3, prop_type_mv_long = 4099, prop_type_float = 4, prop_type_mv_float = 4100, prop_type_double = 5, prop_type_mv_double = 4101, prop_type_currency = 6, prop_type_mv_currency = 4102, prop_type_apptime = 7, prop_type_mv_apptime = 4103, prop_type_error = 10, prop_type_boolean = 11, prop_type_object = 13, prop_type_longlong = 20, prop_type_mv_longlong = 4116, prop_type_string = 30, prop_type_mv_string = 4126, prop_type_wstring = 31, prop_type_mv_wstring = 4127, prop_type_systime = 64, prop_type_mv_systime = 4160, prop_type_guid = 72, prop_type_mv_guid = 4168, prop_type_binary = 258, prop_type_mv_binary = 4354 } |
The different property types as defined by MAPI. More... | |
enum | recipient_type { mapi_to = 1, mapi_cc = 2, mapi_bcc = 3 } |
The different recipient types as defined by MAPI. More... | |
Functions | |
template<> | |
boost::posix_time::ptime | const_property_object::read_prop< boost::posix_time::ptime > (prop_id id) const |
template<> | |
std::vector < boost::posix_time::ptime > | const_property_object::read_prop_array< boost::posix_time::ptime > (prop_id id) const |
template<> | |
std::vector< byte > | const_property_object::read_prop< std::vector< byte > > (prop_id id) const |
template<> | |
std::vector< std::vector< byte > > | const_property_object::read_prop_array< std::vector< byte > > (prop_id id) const |
template<> | |
std::wstring | const_property_object::read_prop< std::wstring > (prop_id id) const |
template<> | |
std::vector< std::wstring > | const_property_object::read_prop_array< std::wstring > (prop_id id) const |
template<> | |
std::string | const_property_object::read_prop< std::string > (prop_id id) const |
template<> | |
std::vector< std::string > | const_property_object::read_prop_array< std::string > (prop_id id) const |
table_ptr | open_table (const node &n) |
Open the specified node as a table. | |
shared_db_ptr | open_database (const std::wstring &filename) |
Open a db_context for the given file. | |
std::tr1::shared_ptr< small_pst > | open_small_pst (const std::wstring &filename) |
Try to open the given file as an ANSI store. | |
std::tr1::shared_ptr< large_pst > | open_large_pst (const std::wstring &filename) |
Try to open the given file as a Unicode store. | |
std::ostream & | operator<< (std::ostream &out, const attachment &attach) |
operator<< overload for writing an attachment to an ostream | |
std::vector< byte > | calculate_entry_id (const shared_db_ptr &db, node_id nid) |
Construct a MAPI entry id from a given nid. | |
nid_type | get_nid_type (node_id id) |
Get a node type from a node id. | |
ulong | get_nid_index (node_id id) |
Get a node index from a node id. | |
ulong | get_heap_page (heap_id id) |
Get the heap page from the heap id. | |
ulong | get_heap_index (heap_id id) |
Get the index from the heap id. | |
heap_id | make_heap_id (ulong page, ulong index) |
Create a heap_id from a page and an index. | |
bool | is_heap_id (heapnode_id id) |
Inspects a heapnode_id (also known as a HNID) to determine if it is a heap_id (HID) | |
bool | is_subnode_id (heapnode_id id) |
Inspects a heapnode_id (also known as a HNID) to determine if it is a node_id (NID) | |
time_t | filetime_to_time_t (ulonglong filetime) |
Convert from a filetime to time_t. | |
ulonglong | time_t_to_filetime (time_t time) |
Convert from a time_t to filetime. | |
time_t | vt_date_to_time_t (double vt_time) |
Convert from a VT_DATE to a time_t. | |
double | time_t_to_vt_date (time_t time) |
Convert from a time_t to a VT_DATE. | |
bool | test_bit (const byte *pbytes, ulong bit) |
Test to see if the specified bit in the buffer is set. | |
std::wstring | codepage_1252_to_wstring (const std::string &cp1252) |
Convert a codepage 1252 string to a std::wstring. | |
std::wstring | bytes_to_wstring (const std::vector< byte > &bytes) |
Convert an array of bytes to a std::wstring. | |
std::vector< byte > | wstring_to_bytes (const std::wstring &wstr) |
Convert a std::wstring to an array of bytes. | |
Variables | |
const ulong | nid_type_mask = 0x1FL |
The portion of a node_id reserved for the type. | |
const byte | message_subject_prefix_lead_byte = 0x01 |
A sentinel byte which indicates the message subject contains a prefix. | |
const guid | ps_none = { 0, 0, 0, { 0, 0, 0, 0, 0, 0, 0, 0 } } |
The NULL guid. | |
const guid | ps_mapi = { 0x20328, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } } |
The PS_MAPI guid. | |
const guid | ps_public_strings = { 0x20329, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } } |
The PS_PUBLIC_STRINGS guid. | |
const guid | ps_task = { 0x62003, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } } |
The PSETID_Task guid. | |
const guid | ps_contact = { 0x62004, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } } |
The PSETID_Address guid. | |
const std::wstring | task_class = "IPM.Task" |
Message class for Task Items. | |
const std::wstring | contact_class = "IPM.Contact" |
Message class for Contact Items. |
Contains the definition of all in memory representations of disk structures.
Definition at line 79 of file database_iface.h.
Definition at line 74 of file database_iface.h.
typedef bt_page<block_id, block_info> fairport::bbt_page |
Definition at line 69 of file database_iface.h.
typedef std::tr1::shared_ptr<heap_impl> fairport::heap_ptr |
typedef database_impl<ulonglong> fairport::large_pst |
Definition at line 31 of file database.h.
typedef basic_table<ulong> fairport::large_table |
typedef bt_leaf_page<node_id, node_info> fairport::nbt_leaf_page |
Definition at line 77 of file database_iface.h.
Definition at line 72 of file database_iface.h.
typedef bt_page<node_id, node_info> fairport::nbt_page |
Definition at line 67 of file database_iface.h.
typedef database_impl<ulong> fairport::small_pst |
Definition at line 33 of file database.h.
typedef basic_table<ushort> fairport::small_table |
boost::posix_time::ptime fairport::const_property_object::read_prop< boost::posix_time::ptime > | ( | prop_id | id | ) | const [inline] |
std::string fairport::const_property_object::read_prop< std::string > | ( | prop_id | id | ) | const [inline] |
std::wstring fairport::const_property_object::read_prop< std::wstring > | ( | prop_id | id | ) | const [inline] |
std::vector<boost::posix_time::ptime> fairport::const_property_object::read_prop_array< boost::posix_time::ptime > | ( | prop_id | id | ) | const [inline] |
std::vector<std::string> fairport::const_property_object::read_prop_array< std::string > | ( | prop_id | id | ) | const [inline] |