- /* 
-     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 _tools_h_ 
- #define _tools_h_ 
-   
- #define INCLUDE_TABLEBASE_ACCESS        /* activate egtb access code */ 
-   
- #ifndef _MSC_VER // Pierre-Marie Baty -- protect macro redefinition 
- #define min(x,y) ((x)<(y)?(x):(y)) 
- #define max(x,y) ((x)>(y)?(x):(y)) 
- #endif // !_MSC_VER 
- #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); 
-   
- /** 
-  * Apply a 256-based weight to the specified value. 
-  * 
-  * @return a rounded integer 
-  */ 
- int applyWeight(double value, double weight); 
-   
- /** 
-  * Get a value in specified min/max range. 
-  * 
-  * @return value if it is between minValue and maxValue 
-  */ 
- int getLimitedValue(const int minValue, const int maxValue, const int value); 
-   
- /** 
-  * Convert unsigned long long to hex string and vice versa. 
-  */ 
- unsigned long long getUnsignedLongLongFromHexString(const char *str); 
- void getHexStringFromUnsignedLongLong(char *buffer, unsigned long long value); 
-   
- /** 
-  * 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 
-