1 /********************* */
2 /*! \file rewriter_tables_template.h
4 ** Top contributors (to current version):
5 ** Dejan Jovanovic, Tim King, Andres Noetzli
6 ** This file is part of the CVC4 project.
7 ** Copyright (c) 2009-2020 by the authors listed in the file AUTHORS
8 ** in the top-level source directory and their institutional affiliations.
9 ** All rights reserved. See the file COPYING in the top-level source
10 ** directory for licensing information.\endverbatim
12 ** \brief Rewriter tables for various theories
14 ** This file contains template code for the rewriter tables that are generated
15 ** from the Theory kinds files.
18 #include "cvc4_private.h"
22 #include "theory/rewriter.h"
23 #include "theory/rewriter_attributes.h"
24 #include "expr/attribute_unique_id.h"
25 #include "expr/attribute.h"
32 Node
Rewriter::getPreRewriteCache(theory::TheoryId theoryId
, TNode node
) {
34 $
{pre_rewrite_get_cache
}
40 Node
Rewriter::getPostRewriteCache(theory::TheoryId theoryId
, TNode node
) {
42 $
{post_rewrite_get_cache
}
48 void Rewriter::setPreRewriteCache(theory::TheoryId theoryId
, TNode node
, TNode cache
) {
50 $
{pre_rewrite_set_cache
}
56 void Rewriter::setPostRewriteCache(theory::TheoryId theoryId
, TNode node
, TNode cache
) {
58 $
{post_rewrite_set_cache
}
64 Rewriter::Rewriter() : d_tpg(nullptr)
66 for (size_t i
= 0; i
< kind::LAST_KIND
; ++i
)
68 d_preRewriters
[i
] = nullptr;
69 d_postRewriters
[i
] = nullptr;
72 for (size_t i
= 0; i
< theory::THEORY_LAST
; ++i
)
74 d_preRewritersEqual
[i
] = nullptr;
75 d_postRewritersEqual
[i
] = nullptr;
79 void Rewriter::clearCachesInternal() {
80 typedef CVC4::expr::attr::AttributeUniqueId AttributeUniqueId
;
81 std::vector
<AttributeUniqueId
> preids
;
82 $
{pre_rewrite_attribute_ids
}
84 std::vector
<AttributeUniqueId
> postids
;
85 $
{post_rewrite_attribute_ids
}
87 std::vector
<const AttributeUniqueId
*> allids
;
88 for(unsigned i
= 0; i
< preids
.size(); ++i
){
89 allids
.push_back(&preids
[i
]);
91 for(unsigned i
= 0; i
< postids
.size(); ++i
){
92 allids
.push_back(&postids
[i
]);
94 NodeManager::currentNM()->deleteAttributes(allids
);
97 }/* CVC4::theory namespace */