クラス テンプレート sc_core::sc_signal< bool >

#include <sc_signal.h>

sc_core::sc_signal< bool >に対する継承グラフ

Inheritance graph
[凡例]

すべてのメンバ一覧

Public メソッド

 sc_signal ()
 sc_signal (const char *name_)
virtual ~sc_signal ()
virtual void register_port (sc_port_base &, const char *)
virtual const sc_eventdefault_event () const
virtual const sc_eventvalue_changed_event () const
virtual const sc_eventposedge_event () const
virtual const sc_eventnegedge_event () const
virtual const bool & read () const
virtual const bool & get_data_ref () const
virtual bool event () const
virtual bool posedge () const
virtual bool negedge () const
virtual sc_resetis_reset () const
virtual void write (const bool &)
 operator const bool & () const
sc_signal< bool > & operator= (const bool &a)
sc_signal< bool > & operator= (const sc_signal< bool > &a)
const bool & 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 ()
virtual bool is_clock () const

Protected 変数

sc_eventm_change_event_p
bool m_cur_val
sc_dt::uint64 m_delta
sc_eventm_negedge_event_p
bool m_new_val
sc_port_basem_output
sc_eventm_posedge_event_p
sc_resetm_reset_p
sc_objectm_writer

Private メソッド

 sc_signal (const sc_signal< bool > &)


説明

template<>
class sc_core::sc_signal< bool >

sc_signal.h268 行で定義されています。


コンストラクタとデストラクタ

sc_core::sc_signal< bool >::sc_signal (  )  [inline]

sc_signal.h274 行で定義されています。

00275         : sc_prim_channel( sc_gen_unique_name( "signal" ) ),
00276           m_change_event_p( 0 ),
00277           m_cur_val( false ),
00278           m_delta( ~sc_dt::UINT64_ONE ),
00279           m_negedge_event_p( 0 ),
00280           m_new_val( false ),
00281           m_output( 0 ),
00282           m_posedge_event_p( 0 ),
00283           m_reset_p( 0 ),
00284           m_writer( 0 )
00285         {}

sc_core::sc_signal< bool >::sc_signal ( const char *  name_  )  [inline, explicit]

sc_signal.h287 行で定義されています。

00288         : sc_prim_channel( name_ ),
00289           m_change_event_p( 0 ),
00290           m_cur_val( false ),
00291           m_delta( ~sc_dt::UINT64_ONE ),
00292           m_negedge_event_p( 0 ),
00293           m_new_val( false ),
00294           m_output( 0 ),
00295           m_posedge_event_p( 0 ),
00296           m_reset_p( 0 ),
00297           m_writer( 0 )
00298         {}

sc_core::sc_signal< bool >::~sc_signal (  )  [virtual]

sc_signal.cpp161 行で定義されています。

00162 {
00163     if ( !m_change_event_p )  delete m_change_event_p;
00164     if ( !m_negedge_event_p ) delete m_negedge_event_p;
00165     if ( !m_posedge_event_p ) delete m_posedge_event_p;
00166     if ( m_reset_p )          delete m_reset_p;
00167 }

sc_core::sc_signal< bool >::sc_signal ( const sc_signal< bool > &   )  [private]


関数

void sc_core::sc_signal< bool >::register_port ( sc_port_base port_,
const char *  if_typename_ 
) [inline, virtual]

sc_core::sc_interfaceを再定義しています。

sc_core::sc_clockで再定義されています。

sc_signal.h428 行で定義されています。

00429 {
00430     if ( sc_get_curr_simcontext()->write_check() )
00431     {
00432         std::string nm( if_typename_ );
00433         if( nm == typeid( sc_signal_inout_if<bool> ).name() ) {
00434             // an out or inout port; only one can be connected
00435             if( m_output != 0 ) {
00436                 sc_signal_invalid_writer( this, m_output, &port_ );
00437             }
00438             m_output = &port_;
00439         }
00440     }
00441 }

virtual const sc_event& sc_core::sc_signal< bool >::default_event (  )  const [inline, virtual]

sc_core::sc_interfaceを再定義しています。

sc_signal.h309 行で定義されています。

00310         { 
00311             if ( !m_change_event_p ) m_change_event_p = new sc_event; 
00312             return *m_change_event_p; 
00313         }

virtual const sc_event& sc_core::sc_signal< bool >::value_changed_event (  )  const [inline, virtual]

sc_core::sc_signal_in_if< bool >を実装しています。

sc_signal.h317 行で定義されています。

00318         { 
00319             if ( !m_change_event_p ) m_change_event_p = new sc_event; 
00320             return *m_change_event_p; 
00321         }

virtual const sc_event& sc_core::sc_signal< bool >::posedge_event (  )  const [inline, virtual]

sc_core::sc_signal_in_if< bool >を実装しています。

sc_signal.h324 行で定義されています。

00325         { 
00326             if ( !m_posedge_event_p )
00327                 m_posedge_event_p = new sc_event; 
00328             return *m_posedge_event_p; 
00329         }

virtual const sc_event& sc_core::sc_signal< bool >::negedge_event (  )  const [inline, virtual]

sc_core::sc_signal_in_if< bool >を実装しています。

sc_signal.h332 行で定義されています。

00333         { 
00334             if ( !m_negedge_event_p )
00335                 m_negedge_event_p = new sc_event; 
00336             return *m_negedge_event_p; 
00337         }

virtual const bool& sc_core::sc_signal< bool >::read (  )  const [inline, virtual]

sc_core::sc_signal_in_if< bool >を実装しています。

sc_signal.h341 行で定義されています。

00342         { return m_cur_val; }

virtual const bool& sc_core::sc_signal< bool >::get_data_ref (  )  const [inline, virtual]

sc_core::sc_signal_in_if< bool >を実装しています。

sc_signal.h345 行で定義されています。

virtual bool sc_core::sc_signal< bool >::event (  )  const [inline, virtual]

sc_core::sc_signal_in_if< bool >を実装しています。

sc_signal.h350 行で定義されています。

00351         { return simcontext()->event_occurred(m_delta); }

virtual bool sc_core::sc_signal< bool >::posedge (  )  const [inline, virtual]

sc_core::sc_signal_in_if< bool >を実装しています。

sc_signal.h354 行で定義されています。

00355         { return ( event() && m_cur_val ); }

virtual bool sc_core::sc_signal< bool >::negedge (  )  const [inline, virtual]

sc_core::sc_signal_in_if< bool >を実装しています。

sc_signal.h358 行で定義されています。

00359         { return ( event() && ! m_cur_val ); }

sc_reset * sc_core::sc_signal< bool >::is_reset (  )  const [virtual]

sc_core::sc_signal_in_if< bool >を実装しています。

sc_signal.cpp151 行で定義されています。

00152 {
00153     sc_reset* result_p;
00154     if ( !m_reset_p ) m_reset_p = new sc_reset( this );
00155     result_p = m_reset_p;
00156     return result_p;
00157 }

void sc_core::sc_signal< bool >::write ( const bool &  value_  )  [inline, virtual]

sc_core::sc_signal_write_if< bool >を実装しています。

sc_core::sc_clockで再定義されています。

sc_signal.h448 行で定義されています。

00449 {
00450     sc_object* writer = sc_get_curr_simcontext()->get_current_writer();
00451     if( m_writer == 0 ) {
00452         m_writer = writer;
00453     } else if( m_writer != writer ) {
00454         sc_signal_invalid_writer( this, m_writer, writer );
00455     }
00456 
00457     m_new_val = value_;
00458     if( !( m_new_val == m_cur_val ) ) {
00459         request_update();
00460     }
00461 }

sc_core::sc_signal< bool >::operator const bool & (  )  const [inline]

sc_signal.h370 行で定義されています。

00371         { return read(); }

sc_signal<bool>& sc_core::sc_signal< bool >::operator= ( const bool &  a  )  [inline]

sc_signal.h374 行で定義されています。

00375         { write( a ); return *this; }

sc_signal<bool>& sc_core::sc_signal< bool >::operator= ( const sc_signal< bool > &  a  )  [inline]

sc_signal.h377 行で定義されています。

00378         { write( a.read() ); return *this; }

const bool& sc_core::sc_signal< bool >::get_new_value (  )  const [inline]

sc_signal.h381 行で定義されています。

00382         { return m_new_val; }

void sc_core::sc_signal< bool >::trace ( sc_trace_file tf  )  const [inline, virtual]

sc_core::sc_objectを再定義しています。

sc_signal.h385 行で定義されています。

00386         {
00387             sc_deprecated_trace();
00388 #           ifdef DEBUG_SYSTEMC
00389                 sc_trace( tf, read(), name() ); 
00390 #           endif
00391         }

void sc_core::sc_signal< bool >::print ( ::std::ostream &  os = ::std::cout  )  const [inline, virtual]

sc_core::sc_objectを再定義しています。

sc_signal.h466 行で定義されています。

00467 {
00468     os << m_cur_val;
00469 }

void sc_core::sc_signal< bool >::dump ( ::std::ostream &  os = ::std::cout  )  const [inline, virtual]

sc_core::sc_objectを再定義しています。

sc_signal.h473 行で定義されています。

00474 {
00475     os << "     name = " << name() << ::std::endl;
00476     os << "    value = " << m_cur_val << ::std::endl;
00477     os << "new value = " << m_new_val << ::std::endl;
00478 }

virtual const char* sc_core::sc_signal< bool >::kind (  )  const [inline, virtual]

sc_core::sc_prim_channelを再定義しています。

sc_core::sc_clockで再定義されています。

sc_signal.h397 行で定義されています。

00398         { return "sc_signal"; }

void sc_core::sc_signal< bool >::update (  )  [inline, protected, virtual]

sc_core::sc_prim_channelを再定義しています。

sc_signal.h483 行で定義されています。

00484 {
00485     if( !( m_new_val == m_cur_val ) ) {
00486         // order of execution below is important, the notify_processes() call
00487         // must come after the update of m_cur_val for things to work properly!
00488         m_cur_val = m_new_val;
00489         if ( m_reset_p ) m_reset_p->notify_processes();
00490 
00491         if ( m_change_event_p ) m_change_event_p->notify_next_delta();
00492         if( m_cur_val ) {
00493             if ( m_posedge_event_p ) m_posedge_event_p->notify_next_delta();
00494         } else {
00495             if ( m_negedge_event_p ) m_negedge_event_p->notify_next_delta();
00496         }
00497         m_delta = delta_count();
00498     }
00499 }

virtual bool sc_core::sc_signal< bool >::is_clock (  )  const [inline, protected, virtual]

sc_core::sc_clockで再定義されています。

sc_signal.h404 行で定義されています。

00404 { return false; }


変数

sc_event* sc_core::sc_signal< bool >::m_change_event_p [mutable, protected]

sc_signal.h407 行で定義されています。

bool sc_core::sc_signal< bool >::m_cur_val [protected]

sc_signal.h408 行で定義されています。

sc_signal.h409 行で定義されています。

sc_event* sc_core::sc_signal< bool >::m_negedge_event_p [mutable, protected]

sc_signal.h410 行で定義されています。

bool sc_core::sc_signal< bool >::m_new_val [protected]

sc_signal.h411 行で定義されています。

sc_port_base* sc_core::sc_signal< bool >::m_output [protected]

sc_signal.h412 行で定義されています。

sc_event* sc_core::sc_signal< bool >::m_posedge_event_p [mutable, protected]

sc_signal.h413 行で定義されています。

sc_reset* sc_core::sc_signal< bool >::m_reset_p [mutable, protected]

sc_signal.h414 行で定義されています。

sc_object* sc_core::sc_signal< bool >::m_writer [protected]

sc_signal.h415 行で定義されています。


このクラスの説明は次のファイルから生成されました:

SystemCに対してFri Jun 6 20:11:49 2008に生成されました。  doxygen 1.5.6