/* * $Id$ * * [ Description ] * */ #include "Behavioural/include/Signal.h" namespace morpheo { namespace behavioural { #undef FUNCTION #define FUNCTION "Signal::connect" void Signal::connect (Signal * signal_dest) { log_printf(FUNC,Behavioural,FUNCTION,"Begin"); cout << "connected : " << get_name() << "\twith " << signal_dest->get_name() << endl; if ((_direction == IN ) and (signal_dest->_direction == IN )) switch (_type_info) { case BOOL : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT8_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT16_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT32_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT64_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} default : {throw (ErrorMorpheo (" Signal \""+_name+"\" : type unknow.")); break;} } else if ((_direction == IN ) and (signal_dest->_direction == OUT)) switch (_type_info) { case BOOL : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT8_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT16_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT32_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT64_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} default : {throw (ErrorMorpheo (" Signal \""+_name+"\" : type unknow.")); break;} } else if ((_direction == IN ) and (signal_dest->_direction == INTERNAL)) switch (_type_info) { case BOOL : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT8_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT16_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT32_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT64_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} default : {throw (ErrorMorpheo (" Signal \""+_name+"\" : type unknow.")); break;} } else #ifdef SYSTEMCASS_SPECIFIC if ((_direction == OUT) and (signal_dest->_direction == IN )) switch (_type_info) { case BOOL : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT8_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT16_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT32_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT64_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} default : {throw (ErrorMorpheo (" Signal \""+_name+"\" : type unknow.")); break;} } else #endif if ((_direction == OUT) and (signal_dest->_direction == OUT)) switch (_type_info) { case BOOL : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT8_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT16_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT32_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT64_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} default : {throw (ErrorMorpheo (" Signal \""+_name+"\" : type unknow.")); break;} } else if ((_direction == OUT) and (signal_dest->_direction == INTERNAL)) switch (_type_info) { case BOOL : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT8_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT16_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT32_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} case UINT64_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} default : {throw (ErrorMorpheo (" Signal \""+_name+"\" : type unknow.")); break;} } // else // if ((_direction == INTERNAL) and (signal_dest->_direction == IN )) // switch (_type_info) // { // case BOOL : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} // case UINT8_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} // case UINT16_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} // case UINT32_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} // case UINT64_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} // default : {throw (ErrorMorpheo (" Signal \""+_name+"\" : type unknow.")); break;} // } // else // if ((_direction == INTERNAL ) and (signal_dest->_direction == OUT)) // switch (_type_info) // { // case BOOL : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} // case UINT8_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} // case UINT16_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} // case UINT32_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} // case UINT64_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} // default : {throw (ErrorMorpheo (" Signal \""+_name+"\" : type unknow.")); break;} // } // else // if ((_direction == INTERNAL ) and (signal_dest->_direction == INTERNAL)) // switch (_type_info) // { // case BOOL : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} // case UINT8_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} // case UINT16_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} // case UINT32_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} // case UINT64_T : {(*(static_cast *>(_sc_signal))) (*(static_cast *>(signal_dest->_sc_signal))); break;} // default : {throw (ErrorMorpheo (" Signal \""+_name+"\" : type unknow.")); break;} // } else throw (ErrorMorpheo (" Signal \""+_name+"\" can't been connected with signal \""+signal_dest->get_name()+"\" : illegal direction ("+toString(_direction)+" with "+toString(signal_dest->_direction)+").")); log_printf(FUNC,Behavioural,FUNCTION,"End"); }; }; // end namespace behavioural }; // end namespace morpheo