/* 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 . */ #ifndef _tools_h_ #define _tools_h_ #ifdef GCC_INLINE_STYLE #undef INLINE_IN_HEADERS #else #define INLINE_IN_HEADERS 1 #endif #ifndef TARGET_LINUX #define TARGET_WINDOWS 1 #define MSFT_CC #define CDECL __cdecl #else #define CDECL #endif #ifdef TARGET_WINDOWS #pragma warning( disable : 4996; once : ; error : ) #endif #define INCLUDE_TABLEBASE_ACCESS /* activate egtb access code */ #define avg(a,b) (((a)+(b))/2) #define max4(a,b,c,d) ( max(max((a),(b)),max((c),(d))) ) /** * Get the system time in milliseconds. */ unsigned long getTimestamp(void); /** * Get the process time in milliseconds. */ long getProcessTimestamp(void); typedef struct { char *buffer; char *tail; unsigned int bufferSize; } String; /** * Get an initialized empty string. */ String getEmptyString(void); /** * Get an initialized string. */ String getString(const char *buffer, const char *lastChar); /** * Free all memory allocated for the specified String. */ void deleteString(String * string); /** * Append a formatted C-string to String. * * @return a pointer to the new String */ String *appendToString(String * string, const char *fmt, ...); /** * Break the string specified by 'buffer' into lines of a maximum length * of 'maxLineLength'. The breaks will be realised by substituting * appropriate space characters with newline characters. */ void breakLines(char *buffer, unsigned int maxLineLength); /** * Remove all space characters from the beginning and from the end * of 'buffer'. */ void trim(char *buffer); /** * Get a token delimited by 'tokenDelimiters'. * * @return a substring of token, obtained using 'malloc' */ char *getToken(const char *token, const char *tokenDelimiters); /** * Test if a number is a prime. * * @return 0 if 'candidate' is no prime */ int isPrime(unsigned long candidate); /** * Calculate y = ln(x) * * @return a rounded integer */ int logIntValue(const double zeroPoint, const int maxPoint, const double maxValue, const int x); /** * Initialize this module. * * @return 0 if no errors occurred. */ int initializeModuleTools(void); /** * Test this module. * * @return 0 if all tests succeed. */ int testModuleTools(void); #endif