node_iterator node_data::end() { if(!m_isDefined) return node_iterator(); switch(m_type) { case NodeType::Sequence: return node_iterator(m_sequence.end()); case NodeType::Map: return node_iterator(m_map.end(), m_map.end()); default: return node_iterator(); } }
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; }
/** * Iterate over the children of the given node. * * @param heap argument to give to iterator * @param node node to iterate over * @param iterator function to call on each node * @param iterator_cls closure for iterator * @return GNUNET_YES to continue to iterate */ static int node_iterator (const struct GNUNET_CONTAINER_Heap *heap, struct GNUNET_CONTAINER_HeapNode *node, GNUNET_CONTAINER_HeapIterator iterator, void *iterator_cls) { if (node == NULL) return GNUNET_YES; if (GNUNET_YES != node_iterator (heap, node->left_child, iterator, iterator_cls)) return GNUNET_NO; if (GNUNET_YES != node_iterator (heap, node->right_child, iterator, iterator_cls)) return GNUNET_NO; return iterator (iterator_cls, node, node->element, node->cost); }
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)); }
PB_DS_CLASS_T_DEC inline typename PB_DS_CLASS_C_DEC::node_iterator PB_DS_CLASS_C_DEC:: node_begin() { return (node_iterator(m_p_head->m_p_parent)); }
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_iterator PB_DS_CLASS_C_DEC:: node_end() { return (node_iterator(0)); }
Node *FEMesh::closestNode(const double x, const double y, const double z=0) #endif { double min=1.; // (initial value provided to suppress compiler warnings) Node *node, *thenode=0; for(NodeIterator ni = node_iterator(); !ni.end(); ++ni) { node = ni.node(); double dx = node->position()(0) - x; double dy = node->position()(1) - y; #if DIM==2 double dist = dx*dx + dy*dy; #elif DIM==3 double dz = node->position()(2) - z; double dist = dx*dx + dy*dy + dz*dz; #endif if (ni.begin()) { min = dist; thenode = node; } else { if (dist <= min) { min = dist; thenode = node; } } } return thenode; }
inline void PB_DS_CLASS_C_DEC:: apply_update(node_pointer p_nd, Node_Update_* /*p_update*/) { Node_Update_::operator()(node_iterator(p_nd, this), const_node_iterator(NULL, this)); }
/** * Iterate over all entries in the heap. * * @param heap the heap * @param iterator function to call on each entry * @param iterator_cls closure for iterator */ void GNUNET_CONTAINER_heap_iterate (const struct GNUNET_CONTAINER_Heap *heap, GNUNET_CONTAINER_HeapIterator iterator, void *iterator_cls) { (void) node_iterator (heap, heap->root, iterator, iterator_cls); }
PB_DS_CLASS_T_DEC inline typename PB_DS_CLASS_C_DEC::node_iterator PB_DS_CLASS_C_DEC:: PB_DS_node_begin_imp() { return node_iterator(mid_pointer(begin(), end()), begin(), end(), (m_a_metadata == 0) ? 0 : mid_pointer(m_a_metadata, m_a_metadata + m_size)); }
PB_DS_CLASS_T_DEC inline typename PB_DS_CLASS_C_DEC::node_iterator PB_DS_CLASS_C_DEC:: PB_DS_node_end_imp() { return node_iterator(end(), end(), end(),(m_a_metadata == 0) ? 0 : m_a_metadata + m_size); }
// default nodes begin() accessor SerialMesh::node_iterator SerialMesh::nodes_begin () { Predicates::NotNull<node_iterator_imp> p; return node_iterator(_nodes.begin(), _nodes.end(), p); }
// pid nodes begin() accessor SerialMesh::node_iterator SerialMesh::pid_nodes_begin (const unsigned int proc_id) { Predicates::PID<node_iterator_imp> p(proc_id); return node_iterator(_nodes.begin(), _nodes.end(), p); }
node_iterator node::first_child() { assert(tixmlNode); return node_iterator( tixmlNode->FirstChildElement() ); }
// default nodes end() accessor ParallelMesh::node_iterator ParallelMesh::nodes_end () { Predicates::NotNull<node_iterator_imp> p; return node_iterator(_nodes.end(), _nodes.end(), p); }
// pid nodes end() accessor SerialMesh::node_iterator SerialMesh::pid_nodes_end (const processor_id_type proc_id) { Predicates::PID<node_iterator_imp> p(proc_id); return node_iterator(_nodes.end(), _nodes.end(), p); }
// local nodes begin() accessor SerialMesh::node_iterator SerialMesh::local_nodes_begin () { Predicates::Local<node_iterator_imp> p(this->processor_id()); return node_iterator(_nodes.begin(), _nodes.end(), p); }
// local nodes end() accessor ParallelMesh::node_iterator ParallelMesh::local_nodes_end () { Predicates::Local<node_iterator_imp> p(this->processor_id()); return node_iterator(_nodes.end(), _nodes.end(), p); }
node_iterator node::end_child() { return node_iterator(NULL); }
// pid nodes begin() accessor ParallelMesh::node_iterator ParallelMesh::pid_nodes_begin (processor_id_type proc_id) { Predicates::PID<node_iterator_imp> p(proc_id); return node_iterator(_nodes.begin(), _nodes.end(), p); }
// active nodes end() accessor SerialMesh::node_iterator SerialMesh::active_nodes_end () { Predicates::Active<node_iterator_imp> p; return node_iterator(_nodes.end(), _nodes.end(), p); }
// bid nodes end() accessor ParallelMesh::node_iterator ParallelMesh::bid_nodes_end (boundary_id_type bndry_id) { Predicates::BID<node_iterator_imp> p(bndry_id, this->get_boundary_info()); return node_iterator(_nodes.end(), _nodes.end(), p); }
// bnd nodes end() accessor ParallelMesh::node_iterator ParallelMesh::bnd_nodes_end () { Predicates::BND<node_iterator_imp> p(this->get_boundary_info()); return node_iterator(_nodes.end(), _nodes.end(), p); }
PB_DS_CLASS_T_DEC inline typename PB_DS_CLASS_C_DEC::node_iterator PB_DS_CLASS_C_DEC:: node_end() { return node_iterator(NULL, this); }
// local nodes end() accessor SerialMesh::node_iterator SerialMesh::local_nodes_end () { Predicates::Local<node_iterator_imp> p; return node_iterator(_nodes.end(), _nodes.end(), p); }
// active nodes begin() accessor ParallelMesh::node_iterator ParallelMesh::active_nodes_begin () { Predicates::Active<node_iterator_imp> p; return node_iterator(_nodes.begin(), _nodes.end(), p); }