X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=sim%2Figen%2Ffilter.h;h=d728ba5578e72eadcbf4e557d41766b7e5c82ce2;hb=cdf4e8ae55ac5a070b6b5c17b047639f20d37f5f;hp=814f704f8d29d0c88e05096b1b9891b053c85328;hpb=e98fe4f7b54cbdf29aef9287bbb1bea8801dd05a;p=deliverable%2Fbinutils-gdb.git diff --git a/sim/igen/filter.h b/sim/igen/filter.h index 814f704f8d..d728ba5578 100644 --- a/sim/igen/filter.h +++ b/sim/igen/filter.h @@ -1,43 +1,69 @@ -/* This file is part of the program psim. +/* The IGEN simulator generator for GDB, the GNU Debugger. - Copyright (C) 1994-1995, Andrew Cagney + Copyright 2002-2021 Free Software Foundation, Inc. - 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. + Contributed by Andrew Cagney. - 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. - - */ + This file is part of GDB. + 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 3 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, see . */ + + +/* NB, an empty filter is NULL */ typedef struct _filter filter; -/* append the filter onto the end of the list */ +/* 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); + -extern filter *new_filter -(const char *filt, - filter *filters); +/* 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 true if the flags are non empty and some are missing from the filter list */ +/* 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); -extern int is_filtered_out -(const char *flags, - filter *filters); -/* true if the flag is in the list */ -extern int it_is -(const char *flag, - const char *flags); +/* for debugging */ +extern void dump_filter (lf *file, char *prefix, filter *filt, char *suffix);