Author: dhains
Date: Wed Jun 18 03:59:16 2008
New Revision: 27274
URL: http://svn.gna.org/viewcvs/wesnoth?rev=27274&view=rev
Log:
Changed ai objects to use intrusive pointers as opposed to shared pointers
Modified:
trunk/src/ai.cpp
trunk/src/ai.hpp
trunk/src/formula_ai.cpp
trunk/src/playsingle_controller.cpp
Modified: trunk/src/ai.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/ai.cpp?rev=27274&r1=27273&r2=27274&view=diff
==============================================================================
--- trunk/src/ai.cpp (original)
+++ trunk/src/ai.cpp Wed Jun 18 03:59:16 2008
@@ -2367,12 +2367,12 @@
inputs->push_back(formula_input("is_surrounded", FORMULA_READ_ONLY));
}
-std::map<std::string, boost::shared_ptr<ai_interface> > ai_manager::ais =
std::map<std::string, boost::shared_ptr<ai_interface> >();
-
-boost::shared_ptr<ai_interface> ai_manager::get_ai(ai_interface::info&
ai_info, std::string ai_key, std::string ai_algo) {
+ai_manager::ai_map ai_manager::ais = ai_manager::ai_map();
+
+boost::intrusive_ptr<ai_interface> ai_manager::get_ai(ai_interface::info&
ai_info, std::string ai_key, std::string ai_algo) {
ai_map::const_iterator itor = ais.find(ai_key);
if(itor == ais.end()) {
- boost::shared_ptr<ai_interface> new_ai(create_ai(ai_algo,
ai_info));
+ boost::intrusive_ptr<ai_interface> new_ai(create_ai(ai_algo,
ai_info));
ai_map::value_type new_ai_pair(ai_key, new_ai);
itor = ais.insert(new_ai_pair).first;
} else {
Modified: trunk/src/ai.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/ai.hpp?rev=27274&r1=27273&r2=27274&view=diff
==============================================================================
--- trunk/src/ai.hpp (original)
+++ trunk/src/ai.hpp Wed Jun 18 03:59:16 2008
@@ -328,10 +328,10 @@
class ai_manager {
- typedef std::map<std::string, boost::shared_ptr<ai_interface> > ai_map;
+ typedef std::map<std::string, boost::intrusive_ptr<ai_interface> >
ai_map;
public:
- static boost::shared_ptr<ai_interface>
get_ai(ai_interface::info&, std::string, std::string);
+ static boost::intrusive_ptr<ai_interface>
get_ai(ai_interface::info&, std::string, std::string);
private:
static ai_map ais;
Modified: trunk/src/formula_ai.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/formula_ai.cpp?rev=27274&r1=27273&r2=27274&view=diff
==============================================================================
--- trunk/src/formula_ai.cpp (original)
+++ trunk/src/formula_ai.cpp Wed Jun 18 03:59:16 2008
@@ -932,16 +932,15 @@
formula_ai::formula_ai(info& i) : ai(i), move_maps_valid_(false),
function_table(*this)
{
//make sure we don't run out of refcount
- add_ref();
vars_.add_ref();
}
void formula_ai::new_turn()
{
move_maps_valid_ = false;
-
ai::new_turn();
}
+
void formula_ai::play_turn()
{
const config& ai_param = current_team().ai_parameters();
Modified: trunk/src/playsingle_controller.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/playsingle_controller.cpp?rev=27274&r1=27273&r2=27274&view=diff
==============================================================================
--- trunk/src/playsingle_controller.cpp (original)
+++ trunk/src/playsingle_controller.cpp Wed Jun 18 03:59:16 2008
@@ -18,6 +18,7 @@
* Logic for single-player game.
*/
+#include <boost/intrusive_ptr.hpp>
#include "playsingle_controller.hpp"
#include "construct_dialog.hpp"
@@ -707,9 +708,13 @@
ai_interface::info
ai_info(*gui_,map_,units_,teams_,player_number_,status_, turn_data, gamestate_);
std::string ai_algorithm = current_team().ai_algorithm();
- boost::shared_ptr<ai_interface> ai_obj(ai_algorithm == "formula_ai" ?
-
ai_manager::get_ai(ai_info,current_team().name(),ai_algorithm) :
- boost::shared_ptr<ai_interface>
(create_ai(ai_algorithm,ai_info)));
+ boost::intrusive_ptr<ai_interface> ai_obj;
+
+ if(ai_algorithm == "formula_ai") {
+ ai_obj = ai_manager::get_ai(ai_info,current_team().name(),
ai_algorithm);
+ } else {
+ ai_obj = create_ai(ai_algorithm, ai_info);
+ }
ai_obj->user_interact().attach_handler(this);
ai_obj->unit_recruited().attach_handler(this);
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits