namespace expr {
-// Comparison predicate
-struct NodeValueEq {
- inline bool operator()(const NodeValue* nv1, const NodeValue* nv2) const {
- return ::CVC4::kind::metakind::NodeValueCompare::compare<false>(nv1, nv2);
- }
-};
-
// Comparison predicate
struct NodeValuePoolEq {
inline bool operator()(const NodeValue* nv1, const NodeValue* nv2) const {
}/* CVC4::kind namespace */
-#line 349 "${template}"
+#line 341 "${template}"
namespace theory {
expr::NodeValuePoolEq> NodeValuePool;
typedef __gnu_cxx::hash_set<expr::NodeValue*,
expr::NodeValueIDHashFunction,
- expr::NodeValueEq> ZombieSet;
+ expr::NodeValueIDEquality> ZombieSet;
static CVC4_THREADLOCAL(NodeManager*) s_current;
Debug("gc") << (d_inReclaimZombies ? " [CURRENTLY-RECLAIMING]" : "")
<< std::endl;
}
- d_zombies.insert(nv);// FIXME multithreading
+ d_zombies.insert(nv); // FIXME multithreading
if(safeToReclaimZombies()) {
if(d_zombies.size() > 5000) {
}
};/* struct NodeValueIDHashFunction */
+
+/**
+ * An equality predicate that is applicable between pointers to fully
+ * constructed NodeValues.
+ */
+struct NodeValueIDEquality {
+ inline bool operator()(const NodeValue* a, const NodeValue* b) const {
+ return a->getId() == b->getId();
+ }
+};
+
+
inline std::ostream& operator<<(std::ostream& out, const NodeValue& nv);
}/* CVC4::expr namespace */