[go: up one dir, main page]

Menu

[r769]: / coordination.h  Maximize  Restore  History

Download this file

130 lines (103 with data), 3.3 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/*
Protector -- a UCI chess engine
Copyright (C) 2009-2010 Raimund Heid (Raimund_Heid@yahoo.com)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _coordination_h_
#define _coordination_h_
#include "position.h"
#include "movegeneration.h"
typedef enum
{
TASKTYPE_BEST_MOVE,
TASKTYPE_TEST_BEST_MOVE,
TASKTYPE_MATE_IN_N,
TASKTYPE_TEST_MATE_IN_N
} TaskType;
typedef struct
{
TaskType type; /* the type of task to be performed */
Variation *variation; /* the variation to be examined */
int numberOfMoves; /* mateproblems: the number of moves */
Movelist solutions; /* mateproblems: the known solutions */
Movelist calculatedSolutions; /* the calculated solutions */
Move bestMove; /* the calculated best move */
UINT64 nodes; /* the number of nodes calculated */
} SearchTask;
/**
* Set the number of threads to be used.
*
* @var numThreads the number of threads to be used
* @return the effective number of threads that will be used
*/
int setNumberOfThreads(int numThreads);
/**
* Set the size of the hashtable.
*
* @var size the size of the hashtable in MB
*/
void setHashtableSize(unsigned int size);
/**
* Lock out either the gui or the search thread.
*/
void getGuiSearchMutex(void);
/**
* Release the gui/search thread lock.
*/
void releaseGuiSearchMutex(void);
/**
* Schedule the specified task as the next task to be calculated.
*/
void scheduleTask(SearchTask * task);
/**
* Signal an abortion of the current search and copy
* the current variation to 'variation'.
*/
void prepareSearchAbort();
/**
* Unset the ponder mode for the current search.
*/
void unsetPonderMode(void);
/**
* Wait for the current search to terminate.
*/
void waitForSearchTermination(void);
/**
* Set the timelimits for the current search task.
*/
void setTimeLimit(unsigned long timeTarget, unsigned long timeLimit);
/**
* Schedule the specified task as the next task to be calculated.
* Then wait until the task is completed.
*/
void completeTask(SearchTask * task);
/**
* Get the variation object of the current search task.
*/
Variation *getCurrentVariation(void);
/**
* Get the number of nodes calculated by all active threads.
*/
UINT64 getNodeCount(void);
/**
* Initialize this module.
*
* @return 0 if no errors occurred.
*/
int initializeModuleCoordination(void);
/**
* Test this module.
*
* @return 0 if all tests succeed.
*/
int testModuleCoordination(void);
#endif