1 /*++ 2 Copyright (c) 2012 Microsoft Corporation 3 4 Module Name: 5 6 api_goal.h 7 8 Abstract: 9 API for creating goals 10 11 Author: 12 13 Leonardo de Moura (leonardo) 2012-03-06. 14 15 Revision History: 16 17 --*/ 18 #pragma once 19 20 #include "api/api_util.h" 21 #include "tactic/goal.h" 22 23 struct Z3_goal_ref : public api::object { 24 goal_ref m_goal; Z3_goal_refZ3_goal_ref25 Z3_goal_ref(api::context& c) : api::object(c) {} ~Z3_goal_refZ3_goal_ref26 ~Z3_goal_ref() override {} 27 }; 28 to_goal(Z3_goal g)29inline Z3_goal_ref * to_goal(Z3_goal g) { return reinterpret_cast<Z3_goal_ref *>(g); } of_goal(Z3_goal_ref * g)30inline Z3_goal of_goal(Z3_goal_ref * g) { return reinterpret_cast<Z3_goal>(g); } to_goal_ref(Z3_goal g)31inline goal_ref to_goal_ref(Z3_goal g) { return g == nullptr ? goal_ref() : to_goal(g)->m_goal; } 32 33