#include <Cmp.hh>
The main usage of the Cmp class is if several variables should be checked for ordering in which case several Cmp objects can be combined as follows: cmp(a1, a2) || cmp(b1, b2) || cmp(c1, c2)
where cmp is a global function for easy creation of Cmp objects.
Definition at line 107 of file Cmp.hh.
Public Member Functions | |
operator CmpState () const | |
Automatically convert to an enum. | |
operator int () const | |
Automatically convert to an integer. | |
template<typename U> | |
const Cmp< Projection > & | operator|| (const Cmp< U > &c) const |
If this state is equivalent, set this state to the state of c. | |
Standard constructors and destructors. | |
Cmp (const Projection &p1, const Projection &p2) | |
The default constructor. | |
template<typename U> | |
Cmp (const Cmp< U > &x) | |
The copy constructor. | |
~Cmp () | |
The destructor is not virtual since this is not intended to be a base class. | |
template<typename U> | |
const Cmp< Projection > & | operator= (const Cmp< U > &x) |
The assignment operator. | |
Private Member Functions | |
void | _compare () const |
Perform the actual comparison if necessary. | |
Private Attributes | |
CmpState | _value |
The state of this object. | |
pair< const Projection *, const Projection * > | _objects |
The objects to be compared. |
~Cmp | ( | ) | [inline] |
Cmp | ( | const Projection & | p1, | |
const Projection & | p2 | |||
) | [inline] |
const Cmp<Projection>& operator= | ( | const Cmp< U > & | x | ) | [inline] |
The assignment operator.
Definition at line 128 of file Cmp.hh.
References Cmp::_value.
00128 { 00129 _value = x; 00130 return *this; 00131 }
operator CmpState | ( | ) | const [inline] |
Automatically convert to an enum.
Definition at line 137 of file Cmp.hh.
References Cmp::_compare(), and Cmp::_value.
operator int | ( | ) | const [inline] |
Automatically convert to an integer.
Definition at line 144 of file Cmp.hh.
References Cmp::_compare(), and Cmp::_value.
const Cmp<Projection>& operator|| | ( | const Cmp< U > & | c | ) | const [inline] |
If this state is equivalent, set this state to the state of c.
Definition at line 151 of file Cmp.hh.
References Cmp::_compare(), Cmp::_value, and Rivet::EQUIVALENT.
00151 { 00152 _compare(); 00153 if (_value == EQUIVALENT) _value = c; 00154 return *this; 00155 }
void _compare | ( | ) | const [inline, private] |
Perform the actual comparison if necessary.
Definition at line 160 of file Cmp.hh.
References Cmp::_objects, Cmp::_value, Rivet::EQUIVALENT, Rivet::ORDERED, Rivet::UNDEFINED, and Rivet::UNORDERED.
00160 { 00161 if (_value == UNDEFINED) { 00162 const std::type_info& id1 = typeid(*_objects.first); 00163 const std::type_info& id2 = typeid(*_objects.second); 00164 if (id1.before(id2)) _value = ORDERED; 00165 else if (id2.before(id1)) _value = UNORDERED; 00166 else { 00167 int c = _objects.first->compare(*_objects.second); 00168 if (c < 0) _value = ORDERED; 00169 else if (c > 0) _value = UNORDERED; 00170 else _value = EQUIVALENT; 00171 } 00172 } 00173 }
pair<const Projection*, const Projection*> _objects [private] |