src/include/invalid.h
changeset 539 fb261e3a9a0f
parent 389 770cc1f4861f
equal deleted inserted replaced
2:f18b53b49e1d -1:000000000000
     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