Пример #1
0
		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();
			}
		}
Пример #2
0
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;
}
Пример #3
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);
}
Пример #4
0
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));
}
Пример #6
0
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));
}
Пример #8
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;
}
Пример #9
0
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));
}
Пример #10
0
/**
 * 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);
}
Пример #13
0
// default nodes begin() accessor
SerialMesh::node_iterator
SerialMesh::nodes_begin ()
{
  Predicates::NotNull<node_iterator_imp> p;
  return node_iterator(_nodes.begin(), _nodes.end(), p);
}
Пример #14
0
// 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);
}
Пример #15
0
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);
}
Пример #17
0
// 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);
}
Пример #18
0
// 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);
}
Пример #20
0
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);
}
Пример #22
0
// 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);
}
Пример #25
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(NULL, this); }
Пример #26
0
// 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);
}