00001 #ifndef __LINK_H__
00002 #define __LINK_H__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00026 #include "defines.h"
00027
00028
00030 str_link* str_link_add( char* str, str_link** head, str_link** tail );
00031
00033 void stmt_link_add_head( statement* stmt, stmt_link** head, stmt_link** tail );
00034
00036 void stmt_link_add_tail( statement* stmt, stmt_link** head, stmt_link** tail );
00037
00039 void stmt_link_merge( stmt_link** base_head, stmt_link** base_tail, stmt_link* other_head, stmt_link* other_tail );
00040
00042 void exp_link_add( expression* expr, exp_link** head, exp_link** tail );
00043
00045 void sig_link_add( vsignal* sig, sig_link** head, sig_link** tail );
00046
00048 void fsm_link_add( fsm* table, fsm_link** head, fsm_link** tail );
00049
00051 void funit_link_add( func_unit* funit, funit_link** head, funit_link** tail );
00052
00053 #ifndef VPI_ONLY
00054
00055 void gitem_link_add( gen_item* gi, gitem_link** head, gitem_link** tail );
00056 #endif
00057
00059 inst_link* inst_link_add( funit_inst* inst, inst_link** head, inst_link** tail );
00060
00061
00062
00064 void str_link_display( str_link* head );
00065
00067 void stmt_link_display( stmt_link* head );
00068
00070 void exp_link_display( exp_link* head );
00071
00073 void sig_link_display( sig_link* head );
00074
00076 void funit_link_display( funit_link* head );
00077
00078 #ifndef VPI_ONLY
00079
00080 void gitem_link_display( gitem_link* head );
00081 #endif
00082
00084 void inst_link_display( inst_link* head );
00085
00086
00087
00089 str_link* str_link_find( const char* value, str_link* head );
00090
00092 stmt_link* stmt_link_find( int id, stmt_link* head );
00093
00095 exp_link* exp_link_find( int id, exp_link* head );
00096
00098 sig_link* sig_link_find( const char* name, sig_link* head );
00099
00101 fsm_link* fsm_link_find( const char* name, fsm_link* head );
00102
00104 funit_link* funit_link_find( const char* name, int type, funit_link* head );
00105
00106 #ifndef VPI_ONLY
00107
00108 gitem_link* gitem_link_find( gen_item* gi, gitem_link* head );
00109 #endif
00110
00112 funit_inst* inst_link_find_by_scope( char* scope, inst_link* head );
00113
00115 funit_inst* inst_link_find_by_funit( const func_unit* funit, inst_link* head, int* ignore );
00116
00117
00118
00120 void str_link_remove( char* str, str_link** head, str_link** tail );
00121
00123 void exp_link_remove( expression* exp, exp_link** head, exp_link** tail, bool recursive );
00124
00125 #ifndef VPI_ONLY
00126
00127 void gitem_link_remove( gen_item* gi, gitem_link** head, gitem_link** tail );
00128 #endif
00129
00131 void funit_link_remove( func_unit* funit, funit_link** head, funit_link** tail, bool rm_funit );
00132
00133
00134
00136 void str_link_delete_list( str_link* head );
00137
00139 void stmt_link_unlink( statement* stmt, stmt_link** head, stmt_link** tail );
00140
00142 void stmt_link_delete_list( stmt_link* head );
00143
00145 void exp_link_delete_list( exp_link* head, bool del_exp );
00146
00148 void sig_link_delete_list( sig_link* head, bool del_sig );
00149
00151 void fsm_link_delete_list( fsm_link* head );
00152
00154 void funit_link_delete_list( funit_link** head, funit_link** tail, bool rm_funit );
00155
00156 #ifndef VPI_ONLY
00157
00158 void gitem_link_delete_list( gitem_link* head, bool rm_elems );
00159 #endif
00160
00162 void inst_link_delete_list( inst_link* head );
00163
00164 #endif
00165