FEDRA emulsion software from the OPERA Collaboration
VERTEX::RelationList Class Reference

#include <VtRelationList.hh>

Inheritance diagram for VERTEX::RelationList:

Public Types

typedef ConstRelationIterator const_iterator
 
typedef ConstReverseRelationIterator const_reverse_iterator
 
typedef RelationIterator iterator
 
typedef ReverseRelationIterator reverse_iterator
 

Public Member Functions

— Constructors —
 RelationList ()
 
virtual ~RelationList ()
 
— Access functions —
virtual void clear ()
 clear all relations More...
 
void push__back (Relation *rel)
 add a relation More...
 
Relationback () const
 return last relation More...
 
unsigned int size () const
 return no of relations More...
 
virtual const iterator erase (const iterator &pos)
 Erase an element. More...
 
— Iterator methods —
iterator begin ()
 
iterator end ()
 
const_iterator begin () const
 
const_iterator end () const
 
reverse_iterator rbegin ()
 
reverse_iterator rend ()
 
const_reverse_iterator rbegin () const
 
const_reverse_iterator rend () const
 
Relation *const operator[] (unsigned int i) const
 direct access More...
 

— Expert functions —

Relation_v rellist
 
void print (std::ostream &os) const
 
void unbook (Relation *const rel)
 get rid of relation pointer More...
 
virtual void remove (Relation *const rel)
 remove a relation More...
 
const RelationListoperator= (const RelationList &rhs)
 
bool operator== (const RelationList &rhs) const
 

Detailed Description

Relation container class

Member Typedef Documentation

◆ const_iterator

◆ const_reverse_iterator

◆ iterator

◆ reverse_iterator

Constructor & Destructor Documentation

◆ RelationList()

VERTEX::RelationList::RelationList ( )
50{}

◆ ~RelationList()

VERTEX::RelationList::~RelationList ( )
virtual
52{ clear(); }
virtual void clear()
clear all relations
Definition: VtRelationList.C:57

Member Function Documentation

◆ back()

Relation * VERTEX::RelationList::back ( ) const
inline

return last relation

246{ return rellist.back(); }
Relation_v rellist
Definition: VtRelationList.hh:288

◆ begin() [1/2]

iterator VERTEX::RelationList::begin ( )
inline
254{ return iterator(rellist.begin()); }
RelationIterator iterator
Definition: VtRelationList.hh:229

◆ begin() [2/2]

const_iterator VERTEX::RelationList::begin ( ) const
inline
258{ return const_iterator(rellist.begin()); }
ConstRelationIterator const_iterator
Definition: VtRelationList.hh:230

◆ clear()

void VERTEX::RelationList::clear ( void  )
virtual

clear all relations

Reimplemented in VERTEX::Vertex.

57 {
58 if(rellist.empty()) return;
59
60 const Relation_cit end = rellist.end();
61 if(static_cast<RelationList*>(&rellist.back()->vertex) == this) {
62 // Dtor called from ~Vertex
63 // cout << "delete in vertex! " << this << endl;
64 for(Relation_cit it=rellist.begin(); it!=end; ++it) {
65 Relation* rel = *it;
66 // cout << " Delete Relation " << rel
67 // << " " << rel->track << endl;
68 rel->track.unbook(rel); // unbook relation
69 delete rel; // destroy relation
70 }
71 } else {
72 // Dtor called from ~Track
73 // cout << "delete in track! " << this << endl;
74 for(Relation_cit it=rellist.begin(); it!=end; ++it) {
75 Relation* rel = *it;
76 // cout << " Delete Relation " << rel
77 // << " " << rel->vertex << endl;
78 rel->vertex.unbook(rel); // unbook relation
79 delete rel; // destroy relation
80 }
81 }
82 rellist.clear();
83 }
iterator end()
Definition: VtRelationList.hh:256
RelationList()
Definition: VtRelationList.C:50
std::list< Relation * >::const_iterator Relation_cit
Definition: VtRelationList.hh:60

◆ end() [1/2]

iterator VERTEX::RelationList::end ( )
inline
256{ return iterator(rellist.end()); }

◆ end() [2/2]

const_iterator VERTEX::RelationList::end ( ) const
inline
260{ return const_iterator(rellist.end()); }

◆ erase()

const iterator VERTEX::RelationList::erase ( const iterator pos)
virtual

Erase an element.

Reimplemented in VERTEX::Vertex.

105 {
106 Relation* const rel = &(*pos);
107 if(static_cast<RelationList*>(&rel->vertex) == this) {
108 // called from Vertex
109 rel->track.unbook(rel);
110 } else {
111 // called from Track
112 rel->vertex.unbook(rel);
113 }
114 delete rel;
115 return iterator(rellist.erase(pos.iter));
116 }

◆ operator=()

const RelationList & VERTEX::RelationList::operator= ( const RelationList rhs)
121 {
122 if( this == &rhs ) { return *this; }
123
124 rellist = rhs.rellist;
125 return *this;
126 }

◆ operator==()

bool VERTEX::RelationList::operator== ( const RelationList rhs) const
inline
283 {
284 return rellist == rhs.rellist;
285 }

◆ operator[]()

Relation *const VERTEX::RelationList::operator[] ( unsigned int  i) const

direct access

141 {
142 if(i>rellist.size()) return 0;
143
144 Relation_cit it=rellist.begin();
145 unsigned int j=0;
146 while(j++<i) ++it;
147 // cout << "pos: " << j << endl;
148 return *it;
149 }

◆ print()

void VERTEX::RelationList::print ( std::ostream &  os) const
131 {
132 const Relation_cit end = rellist.end();
133 for(Relation_cit it=rellist.begin(); it!=end; ++it)
134 cout << **it << " ";
135 return;
136 }

◆ push__back()

void VERTEX::RelationList::push__back ( Relation rel)
inline

add a relation

244{ rellist.push_back(rel); }

◆ rbegin() [1/2]

reverse_iterator VERTEX::RelationList::rbegin ( )
inline
262{ return reverse_iterator(rellist.rbegin()); }
ReverseRelationIterator reverse_iterator
Definition: VtRelationList.hh:231

◆ rbegin() [2/2]

const_reverse_iterator VERTEX::RelationList::rbegin ( ) const
inline
266{ return const_reverse_iterator(rellist.rbegin()); }
ConstReverseRelationIterator const_reverse_iterator
Definition: VtRelationList.hh:232

◆ remove()

void VERTEX::RelationList::remove ( Relation *const  rel)
virtual

remove a relation

Reimplemented in VERTEX::Vertex.

88 {
89 if(static_cast<RelationList*>(&rel->vertex) == this) {
90 // called from Vertex
91 rel->track.unbook(rel);
92 } else {
93 // called from Track
94 rel->vertex.unbook(rel);
95 }
96
97 delete rel;
98 rellist.remove(rel);
99 return;
100 }

◆ rend() [1/2]

reverse_iterator VERTEX::RelationList::rend ( )
inline
264{ return reverse_iterator(rellist.rend()); }

◆ rend() [2/2]

const_reverse_iterator VERTEX::RelationList::rend ( ) const
inline
268{ return const_reverse_iterator(rellist.rend()); }

◆ size()

unsigned int VERTEX::RelationList::size ( ) const
inline

return no of relations

248{ return rellist.size(); }

◆ unbook()

void VERTEX::RelationList::unbook ( Relation *const  rel)
inline

get rid of relation pointer

277{ rellist.remove(rel); }

Member Data Documentation

◆ rellist

Relation_v VERTEX::RelationList::rellist
private

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