X-Git-Url: http://andersk.mit.edu/gitweb/splint.git/blobdiff_plain/11db3170da99e22aa0acea76debd6c7b590a629c..fbb86200a436458358afe1209d0b8f224c31ae84:/src/flagMarker.c diff --git a/src/flagMarker.c b/src/flagMarker.c index c8ab819..c1327bd 100644 --- a/src/flagMarker.c +++ b/src/flagMarker.c @@ -1,6 +1,6 @@ /* ** Splint - annotation-assisted static program checker -** Copyright (C) 1994-2001 University of Virginia, +** Copyright (C) 1994-2002 University of Virginia, ** Massachusetts Institute of Technology ** ** This program is free software; you can redistribute it and/or modify it @@ -17,15 +17,15 @@ ** the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ** MA 02111-1307, USA. ** -** For information on lclint: lclint-request@cs.virginia.edu -** To report a bug: lclint-bug@cs.virginia.edu +** For information on splint: info@splint.org +** To report a bug: splint-bug@splint.org ** For more information: http://www.splint.org */ /* ** flagMarker.c */ -# include "lclintMacros.nf" +# include "splintMacros.nf" # include "basic.h" flagMarker flagMarker_createLocalSet (flagcode code, ynm set, fileloc loc) @@ -107,6 +107,35 @@ int flagMarker_getCount (flagMarker f) return f->info.nerrors; } +bool flagMarker_equal (flagMarker f1, flagMarker f2) +{ + if (f1->kind != f2->kind) + { + return FALSE; + } + + if (!fileloc_equal (f1->loc, f2->loc)) + { + return FALSE; + } + + switch (f1->kind) + { + case FMK_LOCALSET: + return (f1->info.set == f2->info.set + && flagcode_equal (f1->code, f2->code)); + case FMK_IGNORECOUNT: + return (f1->info.nerrors == f2->info.nerrors); + case FMK_IGNOREON: + case FMK_IGNOREOFF: + return TRUE; + case FMK_SUPPRESS: + return (flagcode_equal (f1->code, f2->code)); + } + + BADBRANCHRET (FALSE); +} + cstring flagMarker_unparse (flagMarker c) { switch (c->kind)