#include <sc_prim_channel.h>
Public メソッド | |
void | insert (sc_prim_channel &) |
void | remove (sc_prim_channel &) |
int | size () const |
void | request_update (sc_prim_channel &) |
bool | pending_updates () const |
Private メソッド | |
sc_prim_channel_registry (sc_simcontext &simc_) | |
~sc_prim_channel_registry () | |
void | perform_update () |
void | construction_done () |
void | elaboration_done () |
void | start_simulation () |
void | simulation_done () |
sc_prim_channel_registry () | |
sc_prim_channel_registry (const sc_prim_channel_registry &) | |
sc_prim_channel_registry & | operator= (const sc_prim_channel_registry &) |
Private 変数 | |
sc_simcontext * | m_simc |
std::vector< sc_prim_channel * > | m_prim_channel_vec |
sc_prim_channel * | m_update_list_p |
フレンド | |
class | sc_simcontext |
sc_prim_channel.h の 251 行で定義されています。
sc_core::sc_prim_channel_registry::sc_prim_channel_registry | ( | sc_simcontext & | simc_ | ) | [explicit, private] |
sc_prim_channel.cpp の 204 行で定義されています。
00205 : m_simc( &simc_ ), m_update_list_p((sc_prim_channel*)sc_prim_channel::list_end) 00206 { 00207 }
sc_core::sc_prim_channel_registry::~sc_prim_channel_registry | ( | ) | [private] |
sc_core::sc_prim_channel_registry::sc_prim_channel_registry | ( | ) | [private] |
sc_core::sc_prim_channel_registry::sc_prim_channel_registry | ( | const sc_prim_channel_registry & | ) | [private] |
void sc_core::sc_prim_channel_registry::insert | ( | sc_prim_channel & | prim_channel_ | ) |
sc_prim_channel.cpp の 163 行で定義されています。
00164 { 00165 if( sc_is_running() ) { 00166 SC_REPORT_ERROR( SC_ID_INSERT_PRIM_CHANNEL_, "simulation running" ); 00167 } 00168 00169 #ifdef DEBUG_SYSTEMC 00170 // check if prim_channel_ is already inserted 00171 for( int i = 0; i < size(); ++ i ) { 00172 if( &prim_channel_ == m_prim_channel_vec[i] ) { 00173 SC_REPORT_ERROR( SC_ID_INSERT_PRIM_CHANNEL_, "already inserted" ); 00174 } 00175 } 00176 #endif 00177 00178 // insert 00179 m_prim_channel_vec.push_back( &prim_channel_ ); 00180 00181 }
void sc_core::sc_prim_channel_registry::remove | ( | sc_prim_channel & | prim_channel_ | ) |
sc_prim_channel.cpp の 184 行で定義されています。
00185 { 00186 int i; 00187 for( i = 0; i < size(); ++ i ) { 00188 if( &prim_channel_ == m_prim_channel_vec[i] ) { 00189 break; 00190 } 00191 } 00192 if( i == size() ) { 00193 SC_REPORT_ERROR( SC_ID_REMOVE_PRIM_CHANNEL_, 0 ); 00194 } 00195 00196 // remove 00197 m_prim_channel_vec[i] = m_prim_channel_vec[size() - 1]; 00198 m_prim_channel_vec.resize(size()-1); 00199 }
int sc_core::sc_prim_channel_registry::size | ( | ) | const [inline] |
void sc_core::sc_prim_channel_registry::request_update | ( | sc_prim_channel & | prim_channel_ | ) | [inline] |
sc_prim_channel.h の 319 行で定義されています。
00320 { 00321 prim_channel_.m_update_next_p = m_update_list_p; 00322 m_update_list_p = &prim_channel_; 00323 }
bool sc_core::sc_prim_channel_registry::pending_updates | ( | ) | const [inline] |
sc_prim_channel.h の 266 行で定義されています。
00267 { return m_update_list_p != 00268 (sc_prim_channel*)sc_prim_channel::list_end; 00269 }
void sc_core::sc_prim_channel_registry::perform_update | ( | ) | [inline, private] |
sc_prim_channel.h の 330 行で定義されています。
00331 { 00332 sc_prim_channel* next_p; // Next update to perform. 00333 sc_prim_channel* now_p; // Update now performing. 00334 00335 now_p = m_update_list_p; 00336 m_update_list_p = (sc_prim_channel*)sc_prim_channel::list_end; 00337 for ( ; now_p != (sc_prim_channel*)sc_prim_channel::list_end; 00338 now_p = next_p ) 00339 { 00340 next_p = now_p->m_update_next_p; 00341 now_p->perform_update(); 00342 } 00343 }
void sc_core::sc_prim_channel_registry::construction_done | ( | ) | [private] |
sc_prim_channel.cpp の 219 行で定義されています。
00220 { 00221 for( int i = 0; i < size(); ++ i ) { 00222 m_prim_channel_vec[i]->construction_done(); 00223 } 00224 }
void sc_core::sc_prim_channel_registry::elaboration_done | ( | ) | [private] |
sc_prim_channel.cpp の 230 行で定義されています。
00231 { 00232 for( int i = 0; i < size(); ++ i ) { 00233 m_prim_channel_vec[i]->elaboration_done(); 00234 } 00235 }
void sc_core::sc_prim_channel_registry::start_simulation | ( | ) | [private] |
sc_prim_channel.cpp の 240 行で定義されています。
00241 { 00242 for( int i = 0; i < size(); ++ i ) { 00243 m_prim_channel_vec[i]->start_simulation(); 00244 } 00245 }
void sc_core::sc_prim_channel_registry::simulation_done | ( | ) | [private] |
sc_prim_channel.cpp の 250 行で定義されています。
00251 { 00252 for( int i = 0; i < size(); ++ i ) { 00253 m_prim_channel_vec[i]->simulation_done(); 00254 } 00255 }
sc_prim_channel_registry& sc_core::sc_prim_channel_registry::operator= | ( | const sc_prim_channel_registry & | ) | [private] |
friend class sc_simcontext [friend] |
sc_prim_channel.h の 253 行で定義されています。
sc_prim_channel.h の 301 行で定義されています。
std::vector<sc_prim_channel*> sc_core::sc_prim_channel_registry::m_prim_channel_vec [private] |
sc_prim_channel.h の 302 行で定義されています。
sc_prim_channel.h の 304 行で定義されています。