#include <sc_port.h>

Public 型 | |
| typedef sc_port_base | base_type |
| typedef sc_port_b< IF > | this_type |
Public メソッド | |
| void | bind (IF &interface_) |
| void | operator() (IF &interface_) |
| void | bind (this_type &parent_) |
| void | operator() (this_type &parent_) |
| int | size () const |
| IF * | operator-> () |
| const IF * | operator-> () const |
| const IF * | get_interface (int iface_i) const |
| IF * | get_interface (int iface_i) |
| IF * | operator[] (int index_) |
| const IF * | operator[] (int index_) const |
| virtual sc_interface * | get_interface () |
| virtual const sc_interface * | get_interface () const |
Protected メソッド | |
| sc_port_b (int max_size_, sc_port_policy policy=SC_ONE_OR_MORE_BOUND) | |
| sc_port_b (const char *name_, int max_size_, sc_port_policy policy=SC_ONE_OR_MORE_BOUND) | |
| virtual | ~sc_port_b () |
| virtual int | vbind (sc_interface &) |
| virtual int | vbind (sc_port_base &) |
| virtual void | make_sensitive (sc_thread_handle, sc_event_finder *=0) const |
| virtual void | make_sensitive (sc_method_handle, sc_event_finder *=0) const |
Private メソッド | |
| virtual void | add_interface (sc_interface *) |
| virtual const char * | if_typename () const |
| virtual int | interface_count () |
| sc_port_b () | |
| sc_port_b (const this_type &) | |
| this_type & | operator= (const this_type &) |
Private 変数 | |
| IF * | m_interface |
| std::vector< IF * > | m_interface_vec |
フレンド | |
| class | sc_sensitive |
| class | sc_sensitive_neg |
| class | sc_sensitive_pos |
| typedef sc_port_base sc_core::sc_port_b< IF >::base_type |
sc_core::sc_fifo_in< T >, sc_core::sc_fifo_out< T >, sc_core::sc_port< IF, N, P >, sc_core::sc_in< T >, sc_core::sc_in< bool >, sc_core::sc_in< sc_dt::sc_logic >, sc_core::sc_inout< T >, sc_core::sc_inout< bool >, sc_core::sc_inout< sc_dt::sc_logic >, sc_core::sc_out< T >, sc_core::sc_in_resolved, sc_core::sc_inout_resolved, sc_core::sc_out_resolved, sc_core::sc_in_rv< W >, sc_core::sc_inout_rv< W >, sc_core::sc_out_rv< W >, sc_core::sc_port< sc_core::sc_signal_inout_if< bool >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_signal_inout_if< sc_dt::sc_logic >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_signal_in_if< bool >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_signal_in_if< sc_dt::sc_logic >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_signal_inout_if< T >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_signal_in_if< T >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_signal_in_if< sc_dt::sc_lv< W > >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_fifo_out_if< T >, 0, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_signal_inout_if< sc_dt::sc_lv< W > >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_fifo_in_if< T >, 0, SC_ONE_OR_MORE_BOUND >, sc_core::sc_in< sc_dt::sc_lv< W > >, と sc_core::sc_inout< sc_dt::sc_lv< W > >で再定義されています。
| typedef sc_port_b<IF> sc_core::sc_port_b< IF >::this_type |
sc_core::sc_port_baseを再定義しています。
sc_core::sc_fifo_in< T >, sc_core::sc_fifo_out< T >, sc_core::sc_port< IF, N, P >, sc_core::sc_in< T >, sc_core::sc_in< bool >, sc_core::sc_in< sc_dt::sc_logic >, sc_core::sc_inout< T >, sc_core::sc_inout< bool >, sc_core::sc_inout< sc_dt::sc_logic >, sc_core::sc_out< T >, sc_core::sc_in_resolved, sc_core::sc_inout_resolved, sc_core::sc_out_resolved, sc_core::sc_in_rv< W >, sc_core::sc_inout_rv< W >, sc_core::sc_out_rv< W >, sc_core::sc_port< sc_core::sc_signal_inout_if< bool >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_signal_inout_if< sc_dt::sc_logic >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_signal_in_if< bool >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_signal_in_if< sc_dt::sc_logic >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_signal_inout_if< T >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_signal_in_if< T >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_signal_in_if< sc_dt::sc_lv< W > >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_fifo_out_if< T >, 0, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_signal_inout_if< sc_dt::sc_lv< W > >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_fifo_in_if< T >, 0, SC_ONE_OR_MORE_BOUND >, sc_core::sc_in< sc_dt::sc_lv< W > >, と sc_core::sc_inout< sc_dt::sc_lv< W > >で再定義されています。
| sc_core::sc_port_b< IF >::sc_port_b | ( | int | max_size_, | |
| sc_port_policy | policy = SC_ONE_OR_MORE_BOUND | |||
| ) | [inline, explicit, protected] |
| sc_core::sc_port_b< IF >::sc_port_b | ( | const char * | name_, | |
| int | max_size_, | |||
| sc_port_policy | policy = SC_ONE_OR_MORE_BOUND | |||
| ) | [inline, protected] |
| virtual sc_core::sc_port_b< IF >::~sc_port_b | ( | ) | [inline, protected, virtual] |
| sc_core::sc_port_b< IF >::sc_port_b | ( | ) | [private] |
| sc_core::sc_port_b< IF >::sc_port_b | ( | const this_type & | ) | [private] |
| void sc_core::sc_port_b< IF >::bind | ( | IF & | interface_ | ) | [inline] |
| void sc_core::sc_port_b< IF >::operator() | ( | IF & | interface_ | ) | [inline] |
| void sc_core::sc_port_b< IF >::bind | ( | this_type & | parent_ | ) | [inline] |
sc_core::sc_port_baseを再定義しています。
sc_core::sc_in< T >, sc_core::sc_in< bool >, sc_core::sc_in< sc_dt::sc_logic >, と sc_core::sc_in< sc_dt::sc_lv< W > >で再定義されています。
00317 { base_type::bind( parent_ ); }
| void sc_core::sc_port_b< IF >::operator() | ( | this_type & | parent_ | ) | [inline] |
sc_core::sc_in< T >, sc_core::sc_in< bool >, sc_core::sc_in< sc_dt::sc_logic >, と sc_core::sc_in< sc_dt::sc_lv< W > >で再定義されています。
00320 { base_type::bind( parent_ ); }
| int sc_core::sc_port_b< IF >::size | ( | ) | const [inline] |
| IF * sc_core::sc_port_b< IF >::operator-> | ( | ) | [inline] |
00487 { 00488 if( m_interface == 0 ) { 00489 report_error( SC_ID_GET_IF_, "port is not bound" ); 00490 } 00491 return m_interface; 00492 }
| const IF * sc_core::sc_port_b< IF >::operator-> | ( | ) | const [inline] |
00498 { 00499 if( m_interface == 0 ) { 00500 report_error( SC_ID_GET_IF_, "port is not bound" ); 00501 } 00502 return m_interface; 00503 }
| const IF * sc_core::sc_port_b< IF >::get_interface | ( | int | iface_i | ) | const [inline] |
00530 { 00531 if ( index_ == 0 ) { 00532 return m_interface; 00533 } 00534 else if( index_ < 0 || index_ >= size() ) { 00535 report_error( SC_ID_GET_IF_, "index out of range" ); 00536 } 00537 return m_interface_vec[index_]; 00538 }
| IF * sc_core::sc_port_b< IF >::get_interface | ( | int | iface_i | ) | [inline] |
00516 { 00517 if ( index_ == 0 ) { 00518 return m_interface; 00519 } 00520 else if( index_ < 0 || index_ >= size() ) { 00521 report_error( SC_ID_GET_IF_, "index out of range" ); 00522 } 00523 return m_interface_vec[index_]; 00524 }
| IF* sc_core::sc_port_b< IF >::operator[] | ( | int | index_ | ) | [inline] |
| const IF* sc_core::sc_port_b< IF >::operator[] | ( | int | index_ | ) | const [inline] |
| virtual sc_interface* sc_core::sc_port_b< IF >::get_interface | ( | ) | [inline, virtual] |
| virtual const sc_interface* sc_core::sc_port_b< IF >::get_interface | ( | ) | const [inline, virtual] |
| int sc_core::sc_port_b< IF >::vbind | ( | sc_interface & | interface_ | ) | [inline, protected, virtual] |
sc_core::sc_port_baseを実装しています。
sc_core::sc_in< T >, sc_core::sc_in< bool >, sc_core::sc_in< sc_dt::sc_logic >, と sc_core::sc_in< sc_dt::sc_lv< W > >で再定義されています。
00547 { 00548 IF* iface = DCAST<IF*>( &interface_ ); 00549 if( iface == 0 ) { 00550 // type mismatch 00551 return 2; 00552 } 00553 base_type::bind( *iface ); 00554 return 0; 00555 }
| int sc_core::sc_port_b< IF >::vbind | ( | sc_port_base & | parent_ | ) | [inline, protected, virtual] |
sc_core::sc_port_baseを実装しています。
sc_core::sc_in< T >, sc_core::sc_in< bool >, sc_core::sc_in< sc_dt::sc_logic >, と sc_core::sc_in< sc_dt::sc_lv< W > >で再定義されています。
00561 { 00562 this_type* parent = DCAST<this_type*>( &parent_ ); 00563 if( parent == 0 ) { 00564 // type mismatch 00565 return 2; 00566 } 00567 base_type::bind( *parent ); 00568 return 0; 00569 }
| void sc_core::sc_port_b< IF >::make_sensitive | ( | sc_thread_handle | handle_p, | |
| sc_event_finder * | event_finder_ = 0 | |||
| ) | const [inline, protected, virtual] |
sc_core::sc_port_baseを再定義しています。
00620 { 00621 if ( m_bind_info == 0 ) 00622 { 00623 int if_n = m_interface_vec.size(); 00624 for ( int if_i = 0; if_i < if_n; if_i++ ) 00625 { 00626 IF* iface_p = m_interface_vec[if_i]; 00627 assert( iface_p != 0 ); 00628 add_static_event( handle_p, iface_p->default_event() ); 00629 } 00630 } 00631 else 00632 { 00633 sc_port_base::make_sensitive( handle_p, event_finder_ ); 00634 } 00635 }
| void sc_core::sc_port_b< IF >::make_sensitive | ( | sc_method_handle | handle_p, | |
| sc_event_finder * | event_finder_ = 0 | |||
| ) | const [inline, protected, virtual] |
sc_core::sc_port_baseを再定義しています。
00641 { 00642 if ( m_bind_info == 0 ) 00643 { 00644 int if_n = m_interface_vec.size(); 00645 for ( int if_i = 0; if_i < if_n; if_i++ ) 00646 { 00647 IF* iface_p = m_interface_vec[if_i]; 00648 assert( iface_p != 0 ); 00649 add_static_event( handle_p, iface_p->default_event() ); 00650 } 00651 } 00652 else 00653 { 00654 sc_port_base::make_sensitive( handle_p, event_finder_ ); 00655 } 00656 }
| void sc_core::sc_port_b< IF >::add_interface | ( | sc_interface * | interface_ | ) | [inline, private, virtual] |
sc_core::sc_port_baseを実装しています。
00578 { 00579 IF* iface = DCAST<IF*>( interface_ ); 00580 assert( iface != 0 ); 00581 00582 // make sure that the interface is not already bound: 00583 00584 int size = m_interface_vec.size(); 00585 for ( int i = 0; i < size; i++ ) 00586 { 00587 if ( iface == m_interface_vec[i] ) 00588 { 00589 report_error( SC_ID_BIND_IF_TO_PORT_, 00590 "interface already bound to port" ); 00591 } 00592 } 00593 00594 // "bind" the interface and make sure our short cut for 0 is set up. 00595 00596 m_interface_vec.push_back( iface ); 00597 m_interface = m_interface_vec[0]; 00598 }
| const char * sc_core::sc_port_b< IF >::if_typename | ( | ) | const [inline, private, virtual] |
| int sc_core::sc_port_b< IF >::interface_count | ( | ) | [inline, private, virtual] |
| this_type& sc_core::sc_port_b< IF >::operator= | ( | const this_type & | ) | [private] |
sc_core::sc_port_baseを再定義しています。
sc_core::sc_port< IF, N, P >, sc_core::sc_in< T >, sc_core::sc_in< bool >, sc_core::sc_in< sc_dt::sc_logic >, sc_core::sc_inout< T >, sc_core::sc_inout< T >, sc_core::sc_inout< bool >, sc_core::sc_inout< bool >, sc_core::sc_inout< sc_dt::sc_logic >, sc_core::sc_inout< sc_dt::sc_logic >, sc_core::sc_out< T >, sc_core::sc_out< T >, sc_core::sc_in_resolved, sc_core::sc_inout_resolved, sc_core::sc_inout_resolved, sc_core::sc_out_resolved, sc_core::sc_out_resolved, sc_core::sc_in_rv< W >, sc_core::sc_inout_rv< W >, sc_core::sc_out_rv< W >, sc_core::sc_port< sc_core::sc_signal_inout_if< bool >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_signal_inout_if< sc_dt::sc_logic >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_signal_in_if< bool >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_signal_in_if< sc_dt::sc_logic >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_signal_inout_if< T >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_signal_in_if< T >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_signal_in_if< sc_dt::sc_lv< W > >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_fifo_out_if< T >, 0, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_signal_inout_if< sc_dt::sc_lv< W > >, 1, SC_ONE_OR_MORE_BOUND >, sc_core::sc_port< sc_core::sc_fifo_in_if< T >, 0, SC_ONE_OR_MORE_BOUND >, sc_core::sc_in< sc_dt::sc_lv< W > >, sc_core::sc_inout< sc_dt::sc_lv< W > >, と sc_core::sc_inout< sc_dt::sc_lv< W > >で再定義されています。
friend class sc_sensitive [friend] |
friend class sc_sensitive_neg [friend] |
friend class sc_sensitive_pos [friend] |
IF* sc_core::sc_port_b< IF >::m_interface [private] |
std::vector<IF*> sc_core::sc_port_b< IF >::m_interface_vec [private] |
1.5.6