]> git.unchartedbackwaters.co.uk Git - francis/stp.git/commitdiff
Improvement. Replace implementation with a node iterator.
authortrevor_hansen <trevor_hansen@e59a4935-1847-0410-ae03-e826735625c1>
Tue, 10 Jan 2012 05:53:22 +0000 (05:53 +0000)
committertrevor_hansen <trevor_hansen@e59a4935-1847-0410-ae03-e826735625c1>
Tue, 10 Jan 2012 05:53:22 +0000 (05:53 +0000)
git-svn-id: https://stp-fast-prover.svn.sourceforge.net/svnroot/stp-fast-prover/trunk/stp@1493 e59a4935-1847-0410-ae03-e826735625c1

src/AST/ASTmisc.cpp

index 5040345ba66c948d84a1fa6ed5251e92d33590a7..d01273b88c45d447e7bcaac2674a7501520c96c6 100644 (file)
@@ -9,6 +9,7 @@
 
 #include "AST.h"
 #include "../STPManager/STPManager.h"
+#include "../STPManager/NodeIterator.h"
 
 namespace BEEV
 {
@@ -164,31 +165,18 @@ namespace BEEV
   }
 
 
-bool containsArrayOps(const ASTNode& n, hash_set<int> & visited)
-{
-        if (n.GetIndexWidth() > 0)
-            return true;
-
-        if (n.Degree() ==0)
-            return false;
-
-        if (visited.find(n.GetNodeNum()) != visited.end())
-            return false;
-
-        visited.insert(n.GetNodeNum());
-
-       for (int i =0; i < n.Degree();i++)
-               if (containsArrayOps(n[i],visited))
-                       return true;
-
-       return false;
-}
-
+    // True if any descendants are arrays.
     bool
     containsArrayOps(const ASTNode&n)
     {
-        hash_set<int> visited;
-        return containsArrayOps(n, visited);
+
+      NodeIterator ni(n, n.GetSTPMgr()->ASTUndefined, *n.GetSTPMgr());
+      ASTNode current;
+      while ((current = ni.next()) != ni.end())
+        if (current.GetIndexWidth()>0)
+          return true;
+
+      return false;
     }
 
        bool isCommutative(const Kind k) {