]> andersk Git - splint.git/blobdiff - src/metaStateExpression.c
do..while control flow fix in exprNode.c
[splint.git] / src / metaStateExpression.c
index 5b0aa398a08e5a0e8cfc0ea717cfe7774f6d993c..ae50991fcd16e48ca5b8e9fc5f57b34ef0189161 100644 (file)
@@ -27,7 +27,6 @@
 
 # include "lclintMacros.nf"
 # include "basic.h"
-# include "mtincludes.h"
 
 metaStateExpression 
 metaStateExpression_create (/*@only@*/ metaStateSpecifier spec)
@@ -64,6 +63,40 @@ cstring metaStateExpression_unparse (metaStateExpression m)
     }
 }
 
+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);
@@ -77,4 +110,3 @@ void metaStateExpression_free (/*@only@*/ metaStateExpression m)
   sfree (m);
 }
 
-
This page took 0.042851 seconds and 4 git commands to generate.