Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Common/utility.h

    rbc3127d r234223f  
    174174}
    175175
    176 template <typename E, typename UnaryPredicate, template< typename, typename...> class Container, typename... Args >
    177 void filter( Container< E *, Args... > & container, UnaryPredicate pred, bool doDelete ) {
    178         auto i = begin( container );
    179         while ( i != end( container ) ) {
    180                 auto it = next( i );
    181                 if ( pred( *i ) ) {
    182                         if ( doDelete ) {
    183                                 delete *i;
    184                         } // if
    185                         container.erase( i );
    186                 } // if
    187                 i = it;
    188         } // while
    189 }
    190 
    191176template< typename... Args >
    192177auto zip(Args&&... args) -> decltype(zipWith(std::forward<Args>(args)..., std::make_pair)) {
     
    222207        std::cerr << "Warning: ";
    223208        warn_single( params... );
    224 }
    225 
    226 /// determines if `pref` is a prefix of `str`
    227 static inline bool isPrefix( const std::string & str, const std::string & pref ) {
    228         if ( pref.size() > str.size() ) return false;
    229         auto its = std::mismatch( pref.begin(), pref.end(), str.begin() );
    230         return its.first == pref.end();
    231209}
    232210
     
    277255        ~ValueGuardPtr() { if( ref ) *ref = old; }
    278256};
     257
     258template< typename aT >
     259struct FuncGuard {
     260        aT m_after;
     261
     262        template< typename bT >
     263        FuncGuard( bT before, aT after ) : m_after( after ) {
     264                before();
     265        }
     266
     267        ~FuncGuard() {
     268                m_after();
     269        }
     270};
     271
     272template< typename bT, typename aT >
     273FuncGuard<aT> makeFuncGuard( bT && before, aT && after ) {
     274        return FuncGuard<aT>( std::forward<bT>(before), std::forward<aT>(after) );
     275}
    279276
    280277template< typename T >
Note: See TracChangeset for help on using the changeset viewer.