Main Page | Modules | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

/Users/trevorw/projects/release/covered-0.7.4/src/link.h

Go to the documentation of this file.
00001 #ifndef __LINK_H__
00002 #define __LINK_H__
00003 
00004 /*
00005  Copyright (c) 2006-2009 Trevor Williams
00006 
00007  This program is free software; you can redistribute it and/or modify
00008  it under the terms of the GNU General Public License as published by the Free Software
00009  Foundation; either version 2 of the License, or (at your option) any later version.
00010 
00011  This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
00012  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00013  See the GNU General Public License for more details.
00014 
00015  You should have received a copy of the GNU General Public License along with this program;
00016  if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
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 /*@null@*/ str_link* str_link_find( const char* value, str_link* head );
00090 
00092 /*@null@*/ stmt_link* stmt_link_find( int id, stmt_link* head );
00093 
00095 /*@null@*/ exp_link* exp_link_find( int id, exp_link* head );
00096 
00098 /*@null@*/ sig_link* sig_link_find( const char* name, sig_link* head );
00099 
00101 /*@null@*/ fsm_link* fsm_link_find( const char* name, fsm_link* head );
00102 
00104 /*@null@*/ /*@shared@*/ funit_link* funit_link_find( const char* name, int type, funit_link* head );
00105 
00106 #ifndef VPI_ONLY
00107 
00108 /*@null@*/ gitem_link* gitem_link_find( gen_item* gi, gitem_link* head );
00109 #endif
00110 
00112 /*@null@*/ funit_inst* inst_link_find_by_scope( char* scope, inst_link* head );
00113 
00115 /*@null@*/ 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 

Generated on Wed Jun 17 22:19:20 2009 for Covered by doxygen 1.3.4