Changes in src/Common/utility.h [79970ed:1ba88a0]
- File:
-
- 1 edited
-
src/Common/utility.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/Common/utility.h
r79970ed r1ba88a0 246 246 } 247 247 248 // RAII object to regulate "save and restore" behaviour, e.g. 249 // void Foo::bar() { 250 // ValueGuard<int> guard(var); // var is a member of type Foo 251 // var = ...; 252 // } // var's original value is restored 253 template< typename T > 254 struct ValueGuard { 255 T old; 256 T& ref; 257 258 ValueGuard(T& inRef) : old(inRef), ref(inRef) {} 259 ~ValueGuard() { ref = old; } 260 }; 261 262 template< typename T > 263 struct reverseIterate_t { 264 T& ref; 265 266 reverseIterate_t( T & ref ) : ref(ref) {} 267 268 typedef typename T::reverse_iterator iterator; 269 iterator begin() { return ref.rbegin(); } 270 iterator end() { return ref.rend(); } 271 }; 272 273 template< typename T > 274 reverseIterate_t< T > reverseIterate( T & ref ) { 275 return reverseIterate_t< T >( ref ); 276 } 277 248 278 #endif // _UTILITY_H 249 279
Note:
See TracChangeset
for help on using the changeset viewer.