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