|
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] |