{
ClearAllTables();
delete Ctr_Example;
+ Ctr_Example = NULL;
delete arrayTransformer;
+ arrayTransformer = NULL;
delete tosat;
+ tosat = NULL;
delete simp;
+ simp = NULL;
//delete bm;
}
void ClearAllTables(void)
{
- simp->ClearAllTables();
- arrayTransformer->ClearAllTables();
- tosat->ClearAllTables();
- Ctr_Example->ClearAllTables();
- //bm->ClearAllTables();
- }
+ if (simp != NULL)
+ simp->ClearAllTables();
+ if (arrayTransformer != NULL)
+ arrayTransformer->ClearAllTables();
+ if (tosat != NULL)
+ tosat->ClearAllTables();
+ if (Ctr_Example != NULL)
+ Ctr_Example->ClearAllTables();
+ //bm->ClearAllTables();
+ }
}; //End of Class STP
};//end of namespace
#endif
#include <inttypes.h>
#include <cmath>
#include "../STPManager/STPManager.h"
+#include "../printer/SMTLIBPrinter.h"
namespace BEEV
{
} // End of NewParameterized_BooleanVar()
-
+ //If ASTNode remain with references (somewhere), this will segfault.
+ STPMgr::~STPMgr() {
+ ClearAllTables();
+
+ printer::NodeLetVarMap.clear();
+ printer::NodeLetVarVec.clear();
+ printer::NodeLetVarMap1.clear();
+
+ delete runTimes;
+ runTimes = NULL;
+ ASTFalse = ASTNode(0);
+ ASTTrue = ASTNode(0);
+ ASTUndefined = ASTNode(0);
+ _current_query = ASTNode(0);
+ dummy_node = ASTNode(0);
+
+ zeroes.clear();
+ ones.clear();
+ max.clear();
+
+ if (NULL != CreateBVConstVal)
+ CONSTANTBV::BitVector_Destroy(CreateBVConstVal);
+
+ Introduced_SymbolsSet.clear();
+ _symbol_unique_table.clear();
+ _bvconst_unique_table.clear();
+
+ vector<IntToASTVecMap*>::iterator it = _asserts.begin();
+ vector<IntToASTVecMap*>::iterator itend = _asserts.end();
+
+ for (; it != itend; it++) {
+ IntToASTVecMap * j = (*it);
+ for (IntToASTVecMap::iterator it2 = j->begin(); it2 != j->end(); it2++) {
+ it2->second->clear();
+ delete (it2->second);
+ }
+ j->clear();
+ delete j;
+ }
+ _asserts.clear();
+
+ delete hashingNodeFactory;
+
+ _interior_unique_table.clear();
+ }
}; // end namespace beev
ListOfDeclaredVars.clear();
} //End of ClearAllTables()
+ ~STPMgr();
- // This will exit cleanly even if nodes remain around in memory.
- // So it's a partial safe destructor.
- void cleanup()
- {
- ClearAllTables();
-
- delete runTimes;
- runTimes = NULL;
- ASTFalse = ASTNode(0);
- ASTTrue = ASTNode(0);
- ASTUndefined = ASTNode(0);
- _current_query = ASTNode(0);
- dummy_node = ASTNode(0);
-
- zeroes.clear();
- ones.clear();
- max.clear();
-
- Introduced_SymbolsSet.clear();
- _symbol_unique_table.clear();
-
- vector<IntToASTVecMap*>::iterator it = _asserts.begin();
- vector<IntToASTVecMap*>::iterator itend = _asserts.end();
- for(;it!=itend;it++)
- {
- IntToASTVecMap * j = (*it);
- j->clear();
- delete j;
- }
- _asserts.clear();
-
- delete hashingNodeFactory;
- }
-
- // If ASTNode remain with references (somewhere), this will segfault.
- ~STPMgr()
- {
- ClearAllTables();
-
- vector<IntToASTVecMap*>::iterator it = _asserts.begin();
- vector<IntToASTVecMap*>::iterator itend = _asserts.end();
- for(;it!=itend;it++)
- {
- IntToASTVecMap * j = (*it);
- j->clear();
- delete j;
- }
- _asserts.clear();
-
- delete runTimes;
-
- _interior_unique_table.clear();
- _bvconst_unique_table.clear();
- _symbol_unique_table.clear();
-
- if (NULL != CreateBVConstVal)
- CONSTANTBV::BitVector_Destroy(CreateBVConstVal);
-
- delete hashingNodeFactory;
- }
};//End of Class STPMgr
};//end of namespace
#endif
+
/********************************************************************
* AUTHORS: Vijay Ganesh
*
delete AssertsQuery;
asserts = ASTNode();
query = ASTNode();
- bm->cleanup();
+ _empty_ASTVec.clear();
+
+ simpCleaner.release();
+ atClearner.release();
+ tosatCleaner.release();
+ ctrCleaner.release();
+
+ delete GlobalSTP;
+ delete ParserBM;
+
+
return 0;