Fairport  v1.0.38
fairport::node_impl Class Reference

The node implementation. More...

#include <node.h>

+ Inheritance diagram for fairport::node_impl:
+ Collaboration diagram for fairport::node_impl:

List of all members.

Public Member Functions

 node_impl (const shared_db_ptr &db, const node_info &info)
 Constructor for top level nodes.
 node_impl (const std::tr1::shared_ptr< node_impl > &container_node, const subnode_info &info)
 Constructor for subnodes.
node_id get_id () const
 Get the id of this node.
block_id get_data_id () const
 Get the block_id of the data block of this node.
block_id get_sub_id () const
 Get the block_id of the subnode block of this node.
node_id get_parent_id () const
 Get the parent id.
bool is_subnode () const
 Tells you if this is a subnode.
std::tr1::shared_ptr< data_blockget_data_block () const
 Returns the data block associated with this node.
std::tr1::shared_ptr
< subnode_block
get_subnode_block () const
 Returns the subnode block associated with this node.
shared_db_ptr get_db () const
 Returns the database containing this node.
size_t read (std::vector< byte > &buffer, ulong offset) const
 Read data from this node.
template<typename T >
read (ulong offset) const
 Read data from this node.
size_t read (std::vector< byte > &buffer, uint page_num, ulong offset) const
 Read data from this node.
template<typename T >
read (uint page_num, ulong offset) const
 Read data from a specific block on this node.
size_t read_raw (byte *pdest_buffer, size_t size, ulong offset) const
 Read data from this node.
size_t size () const
 Returns the size of this node.
size_t get_page_size (uint page_num) const
 Returns the size of a page in this node.
uint get_page_count () const
 Returns the number of pages in this node.
const_subnodeinfo_iterator subnode_info_begin () const
 Returns an iterator positioned at first subnodeinfo.
const_subnodeinfo_iterator subnode_info_end () const
 Returns an iterator positioned past the last subnodeinfo.
node lookup (node_id id) const
 Lookup a subnode by node id.

Detailed Description

The node implementation.

The node class is really divided into two classes, node and node_impl. The purpose of this design is to allow a node to conceptually "outlive" the stack based object encapsulating it. This is necessary if subobjects are opened which still need to refer to their parent. This is accomplished in this case, like others, via having a thin stack based object (node) with a shared pointer to the implemenetation object (node_impl). Subnodes will grab a shared_ptr ref to the parents node_impl.

See the documentation for node to read more about what a node is.

The interface of node_impl follows closely that of node; differing mainly in the construction and destruction semantics plus the addition of some convenience functions.

Definition at line 61 of file node.h.


Constructor & Destructor Documentation

fairport::node_impl::node_impl ( const shared_db_ptr db,
const node_info info 
) [inline]

Constructor for top level nodes.

This constructor is specific to nodes defined in the NBT

Parameters:
[in]dbThe database context we're located in
[in]infoInformation about this node

Definition at line 69 of file node.h.

fairport::node_impl::node_impl ( const std::tr1::shared_ptr< node_impl > &  container_node,
const subnode_info info 
) [inline]

Constructor for subnodes.

This constructor is specific to nodes defined in other nodes

Parameters:
[in]container_nodeThe parent or containing node
[in]infoInformation about this node

Definition at line 77 of file node.h.


Member Function Documentation

std::tr1::shared_ptr<data_block> fairport::node_impl::get_data_block ( ) const [inline]

Returns the data block associated with this node.

Returns:
A shared pointer to the data block

Definition at line 104 of file node.h.

fairport::block_id fairport::node_impl::get_data_id ( ) const [inline]

Get the block_id of the data block of this node.

Returns:
The id

Definition at line 766 of file node.h.

shared_db_ptr fairport::node_impl::get_db ( ) const [inline]

Returns the database containing this node.

Returns:
A shared pointer to the database

Definition at line 113 of file node.h.

node_id fairport::node_impl::get_id ( ) const [inline]

Get the id of this node.

Returns:
The id

Definition at line 82 of file node.h.

fairport::uint fairport::node_impl::get_page_count ( ) const [inline]

Returns the number of pages in this node.

Note:
In this context, a "page" is an external block
Returns:
The number of pages

Definition at line 792 of file node.h.

size_t fairport::node_impl::get_page_size ( uint  page_num) const [inline]

Returns the size of a page in this node.

Note:
In this context, a "page" is an external block
Parameters:
[in]page_numThe page to get the size of
Returns:
The size of the page

Definition at line 787 of file node.h.

node_id fairport::node_impl::get_parent_id ( ) const [inline]

Get the parent id.

The parent id here is the field in the NBT. It is not the id of the container node, if any. Generally the parent id of a message will be a folder, etc.

Returns:
The id, zero if this is a subnode

Definition at line 96 of file node.h.

fairport::block_id fairport::node_impl::get_sub_id ( ) const [inline]

Get the block_id of the subnode block of this node.

Returns:
The id

Definition at line 774 of file node.h.

std::tr1::shared_ptr<subnode_block> fairport::node_impl::get_subnode_block ( ) const [inline]

Returns the subnode block associated with this node.

Returns:
A shared pointer to the subnode block

Definition at line 108 of file node.h.

bool fairport::node_impl::is_subnode ( ) const [inline]

Tells you if this is a subnode.

Returns:
true if this is a subnode, false otherwise

Definition at line 100 of file node.h.

fairport::node fairport::node_impl::lookup ( node_id  id) const [inline]

Lookup a subnode by node id.

Exceptions:
key_not_found<node_id>if a subnode with the specified node_id was not found
Parameters:
[in]idThe subnode id to find
Returns:
The subnode

Definition at line 1021 of file node.h.

size_t fairport::node_impl::read ( std::vector< byte > &  buffer,
ulong  offset 
) const [inline]

Read data from this node.

Fills the specified buffer with data starting at the specified offset. The size of the buffer indicates how much data to read.

Parameters:
[in,out]bufferThe buffer to fill
[in]offsetThe location to read from
Returns:
The amount of data read

Definition at line 797 of file node.h.

template<typename T >
T fairport::node_impl::read ( ulong  offset) const [inline]

Read data from this node.

Returns a "T" located as the specified offset

Template Parameters:
TThe type to read
Parameters:
[in]offsetThe location to read from
Returns:
The type read

Definition at line 808 of file node.h.

size_t fairport::node_impl::read ( std::vector< byte > &  buffer,
uint  page_num,
ulong  offset 
) const [inline]

Read data from this node.

Fills the specified buffer with data on the specified page at the specified offset. The size of teh buffer indicates how much data to read.

Note:
In this context, a "page" is an external block
Parameters:
[in,out]bufferThe buffer to fill
[in]page_numThe page to read from
[in]offsetThe location to read from
Returns:
The amount of data read

Definition at line 813 of file node.h.

template<typename T >
T fairport::node_impl::read ( uint  page_num,
ulong  offset 
) const [inline]

Read data from a specific block on this node.

Note:
In this context, a "page" is an external block
Template Parameters:
TThe type to read
Parameters:
[in]page_numThe block (ordinal) to read data from
[in]offsetThe offset into that block to read from
Returns:
The type read

Definition at line 819 of file node.h.

size_t fairport::node_impl::read_raw ( byte pdest_buffer,
size_t  size,
ulong  offset 
) const [inline]

Read data from this node.

Parameters:
[out]pdest_bufferThe location to read the data into
[in]sizeThe amount of data to read
[in]offsetThe location to read from
Returns:
The amount of data read

Definition at line 802 of file node.h.

size_t fairport::node_impl::size ( ) const [inline]

Returns the size of this node.

Returns:
The node size

Definition at line 782 of file node.h.

fairport::const_subnodeinfo_iterator fairport::node_impl::subnode_info_begin ( ) const [inline]

Returns an iterator positioned at first subnodeinfo.

Returns:
An iterator over subnodeinfos

Definition at line 1009 of file node.h.

fairport::const_subnodeinfo_iterator fairport::node_impl::subnode_info_end ( ) const [inline]

Returns an iterator positioned past the last subnodeinfo.

Returns:
An iterator over subnodeinfos

Definition at line 1015 of file node.h.


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