1 /* 2 Copyright (C) 2014 - 2018 by Chris Beck <render787@gmail.com> 3 Part of the Battle for Wesnoth Project https://www.wesnoth.org/ 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 2 of the License, or 8 (at your option) any later version. 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY. 11 12 See the COPYING file for more details. 13 */ 14 15 // The purpose of this header is to forward declare the unit_ptr, if it 16 // is an intrusive pointer then this requires some boilerplate taken 17 // care of here. 18 19 #pragma once 20 21 #include <boost/intrusive_ptr.hpp> 22 #include <memory> 23 24 class unit; 25 26 void intrusive_ptr_add_ref(const unit *); 27 void intrusive_ptr_release(const unit *); 28 29 typedef boost::intrusive_ptr<unit> unit_ptr; 30 typedef boost::intrusive_ptr<const unit> unit_const_ptr; 31 32 // And attacks too! 33 34 class attack_type; 35 36 using attack_ptr = std::shared_ptr<attack_type>; 37 using const_attack_ptr = std::shared_ptr<const attack_type>; 38