Changes in src/AST/Pass.hpp [be8518f:e16e27e1]
- File:
-
- 1 edited
-
src/AST/Pass.hpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Pass.hpp
rbe8518f re16e27e1 262 262 /// Used to restore values/functions/etc. when the Pass finishes visiting this node 263 263 class WithGuards { 264 __pass::at_cleanup_t at_cleanup; 265 264 __pass::at_cleanup_t at_cleanup = [](__pass::cleanup_func_t, void*) { 265 std::cerr << "No cleanup function was set" << std::endl; 266 abort(); 267 }; 268 269 template< typename pass_t> 270 friend auto __pass::at_cleanup( pass_t & pass, int ) -> decltype( &pass.at_cleanup ); 266 271 public: 272 267 273 /// When this node is finished being visited, restore the value of a variable 268 274 template< typename T > … … 287 293 at_cleanup( [func](void *) { func(); }, nullptr ); 288 294 } 289 290 /// When this node is finished being visited, call a member of an object.291 template<typename T>292 void GuardMethod( T * obj, void (T::*method)() ) {293 at_cleanup( [ method ]( void * object ) {294 static_cast< T * >( object )->method();295 }, static_cast< void * >( obj ) );296 }297 295 }; 298 296
Note:
See TracChangeset
for help on using the changeset viewer.