/*
Stockfish, a UCI chess playing engine derived from Glaurung 2.1
Copyright (C) 2004-2008 Tord Romstad (Glaurung author)
- Copyright (C) 2008 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
#include "endgame.h"
#include "evaluate.h"
#include "material.h"
-#include "mersenne.h"
#include "misc.h"
#include "movepick.h"
#include "position.h"
Application::Application() {
- init_mersenne();
init_direction_table();
init_bitboards();
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
- for (int i = abs(get_system_time() % 10000); i > 0; i--)
- 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);
}