#ifndef __INSTANTIATE_@EXPERIMENT_TYPE@_AH__ #define __INSTANTIATE_@EXPERIMENT_TYPE@_AH__ // Use this indirect variant of experiment instantiation if your experiment.hpp // includes generated headers (e.g., protobuf message definitions) that are not // guaranteed to exist when the aspect is woven. // You need to provide the implementation of this function in your experiment // directory: void instantiate@EXPERIMENT_TYPE@(); // The experiment needs to be instantiated dynamically (on the stack, or the // heap), as the ExperimentFlow destructor deregisters from the // CoroutineManager which may not exist anymore if the global // construction/destruction order is inappropriate. aspect @EXPERIMENT_TYPE@ExperimentHook { advice execution ("void fail::SimulatorController::initExperiments()") : after () { instantiate@EXPERIMENT_TYPE@(); } }; #endif // __INSTANTIATE_@EXPERIMENT_TYPE@_AH__