symboltable.c
/* return a new symbol table with all the symbols with a name matching the pattern */
return a new symbol table with all the symbols with a name matching the pattern
return a new symbol table with all the symbols with a name matching the pattern
void remove_matching(symbol_table st, const char *pattern)
{
	rexp_info *info = create_pattern(pattern);	
	symbol_table_internal *symbol_table_p = reveal(st);
	int i = 0;
	while (i < symbol_table_p->num_entries)
	{
		if (execute_pattern(info, symbol_table_p->sym[i].name) == 0)
			remove_entry(st, i);
		else
			i++;
	}
    release_pattern(info);
	return;	
}
void remove_matching ( symbol_table st , const char * pattern ) { rexp_info * info = create_pattern ( pattern ) ; symbol_table_internal * symbol_table_p = reveal ( st ) ; int i = 0 ; while ( i < symbol_table_p -> num_entries ) { if ( execute_pattern ( info , symbol_table_p -> sym [ i ] . name ) == 0 ) remove_entry ( st , i ) ; else i ++ ; } release_pattern ( info ) ; return ; }
return a new symbol table with all the symbols with a name matching the pattern
return a new symbol table with all the symbols with a name matching the pattern