version 1.4b27
[polyglot.git] / util.h
1 \r
2 // util.h\r
3 \r
4 #ifndef UTIL_H\r
5 #define UTIL_H\r
6 \r
7 // includes\r
8 \r
9 #include <cstdio>\r
10 \r
11 // constants\r
12 \r
13 #undef FALSE\r
14 #define FALSE 0\r
15 \r
16 #undef TRUE\r
17 #define TRUE 1\r
18 \r
19 #ifdef DEBUG\r
20 #  undef DEBUG\r
21 #  define DEBUG TRUE\r
22 #else\r
23 #  define DEBUG FALSE\r
24 #endif\r
25 \r
26 #if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__)\r
27 #  define S64_FORMAT "%I64d"\r
28 #  define U64_FORMAT "%016I64X"\r
29 #else\r
30 #  define S64_FORMAT "%lld"\r
31 #  define U64_FORMAT "%016llX"\r
32 #endif\r
33 \r
34 // macros\r
35 \r
36 #ifdef _MSC_VER\r
37 #  define S64(u) (u##i64)\r
38 #  define U64(u) (u##ui64)\r
39 #else\r
40 #  define S64(u) (u##LL)\r
41 #  define U64(u) (u##ULL)\r
42 #endif\r
43 \r
44 #undef ASSERT\r
45 #if DEBUG\r
46 #  define ASSERT(a) { if (!(a)) my_fatal("file \"%s\", line %d, assertion \"" #a "\" failed\n",__FILE__,__LINE__); }\r
47 #else\r
48 #  define ASSERT(a)\r
49 #endif\r
50 \r
51 #ifdef _WIN32\r
52 #define snprintf _snprintf\r
53 #endif\r
54 \r
55 // types\r
56 \r
57 typedef signed char sint8;\r
58 typedef unsigned char uint8;\r
59 \r
60 typedef signed short sint16;\r
61 typedef unsigned short uint16;\r
62 \r
63 typedef signed int sint32;\r
64 typedef unsigned int uint32;\r
65 \r
66 #ifdef _MSC_VER\r
67   typedef signed __int64 sint64;\r
68   typedef unsigned __int64 uint64;\r
69 #else\r
70   typedef signed long long int sint64;\r
71   typedef unsigned long long int uint64;\r
72 #endif\r
73 \r
74 struct my_timer_t {\r
75    double start_real;\r
76    double elapsed_real;\r
77    bool running;\r
78 };\r
79 \r
80 // functions\r
81 \r
82 #ifdef _WIN32\r
83   #include <windows.h>\r
84   inline void Idle(void) {\r
85     Sleep(1);\r
86   }\r
87   inline void Idle500msecs(void){\r
88           Sleep(500);\r
89   }\r
90 #else\r
91   #include <unistd.h>\r
92   inline void Idle(void) {\r
93     usleep(1000);\r
94   }\r
95 #endif\r
96 extern void   util_init             ();\r
97 \r
98 extern void   my_random_init        ();\r
99 extern int    my_random_int         (int n);\r
100 extern double my_random_double      ();\r
101 \r
102 extern sint64 my_atoll              (const char string[]);\r
103 \r
104 extern int    my_round              (double x);\r
105 \r
106 extern void * my_malloc             (size_t size);\r
107 extern void * my_realloc            (void * address, size_t size);\r
108 extern void   my_free               (void * address);\r
109 \r
110 extern void   my_log_open           (const char file_name[]);\r
111 extern void   my_log_close          ();\r
112 \r
113 extern void   my_log                (const char format[], ...);\r
114 extern void   my_fatal              (const char format[], ...);\r
115 \r
116 extern bool   my_file_read_line     (FILE * file, char string[], int size);\r
117 \r
118 extern bool   my_string_empty       (const char string[]);\r
119 extern bool   my_string_whitespace  (const char string[]);\r
120 extern bool   my_string_equal       (const char string_1[], const char string_2[]);\r
121 extern bool   my_string_case_equal  (const char string_1[], const char string_2[]);\r
122 extern char * my_strdup             (const char string[]);\r
123 \r
124 extern void   my_string_clear       (const char * * variable);\r
125 extern void   my_string_set         (const char * * variable, const char string[]);\r
126 \r
127 extern void   my_timer_reset        (my_timer_t * timer);\r
128 extern void   my_timer_start        (my_timer_t * timer);\r
129 extern void   my_timer_stop         (my_timer_t * timer);\r
130 \r
131 extern double my_timer_elapsed_real (const my_timer_t * timer);\r
132 \r
133 extern char * my_error();\r
134 \r
135 #endif // !defined UTIL_H\r
136 \r
137 // end of util.h\r