クラス sc_core::sc_object_manager

#include <sc_object_manager.h>

すべてのメンバ一覧

Public 型

typedef sc_phash< const char
*, sc_object * > 
object_table_type
typedef sc_pvector< sc_object * > object_vector_type
typedef sc_plist< sc_object * > object_hierarchy_type

Public メソッド

 sc_object_manager ()
 ~sc_object_manager ()
sc_objectfind_object (const char *name)
sc_objectfirst_object ()
sc_objectnext_object ()
void hierarchy_push (sc_object *mdl)
sc_objecthierarchy_pop ()
sc_objecthierarchy_curr ()
int hierarchy_size ()
void push_module_name (sc_module_name *mod_name)
sc_module_namepop_module_name ()
sc_module_nametop_of_module_name_stack ()
void insert_object (const char *name, sc_object *obj)
void remove_object (const char *name)

Private 変数

object_table_typem_object_table
object_vector_typem_ordered_object_vector
bool m_ordered_object_vector_dirty
int m_next_object_index
object_hierarchy_typem_object_hierarchy
sc_module_namem_module_name_stack

フレンド

class sc_simcontext


説明

sc_object_manager.h61 行で定義されています。


型定義

sc_object_manager.h67 行で定義されています。

sc_object_manager.h68 行で定義されています。

sc_object_manager.h69 行で定義されています。


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

sc_core::sc_object_manager::sc_object_manager (  ) 

sc_core::sc_object_manager::~sc_object_manager (  ) 

sc_object_manager.cpp88 行で定義されています。

00089 {
00090     delete m_object_hierarchy;
00091 
00092     /* Go through each object in the table, and
00093        mark the m_simc field of the object NULL */
00094     object_table_type::iterator it(m_object_table);
00095     for ( ; !it.empty(); it++) {
00096         sc_object* obj = it.contents();
00097         obj->m_simc = 0;
00098     }
00099     delete m_object_table;
00100     delete m_ordered_object_vector;
00101 }


関数

sc_object * sc_core::sc_object_manager::find_object ( const char *  name  ) 

sc_object_manager.cpp104 行で定義されています。

00105 {
00106     return (*m_object_table)[name];
00107 }

sc_object * sc_core::sc_object_manager::first_object (  ) 

sc_object_manager.cpp120 行で定義されています。

00121 {
00122     if (m_ordered_object_vector_dirty) {
00123         m_ordered_object_vector->erase_all();
00124         object_table_type::iterator it(m_object_table);
00125         while (! it.empty()) {
00126             sc_object* obj = it.contents();
00127             m_ordered_object_vector->push_back(obj);
00128             it++;
00129         }
00130         m_ordered_object_vector->sort(object_name_compare);
00131         m_ordered_object_vector_dirty = false;
00132     }
00133     m_next_object_index = 0;
00134     return next_object();
00135 }

sc_object * sc_core::sc_object_manager::next_object (  ) 

sc_object_manager.cpp138 行で定義されています。

00139 {
00140     assert( ! m_ordered_object_vector_dirty );
00141     if ( m_next_object_index >= m_ordered_object_vector->size() )
00142         return 0;
00143     else
00144         return (*m_ordered_object_vector)[m_next_object_index++];
00145 }

void sc_core::sc_object_manager::hierarchy_push ( sc_object mdl  ) 

sc_object_manager.cpp148 行で定義されています。

00149 {
00150     m_object_hierarchy->push_front(mdl);
00151 }

sc_object * sc_core::sc_object_manager::hierarchy_pop (  ) 

sc_object_manager.cpp154 行で定義されています。

00155 {
00156     return m_object_hierarchy->pop_front();
00157 }

sc_object * sc_core::sc_object_manager::hierarchy_curr (  ) 

sc_object_manager.cpp160 行で定義されています。

00161 {
00162     return m_object_hierarchy->empty() ? 0 : m_object_hierarchy->front();
00163 }

int sc_core::sc_object_manager::hierarchy_size (  ) 

sc_object_manager.cpp166 行で定義されています。

00167 {
00168     return m_object_hierarchy->size();
00169 }

void sc_core::sc_object_manager::push_module_name ( sc_module_name mod_name  ) 

sc_object_manager.cpp172 行で定義されています。

00173 {
00174     mod_name->m_next = m_module_name_stack;
00175     m_module_name_stack = mod_name;
00176 }

sc_module_name * sc_core::sc_object_manager::pop_module_name (  ) 

sc_object_manager.cpp179 行で定義されています。

00180 {
00181     sc_module_name* mod_name = m_module_name_stack;
00182     m_module_name_stack = m_module_name_stack->m_next;
00183     mod_name->m_next = 0;
00184     return mod_name;
00185 }

sc_module_name * sc_core::sc_object_manager::top_of_module_name_stack (  ) 

sc_object_manager.cpp188 行で定義されています。

00189 {
00190     if( m_module_name_stack == 0 ) {
00191         SC_REPORT_ERROR( SC_ID_MODULE_NAME_STACK_EMPTY_, 0 );
00192     }
00193     return m_module_name_stack;
00194 }

void sc_core::sc_object_manager::insert_object ( const char *  name,
sc_object obj 
)

sc_object_manager.cpp197 行で定義されています。

00198 {
00199     m_object_table->insert(name, obj);
00200     m_ordered_object_vector_dirty = true;
00201 }

void sc_core::sc_object_manager::remove_object ( const char *  name  ) 

sc_object_manager.cpp204 行で定義されています。

00205 {
00206     m_object_table->remove(name);
00207     m_ordered_object_vector_dirty = true;
00208 }


フレンドと関連する関数

friend class sc_simcontext [friend]

sc_object_manager.h63 行で定義されています。


変数

sc_object_manager.h92 行で定義されています。

sc_object_manager.h93 行で定義されています。

sc_object_manager.h94 行で定義されています。

sc_object_manager.h95 行で定義されています。

sc_object_manager.h96 行で定義されています。

sc_object_manager.h97 行で定義されています。


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

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