Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Common/utility.h

    r79970ed r1ba88a0  
    246246}
    247247
     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
     253template< typename T >
     254struct ValueGuard {
     255        T old;
     256        T& ref;
     257
     258        ValueGuard(T& inRef) : old(inRef), ref(inRef) {}
     259        ~ValueGuard() { ref = old; }
     260};
     261
     262template< typename T >
     263struct 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
     273template< typename T >
     274reverseIterate_t< T > reverseIterate( T & ref ) {
     275        return reverseIterate_t< T >( ref );
     276}
     277
    248278#endif // _UTILITY_H
    249279
Note: See TracChangeset for help on using the changeset viewer.