#include "a_structure.h"
//-----------------------------------------------------------------------------------
/* ++
 * обрабатываем строки в рамках протокола UCI
 *
 * АВТОР ChessTerminator75
 * ПОСЛЕДНЕЕ ИЗМЕНЕНИЕ 12.06.2007  11.11.2009
*/
//-----------------------------------------------------------------------------------


#define TEST_P 0 // включаем-выключаем(1-0)  режим вывода в файл тестовой информации
// не забываем что надо включить и печать битбоарда(bit board) TEST_B в файле d_Bitboard_gen.h TEST_B


/*******************************************
класс PROTOKOLUCI
 разбираем входящие UCI команды от графической шахматной оболочки
 основными тут являются две направления
 они друг с другом связанны только через представление доски bitboard(bit board) 
 т.е. фактически независимы друг от друга
 в первом мы инициализируем движок согласно заданной позиции
 // разбираем входящую позицию инициализируем внутреннюю доску движка   
    parse_position(bitboard,string_in); 
 результатом является только доска  bitboard(bit board) 

 а во втором мы запускаем движок на обдумывание
 // запускаем движок на расчет позиции
    parse_go(bitboard,string_in,three_position,nodes);
 в результате в поток выводим ход и вариант

 конечно представление доски должно быть согласованно 
 оно описано в файле a_structure.h
********************************************/
class PROTOKOLUCI{

int hash_size_Mb ;// размер хеш-таблицы в мегабайтах 

//////////////////////////////////////////////////////////////////////////////////////////
public:

// разбираем входящие UCI команды от графической шахматной оболочки
void Parse_Protokol_UCI(struct T_Bitboard * p_bitboard,//доска 
						char string_in[]//входящая строка
						);

//////////////////////////////////////////////////////////////////////////////////////////
private:

//-----------------------------------------------------------------------------------
// считывает в строке и выдает размер хеша в мегабайтах
int Read_hash_size_Mb(const char string_in[]);

//-----------------------------------------------------------------------------------
// есть ли в строке искомая подстрока
bool string_equal(const char s1[], const char s2[]);

//-----------------------------------------------------------------------------------
// есть ли в начале строки искомая подстрока
bool string_start_with(const char s1[], const char s2[]);

};//class PROTOKOLUCI


