]> git.sesse.net Git - stockfish/blobdiff - src/application.cpp
Tweak unstoppable pawns detection
[stockfish] / src / application.cpp
index 8a7bf85ba21ffa45d6b17f6434d9d4c088db9fa0..2d7a10bb01fd737407ed9942f08b7bacca08b0ff 100644 (file)
@@ -1,7 +1,7 @@
 /*
   Stockfish, a UCI chess playing engine derived from Glaurung 2.1
   Copyright (C) 2004-2008 Tord Romstad (Glaurung author)
-  Copyright (C) 2008-2009 Marco Costalba
+  Copyright (C) 2008-2010 Marco Costalba, Joona Kiiski, Tord Romstad
 
   Stockfish is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -47,9 +47,9 @@ Application::Application() {
     init_uci_options();
     Position::init_zobrist();
     Position::init_piece_square_tables();
-    MovePicker::init_phase_table();
     init_eval(1);
     init_bitbases();
+    init_search();
     init_threads();
 
     // Make random number generation less deterministic, for book moves
@@ -57,24 +57,22 @@ Application::Application() {
         genrand_int32();
 }
 
-Application::~Application() {
-
-  stop_threads();
-  quit_eval();
-}
-
 void Application::initialize() {
 
-  instance();
+  // A static Application object is allocated
+  // once only when this function is called.
+  static Application singleton;
 }
 
-Application& Application::instance() {
+void Application::free_resources() {
 
-  static Application singleton;
-  return singleton;
+  // Warning, following functions reference global objects that
+  // must be still alive when free_resources() is called.
+  exit_threads();
+  quit_eval();
 }
 
 void Application::exit_with_failure() {
 
-  exit(EXIT_FAILURE); // d'tor will be called automatically
+  exit(EXIT_FAILURE);
 }