Changes in / [1a42132:f522618]


Ignore:
Location:
src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/Common/PassVisitor.h

    r1a42132 rf522618  
    253253}
    254254
     255class WithTypeSubstitution {
     256protected:
     257        WithTypeSubstitution() = default;
     258        ~WithTypeSubstitution() = default;
     259
     260public:
     261        TypeSubstitution * env;
     262};
     263
     264class WithStmtsToAdd {
     265protected:
     266        WithStmtsToAdd() = default;
     267        ~WithStmtsToAdd() = default;
     268
     269public:
     270        std::list< Statement* > stmtsToAddBefore;
     271        std::list< Statement* > stmtsToAddAfter;
     272};
     273
     274class WithShortCircuiting {
     275protected:
     276        WithShortCircuiting() = default;
     277        ~WithShortCircuiting() = default;
     278
     279public:
     280        bool skip_children;
     281};
     282
     283class WithScopes {
     284protected:
     285        WithScopes() = default;
     286        ~WithScopes() = default;
     287
     288public:
     289        at_cleanup_t at_cleanup;
     290
     291        template< typename T >
     292        void GuardValue( T& val ) {
     293                at_cleanup( [ val ]( void * newVal ) {
     294                        * static_cast< T * >( newVal ) = val;
     295                }, static_cast< void * >( & val ) );
     296        }
     297};
     298
     299
    255300#include "PassVisitor.impl.h"
  • src/InitTweak/GenInit.cc

    r1a42132 rf522618  
    4444        }
    4545
    46         class ReturnFixer {
     46        class ReturnFixer : public WithStmtsToAdd, public WithScopes {
    4747          public:
    4848                /// consistently allocates a temporary variable for the return value
     
    5353                void premutate( FunctionDecl *functionDecl );
    5454                void premutate( ReturnStmt * returnStmt );
    55 
    56                 at_cleanup_t at_cleanup;
    57                 std::list< Statement * > stmtsToAddBefore;
    5855
    5956          protected:
     
    160157
    161158        void ReturnFixer::premutate( FunctionDecl *functionDecl ) {
    162                 GuardValue( this, ftype );
    163                 GuardValue( this, funcName );
     159                GuardValue( ftype );
     160                GuardValue( funcName );
    164161
    165162                ftype = functionDecl->get_functionType();
Note: See TracChangeset for help on using the changeset viewer.