/*
-** LCLint - annotation-assisted static program checker
-** Copyright (C) 1994-2001 University of Virginia,
+** Splint - annotation-assisted static program checker
+** Copyright (C) 1994-2003 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
*/
/*
** metaStateExpression.c
*/
-# include "lclintMacros.nf"
+# include "splintMacros.nf"
# include "basic.h"
-# include "mtincludes.h"
metaStateExpression
metaStateExpression_create (/*@only@*/ metaStateSpecifier spec)
}
}
+metaStateExpression metaStateExpression_copy (metaStateExpression m)
+{
+ if (m == NULL) return NULL;
+
+ if (m->rest != NULL)
+ {
+ return metaStateExpression_createMerge (metaStateSpecifier_copy (m->spec),
+ metaStateExpression_copy (m->rest));
+
+ }
+ else
+ {
+ return metaStateExpression_create (metaStateSpecifier_copy (m->spec));
+ }
+}
+
+metaStateSpecifier metaStateExpression_getSpecifier (metaStateExpression m)
+{
+ llassert (m != NULL);
+ return m->spec;
+}
+
+bool metaStateExpression_isMerge (metaStateExpression m)
+{
+ return (metaStateExpression_isDefined (m)
+ && metaStateExpression_isDefined (m->rest));
+}
+
+/*@observer@*/ metaStateExpression metaStateExpression_getRest (metaStateExpression m)
+{
+ llassert (m != NULL);
+ return m->rest;
+}
+
void metaStateExpression_free (/*@only@*/ metaStateExpression m)
{
llassert (m != NULL);
sfree (m);
}
-