1 /********************* */
2 /*! \file variable_type_map.h
4 ** Top contributors (to current version):
5 ** Morgan Deters, Tim King
6 ** This file is part of the CVC4 project.
7 ** Copyright (c) 2009-2019 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 [[ Add one-line brief description here ]]
14 ** [[ Add lengthier description here ]]
15 ** \todo document this file
18 #include "cvc4_public.h"
20 #ifndef __CVC4__VARIABLE_TYPE_MAP_H
21 #define __CVC4__VARIABLE_TYPE_MAP_H
23 #include <unordered_map>
25 #include "expr/expr.h"
30 struct ExprHashFunction
;
32 struct TypeHashFunction
;
34 class CVC4_PUBLIC VariableTypeMap
{
36 * A map Expr -> Expr, intended to be used for a mapping of variables
37 * between two ExprManagers.
39 std::unordered_map
<Expr
, Expr
, ExprHashFunction
> d_variables
;
42 * A map Type -> Type, intended to be used for a mapping of types
43 * between two ExprManagers.
45 std::unordered_map
<Type
, Type
, TypeHashFunction
> d_types
;
48 Expr
& operator[](Expr e
) { return d_variables
[e
]; }
49 Type
& operator[](Type t
) { return d_types
[t
]; }
51 };/* class VariableTypeMap */
53 typedef std::unordered_map
<uint64_t, uint64_t> VarMap
;
55 struct CVC4_PUBLIC ExprManagerMapCollection
{
56 VariableTypeMap d_typeMap
;
59 };/* struct ExprManagerMapCollection */
63 #endif /* __CVC4__VARIABLE_MAP_H */