marki_container.cpp
来自「含有uml的多个实例及实例的java源码。」· C++ 代码 · 共 506 行
CPP
506 行
// {{{RME classifier 'Logical View::Brewers::MarkI_Container'#if defined( PRAGMA ) && ! defined( PRAGMA_IMPLEMENTED )#pragma implementation "rtg/MarkI_Container.h"#endif#include <RTSystem/MarkI_x86VisualCpp60.h>#include <rtg/MarkI_Container.h>#include <rtg/Boiler.h>#include <rtg/BrewButton.h>#include <rtg/CUControl_FrontPanel.h>#include <rtg/CUControl_Sprayer.h>#include <rtg/CUControl_Warmer.h>#include <rtg/IndicatorLight.h>#include <rtg/ReliefValve.h>#include <rtg/Warmer.h>extern const RTActorClass CUFrontPanel;extern const RTActorClass CUSprayer;extern const RTActorClass CUWarmer;extern const RTActorClass MarkI_Brewer;// {{{RME tool 'OT::Cpp' property 'ImplementationPreface'// {{{USR// }}}USR// }}}RMEstatic const RTRelayDescriptor rtg_relays[] ={ { "reliefValve" , &ReliefValve::Conjugate::rt_class , 1 // cardinality } , { "indicatorLight" , &IndicatorLight::Conjugate::rt_class , 1 // cardinality } , { "boiler" , &Boiler::Conjugate::rt_class , 1 // cardinality } , { "brewButton" , &BrewButton::Conjugate::rt_class , 1 // cardinality } , { "warmer" , &Warmer::Conjugate::rt_class , 1 // cardinality }};static RTActor * new_MarkI_Container_Actor( RTController * _rts, RTActorRef * _ref ){ return new MarkI_Container_Actor( _rts, _ref );}const RTActorClass MarkI_Container ={ (const RTActorClass *)0 , "MarkI_Container" , (RTVersionId)0 , 5 , rtg_relays , new_MarkI_Container_Actor};static const char * const rtg_state_names[] ={ "TOP"};static const RTInterfaceDescriptor rtg_interfaces_plate[] ={ { "warmer" , 1 } , { "coffeeControl" , 1 }};static const RTBindingDescriptor rtg_bindings_plate[] ={ { 0 , &Warmer::Base::rt_class } , { 1 , &CUControl_Warmer::Conjugate::rt_class }};static const RTInterfaceDescriptor rtg_interfaces_frontPanel[] ={ { "indicatorLight" , 1 } , { "brewButton" , 1 } , { "coffeeControl" , 1 }};static const RTBindingDescriptor rtg_bindings_frontPanel[] ={ { 0 , &IndicatorLight::Base::rt_class } , { 1 , &BrewButton::Base::rt_class } , { 2 , &CUControl_FrontPanel::Conjugate::rt_class }};static const RTInterfaceDescriptor rtg_interfaces_sprayer[] ={ { "boiler" , 1 } , { "reliefValve" , 1 } , { "coffeeControl" , 1 }};static const RTBindingDescriptor rtg_bindings_sprayer[] ={ { 0 , &Boiler::Base::rt_class } , { 1 , &ReliefValve::Base::rt_class } , { 2 , &CUControl_Sprayer::Conjugate::rt_class }};static const RTInterfaceDescriptor rtg_interfaces_coffeeBrewer[] ={ { "warmer" , 1 } , { "sprayer" , 1 } , { "frontpanel" , 1 }};static const RTBindingDescriptor rtg_bindings_coffeeBrewer[] ={ { 0 , &CUControl_Warmer::Base::rt_class } , { 1 , &CUControl_Sprayer::Base::rt_class } , { 2 , &CUControl_FrontPanel::Base::rt_class }};#define SUPER RTActorMarkI_Container_Actor::MarkI_Container_Actor( RTController * rtg_rts, RTActorRef * rtg_ref ) : RTActor( rtg_rts, rtg_ref ){}MarkI_Container_Actor::~MarkI_Container_Actor( void ){}int MarkI_Container_Actor::_followInV( RTBindingEnd & rtg_end, int rtg_portId, int rtg_repIndex ){ switch( rtg_portId ) { case 0: // reliefValve if( rtg_repIndex < 1 ) { // sprayer/reliefValve return sprayer._followIn( rtg_end, 1, rtg_repIndex ); } break; case 1: // indicatorLight if( rtg_repIndex < 1 ) { // frontPanel/indicatorLight return frontPanel._followIn( rtg_end, 0, rtg_repIndex ); } break; case 2: // boiler if( rtg_repIndex < 1 ) { // sprayer/boiler return sprayer._followIn( rtg_end, 0, rtg_repIndex ); } break; case 3: // brewButton if( rtg_repIndex < 1 ) { // frontPanel/brewButton return frontPanel._followIn( rtg_end, 1, rtg_repIndex ); } break; case 4: // warmer if( rtg_repIndex < 1 ) { // plate/warmer return plate._followIn( rtg_end, 0, rtg_repIndex ); } break; default: break; } return RTActor::_followInV( rtg_end, rtg_portId, rtg_repIndex );}int MarkI_Container_Actor::_followOutV( RTBindingEnd & rtg_end, int rtg_compId, int rtg_portId, int rtg_repIndex ){ switch( rtg_compId ) { case 1: // plate switch( rtg_portId ) { case 0: // warmer if( rtg_repIndex < 1 ) { // warmer return _followOut( rtg_end, 4, rtg_repIndex ); } break; case 1: // coffeeControl if( rtg_repIndex < 1 ) { // coffeeBrewer/warmer return coffeeBrewer._followIn( rtg_end, 0, rtg_repIndex ); } break; default: break; } case 2: // frontPanel switch( rtg_portId ) { case 0: // indicatorLight if( rtg_repIndex < 1 ) { // indicatorLight return _followOut( rtg_end, 1, rtg_repIndex ); } break; case 1: // brewButton if( rtg_repIndex < 1 ) { // brewButton return _followOut( rtg_end, 3, rtg_repIndex ); } break; case 2: // coffeeControl if( rtg_repIndex < 1 ) { // coffeeBrewer/frontpanel return coffeeBrewer._followIn( rtg_end, 2, rtg_repIndex ); } break; default: break; } case 3: // sprayer switch( rtg_portId ) { case 0: // boiler if( rtg_repIndex < 1 ) { // boiler return _followOut( rtg_end, 2, rtg_repIndex ); } break; case 1: // reliefValve if( rtg_repIndex < 1 ) { // reliefValve return _followOut( rtg_end, 0, rtg_repIndex ); } break; case 2: // coffeeControl if( rtg_repIndex < 1 ) { // coffeeBrewer/sprayer return coffeeBrewer._followIn( rtg_end, 1, rtg_repIndex ); } break; default: break; } case 4: // coffeeBrewer switch( rtg_portId ) { case 0: // warmer if( rtg_repIndex < 1 ) { // plate/coffeeControl return plate._followIn( rtg_end, 1, rtg_repIndex ); } break; case 1: // sprayer if( rtg_repIndex < 1 ) { // sprayer/coffeeControl return sprayer._followIn( rtg_end, 2, rtg_repIndex ); } break; case 2: // frontpanel if( rtg_repIndex < 1 ) { // frontPanel/coffeeControl return frontPanel._followIn( rtg_end, 2, rtg_repIndex ); } break; default: break; } default: break; } return RTActor::_followOutV( rtg_end, rtg_compId, rtg_portId, rtg_repIndex );}void MarkI_Container_Actor::rtsBehavior( int signalIndex, int portIndex ){ for( int stateIndex = getCurrentState(); ; ) switch( stateIndex ) { case 1: // {{{RME state ':TOP' switch( portIndex ) { case 0: switch( signalIndex ) { case 1: return; default: break; } break; default: break; } unexpectedMessage(); return; // }}}RME default: unexpectedState(); return; }}const RTActor_class * MarkI_Container_Actor::getActorData( void ) const{ return &MarkI_Container_Actor::rtg_class;}const RTActor_class MarkI_Container_Actor::rtg_class ={ (const RTActor_class *)0 , rtg_state_names , 1 , MarkI_Container_Actor::rtg_parent_state , &MarkI_Container , 4 , MarkI_Container_Actor::rtg_capsule_roles , 0 , (const RTPortDescriptor *)0 , 0 , (const RTLocalBindingDescriptor *)0 , 0 , (const RTFieldDescriptor *)0};const RTStateId MarkI_Container_Actor::rtg_parent_state[] ={ 0};const RTComponentDescriptor MarkI_Container_Actor::rtg_capsule_roles[] ={ { "plate" , &CUWarmer , RTOffsetOf( MarkI_Container_Actor, plate ) , 1 , RTComponentDescriptor::Fixed , 1 , 1 // cardinality , 2 , rtg_interfaces_plate , 2 , rtg_bindings_plate } , { "frontPanel" , &CUFrontPanel , RTOffsetOf( MarkI_Container_Actor, frontPanel ) , 2 , RTComponentDescriptor::Fixed , 1 , 1 // cardinality , 3 , rtg_interfaces_frontPanel , 3 , rtg_bindings_frontPanel } , { "sprayer" , &CUSprayer , RTOffsetOf( MarkI_Container_Actor, sprayer ) , 3 , RTComponentDescriptor::Fixed , 1 , 1 // cardinality , 3 , rtg_interfaces_sprayer , 3 , rtg_bindings_sprayer } , { "coffeeBrewer" , &MarkI_Brewer , RTOffsetOf( MarkI_Container_Actor, coffeeBrewer ) , 4 , RTComponentDescriptor::Fixed , 1 , 1 // cardinality , 3 , rtg_interfaces_coffeeBrewer , 3 , rtg_bindings_coffeeBrewer }};#undef SUPER// {{{RME tool 'OT::Cpp' property 'ImplementationEnding'// {{{USR// }}}USR// }}}RME// }}}RME
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?