OSDN Git Service

[INITIAL] Import 20141226 version of http://homepage3.nifty.com/takeda-toshiya/common...
[csp-qt/common_source_project-fm7.git] / source / src / common.h
1 /*\r
2         Skelton for retropc emulator\r
3 \r
4         Author : Takeda.Toshiya\r
5         Date   : 2006.08.18 -\r
6 \r
7         [ common header ]\r
8 */\r
9 \r
10 #ifndef _COMMON_H_\r
11 #define _COMMON_H_\r
12 \r
13 #include <tchar.h>\r
14 \r
15 // variable scope of 'for' loop for microsoft visual c++ 6.0 and embedded visual c++ 4.0\r
16 #if defined(_MSC_VER) && (_MSC_VER == 1200)\r
17 #define for if(0);else for\r
18 #endif\r
19 \r
20 // disable warnings C4189, C4995 and C4996 for microsoft visual c++ 2005\r
21 #if defined(_MSC_VER) && (_MSC_VER >= 1400)\r
22 #pragma warning( disable : 4819 )\r
23 #pragma warning( disable : 4995 )\r
24 #pragma warning( disable : 4996 )\r
25 #endif\r
26 \r
27 // type definition\r
28 #ifndef uint8\r
29 typedef unsigned char uint8;\r
30 #endif\r
31 #ifndef uint16\r
32 typedef unsigned short uint16;\r
33 #endif\r
34 #ifndef uint32\r
35 typedef unsigned int uint32;\r
36 #endif\r
37 #ifndef uint64\r
38 #ifdef _MSC_VER\r
39 typedef unsigned __int64 uint64;\r
40 #else\r
41 typedef unsigned long long uint64;\r
42 #endif\r
43 #endif\r
44 \r
45 #ifndef int8\r
46 typedef signed char int8;\r
47 #endif\r
48 #ifndef int16\r
49 typedef signed short int16;\r
50 #endif\r
51 #ifndef int32\r
52 typedef signed int int32;\r
53 #endif\r
54 #ifndef int64\r
55 #ifdef _MSC_VER\r
56 typedef signed __int64 int64;\r
57 #else\r
58 typedef signed long long int64;\r
59 #endif\r
60 #endif\r
61 \r
62 typedef union {\r
63 #ifdef _BIG_ENDIAN\r
64         struct {\r
65                 uint8 h3, h2, h, l;\r
66         } b;\r
67         struct {\r
68                 int8 h3, h2, h, l;\r
69         } sb;\r
70         struct {\r
71                 uint16 h, l;\r
72         } w;\r
73         struct {\r
74                 int16 h, l;\r
75         } sw;\r
76 #else\r
77         struct {\r
78                 uint8 l, h, h2, h3;\r
79         } b;\r
80         struct {\r
81                 uint16 l, h;\r
82         } w;\r
83         struct {\r
84                 int8 l, h, h2, h3;\r
85         } sb;\r
86         struct {\r
87                 int16 l, h;\r
88         } sw;\r
89 #endif\r
90         uint32 d;\r
91         int32 sd;\r
92 } pair;\r
93 \r
94 // rgb color\r
95 #define _RGB888\r
96 \r
97 #if defined(_RGB555)\r
98 #define RGB_COLOR(r, g, b) ((uint16)(((uint16)(r) & 0xf8) << 7) | (uint16)(((uint16)(g) & 0xf8) << 2) | (uint16)(((uint16)(b) & 0xf8) >> 3))\r
99 typedef uint16 scrntype;\r
100 #elif defined(_RGB565)\r
101 #define RGB_COLOR(r, g, b) ((uint16)(((uint16)(r) & 0xf8) << 8) | (uint16)(((uint16)(g) & 0xfc) << 3) | (uint16)(((uint16)(b) & 0xf8) >> 3))\r
102 typedef uint16 scrntype;\r
103 #elif defined(_RGB888)\r
104 #define RGB_COLOR(r, g, b) (((uint32)(r) << 16) | ((uint32)(g) << 8) | ((uint32)(b) << 0))\r
105 typedef uint32 scrntype;\r
106 #endif\r
107 \r
108 // misc\r
109 bool check_file_extension(_TCHAR* file_path, _TCHAR* ext);\r
110 _TCHAR *get_file_path_without_extensiton(_TCHAR* file_path);\r
111 uint32 getcrc32(uint8 data[], int size);\r
112 \r
113 #define array_length(array) (sizeof(array) / sizeof(array[0]))\r
114 \r
115 #define FROM_BCD(v)     (((v) & 0x0f) + (((v) >> 4) & 0x0f) * 10)\r
116 #define TO_BCD(v)       ((int)(((v) % 100) / 10) << 4) | ((v) % 10)\r
117 #define TO_BCD_LO(v)    ((v) % 10)\r
118 #define TO_BCD_HI(v)    (int)(((v) % 100) / 10)\r
119 \r
120 #define LEAP_YEAR(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))\r
121 \r
122 typedef struct cur_time_t {\r
123         int year, month, day, day_of_week, hour, minute, second;\r
124         bool initialized;\r
125         cur_time_t()\r
126         {\r
127                 initialized = false;\r
128         }\r
129         void increment();\r
130         void update_year();\r
131         void update_day_of_week();\r
132         void save_state(void *f);\r
133         bool load_state(void *f);\r
134 } cur_time_t;\r
135 \r
136 #endif\r