#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.

// FIXME: cmake does not remove these .ah files when the user configures
// another experiment (or even makes "clean").  Currently, this needs to be
// worked around by manually removing $BUILDDIR/core/experiments/*/*.ah .

// You need to provide the implementation of this function in your experiment
// directory:
void instantiate@EXPERIMENT_TYPE@();

aspect @EXPERIMENT_TYPE@ExperimentHook {
	advice execution ("void fail::SimulatorController::initExperiments()") : after () {
		instantiate@EXPERIMENT_TYPE@();
	}
};

#endif // __INSTANTIATE_@EXPERIMENT_TYPE@_AH__
