#include <sc_signal.h>
Public メソッド | |
sc_signal () | |
sc_signal (const char *name_) | |
virtual | ~sc_signal () |
virtual void | register_port (sc_port_base &, const char *) |
virtual const sc_event & | default_event () const |
virtual const sc_event & | value_changed_event () const |
virtual const T & | read () const |
virtual const T & | get_data_ref () const |
virtual bool | event () const |
virtual void | write (const T &) |
operator const T & () const | |
sc_signal< T > & | operator= (const T &a) |
sc_signal< T > & | operator= (const sc_signal< T > &a) |
const T & | get_new_value () const |
void | trace (sc_trace_file *tf) const |
virtual void | print (::std::ostream &=::std::cout) const |
virtual void | dump (::std::ostream &=::std::cout) const |
virtual const char * | kind () const |
Protected メソッド | |
virtual void | update () |
Protected 変数 | |
sc_event * | m_change_event_p |
T | m_cur_val |
sc_dt::uint64 | m_delta |
T | m_new_val |
sc_port_base * | m_output |
sc_object * | m_writer |
Private メソッド | |
sc_signal (const sc_signal< T > &) |
sc_signal.h の 65 行で定義されています。
sc_core::sc_signal< T >::sc_signal | ( | ) | [inline] |
sc_signal.h の 71 行で定義されています。
00072 : sc_prim_channel( sc_gen_unique_name( "signal" ) ), 00073 m_change_event_p( 0 ), m_cur_val( T() ), 00074 m_delta( ~sc_dt::UINT64_ONE ), m_new_val( T() ), m_output( 0 ), 00075 m_writer( 0 ) 00076 {}
sc_core::sc_signal< T >::sc_signal | ( | const char * | name_ | ) | [inline, explicit] |
sc_signal.h の 78 行で定義されています。
00079 : sc_prim_channel( name_ ), 00080 m_change_event_p( 0 ), m_cur_val( T() ), 00081 m_delta( ~sc_dt::UINT64_ONE ), m_new_val( T() ), m_output( 0 ), 00082 m_writer( 0 ) 00083 {}
virtual sc_core::sc_signal< T >::~sc_signal | ( | ) | [inline, virtual] |
sc_signal.h の 86 行で定義されています。
00087 { 00088 if ( !m_change_event_p ) delete m_change_event_p; 00089 }
sc_core::sc_signal< T >::sc_signal | ( | const sc_signal< T > & | ) | [private] |
void sc_core::sc_signal< T >::register_port | ( | sc_port_base & | port_, | |
const char * | if_typename_ | |||
) | [inline, virtual] |
sc_core::sc_interfaceを再定義しています。
sc_core::sc_signal_rv< W >で再定義されています。
sc_signal.h の 190 行で定義されています。
00191 { 00192 if ( sc_get_curr_simcontext()->write_check() ) 00193 { 00194 std::string nm( if_typename_ ); 00195 if( nm == typeid( sc_signal_inout_if<T> ).name() ) { 00196 // an out or inout port; only one can be connected 00197 if( m_output != 0) { 00198 sc_signal_invalid_writer( this, m_output, &port_ ); 00199 } 00200 m_output = &port_; 00201 } 00202 } 00203 }
virtual const sc_event& sc_core::sc_signal< T >::default_event | ( | ) | const [inline, virtual] |
sc_core::sc_interfaceを再定義しています。
sc_signal.h の 98 行で定義されています。
00099 { 00100 if ( !m_change_event_p ) m_change_event_p = new sc_event; 00101 return *m_change_event_p; 00102 }
virtual const sc_event& sc_core::sc_signal< T >::value_changed_event | ( | ) | const [inline, virtual] |
sc_core::sc_signal_in_if< T >を実装しています。
sc_signal.h の 106 行で定義されています。
00107 { 00108 if ( !m_change_event_p ) m_change_event_p = new sc_event; 00109 return *m_change_event_p; 00110 }
virtual const T& sc_core::sc_signal< T >::read | ( | ) | const [inline, virtual] |
virtual const T& sc_core::sc_signal< T >::get_data_ref | ( | ) | const [inline, virtual] |
sc_core::sc_signal_in_if< T >を実装しています。
sc_signal.h の 118 行で定義されています。
00119 { sc_deprecated_get_data_ref(); return m_cur_val; }
virtual bool sc_core::sc_signal< T >::event | ( | ) | const [inline, virtual] |
sc_core::sc_signal_in_if< T >を実装しています。
sc_signal.h の 123 行で定義されています。
00124 { return simcontext()->event_occurred(m_delta); }
void sc_core::sc_signal< T >::write | ( | const T & | value_ | ) | [inline, virtual] |
sc_core::sc_signal_write_if< T >を実装しています。
sc_core::sc_buffer< T >で再定義されています。
sc_signal.h の 211 行で定義されています。
00212 { 00213 sc_object* writer = sc_get_curr_simcontext()->get_current_writer(); 00214 if( m_writer == 0 ) { 00215 m_writer = writer; 00216 } else if( m_writer != writer ) { 00217 sc_signal_invalid_writer( this, m_writer, writer ); 00218 } 00219 00220 m_new_val = value_; 00221 if( !( m_new_val == m_cur_val ) ) { 00222 request_update(); 00223 } 00224 }
sc_core::sc_signal< T >::operator const T & | ( | ) | const [inline] |
sc_signal<T>& sc_core::sc_signal< T >::operator= | ( | const T & | a | ) | [inline] |
sc_core::sc_buffer< T >で再定義されています。
sc_signal.h の 136 行で定義されています。
00137 { write( a ); return *this; }
sc_signal<T>& sc_core::sc_signal< T >::operator= | ( | const sc_signal< T > & | a | ) | [inline] |
const T& sc_core::sc_signal< T >::get_new_value | ( | ) | const [inline] |
void sc_core::sc_signal< T >::trace | ( | sc_trace_file * | tf | ) | const [inline, virtual] |
sc_core::sc_objectを再定義しています。
sc_signal.h の 147 行で定義されています。
00148 { 00149 sc_deprecated_trace(); 00150 # ifdef DEBUG_SYSTEMC 00151 sc_trace( tf, read(), name() ); 00152 # endif 00153 }
void sc_core::sc_signal< T >::print | ( | ::std::ostream & | os = ::std::cout |
) | const [inline, virtual] |
void sc_core::sc_signal< T >::dump | ( | ::std::ostream & | os = ::std::cout |
) | const [inline, virtual] |
sc_core::sc_objectを再定義しています。
sc_signal.h の 238 行で定義されています。
00239 { 00240 os << " name = " << name() << ::std::endl; 00241 os << " value = " << m_cur_val << ::std::endl; 00242 os << "new value = " << m_new_val << ::std::endl; 00243 }
virtual const char* sc_core::sc_signal< T >::kind | ( | ) | const [inline, virtual] |
sc_core::sc_prim_channelを再定義しています。
sc_core::sc_buffer< T >, と sc_core::sc_signal_rv< W >で再定義されています。
sc_signal.h の 159 行で定義されています。
void sc_core::sc_signal< T >::update | ( | ) | [inline, protected, virtual] |
sc_core::sc_prim_channelを再定義しています。
sc_core::sc_buffer< T >, と sc_core::sc_signal_rv< W >で再定義されています。
sc_signal.h の 249 行で定義されています。
00250 { 00251 if( !( m_new_val == m_cur_val ) ) { 00252 m_cur_val = m_new_val; 00253 if ( m_change_event_p ) m_change_event_p->notify_next_delta(); 00254 m_delta = delta_count(); 00255 } 00256 }
sc_event* sc_core::sc_signal< T >::m_change_event_p [mutable, protected] |
sc_signal.h の 168 行で定義されています。
T sc_core::sc_signal< T >::m_cur_val [protected] |
sc_signal.h の 169 行で定義されています。
sc_dt::uint64 sc_core::sc_signal< T >::m_delta [protected] |
sc_signal.h の 170 行で定義されています。
T sc_core::sc_signal< T >::m_new_val [protected] |
sc_signal.h の 171 行で定義されています。
sc_port_base* sc_core::sc_signal< T >::m_output [protected] |
sc_signal.h の 172 行で定義されています。
sc_object* sc_core::sc_signal< T >::m_writer [protected] |
sc_signal.h の 173 行で定義されています。