BALL 1.5.0
triple.h
Go to the documentation of this file.
1// -*- Mode: C++; tab-width: 2; -*-
2// vi: set ts=2:
3//
4// $Id: triple.h,v 1.9 2003/08/26 08:04:12 oliver Exp $
5//
6
7#ifndef BALL_DATATYPE_TRIPLE_H
8#define BALL_DATATYPE_TRIPLE_H
9
10#ifndef BALL_COMMON_H
11# include <BALL/common.h>
12#endif
13
14namespace BALL
15{
23 template <typename T1, typename T2, typename T3>
24 class Triple
25 {
26 public:
27
31
33
34
37 Triple();
38
44 Triple(const Triple& triple, bool deep = true);
45
53 Triple(const T1& new_first, const T2& new_second, const T3& new_third);
54
58 virtual ~Triple();
60
63 virtual void clear();
64
68
73 const Triple& operator = (const Triple& triple);
74
77 void set(const T1& t1, const T2& t2, const T3& t3);
78
81 void get(T1& first, T2& second, T3& third) const;
82
84
87
91 bool operator == (const Triple& triple) const;
92
95 bool operator != (const Triple& triple) const;
96
102 bool operator < (const Triple& triple) const;
103
106 bool operator <= (const Triple& triple) const;
107
110 bool operator >= (const Triple& triple) const;
111
114 bool operator > (const Triple& triple) const;
115
117
121
125
129
134 };
135
136 template <typename T1, typename T2, typename T3>
138 {
139 }
140
141 template <typename T1, typename T2, typename T3>
143 (const Triple<T1, T2, T3>& triple, bool /* deep */)
144 : first(triple.first),
145 second(triple.second),
146 third(triple.third) {
147 }
148
149 template <typename T1, typename T2, typename T3>
151 (const T1& new_first, const T2& new_second, const T3& new_third)
152 : first(new_first),
153 second(new_second),
154 third(new_third)
155 {
156 }
157
158 template <typename T1, typename T2, typename T3>
160 {
161 }
162
163 template <typename T1, typename T2, typename T3>
165 void Triple<T1, T2, T3>::set(const T1& new_first, const T2& new_second, const T3& new_third)
166 {
167 first = new_first;
168 second = new_second;
169 third = new_third;
170 }
171
172 template <typename T1, typename T2, typename T3>
175 (const Triple<T1, T2, T3>& triple)
176 {
177 first = triple.first;
178 second = triple.second;
179 third = triple.third;
180
181 return *this;
182 }
183
184 template <typename T1, typename T2, typename T3>
186 void Triple<T1, T2, T3>::get(T1& t1, T2& t2, T3& t3)
187 const
188 {
189 t1 = first;
190 t2 = second;
191 t3 = third;
192 }
193
194 template <typename T1, typename T2, typename T3>
197 const
198 {
199 return (first == triple.first
200 && second == triple.second
201 && third == triple.third);
202 }
203
204 template <typename T1, typename T2, typename T3>
207 const
208 {
209 return (first != triple.first
210 || second != triple.second
211 || third != triple.third);
212 }
213
214 template <typename T1, typename T2, typename T3>
217 {
218 first = T1();
219 second = T2();
220 third = T3();
221 }
222
223 template <typename T1, typename T2, typename T3>
226 (const Triple<T1, T2, T3>& triple) const
227 {
228 return ((first < triple.first)
229 || ((first == triple.first) && (second < triple.second))
230 || ((first == triple.first) && (second == triple.second) && (third < triple.third)));
231 }
232
233 template <typename T1, typename T2, typename T3>
236 (const Triple<T1, T2, T3>& triple) const
237 {
238 return ((first < triple.first)
239 || ((first == triple.first) && (second < triple.second))
240 || ((first == triple.first) && (second == triple.second) && (third < triple.third))
241 || ((first == triple.first) && (second == triple.second) && (third == triple.third)));
242 }
243
244 template <typename T1, typename T2, typename T3>
247 (const Triple<T1, T2, T3>& triple) const
248 {
249 return ((first > triple.first)
250 || ((first == triple.first) && (second > triple.second))
251 || ((first == triple.first) && (second == triple.second) && (third > triple.third))
252 || ((first == triple.first) && (second == triple.second) && (third == triple.third)));
253 }
254
255 template <typename T1, typename T2, typename T3>
258 (const Triple<T1, T2, T3>& triple) const
259 {
260 return ((first > triple.first)
261 || ((first == triple.first) && (second > triple.second))
262 || ((first == triple.first) && (second == triple.second) && (third > triple.third)));
263 }
264} // namespace BALL
265
266#endif // BALL_DATATYPE_TRIPLE_H
#define BALL_CREATE(name)
Definition: create.h:62
#define BALL_INLINE
Definition: debug.h:15
Definition: constants.h:13
bool operator>(const Triple &triple) const
Definition: triple.h:258
void set(const T1 &t1, const T2 &t2, const T3 &t3)
Definition: triple.h:165
void get(T1 &first, T2 &second, T3 &third) const
Definition: triple.h:186
const Triple & operator=(const Triple &triple)
Definition: triple.h:175
bool operator<(const Triple &triple) const
Definition: triple.h:226
virtual void clear()
Definition: triple.h:216
bool operator==(const Triple &triple) const
Definition: triple.h:196
bool operator>=(const Triple &triple) const
Definition: triple.h:247
bool operator!=(const Triple &triple) const
Definition: triple.h:206
bool operator<=(const Triple &triple) const
Definition: triple.h:236
virtual ~Triple()
Definition: triple.h:159