6#ifndef PSTSDK_LTP_PROPBAG_H
7#define PSTSDK_LTP_PROPBAG_H
62#ifndef BOOST_NO_RVALUE_REFERENCES
70 {
return (
prop_type)m_pbth->lookup(
id).type; }
86 byte get_value_1(
prop_id id)
const
87 {
return (
byte)m_pbth->lookup(
id).id; }
89 {
return (
ushort)m_pbth->lookup(
id).id; }
91 {
return (
ulong)m_pbth->lookup(
id).id; }
94 void get_prop_list_impl(std::vector<prop_id>& proplist,
const pc_bth_node* pbth_node)
const;
96 std::shared_ptr<pc_bth_node> m_pbth;
117#ifdef PSTSDK_VALIDATION_LEVEL_WEAK
129#ifdef PSTSDK_VALIDATION_LEVEL_WEAK
157 get_prop_list_impl(
proplist, m_pbth.get());
176 for(
uint i = 0; i < pnonleaf->num_values(); ++i)
177 get_prop_list_impl(proplist, pnonleaf->get_child(i));
198 std::vector<byte>
buffer = get_value_variable(
id);
210 node sub(m_pbth->get_node().lookup(
h_id));
228 return node(m_pbth->get_node().lookup(
h_id)).size();
230 return m_pbth->get_heap_ptr()->
size(
h_id);
The object which forms the root of the BTH hierarchy.
const heap_ptr get_heap_ptr() const
Returns the heap this bth_node is in.
heap_id get_id() const
Return the heap_id of this bth_node.
ushort get_level() const
Return the leve of this bth_node.
const node & get_node() const
Get the node underlying this BTH.
Contains references to other bth_node allocations.
const K & get_key(uint pos) const
Returns the key at the specified position.
uint num_values() const
Returns the number of entries in this btree_node.
const V & lookup(const K &key) const
Looks up the associated value for a given key.
Property object base class.
Heap-on-Node implementation.
Defines a stream device which can wrap one of the two prop sources.
An in memory representation of the "node" concept in a PST data file.
size_t read(std::vector< byte > &buffer, ulong offset) const
Read data from this node.
size_t size() const
Returns the size of this node.
Property Context (PC) Implementation.
node & get_node()
Get the node underlying this property_bag.
prop_type get_prop_type(prop_id id) const
Get the property type of a given prop_id.
const node & get_node() const
Get the node underlying this property_bag.
property_bag(const node &n)
Construct a property_bag from this node.
bool prop_exists(prop_id id) const
Indicates the existance of a given property on this object.
std::vector< byte > get_value_variable(prop_id id) const
Implemented by child classes to fetch a variable sized property.
property_bag(property_bag &&other)
Move construct a property_bag.
hnid_stream_device open_prop_stream(prop_id id)
Creates a stream device over a property on this object.
std::vector< prop_id > get_prop_list() const
Get a list of all properties on this object.
size_t size(prop_id id) const
Returns the total size of a variable length property.
An unexpected signature was encountered.
The exceptions used by pstsdk.
boost::uint64_t ulonglong
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)
prop_type
The different property types as defined by MAPI.
Heap-on-Node (HN) and BTree-on-Heap (BTH) implementation.
Contains the definition of all in memory representations of disk structures.
bth_node< prop_id, disk::prop_entry > pc_bth_node
bth_nonleaf_node< prop_id, disk::prop_entry > pc_bth_nonleaf_node
bth_leaf_node< prop_id, disk::prop_entry > pc_bth_leaf_node
Node and Block definitions.
Property access base class.
Primitive structures defined by MS-PST and MAPI.
Tag structure used to indicate a copy constructed class should be an alias (shallow copy) rather than...
The value type of the BTH backing a pc.