All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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