Ignore:
Timestamp:
Sep 7, 2016, 9:30:25 AM (8 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
9f70ab57
Parents:
1f75e2d (diff), f04a8b81 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

Conflicts:

src/Common/utility.h

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Common/utility.h

    r1f75e2d r5fda714  
    265265std::weak_ptr<ThisType> RefCountSingleton<ThisType>::global_instance;
    266266
     267// RAII object to regulate "save and restore" behaviour, e.g.
     268// void Foo::bar() {
     269//   ValueGuard<int> guard(var); // var is a member of type Foo
     270//   var = ...;
     271// } // var's original value is restored
     272template< typename T >
     273struct ValueGuard {
     274        T old;
     275        T& ref;
     276
     277        ValueGuard(T& inRef) : old(inRef), ref(inRef) {}
     278        ~ValueGuard() { ref = old; }
     279};
     280
     281template< typename T >
     282struct reverseIterate_t {
     283        T& ref;
     284
     285        reverseIterate_t( T & ref ) : ref(ref) {}
     286
     287        typedef typename T::reverse_iterator iterator;
     288        iterator begin() { return ref.rbegin(); }
     289        iterator end() { return ref.rend(); }
     290};
     291
     292template< typename T >
     293reverseIterate_t< T > reverseIterate( T & ref ) {
     294        return reverseIterate_t< T >( ref );
     295}
     296
    267297#endif // _UTILITY_H
    268298
Note: See TracChangeset for help on using the changeset viewer.