summaryrefslogtreecommitdiff
path: root/include/generic.h
blob: 4b9c4553d63b05635f5db3d5a2b78450f137e4ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#ifndef __GENERIC_H__
#define __GENERIC_H__

#include <string.h>

#define M_BARE   -1
#define M_ERROR   0
#define M_STATUS  1
#define M_WARNING 2
#define M_INFO    3

#ifndef bcopy
#define bcopy(x,y,z) memcpy((y),(x),(z))
#endif

#ifndef MAX
#define MIN(a,b) ((a)<(b)?(a):(b))
#endif

#ifndef MAX
#define MAX(a,b) ((a)<(b)?(b):(a)
#endif

#ifndef SDL_VERSIONNUM
typedef unsigned long int Uint32;
#endif

#ifndef int32
typedef signed long int int32;
#endif

#ifndef Uint16
typedef unsigned short int Uint16;
#endif

#ifndef int16
typedef signed short int int16;
#endif

#ifndef Uint8
typedef unsigned char Uint8;
#endif

#ifndef int8
typedef signed char int8;
#endif

#ifndef Byte
typedef Uint8 Byte;
#endif

#ifndef Word
typedef Uint16 Word;
#endif

#ifndef DWord
typedef Uint32 DWord;
#endif

#if defined __linux__ || defined __solaris__ || defined __CYGWIN32__
typedef long long int64;
typedef unsigned long long uint64;
#elif defined _WIN32
typedef _int64 int64;
typedef unsigned _int64 int64;
#else
#error Unsupported platform (need 64 bits ints definition)
#endif

#if defined __linux__ || defined __CYGWIN32__
#define PACKED __attribute__((packed))
#else
#define PACKED
#endif

extern char verbosity;
char ** split(char * s, char t);

#ifdef __cplusplus

#ifndef MAX
template<class T>
inline T MAX(T a, T b) {
    return a < b ? b : a;
}
#endif

#ifndef MIN
template<class T>
inline T MIN(T a, T b) {
    return a > b ? b : a;
}
#endif

#else
#ifndef MAX
#define MAX(__a,__b) ((__a)<(__b)?(__b):(__a))
#endif

#ifndef MIN
#define MIN(__a,__b) ((__a)>(__b)?(__b):(__a))
#endif

#endif

#define BITCOUNT(x)     (((BX_(x)+(BX_(x)>>4)) & 0x0F0F0F0F) % 255)
#define  BX_(x)         ((x) - (((x)>>1)&0x77777777)                    \
                             - (((x)>>2)&0x33333333)                    \
                             - (((x)>>3)&0x11111111))

#include <sys/types.h>
#include <sys/stat.h>

#if defined __linux__ || defined __CYGWIN32__
#define MKDIR(name) mkdir(name, 0777)
#elif defined __WIN32__
#define MKDIR mkdir
#else
#error Unknow compiler/platform
#endif

#if defined __linux__ || defined __solaris__ || defined __CYGWIN32__
typedef long long int64;
typedef unsigned long long uint64;
#elif defined _WIN32
typedef _int64 int64;
typedef unsigned _int64 int64;
#else
#error Unsupported platform (need 64 bits ints definition)
#endif

#endif