Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Common/utility.h

    r50377a4 r4639b0d  
    2828#include <cassert>
    2929
    30 #include "Common/Indenter.h"
    31 
    3230template< typename T >
    3331static inline T * maybeClone( const T *orig ) {
     
    7775
    7876template< typename Container >
    79 void printAll( const Container &container, std::ostream &os, Indenter indent = {} ) {
     77void printAll( const Container &container, std::ostream &os, int indent = 0 ) {
    8078        for ( typename Container::const_iterator i = container.begin(); i != container.end(); ++i ) {
    8179                if ( *i ) {
    82                         os << indent;
    83                         (*i)->print( os, indent );
     80                        os << std::string( indent,  ' ' );
     81                        (*i)->print( os, indent + 2 );
    8482                        // need an endl after each element because it's not easy to know when each individual item should end
    8583                        os << std::endl;
     
    280278};
    281279
    282 template< typename aT >
    283 struct FuncGuard {
    284         aT m_after;
    285 
    286         template< typename bT >
    287         FuncGuard( bT before, aT after ) : m_after( after ) {
    288                 before();
    289         }
    290 
    291         ~FuncGuard() {
    292                 m_after();
    293         }
    294 };
    295 
    296 template< typename bT, typename aT >
    297 FuncGuard<aT> makeFuncGuard( bT && before, aT && after ) {
    298         return FuncGuard<aT>( std::forward<bT>(before), std::forward<aT>(after) );
    299 }
    300 
    301280template< typename T >
    302281struct ValueGuardPtr< std::list< T > > {
     
    353332template< typename T1, typename T2 >
    354333struct group_iterate_t {
    355 private:
    356         std::tuple<T1, T2> args;
    357 public:
    358334        group_iterate_t( bool skipBoundsCheck, const T1 & v1, const T2 & v2 ) : args(v1, v2) {
    359335                assertf(skipBoundsCheck || v1.size() == v2.size(), "group iteration requires containers of the same size: <%zd, %zd>.", v1.size(), v2.size());
    360336        };
    361337
    362         typedef std::tuple<decltype(*std::get<0>(args).begin()), decltype(*std::get<1>(args).begin())> value_type;
    363         typedef decltype(std::get<0>(args).begin()) T1Iter;
    364         typedef decltype(std::get<1>(args).begin()) T2Iter;
    365 
    366338        struct iterator {
     339                typedef typename std::remove_reference<T1>::type T1val;
     340                typedef typename std::remove_reference<T2>::type T2val;
     341                typedef std::tuple<typename T1val::value_type &, typename T2val::value_type &> value_type;
     342                typedef typename T1val::iterator T1Iter;
     343                typedef typename T2val::iterator T2Iter;
    367344                typedef std::tuple<T1Iter, T2Iter> IterTuple;
    368345                IterTuple it;
     
    374351                value_type operator*() const { return std::tie( *std::get<0>(it), *std::get<1>(it) ); }
    375352        };
    376 
    377353        iterator begin() { return iterator( std::get<0>(args).begin(), std::get<1>(args).begin() ); }
    378354        iterator end() { return iterator( std::get<0>(args).end(), std::get<1>(args).end() ); }
     355
     356private:
     357        std::tuple<T1, T2> args;
    379358};
    380359
Note: See TracChangeset for help on using the changeset viewer.