1
// -*- Mode: C++; tab-width: 2; -*-
4
// $Id: quadruple.h,v 1.13 2003-08-26 08:04:11 oliver Exp $
7
#ifndef BALL_DATATYPE_QUADRUPLE_H
8
#define BALL_DATATYPE_QUADRUPLE_H
11
# include <BALL/common.h>
17
This template class is used to represent quadruples of arbitrary types
18
(like the STL type <tt>pair</tt>).
19
\ingroup DatatypeMiscellaneous
21
template <typename T1, typename T2, typename T3, typename T4>
26
/** @name Constructors and Destructors
30
BALL_CREATE(Quadruple)
32
/** Default constructor.
33
Creates a new Quadruple object.
38
Creates a new Quadruple object from another.
39
@param quadruple the Quadruple object to be copied
40
@param deep not used (needed for a consistent interface only)
42
Quadruple(const Quadruple& quadruple, bool deep = true) throw();
44
/** Detailled constructor.
45
Creates a new Quadruple object from the quadruple's four
47
@param new_first the first quadruple member
48
@param new_second the second quadruple member
49
@param new_third the third quadruple member
50
@param new_fourth the fourth quadruple member
52
Quadruple(const T1& new_first, const T2& new_second,
53
const T3& new_third, const T4& new_fourth) throw();
56
Destructs the Quadruple object.
58
virtual ~Quadruple() throw();
63
virtual void clear() throw();
69
/** Assignment operator.
70
Assigns the contents of a quadruple to another.
71
@param quadruple the quadruple to be copied
73
const Quadruple& operator = (const Quadruple& quadruple) throw();
77
void set(const T1& t1, const T2& t2, const T3& t3, const T4& t4) throw();
81
void get(T1& first, T2& second, T3& third, T4& fourth) const throw();
89
Two instances are equal if they have the same members.
91
bool operator == (const Quadruple& quadruple) const throw();
93
/** Inequality operator
95
bool operator != (const Quadruple& quadruple) const throw();
97
/** Lesser than operator.
98
One instance is lesser than an other if all members from first to
99
third are equal or less than the members of the other instance and at least
102
bool operator < (const Quadruple& quadruple) const throw();
104
/** Lesser or equal than operator.
106
bool operator <= (const Quadruple& quadruple) const throw();
108
/** Greater or equal than operator.
110
bool operator >= (const Quadruple& quadruple) const throw();
112
/** Greater than operator.
114
bool operator > (const Quadruple& quadruple) const throw();
122
/** The first quadruple member
126
/** The second quadruple member
130
/** The third quadruple member
134
/** The fourth quadruple member
140
template <typename T1, typename T2, typename T3, typename T4>
141
Quadruple<T1, T2, T3, T4>::Quadruple() throw()
145
template <typename T1, typename T2, typename T3, typename T4>
146
Quadruple<T1, T2, T3, T4>::Quadruple
147
(const Quadruple<T1, T2, T3, T4>& quadruple, bool /* deep */)
149
: first(quadruple.first),
150
second(quadruple.second),
151
third(quadruple.third),
152
fourth(quadruple.fourth)
156
template <typename T1, typename T2, typename T3, typename T4>
157
Quadruple<T1, T2, T3, T4>::Quadruple
158
(const T1& new_first, const T2& new_second, const T3& new_third, const T4& fourth)
167
template <typename T1, typename T2, typename T3, typename T4>
168
Quadruple<T1, T2, T3, T4>::~Quadruple() throw()
172
template <typename T1, typename T2, typename T3, typename T4>
174
void Quadruple<T1, T2, T3, T4>::set(const T1& new_first, const T2& new_second,
175
const T3& new_third, const T4& new_fourth)
184
template <typename T1, typename T2, typename T3, typename T4>
186
const Quadruple<T1, T2, T3, T4>& Quadruple<T1, T2, T3, T4>::operator =
187
(const Quadruple<T1, T2, T3, T4>& quadruple) throw()
189
first = quadruple.first;
190
second = quadruple.second;
191
third = quadruple.third;
192
fourth = quadruple.fourth;
197
template <typename T1, typename T2, typename T3, typename T4>
199
void Quadruple<T1, T2, T3, T4>::get(T1& t1, T2& t2, T3& t3, T4& t4)
208
template <typename T1, typename T2, typename T3, typename T4>
210
bool Quadruple<T1, T2, T3, T4>::operator == (const Quadruple& quadruple)
213
return (first == quadruple.first
214
&& second == quadruple.second
215
&& third == quadruple.third
216
&& fourth == quadruple.fourth);
219
template <typename T1, typename T2, typename T3, typename T4>
221
bool Quadruple<T1, T2, T3, T4>::operator != (const Quadruple& quadruple)
224
return (first != quadruple.first
225
|| second != quadruple.second
226
|| third != quadruple.third
227
|| fourth != quadruple.fourth);
230
template <typename T1, typename T2, typename T3, typename T4>
232
void Quadruple<T1, T2, T3, T4>::clear()
241
template <typename T1, typename T2, typename T3, typename T4>
243
bool Quadruple<T1, T2, T3, T4>::operator <
244
(const Quadruple<T1, T2, T3, T4>& quadruple) const throw()
246
return (first < quadruple.first ||
247
(first == quadruple.first && second < quadruple.second) ||
248
(first == quadruple.first && second == quadruple.second && third < quadruple.third) ||
249
(first == quadruple.first && second == quadruple.second && third == quadruple.third
250
&& fourth < quadruple.fourth));
253
template <typename T1, typename T2, typename T3, typename T4>
255
bool Quadruple<T1, T2, T3, T4>::operator <=
256
(const Quadruple<T1, T2, T3, T4>& quadruple) const throw()
258
return (first < quadruple.first ||
259
(first == quadruple.first && second < quadruple.second) ||
260
(first == quadruple.first && second == quadruple.second && third < quadruple.third) ||
261
(first == quadruple.first && second == quadruple.second && third == quadruple.third
262
&& fourth <= quadruple.fourth));
265
template <typename T1, typename T2, typename T3, typename T4>
267
bool Quadruple<T1, T2, T3, T4>::operator >=
268
(const Quadruple<T1, T2, T3, T4>& quadruple) const throw()
270
return (first > quadruple.first ||
271
(first == quadruple.first && second > quadruple.second) ||
272
(first == quadruple.first && second == quadruple.second && third > quadruple.third) ||
273
(first == quadruple.first && second == quadruple.second && third == quadruple.third
274
&& fourth >= quadruple.fourth));
277
template <typename T1, typename T2, typename T3, typename T4>
279
bool Quadruple<T1, T2, T3, T4>::operator >
280
(const Quadruple<T1, T2, T3, T4>& quadruple) const throw()
282
return (first > quadruple.first ||
283
(first == quadruple.first && second > quadruple.second) ||
284
(first == quadruple.first && second == quadruple.second && third > quadruple.third) ||
285
(first == quadruple.first && second == quadruple.second && third == quadruple.third
286
&& fourth > quadruple.fourth));
290
#endif // BALL_DATATYPE_QUADRUPLE_H