diff options
author | Andres Noetzli <andres.noetzli@gmail.com> | 2018-08-29 16:29:51 -0700 |
---|---|---|
committer | Andres Noetzli <andres.noetzli@gmail.com> | 2018-08-29 16:29:51 -0700 |
commit | 75edd5ebf50bc7b7bc7184b5335fbecc2844ff2a (patch) | |
tree | 17078f1e982e61057af327b4a03410631f5aa204 | |
parent | 395aaff1ed21b37b49cba1a453a26effb2f4ca59 (diff) |
Improve compile timesfasterCompilation
-rw-r--r-- | src/expr/node.cpp | 12 | ||||
-rw-r--r-- | src/expr/node.h | 12 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/expr/node.cpp b/src/expr/node.cpp index b983c81f5..33322588f 100644 --- a/src/expr/node.cpp +++ b/src/expr/node.cpp @@ -112,4 +112,16 @@ bool NodeTemplate<ref_count>::isConst() const { template bool NodeTemplate<true>::isConst() const; template bool NodeTemplate<false>::isConst() const; +template class NodeTemplate<true>; +template class NodeTemplate<false>; + }/* CVC4 namespace */ + +namespace std { +template class std::vector<CVC4::NodeTemplate<true>>; +template class std::vector<CVC4::NodeTemplate<false>>; +template class std::unordered_map<CVC4::NodeTemplate<true>, CVC4::NodeTemplate<true>, CVC4::NodeHashFunction>; +template class std::unordered_map<CVC4::NodeTemplate<false>, CVC4::NodeTemplate<false>, CVC4::TNodeHashFunction>; +template class std::map<CVC4::NodeTemplate<true>, CVC4::NodeTemplate<true> >; +template class std::map<CVC4::NodeTemplate<false>, CVC4::NodeTemplate<false> >; +} diff --git a/src/expr/node.h b/src/expr/node.h index 4b12c7ece..8b21c7881 100644 --- a/src/expr/node.h +++ b/src/expr/node.h @@ -1507,6 +1507,9 @@ inline Node NodeTemplate<true>::fromExpr(const Expr& e) { return NodeManager::fromExpr(e); } +extern template class NodeTemplate<true>; +extern template class NodeTemplate<false>; + #ifdef CVC4_DEBUG /** * Pretty printer for use within gdb. This is not intended to be used @@ -1568,4 +1571,13 @@ static void __attribute__((used)) debugPrintRawTNode(const NodeTemplate<false>& }/* CVC4 namespace */ +namespace std { +extern template class std::vector<CVC4::NodeTemplate<true>>; +extern template class std::vector<CVC4::NodeTemplate<false>>; +extern template class std::unordered_map<CVC4::NodeTemplate<true>, CVC4::NodeTemplate<true>, CVC4::NodeHashFunction>; +extern template class std::unordered_map<CVC4::NodeTemplate<false>, CVC4::NodeTemplate<false>, CVC4::TNodeHashFunction>; +extern template class std::map<CVC4::NodeTemplate<true>, CVC4::NodeTemplate<true> >; +extern template class std::map<CVC4::NodeTemplate<false>, CVC4::NodeTemplate<false> >; +} + #endif /* __CVC4__NODE_H */ |