git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1896 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
58 lines
1.8 KiB
Plaintext
58 lines
1.8 KiB
Plaintext
#ifndef __BREAKPOINT_CONTROLLER_SLICE_AH__
|
|
#define __BREAKPOINT_CONTROLLER_SLICE_AH__
|
|
|
|
#include "config/FailConfig.hpp"
|
|
|
|
#ifdef CONFIG_FAST_BREAKPOINTS
|
|
|
|
#include <cassert>
|
|
#include "../Listener.hpp"
|
|
|
|
/**
|
|
* \class BreakpointControllerSlice
|
|
*
|
|
* The slice class definition to be used with FastBreakpoint.ah.
|
|
* The members of this class will be sliced into the \c SimulatorController class.
|
|
*/
|
|
slice class BreakpointControllerSlice {
|
|
public:
|
|
bool addListener(fail::BPSingleListener* sli)
|
|
{
|
|
assert(sli != NULL && "FATAL ERROR: Argument (ptr) cannot be NULL!");
|
|
// Check whether we were called from onTrigger (see SimulatorController.cc@addListener).
|
|
fail::ExperimentFlow* pFlow = m_Flows.getCurrent();
|
|
if (pFlow == CoroutineManager::SIM_FLOW)
|
|
pFlow = sli->getParent();
|
|
m_LstList.add(sli, pFlow);
|
|
// Call the common postprocessing function:
|
|
if (!sli->onAddition()) { // If the return value signals "false"...,
|
|
m_LstList.remove(sli); // ...skip the addition
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
fail::BaseListener* addListenerAndResume(fail::BPSingleListener* sli)
|
|
{ addListener(sli); return resume(); }
|
|
bool addListener(fail::BPRangeListener* rli)
|
|
{
|
|
assert(rli != NULL && "FATAL ERROR: Argument (ptr) cannot be NULL!");
|
|
// Check whether we were called from onTrigger (see above).
|
|
fail::ExperimentFlow* pFlow = m_Flows.getCurrent();
|
|
if (pFlow == CoroutineManager::SIM_FLOW)
|
|
pFlow = rli->getParent();
|
|
m_LstList.add(rli, pFlow);
|
|
// Call the common postprocessing function:
|
|
if (!rli->onAddition()) { // If the return value signals "false"...,
|
|
m_LstList.remove(rli); // ...skip the addition
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
fail::BaseListener* addListenerAndResume(fail::BPRangeListener* rli)
|
|
{ addListener(rli); return resume(); }
|
|
};
|
|
|
|
#endif // CONFIG_FAST_BREAKPOINTS
|
|
|
|
#endif // __BREAKPOINT_CONTROLLER_SLICE_AH__
|