dune-common 2.1.1
|
00001 // $Id$ 00002 00003 #ifndef DUNE_COMMON_LOCALINDEX_HH 00004 #define DUNE_COMMON_LOCALINDEX_HH 00005 00006 #include<cstddef> 00007 00008 namespace Dune 00009 { 00010 00011 00025 enum LocalIndexState {VALID, DELETED}; 00026 00027 00031 class LocalIndex 00032 { 00033 public: 00038 LocalIndex() : 00039 localIndex_(0), state_(VALID){} 00040 00041 00046 LocalIndex(std::size_t index) : 00047 localIndex_(index), state_(VALID){} 00052 inline const std::size_t& local() const; 00053 00057 inline operator std::size_t() const; 00058 00064 inline LocalIndex& operator=(std::size_t index); 00065 00070 inline LocalIndexState state() const; 00071 00076 inline void setState(LocalIndexState state); 00077 00078 private: 00080 std::size_t localIndex_; 00081 00088 char state_; 00089 00090 }; 00091 00092 00093 00094 inline const std::size_t& LocalIndex::local() const{ 00095 return localIndex_; 00096 } 00097 00098 inline LocalIndex::operator std::size_t() const{ 00099 return localIndex_; 00100 } 00101 00102 inline LocalIndex& LocalIndex::operator=(std::size_t index){ 00103 localIndex_ = index; 00104 return *this; 00105 } 00106 00107 inline LocalIndexState LocalIndex::state() const{ 00108 return static_cast<LocalIndexState>(state_); 00109 } 00110 00111 inline void LocalIndex::setState(LocalIndexState state){ 00112 state_ = static_cast<char>(state); 00113 } 00114 00117 } // namespace Dune 00118 00119 #endif