
st.membrane.LifeCycleController.stc Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of annotations Show documentation
Show all versions of annotations Show documentation
Common ADL and IDL annotations of the Mind programming model.
The newest version!
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