lemon/bits/invalid.h
 author Alpar Juttner Mon, 07 Jan 2008 14:16:06 +0100 changeset 39 0a01d811071f parent 13 83c84df7a956 child 49 9a556af88710 permissions -rw-r--r--
     1 /* -*- C++ -*-

     2  *

     3  * This file is a part of LEMON, a generic C++ optimization library

     4  *

     5  * Copyright (C) 2003-2008

     6  * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport

     7  * (Egervary Research Group on Combinatorial Optimization, EGRES).

     8  *

     9  * Permission to use, modify and distribute this software is granted

    10  * provided that this copyright notice appears in all copies. For

    11  * precise terms see the accompanying LICENSE file.

    12  *

    13  * This software is provided "AS IS" with no warranty of any kind,

    14  * express or implied, and with no claim as to its suitability for any

    15  * purpose.

    16  *

    17  */

    18

    19 #ifndef LEMON_BITS_INVALID_H

    20 #define LEMON_BITS_INVALID_H

    21

    22 ///\file

    23 ///\brief Definition of INVALID.

    24

    25 namespace lemon {

    26

    27   /// \brief Dummy type to make it easier to create invalid iterators.

    28   ///

    29   /// See \ref INVALID for the usage.

    30   struct Invalid {

    31   public:

    32     bool operator==(Invalid) { return true;  }

    33     bool operator!=(Invalid) { return false; }

    34     bool operator< (Invalid) { return false; }

    35   };

    36

    37   /// \brief Invalid iterators.

    38   ///

    39   /// \ref Invalid is a global type that converts to each iterator

    40   /// in such a way that the value of the target iterator will be invalid.

    41

    42   //Some people didn't like this:

    43   //const Invalid &INVALID = *(Invalid *)0;

    44

    45 #ifdef LEMON_ONLY_TEMPLATES

    46   const Invalid INVALID = Invalid();

    47 #else

    48   extern const Invalid INVALID;

    49 #endif

    50

    51 } //namespace lemon

    52

    53 #endif

    54