クラス テンプレート sc_core::sc_inout< T >

#include <sc_signal_ports.h>

sc_core::sc_inout< T >に対する継承グラフ

Inheritance graph
[凡例]

すべてのメンバ一覧

Public 型

typedef T data_type
typedef sc_signal_inout_if
< data_type
if_type
typedef sc_port< if_type,
1, SC_ONE_OR_MORE_BOUND > 
base_type
typedef sc_inout< data_typethis_type
typedef sc_signal_in_if
< data_type
in_if_type
typedef sc_port< in_if_type,
1, SC_ONE_OR_MORE_BOUND > 
in_port_type
typedef if_type inout_if_type
typedef base_type inout_port_type

Public メソッド

 sc_inout ()
 sc_inout (const char *name_)
 sc_inout (inout_if_type &interface_)
 sc_inout (const char *name_, inout_if_type &interface_)
 sc_inout (inout_port_type &parent_)
 sc_inout (const char *name_, inout_port_type &parent_)
 sc_inout (this_type &parent_)
 sc_inout (const char *name_, this_type &parent_)
virtual ~sc_inout ()
const sc_eventdefault_event () const
const sc_eventvalue_changed_event () const
const data_typeread () const
 operator const data_type & () const
bool event () const
void write (const data_type &value_)
this_typeoperator= (const data_type &value_)
this_typeoperator= (const in_if_type &interface_)
this_typeoperator= (const in_port_type &port_)
this_typeoperator= (const inout_port_type &port_)
this_typeoperator= (const this_type &port_)
void initialize (const data_type &value_)
void initialize (const in_if_type &interface_)
virtual void end_of_elaboration ()
sc_event_findervalue_changed () const
virtual const char * kind () const
void add_trace_internal (sc_trace_file *, const std::string &) const
void add_trace (sc_trace_file *, const std::string &) const

Protected メソッド

void remove_traces () const

Protected 変数

data_typem_init_val
sc_trace_params_vecm_traces

Private メソッド

 sc_inout (const this_type &)

Private 変数

sc_event_finderm_change_finder_p


説明

template<class T>
class sc_core::sc_inout< T >

sc_signal_ports.h884 行で定義されています。


型定義

template<class T>
typedef T sc_core::sc_inout< T >::data_type

sc_core::sc_out< T >, sc_core::sc_inout_rv< W >, と sc_core::sc_out_rv< W >で再定義されています。

sc_signal_ports.h891 行で定義されています。

template<class T>
typedef sc_signal_inout_if<data_type> sc_core::sc_inout< T >::if_type

sc_signal_ports.h893 行で定義されています。

template<class T>
typedef sc_port<if_type,1,SC_ONE_OR_MORE_BOUND> sc_core::sc_inout< T >::base_type

sc_core::sc_port< IF, N, P >を再定義しています。

sc_core::sc_out< T >, sc_core::sc_inout_rv< W >, と sc_core::sc_out_rv< W >で再定義されています。

sc_signal_ports.h894 行で定義されています。

template<class T>
typedef sc_inout<data_type> sc_core::sc_inout< T >::this_type

sc_core::sc_port< IF, N, P >を再定義しています。

sc_core::sc_out< T >, sc_core::sc_inout_rv< W >, と sc_core::sc_out_rv< W >で再定義されています。

sc_signal_ports.h895 行で定義されています。

template<class T>
typedef sc_signal_in_if<data_type> sc_core::sc_inout< T >::in_if_type

sc_core::sc_out< T >, sc_core::sc_inout_rv< W >, と sc_core::sc_out_rv< W >で再定義されています。

sc_signal_ports.h897 行で定義されています。

template<class T>
typedef sc_port<in_if_type,1,SC_ONE_OR_MORE_BOUND> sc_core::sc_inout< T >::in_port_type

sc_core::sc_out< T >, sc_core::sc_inout_rv< W >, と sc_core::sc_out_rv< W >で再定義されています。

sc_signal_ports.h898 行で定義されています。

template<class T>
typedef if_type sc_core::sc_inout< T >::inout_if_type

sc_core::sc_out< T >, sc_core::sc_inout_rv< W >, と sc_core::sc_out_rv< W >で再定義されています。

sc_signal_ports.h899 行で定義されています。

template<class T>
typedef base_type sc_core::sc_inout< T >::inout_port_type

sc_core::sc_out< T >, sc_core::sc_inout_rv< W >, と sc_core::sc_out_rv< W >で再定義されています。

sc_signal_ports.h900 行で定義されています。


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

template<class T>
sc_core::sc_inout< T >::sc_inout (  )  [inline]

sc_signal_ports.h906 行で定義されています。

00907         : base_type(), m_init_val( 0 ), m_traces( 0 ),
00908           m_change_finder_p(0)
00909         {}

template<class T>
sc_core::sc_inout< T >::sc_inout ( const char *  name_  )  [inline, explicit]

sc_signal_ports.h911 行で定義されています。

00912         : base_type( name_ ), m_init_val( 0 ), m_traces( 0 ),
00913           m_change_finder_p(0)
00914         {}

template<class T>
sc_core::sc_inout< T >::sc_inout ( inout_if_type interface_  )  [inline, explicit]

sc_signal_ports.h916 行で定義されています。

00917         : base_type( interface_ ), m_init_val( 0 ), m_traces( 0 ),
00918           m_change_finder_p(0)
00919         {}

template<class T>
sc_core::sc_inout< T >::sc_inout ( const char *  name_,
inout_if_type interface_ 
) [inline]

sc_signal_ports.h921 行で定義されています。

00922         : base_type( name_, interface_ ), m_init_val( 0 ), m_traces( 0 ),
00923           m_change_finder_p(0)
00924         {}

template<class T>
sc_core::sc_inout< T >::sc_inout ( inout_port_type parent_  )  [inline, explicit]

sc_signal_ports.h926 行で定義されています。

00927         : base_type( parent_ ), m_init_val( 0 ), m_traces( 0 ),
00928           m_change_finder_p(0)
00929         {}

template<class T>
sc_core::sc_inout< T >::sc_inout ( const char *  name_,
inout_port_type parent_ 
) [inline]

sc_signal_ports.h931 行で定義されています。

00932         : base_type( name_, parent_ ), m_init_val( 0 ), m_traces( 0 ),
00933           m_change_finder_p(0)
00934         {}

template<class T>
sc_core::sc_inout< T >::sc_inout ( this_type parent_  )  [inline]

sc_signal_ports.h936 行で定義されています。

00937         : base_type( parent_ ), m_init_val( 0 ), m_traces( 0 ),
00938           m_change_finder_p(0)
00939         {}

template<class T>
sc_core::sc_inout< T >::sc_inout ( const char *  name_,
this_type parent_ 
) [inline]

sc_signal_ports.h941 行で定義されています。

00942         : base_type( name_, parent_ ), m_init_val( 0 ), m_traces( 0 ),
00943           m_change_finder_p(0)
00944         {}

template<class T>
sc_core::sc_inout< T >::~sc_inout (  )  [inline, virtual]

sc_signal_ports.h1079 行で定義されています。

01080 {
01081     if ( m_change_finder_p ) delete m_change_finder_p;
01082     if( m_init_val != 0 ) {
01083         delete m_init_val;
01084     }
01085     remove_traces();
01086 }

template<class T>
sc_core::sc_inout< T >::sc_inout ( const this_type  )  [private]


関数

template<class T>
const sc_event& sc_core::sc_inout< T >::default_event (  )  const [inline]

sc_signal_ports.h956 行で定義されています。

00957         { return (*this)->default_event(); }

template<class T>
const sc_event& sc_core::sc_inout< T >::value_changed_event (  )  const [inline]

sc_signal_ports.h962 行で定義されています。

00963         { return (*this)->value_changed_event(); }

template<class T>
const data_type& sc_core::sc_inout< T >::read (  )  const [inline]

sc_signal_ports.h968 行で定義されています。

00969         { return (*this)->read(); }

template<class T>
sc_core::sc_inout< T >::operator const data_type & (  )  const [inline]

sc_signal_ports.h971 行で定義されています。

00972         { return (*this)->read(); }

template<class T>
bool sc_core::sc_inout< T >::event (  )  const [inline]

sc_signal_ports.h977 行で定義されています。

00978         { return (*this)->event(); }

template<class T>
void sc_core::sc_inout< T >::write ( const data_type value_  )  [inline]

sc_signal_ports.h983 行で定義されています。

00984         { (*this)->write( value_ ); }

template<class T>
this_type& sc_core::sc_inout< T >::operator= ( const data_type value_  )  [inline]

sc_core::sc_out< T >, sc_core::sc_inout_rv< W >, と sc_core::sc_out_rv< W >で再定義されています。

sc_signal_ports.h986 行で定義されています。

00987         { (*this)->write( value_ ); return *this; }

template<class T>
this_type& sc_core::sc_inout< T >::operator= ( const in_if_type interface_  )  [inline]

sc_core::sc_out< T >で再定義されています。

sc_signal_ports.h989 行で定義されています。

00990         { (*this)->write( interface_.read() ); return *this; }

template<class T>
this_type& sc_core::sc_inout< T >::operator= ( const in_port_type port_  )  [inline]

sc_core::sc_out< T >で再定義されています。

sc_signal_ports.h992 行で定義されています。

00993         { (*this)->write( port_->read() ); return *this; }

template<class T>
this_type& sc_core::sc_inout< T >::operator= ( const inout_port_type port_  )  [inline]

sc_core::sc_port< IF, N, P >を再定義しています。

sc_core::sc_out< T >, sc_core::sc_out< T >, sc_core::sc_inout_rv< W >, と sc_core::sc_out_rv< W >で再定義されています。

sc_signal_ports.h995 行で定義されています。

00996         { (*this)->write( port_->read() ); return *this; }

template<class T>
this_type& sc_core::sc_inout< T >::operator= ( const this_type port_  )  [inline]

sc_core::sc_port< IF, N, P >を再定義しています。

sc_core::sc_out< T >, sc_core::sc_out< T >, sc_core::sc_inout_rv< W >, と sc_core::sc_out_rv< W >で再定義されています。

sc_signal_ports.h998 行で定義されています。

00999         { (*this)->write( port_->read() ); return *this; }

template<class T>
void sc_core::sc_inout< T >::initialize ( const data_type value_  )  [inline]

sc_signal_ports.h1094 行で定義されています。

01095 {
01096     inout_if_type* iface = DCAST<inout_if_type*>( this->get_interface() );
01097     if( iface != 0 ) {
01098         iface->write( value_ );
01099     } else {
01100         if( m_init_val == 0 ) {
01101             m_init_val = new data_type;
01102         }
01103         *m_init_val = value_;
01104     }
01105 }

template<class T>
void sc_core::sc_inout< T >::initialize ( const in_if_type interface_  )  [inline]

sc_signal_ports.h1006 行で定義されています。

01007         { initialize( interface_.read() ); }

template<class T>
void sc_core::sc_inout< T >::end_of_elaboration (  )  [inline, virtual]

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

sc_core::sc_inout_rv< W >で再定義されています。

sc_signal_ports.h1113 行で定義されています。

01114 {
01115     if( m_init_val != 0 ) {
01116         write( *m_init_val );
01117         delete m_init_val;
01118         m_init_val = 0;
01119     }
01120     if( m_traces != 0 ) {
01121         for( int i = 0; i < (int)m_traces->size(); ++ i ) {
01122             sc_trace_params* p = (*m_traces)[i];
01123             in_if_type* iface = DCAST<in_if_type*>( this->get_interface() );
01124             sc_trace( p->tf, iface->read(), p->name );
01125         }
01126         remove_traces();
01127     }
01128 }

template<class T>
sc_event_finder& sc_core::sc_inout< T >::value_changed (  )  const [inline]

sc_signal_ports.h1019 行で定義されています。

01020     {
01021         if ( !m_change_finder_p )
01022         {
01023             m_change_finder_p = new sc_event_finder_t<in_if_type>(
01024                 *this, &in_if_type::value_changed_event );
01025         }
01026         return *m_change_finder_p;
01027     }

template<class T>
virtual const char* sc_core::sc_inout< T >::kind (  )  const [inline, virtual]

sc_core::sc_port< IF, N, P >を再定義しています。

sc_core::sc_out< T >, sc_core::sc_inout_rv< W >, と sc_core::sc_out_rv< W >で再定義されています。

sc_signal_ports.h1029 行で定義されています。

01030         { return "sc_inout"; }

template<class T>
void sc_core::sc_inout< T >::add_trace_internal ( sc_trace_file tf_,
const std::string &  name_ 
) const [inline]

sc_signal_ports.h1136 行で定義されています。

01138 {
01139     if( tf_ != 0 ) {
01140             if( m_traces == 0 ) {
01141                 m_traces = new sc_trace_params_vec;
01142             }
01143             m_traces->push_back( new sc_trace_params( tf_, name_ ) );
01144     }
01145 }

template<class T>
void sc_core::sc_inout< T >::add_trace ( sc_trace_file tf_,
const std::string &  name_ 
) const [inline]

sc_signal_ports.h1150 行で定義されています。

01151 {
01152     sc_deprecated_add_trace();
01153     add_trace_internal(tf_, name_);
01154 }

template<class T>
void sc_core::sc_inout< T >::remove_traces (  )  const [inline, protected]

sc_signal_ports.h1159 行で定義されています。

01160 {
01161     if( m_traces != 0 ) {
01162                 for( int i = m_traces->size() - 1; i >= 0; -- i ) {
01163                 delete (*m_traces)[i];
01164                 }
01165                 delete m_traces;
01166                 m_traces = 0;
01167     }
01168 }


変数

template<class T>
data_type* sc_core::sc_inout< T >::m_init_val [protected]

sc_signal_ports.h1034 行で定義されています。

template<class T>
sc_trace_params_vec* sc_core::sc_inout< T >::m_traces [mutable, protected]

sc_signal_ports.h1047 行で定義されています。

template<class T>
sc_event_finder* sc_core::sc_inout< T >::m_change_finder_p [mutable, private]

sc_signal_ports.h1050 行で定義されています。


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

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