X-Git-Url: http://andersk.mit.edu/gitweb/splint.git/blobdiff_plain/08eb3d0ec56d0574e69334b7a8f09f3bef93b9f4..b87215ab641c38a5509a608751384ebb9f4f8bf9:/src/metaStateSpecifier.c diff --git a/src/metaStateSpecifier.c b/src/metaStateSpecifier.c index 3bbebdd..e8f8a1a 100644 --- a/src/metaStateSpecifier.c +++ b/src/metaStateSpecifier.c @@ -1,6 +1,6 @@ /* -** LCLint - annotation-assisted static program checker -** Copyright (C) 1994-2001 University of Virginia, +** Splint - annotation-assisted static program checker +** 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,17 +17,16 @@ ** 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 more information: http://lclint.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 */ /* ** metaStateSpecifier.c */ -# include "lclintMacros.nf" +# include "splintMacros.nf" # include "basic.h" -# include "mtincludes.h" metaStateSpecifier metaStateSpecifier_create (/*@only@*/ sRef sr, /*@observer@*/ metaStateInfo msinfo) @@ -35,14 +34,65 @@ metaStateSpecifier_create (/*@only@*/ sRef sr, /*@observer@*/ metaStateInfo msin metaStateSpecifier res = (metaStateSpecifier) dmalloc (sizeof (*res)); res->sr = sr; res->msinfo = msinfo; + res->elipsis = FALSE; return res; } +metaStateSpecifier +metaStateSpecifier_createElipsis (/*@observer@*/ metaStateInfo msinfo) +{ + metaStateSpecifier res = (metaStateSpecifier) dmalloc (sizeof (*res)); + res->sr = sRef_undefined; + res->msinfo = msinfo; + res->elipsis = TRUE; + return res; +} + +bool +metaStateSpecifier_isElipsis (metaStateSpecifier m) +{ + return m->elipsis; +} + +sRef +metaStateSpecifier_getSref (metaStateSpecifier m) +{ + llassert (!metaStateSpecifier_isElipsis (m)); + return m->sr; +} + +metaStateInfo +metaStateSpecifier_getMetaStateInfo (metaStateSpecifier m) +{ + return m->msinfo; +} + +metaStateSpecifier +metaStateSpecifier_copy (metaStateSpecifier m) +{ + if (metaStateSpecifier_isElipsis (m)) + { + return metaStateSpecifier_createElipsis (m->msinfo); + } + else + { + return metaStateSpecifier_create (sRef_saveCopy (m->sr), m->msinfo); + } +} + cstring metaStateSpecifier_unparse (metaStateSpecifier m) { - return message ("%q:%s", - sRef_unparse (m->sr), - metaStateInfo_getName (m->msinfo)); + if (m->elipsis) + { + return message ("...:%s", + metaStateInfo_getName (m->msinfo)); + } + else + { + return message ("%q:%s", + sRef_unparse (m->sr), + metaStateInfo_getName (m->msinfo)); + } } void metaStateSpecifier_free (/*@only@*/ metaStateSpecifier m)