
st.membrane.LifeCycleController.stc Maven / Gradle / Ivy
template st.membrane.LifeCycleController
: st.common.ComponentHelper
implements st.membrane.ControllerGenerator {
st.interfaces.IDLDefinition idl2c = st.interfaces.IDL2C;
$${
// -----------------------------------------------------------------------------
// Implementation of the ControllerGenerator interface
// -----------------------------------------------------------------------------
ControllerGlobalDecl(definition, controller) ::= <<
#include "fractal/internal/LCCdelegate.h"
>>
ControllerData(definition, controller) ::= <<
struct __component_LifeCycleState lccState;
>>
ControllerDataStaticInit(definition, controller) ::= <<
{ /* lccState */ 0 },
>>
ControllerDataFactoryNew(definition, controller) ::= <<
newInstance->__component_internal_data.lccState.state = 0;
>>
ControllerDataFactoryDestroy(definition, controller) ::= ""
ControllerImplementation(definition, controller, interfaceDefinitions) ::= <<
/* -----------------------------------------------------------------------------
Implementation of the LifeCycleController interface
----------------------------------------------------------------------------- */
#if !defined(INTERFACE_METHOD_lifeCycleController_startFc_IMPLEMENTED) && !defined(INTERFACE_METHOD_lifeCycleController_stopFc_IMPLEMENTED)
#error Component does not implement either stopFc or startFc.
#endif
>>
// -----------------------------------------------------------------------------
// Internal templates
// -----------------------------------------------------------------------------
getFcState(definition) ::= <<
int METH(lifeCycleController, getFcState)(void)
{
return __component_getFcState_delegate();
}
>>
startFc(definition) ::= <<
#ifdef INTERFACE_METHOD_lifeCycleController_startFc_IMPLEMENTED
#define INTERFACE_METHOD_lifeCycleController_startFc_OVERRIDDEN startFc_override
int INTERFACE_METHOD(lifeCycleController, startFc_override) NO_PARAM_DECL
{
int err;
err = INTERFACE_METHOD(lifeCycleController, startFc) (CONTEXT_PTR_ACCESS_OR_VOID);
if (err != FRACTAL_API_OK) return err;
err = __component_startFc_delegate();
return err;
}
#else
int INTERFACE_METHOD(lifeCycleController, startFc) NO_PARAM_DECL
{
int err;
err = __component_startFc_delegate();
return err;
}
#endif
>>
stopFc(definition) ::= <<
#ifdef INTERFACE_METHOD_lifeCycleController_stopFc_IMPLEMENTED
#define INTERFACE_METHOD_lifeCycleController_stopFc_OVERRIDDEN stopFc_override
int INTERFACE_METHOD(lifeCycleController, stopFc_override) NO_PARAM_DECL
{
int err;
err = INTERFACE_METHOD(lifeCycleController, stopFc) (CONTEXT_PTR_ACCESS_OR_VOID);
if (err != FRACTAL_API_OK) return err;
err = __component_stopFc_delegate();
return err;
}
#else
int INTERFACE_METHOD(lifeCycleController, stopFc) NO_PARAM_DECL
{
int err;
err = __component_stopFc_delegate();
return err;
}
#endif
>>
startStopSubComponents(definition, methName) ::= <<
>>
startStopSubComponent(definition, component, methName) ::= <<
err = CALL_PTR(&(__component__singleton_instance.__component_internal_data.components.->__component_internal_data.type.lifeCycleController), )();
err = CALL_PTR(&(CONTEXT_PTR_ACCESS->__component_internal_data.components.->__component_internal_data.type.lifeCycleController), )();
if (err != FRACTAL_API_OK) return err;
>>
lccStatePointer(definition) ::= <<
&(CONTEXT_PTR_ACCESS->__component_internal_data.lccState)
>>
}$$
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy