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)30inline 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)31inline 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)32inline obj_map<ast, ast*> & to_ast_map_ref(Z3_ast_map v) { return to_ast_map(v)->m_map; } 33 34