/*
-** 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
** 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)
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;
}
metaStateSpecifier
metaStateSpecifier_copy (metaStateSpecifier m)
{
- return metaStateSpecifier_create (sRef_saveCopy (m->sr), m->msinfo);
+ 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)