diff options
author | Liana Hadarean <lianahady@gmail.com> | 2012-05-08 21:54:55 +0000 |
---|---|---|
committer | Liana Hadarean <lianahady@gmail.com> | 2012-05-08 21:54:55 +0000 |
commit | 8a0c0562cb8d0e26ea019ff782b25c1997a49a0b (patch) | |
tree | 28239db9bcb26b03d893ad61dd1a7ea099391fbe /src/util/node_visitor.h | |
parent | 5082cb8349efbb287084293cd4bc6c3fa5a34f26 (diff) |
Merging in bvprop branch, with proper bit-vector propagation.
This should also fix bug 325.
Diffstat (limited to 'src/util/node_visitor.h')
-rw-r--r-- | src/util/node_visitor.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/util/node_visitor.h b/src/util/node_visitor.h index 0dec26717..687272b56 100644 --- a/src/util/node_visitor.h +++ b/src/util/node_visitor.h @@ -31,6 +31,23 @@ namespace CVC4 { template<typename Visitor> class NodeVisitor { + /** For re-entry checking */ + static bool d_inRun; + + class GuardReentry { + bool& d_guard; + public: + GuardReentry(bool& guard) + : d_guard(guard) { + Assert(!d_guard); + d_guard = true; + } + ~GuardReentry() { + Assert(d_guard); + d_guard = false; + } + }; + public: /** @@ -52,6 +69,8 @@ public: */ static typename Visitor::return_type run(Visitor& visitor, TNode node) { + GuardReentry guard(d_inRun); + // Notify of a start visitor.start(node); @@ -91,5 +110,8 @@ public: }; +template <typename Visitor> +bool NodeVisitor<Visitor>::d_inRun = false; + } |