equal
deleted
inserted
replaced
|
1 // -*- mode:C++ -*- |
|
2 |
|
3 #ifndef HUGO_INVALID_H |
|
4 #define HUGO_INVALID_H |
|
5 |
|
6 ///\file |
|
7 ///\brief Definition of INVALID. |
|
8 |
|
9 namespace hugo { |
|
10 |
|
11 /// Dummy type to make it easier to make invalid iterators. |
|
12 |
|
13 /// See \ref INVALID, how to use it. |
|
14 |
|
15 struct Invalid { |
|
16 public: |
|
17 bool operator==(Invalid) { return true; } |
|
18 bool operator!=(Invalid) { return false; } |
|
19 bool operator< (Invalid) { return false; } |
|
20 }; |
|
21 |
|
22 /// Invalid iterators. |
|
23 |
|
24 /// \ref Invalid is a global type that converts to each iterator |
|
25 /// in such a way that the value of the target iterator will be invalid. |
|
26 |
|
27 // It is also used to convert the \c INVALID constant to the |
|
28 // node iterator that makes is possible to write |
|
29 |
|
30 //extern Invalid INVALID; |
|
31 |
|
32 //const Invalid &INVALID = *(Invalid *)0; |
|
33 const Invalid INVALID = Invalid(); |
|
34 |
|
35 } //namespace hugo |
|
36 |
|
37 #endif |
|
38 |