5 #ifndef BALL_STRUCTURE_GRAPHVERTEX_H
6 #define BALL_STRUCTURE_GRAPHVERTEX_H
12 #ifndef BALL_DATATYPE_HASHSET_H
19 template <
typename Vertex,
typename Edge,
typename Face>
22 template <
typename Vertex,
typename Edge,
typename Face>
25 template <
typename Vertex,
typename Edge,
typename Face>
31 template <
typename Vertex,
typename Edge,
typename Face>
189 virtual
bool operator == (const
Vertex&) const
195 virtual
bool operator != (const
Vertex&) const
201 virtual
bool operator *= (const
Vertex&) const
208 Face*
has(Face* face) const
215 Edge*
has(Edge* edge) const
274 template <typename
Vertex, typename Edge, typename Face>
284 template <
typename Vertex,
typename Edge,
typename Face>
300 template <
typename Vertex,
typename Edge,
typename Face>
307 template <
typename Vertex,
typename Edge,
typename Face>
324 template <
typename Vertex,
typename Edge,
typename Face>
332 faces_ = vertex.faces_;
333 index_ = vertex.index_;
339 template <
typename Vertex,
typename Edge,
typename Face>
347 template <
typename Vertex,
typename Edge,
typename Face>
355 template <
typename Vertex,
typename Edge,
typename Face>
363 template <
typename Vertex,
typename Edge,
typename Face>
371 template <
typename Vertex,
typename Edge,
typename Face>
375 return edges_.size();
379 template <
typename Vertex,
typename Edge,
typename Face>
383 return faces_.size();
387 template <
typename Vertex,
typename Edge,
typename Face>
395 template <
typename Vertex,
typename Edge,
typename Face>
403 template <
typename Vertex,
typename Edge,
typename Face>
407 if (*
this *= *vertex)
410 for (e = edges_.
begin(); e != edges_.
end(); e++)
412 (*e)->substitute((
Vertex*)
this,vertex);
415 for (f = faces_.
begin(); f != faces_.
end(); f++)
417 (*f)->substitute((
Vertex*)
this,vertex);
425 template <
typename Vertex,
typename Edge,
typename Face>
432 for (e = vertex.edges_.begin(); e != vertex.edges_.end(); e++)
437 for (f = vertex.faces_.begin(); f != vertex.faces_.end(); f++)
450 template <
typename Vertex,
typename Edge,
typename Face>
455 for (f = faces_.
begin(); f != faces_.
end(); f++)
466 template <
typename Vertex,
typename Edge,
typename Face>
471 for (e = edges_.
begin(); e != edges_.
end(); e++)
482 template <
typename Vertex,
typename Edge,
typename Face>
486 return !edges_.isEmpty();
490 template <
typename Vertex,
typename Edge,
typename Face>
494 return !faces_.isEmpty();
498 template <
typename Vertex,
typename Edge,
typename Face>
503 return edges_.begin();
507 template <
typename Vertex,
typename Edge,
typename Face>
512 return edges_.begin();
516 template <
typename Vertex,
typename Edge,
typename Face>
525 template <
typename Vertex,
typename Edge,
typename Face>
534 template <
typename Vertex,
typename Edge,
typename Face>
539 return faces_.begin();
543 template <
typename Vertex,
typename Edge,
typename Face>
548 return faces_.begin();
552 template <
typename Vertex,
typename Edge,
typename Face>
561 template <
typename Vertex,
typename Edge,
typename Face>
570 template <
typename Vertex,
typename Edge,
typename Face>
578 template <
typename Vertex,
typename Edge,
typename Face>
586 template <
typename Vertex,
typename Edge,
typename Face>
#define BALL_CREATE(name)
std::pair< Iterator, bool > insert(const ValueType &item)
void set(const GraphVertex< Vertex, Edge, Face > &vertex, bool deep=false)
virtual bool operator!=(const Vertex &) const
HashSet< Edge * >::Iterator EdgeIterator
bool substitute(Vertex *vertex)
void setIndex(Index index)
HashSet< Edge * >::ConstIterator ConstEdgeIterator
virtual bool operator==(const Vertex &) const
HashSet< Face * >::Iterator FaceIterator
HashSet< Face * >::ConstIterator ConstFaceIterator
virtual bool operator*=(const Vertex &) const
bool join(const Vertex &vertex)
Face * has(Face *face) const
Position numberOfEdges() const
Position numberOfFaces() const