diff options
Diffstat (limited to 'sim/igen/filter.h')
-rw-r--r-- | sim/igen/filter.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/sim/igen/filter.h b/sim/igen/filter.h new file mode 100644 index 00000000000..c85b8039bc9 --- /dev/null +++ b/sim/igen/filter.h @@ -0,0 +1,86 @@ +/* This file is part of the program psim. + + Copyright (C) 1994-1996, Andrew Cagney <cagney@highland.com.au> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + */ + + +/* NB, an empty filter is NULL */ +typedef struct _filter filter; + + +/* parse the list merging any flags into the filter */ + +extern void filter_parse +(filter **filters, + const char *filt); + + +/* add the second filter to the first */ + +extern void filter_add +(filter **filters, + filter *add); + + + +/* returns true if SUB is a strict subset of SUPER. For an empty set + is a member of any set */ + +extern int filter_is_subset +(filter *superset, + filter *subset); + + +/* return true if there is at least one member common to the two + filters */ + +extern int filter_is_common +(filter *l, + filter *r); + + +/* returns the index (pos + 1) if the name is in the filter. */ + +extern int filter_is_member +(filter *set, + const char *flag); + + +/* returns true if one of the flags is not present in the filter. + === !filter_is_subset (filter_parse (NULL, flags), filters) */ +int is_filtered_out +(filter *filters, + const char *flags); + + +/* returns the next member of the filter set that follows MEMBER. + Member does not need to be an elememt of the filter set. Next of + "" is the first non-empty member */ +char *filter_next +(filter *set, + char *member); + + + +/* for debugging */ + +extern void dump_filter +(lf *file, + char *prefix, + filter *filt, + char *suffix); |