inline void PB_DS_CLASS_C_DEC:: apply_update(node_pointer p_nd, Node_Update_*) { Node_Update_::operator()(node_iterator(p_nd, this), node_const_iterator(0, this)); }
inline void PB_DS_CLASS_C_DEC:: apply_update(node_pointer p_nd, Node_Update_* /*p_update*/) { node_update::operator()(node_iterator(p_nd), node_const_iterator(static_cast<node_pointer>(0))); }
PB_DS_CLASS_T_DEC inline typename PB_DS_CLASS_C_DEC::node_const_iterator PB_DS_CLASS_C_DEC:: PB_DS_node_end_imp() const { return node_const_iterator(end(), end(), end(), (m_a_metadata == 0) ? 0 : m_a_metadata + m_size); }
PB_DS_CLASS_T_DEC inline typename PB_DS_CLASS_C_DEC::node_const_iterator PB_DS_CLASS_C_DEC:: PB_DS_node_begin_imp() const { return node_const_iterator(const_cast<pointer>(mid_pointer(begin(), end())), const_cast<pointer>(begin()), const_cast<pointer>(end()),(m_a_metadata == 0)? 0 : mid_pointer(m_a_metadata, m_a_metadata + m_size)); }
int main() { std::auto_ptr<node<int> > nodes(new node<int>(42)); nodes->append(new node<std::string>(" is greater than ")); nodes->append(new node<int>(13)); // Check interoperability assert(node_iterator(nodes.get()) == node_const_iterator(nodes.get())); assert(node_const_iterator(nodes.get()) == node_iterator(nodes.get())); assert(node_iterator(nodes.get()) != node_const_iterator()); assert(node_const_iterator(nodes.get()) != node_iterator()); std::copy( node_iterator(nodes.get()), node_iterator() , std::ostream_iterator<node_base>(std::cout, " ") ); std::cout << std::endl; std::for_each( node_iterator(nodes.get()), node_iterator() , boost::mem_fn(&node_base::double_me) ); std::copy( node_const_iterator(nodes.get()), node_const_iterator() , std::ostream_iterator<node_base>(std::cout, "/") ); std::cout << std::endl; return 0; }
PB_DS_CLASS_T_DEC inline typename PB_DS_CLASS_C_DEC::node_const_iterator PB_DS_CLASS_C_DEC:: node_begin() const { return node_const_iterator(m_p_head->m_p_parent, this); }
PB_DS_CLASS_T_DEC inline typename PB_DS_CLASS_C_DEC::node_const_iterator PB_DS_CLASS_C_DEC:: node_end() const { return node_const_iterator(0, this); }