1 /*++
2 Copyright (c) 2012 Microsoft Corporation
3 
4 Module Name:
5 
6     api_ast_map.h
7 
8 Abstract:
9     API for creating AST maps
10 
11 Author:
12 
13     Leonardo de Moura (leonardo) 2012-03-09.
14 
15 Revision History:
16 
17 --*/
18 #pragma once
19 
20 #include "api/api_util.h"
21 #include "util/obj_hashtable.h"
22 
23 struct Z3_ast_map_ref : public api::object {
24     ast_manager &            m;
25     obj_map<ast, ast*> m_map;
Z3_ast_map_refZ3_ast_map_ref26     Z3_ast_map_ref(api::context& c, ast_manager & _m): api::object(c), m(_m) {}
27     ~Z3_ast_map_ref() override;
28 };
29 
to_ast_map(Z3_ast_map v)30 inline Z3_ast_map_ref * to_ast_map(Z3_ast_map v) { return reinterpret_cast<Z3_ast_map_ref *>(v); }
of_ast_map(Z3_ast_map_ref * v)31 inline Z3_ast_map of_ast_map(Z3_ast_map_ref * v) { return reinterpret_cast<Z3_ast_map>(v); }
to_ast_map_ref(Z3_ast_map v)32 inline obj_map<ast, ast*> & to_ast_map_ref(Z3_ast_map v) { return to_ast_map(v)->m_map; }
33 
34