Mercurial > hg > dmlib
annotate src/dmlib.h @ 2394:147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 09 Jan 2020 20:59:20 +0200 |
parents | 85700c9b7dc8 |
children | e149fc273f2b |
rev | line source |
---|---|
0 | 1 /* |
2 * DMLib | |
3 * -- Main header file | |
4 * Programmed and designed by Matti 'ccr' Hamalainen | |
2361 | 5 * (C) Copyright 2011-2020 Tecnic Software productions (TNSP) |
0 | 6 */ |
7 #ifndef DMLIB_H | |
8 #define DMLIB_H | |
9 | |
288
e2f286781180
Use more glanular header includes from SDL, enables us to succesfully link
Matti Hamalainen <ccr@tnsp.org>
parents:
265
diff
changeset
|
10 #include <SDL_config.h> |
e2f286781180
Use more glanular header includes from SDL, enables us to succesfully link
Matti Hamalainen <ccr@tnsp.org>
parents:
265
diff
changeset
|
11 #include <SDL_endian.h> |
e2f286781180
Use more glanular header includes from SDL, enables us to succesfully link
Matti Hamalainen <ccr@tnsp.org>
parents:
265
diff
changeset
|
12 #include <SDL_types.h> |
e2f286781180
Use more glanular header includes from SDL, enables us to succesfully link
Matti Hamalainen <ccr@tnsp.org>
parents:
265
diff
changeset
|
13 #include <SDL_mutex.h> |
781
e15e0469499a
Add initial code for simulating audio playback while in no-sound situation.
Matti Hamalainen <ccr@tnsp.org>
parents:
770
diff
changeset
|
14 #include <SDL_thread.h> |
288
e2f286781180
Use more glanular header includes from SDL, enables us to succesfully link
Matti Hamalainen <ccr@tnsp.org>
parents:
265
diff
changeset
|
15 #include <SDL_video.h> |
1557
5e5f75b45f8d
Initial port to SDL2. Many things will not work now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
16 #include <SDL_render.h> |
1554
7ed25973dbcb
Add some missing includes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1453
diff
changeset
|
17 #include <stdio.h> |
0 | 18 #include <stdarg.h> |
1554
7ed25973dbcb
Add some missing includes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1453
diff
changeset
|
19 #include <stdlib.h> |
7ed25973dbcb
Add some missing includes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1453
diff
changeset
|
20 #include <ctype.h> |
2392
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
21 #include <inttypes.h> |
1554
7ed25973dbcb
Add some missing includes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1453
diff
changeset
|
22 |
0 | 23 |
24 #ifdef DM_USE_ASSERTS | |
770 | 25 # include <assert.h> |
0 | 26 #else |
770 | 27 # define assert(NEXPR) // stub |
0 | 28 #endif |
29 | |
1046
7e54b2d08ce7
Add special debug error message function/macro that can be
Matti Hamalainen <ccr@tnsp.org>
parents:
980
diff
changeset
|
30 |
1143
e7c3de96b6fd
Check if we are compiling for Windows and if we are compiling under MINGW.
Matti Hamalainen <ccr@tnsp.org>
parents:
1106
diff
changeset
|
31 // Check for arch bitness |
e7c3de96b6fd
Check if we are compiling for Windows and if we are compiling under MINGW.
Matti Hamalainen <ccr@tnsp.org>
parents:
1106
diff
changeset
|
32 #if defined(__WIN64) || defined(_WIN64) || defined(_WIN32) || defined(__WIN32) |
2394
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
33 # define DM_PLAT_WINDOWS 1 |
1143
e7c3de96b6fd
Check if we are compiling for Windows and if we are compiling under MINGW.
Matti Hamalainen <ccr@tnsp.org>
parents:
1106
diff
changeset
|
34 # if defined(__MINGW32__) || defined(__MINGW64__) |
2351
f36e76e18989
Silence warnings on newer MinGW versions.
Matti Hamalainen <ccr@tnsp.org>
parents:
2106
diff
changeset
|
35 # undef __USE_MINGW_ANSI_STDIO |
1143
e7c3de96b6fd
Check if we are compiling for Windows and if we are compiling under MINGW.
Matti Hamalainen <ccr@tnsp.org>
parents:
1106
diff
changeset
|
36 # define __USE_MINGW_ANSI_STDIO 1 |
e7c3de96b6fd
Check if we are compiling for Windows and if we are compiling under MINGW.
Matti Hamalainen <ccr@tnsp.org>
parents:
1106
diff
changeset
|
37 # endif |
2394
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
38 #else |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
39 # define DM_PLAT_UNIX 1 |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
40 #endif |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
41 |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
42 // Check for arch bitness |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
43 #if !defined(DM_ARCH) && (defined(__WIN64) || defined(_WIN64)) |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
44 # define DM_ARCH 64 |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
45 #endif |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
46 |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
47 #if !defined(DM_ARCH) && (defined(__WIN32) || defined(_WIN32)) |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
48 # define DM_ARCH 32 |
1143
e7c3de96b6fd
Check if we are compiling for Windows and if we are compiling under MINGW.
Matti Hamalainen <ccr@tnsp.org>
parents:
1106
diff
changeset
|
49 #endif |
1145
af2c9f76c782
MinGW does not define PRI* format specifiers, so define them ourselves :S
Matti Hamalainen <ccr@tnsp.org>
parents:
1143
diff
changeset
|
50 |
af2c9f76c782
MinGW does not define PRI* format specifiers, so define them ourselves :S
Matti Hamalainen <ccr@tnsp.org>
parents:
1143
diff
changeset
|
51 #if !defined(DM_ARCH) |
2394
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
52 # if UINTPTR_MAX == 0xffffffff |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
53 # define DM_ARCH 32 |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
54 # elif UINTPTR_MAX == 0xffffffffffffffff |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
55 # define DM_ARCH 64 |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
56 # endif |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
57 #endif |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
58 |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
59 |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
60 #if !defined(DM_ARCH) |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
61 # if defined(__LP64__) || defined(_LP64) |
1145
af2c9f76c782
MinGW does not define PRI* format specifiers, so define them ourselves :S
Matti Hamalainen <ccr@tnsp.org>
parents:
1143
diff
changeset
|
62 # define DM_ARCH 64 |
af2c9f76c782
MinGW does not define PRI* format specifiers, so define them ourselves :S
Matti Hamalainen <ccr@tnsp.org>
parents:
1143
diff
changeset
|
63 # else |
af2c9f76c782
MinGW does not define PRI* format specifiers, so define them ourselves :S
Matti Hamalainen <ccr@tnsp.org>
parents:
1143
diff
changeset
|
64 # define DM_ARCH 32 |
af2c9f76c782
MinGW does not define PRI* format specifiers, so define them ourselves :S
Matti Hamalainen <ccr@tnsp.org>
parents:
1143
diff
changeset
|
65 # endif |
af2c9f76c782
MinGW does not define PRI* format specifiers, so define them ourselves :S
Matti Hamalainen <ccr@tnsp.org>
parents:
1143
diff
changeset
|
66 #endif |
af2c9f76c782
MinGW does not define PRI* format specifiers, so define them ourselves :S
Matti Hamalainen <ccr@tnsp.org>
parents:
1143
diff
changeset
|
67 |
af2c9f76c782
MinGW does not define PRI* format specifiers, so define them ourselves :S
Matti Hamalainen <ccr@tnsp.org>
parents:
1143
diff
changeset
|
68 |
2385
5ffc48a0bebe
Conditionally define DM_ATTR_PRINTF_FMT(xstart, xend) instead of using
Matti Hamalainen <ccr@tnsp.org>
parents:
2383
diff
changeset
|
69 // Kludge, as MinGW64 cross-compiler does not like certain printf() format specifiers |
5ffc48a0bebe
Conditionally define DM_ATTR_PRINTF_FMT(xstart, xend) instead of using
Matti Hamalainen <ccr@tnsp.org>
parents:
2383
diff
changeset
|
70 #if defined(__MINGW64__) |
5ffc48a0bebe
Conditionally define DM_ATTR_PRINTF_FMT(xstart, xend) instead of using
Matti Hamalainen <ccr@tnsp.org>
parents:
2383
diff
changeset
|
71 # define DM_ATTR_PRINTF_FMT(xstart, xend) |
5ffc48a0bebe
Conditionally define DM_ATTR_PRINTF_FMT(xstart, xend) instead of using
Matti Hamalainen <ccr@tnsp.org>
parents:
2383
diff
changeset
|
72 #else |
5ffc48a0bebe
Conditionally define DM_ATTR_PRINTF_FMT(xstart, xend) instead of using
Matti Hamalainen <ccr@tnsp.org>
parents:
2383
diff
changeset
|
73 # define DM_ATTR_PRINTF_FMT(xstart, xend) __attribute__ ((__format__ (__printf__, (xstart), (xend)))) |
5ffc48a0bebe
Conditionally define DM_ATTR_PRINTF_FMT(xstart, xend) instead of using
Matti Hamalainen <ccr@tnsp.org>
parents:
2383
diff
changeset
|
74 #endif |
5ffc48a0bebe
Conditionally define DM_ATTR_PRINTF_FMT(xstart, xend) instead of using
Matti Hamalainen <ccr@tnsp.org>
parents:
2383
diff
changeset
|
75 |
5ffc48a0bebe
Conditionally define DM_ATTR_PRINTF_FMT(xstart, xend) instead of using
Matti Hamalainen <ccr@tnsp.org>
parents:
2383
diff
changeset
|
76 |
1145
af2c9f76c782
MinGW does not define PRI* format specifiers, so define them ourselves :S
Matti Hamalainen <ccr@tnsp.org>
parents:
1143
diff
changeset
|
77 // Do we have a valid arch? |
af2c9f76c782
MinGW does not define PRI* format specifiers, so define them ourselves :S
Matti Hamalainen <ccr@tnsp.org>
parents:
1143
diff
changeset
|
78 // If so, set some printf specifiers |
2392
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
79 #define DM_PRIu32 PRIu32 |
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
80 #define DM_PRId32 PRId32 |
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
81 #define DM_PRIx32 PRIx32 |
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
82 #define DM_PRIX32 PRIX32 |
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
83 |
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
84 #define DM_PRIu64 PRIu64 |
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
85 #define DM_PRId64 PRId64 |
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
86 #define DM_PRIx64 PRIx64 |
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
87 #define DM_PRIX64 PRIX64 |
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
88 |
1145
af2c9f76c782
MinGW does not define PRI* format specifiers, so define them ourselves :S
Matti Hamalainen <ccr@tnsp.org>
parents:
1143
diff
changeset
|
89 #if DM_ARCH == 32 |
2392
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
90 # define DM_PRIu_SIZE_T PRIu32 |
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
91 # define DM_PRId_SSIZE_T PRId32 |
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
92 # define DM_PRIx_SIZE_T PRIx32 |
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
93 # define DM_PRIX_SIZE_T PRIX32 |
2394
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
94 # ifdef DM_PLAT_WINDOWS |
2393
85700c9b7dc8
Add new DM_PRI*_OFF_T specifiers for off_t type.
Matti Hamalainen <ccr@tnsp.org>
parents:
2392
diff
changeset
|
95 # define DM_PRId_OFF_T "ld" |
85700c9b7dc8
Add new DM_PRI*_OFF_T specifiers for off_t type.
Matti Hamalainen <ccr@tnsp.org>
parents:
2392
diff
changeset
|
96 # define DM_PRIx_OFF_T "lx" |
85700c9b7dc8
Add new DM_PRI*_OFF_T specifiers for off_t type.
Matti Hamalainen <ccr@tnsp.org>
parents:
2392
diff
changeset
|
97 # define DM_PRIX_OFF_T "lX" |
2394
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
98 # else |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
99 # define DM_PRId_OFF_T PRId32 |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
100 # define DM_PRIx_OFF_T PRIx32 |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
101 # define DM_PRIX_OFF_T PRIX32 |
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
102 # endif |
1145
af2c9f76c782
MinGW does not define PRI* format specifiers, so define them ourselves :S
Matti Hamalainen <ccr@tnsp.org>
parents:
1143
diff
changeset
|
103 #elif DM_ARCH == 64 |
2394
147d40b708ea
Copy improvements to the platform 32/64bit logic from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2393
diff
changeset
|
104 # ifdef DM_PLAT_WINDOWS // Unsure if this is MinGW64 only thing? |
2392
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
105 # define DM_PRIu_SIZE_T "I64u" |
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
106 # define DM_PRId_SSIZE_T "I64d" |
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
107 # define DM_PRIx_SIZE_T "I64x" |
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
108 # define DM_PRIX_SIZE_T "I64X" |
2393
85700c9b7dc8
Add new DM_PRI*_OFF_T specifiers for off_t type.
Matti Hamalainen <ccr@tnsp.org>
parents:
2392
diff
changeset
|
109 # define DM_PRId_OFF_T "I64d" |
85700c9b7dc8
Add new DM_PRI*_OFF_T specifiers for off_t type.
Matti Hamalainen <ccr@tnsp.org>
parents:
2392
diff
changeset
|
110 # define DM_PRIx_OFF_T "I64x" |
85700c9b7dc8
Add new DM_PRI*_OFF_T specifiers for off_t type.
Matti Hamalainen <ccr@tnsp.org>
parents:
2392
diff
changeset
|
111 # define DM_PRIX_OFF_T "I64X" |
2353
a1265a407524
Fix / improve DM_PRI* constants generated for Windows 64bit platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
2352
diff
changeset
|
112 # else |
2392
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
113 # define DM_PRIu_SIZE_T PRIu64 |
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
114 # define DM_PRId_SSIZE_T PRId64 |
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
115 # define DM_PRIx_SIZE_T PRIx64 |
835b231d8083
Use standard inttypes.h for defining the DM_PRI* format specifiers, except
Matti Hamalainen <ccr@tnsp.org>
parents:
2385
diff
changeset
|
116 # define DM_PRIX_SIZE_T PRIX64 |
2393
85700c9b7dc8
Add new DM_PRI*_OFF_T specifiers for off_t type.
Matti Hamalainen <ccr@tnsp.org>
parents:
2392
diff
changeset
|
117 # define DM_PRId_OFF_T PRId64 |
85700c9b7dc8
Add new DM_PRI*_OFF_T specifiers for off_t type.
Matti Hamalainen <ccr@tnsp.org>
parents:
2392
diff
changeset
|
118 # define DM_PRIx_OFF_T PRIx64 |
85700c9b7dc8
Add new DM_PRI*_OFF_T specifiers for off_t type.
Matti Hamalainen <ccr@tnsp.org>
parents:
2392
diff
changeset
|
119 # define DM_PRIX_OFF_T PRIX64 |
2353
a1265a407524
Fix / improve DM_PRI* constants generated for Windows 64bit platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
2352
diff
changeset
|
120 # endif |
1145
af2c9f76c782
MinGW does not define PRI* format specifiers, so define them ourselves :S
Matti Hamalainen <ccr@tnsp.org>
parents:
1143
diff
changeset
|
121 #else |
af2c9f76c782
MinGW does not define PRI* format specifiers, so define them ourselves :S
Matti Hamalainen <ccr@tnsp.org>
parents:
1143
diff
changeset
|
122 # error Could not determine architecture (32/64bit), please define DM_ARCH=32 or 64 |
af2c9f76c782
MinGW does not define PRI* format specifiers, so define them ourselves :S
Matti Hamalainen <ccr@tnsp.org>
parents:
1143
diff
changeset
|
123 #endif |
af2c9f76c782
MinGW does not define PRI* format specifiers, so define them ourselves :S
Matti Hamalainen <ccr@tnsp.org>
parents:
1143
diff
changeset
|
124 |
af2c9f76c782
MinGW does not define PRI* format specifiers, so define them ourselves :S
Matti Hamalainen <ccr@tnsp.org>
parents:
1143
diff
changeset
|
125 |
0 | 126 #ifdef __cplusplus |
127 extern "C" { | |
128 #endif | |
129 | |
130 // Defaults | |
2361 | 131 #define DM_PROG_AUTHOR "By Matti 'ccr' Hamalainen (C) Copyright 2020 TNSP" |
341 | 132 #define DM_PROG_LICENSE "Et all, see README / COPYING for more information." |
0 | 133 |
134 /* Error codes | |
135 */ | |
136 enum { | |
770 | 137 // General error codes |
138 DMERR_OK = 0, | |
139 DMERR_PROGRESS, // Status OK, but operation in progress | |
831
a855f88f86ee
Reorder internal error code.
Matti Hamalainen <ccr@tnsp.org>
parents:
816
diff
changeset
|
140 |
a855f88f86ee
Reorder internal error code.
Matti Hamalainen <ccr@tnsp.org>
parents:
816
diff
changeset
|
141 DMERR_INTERNAL, |
26
2f463a59d732
Implement rudimentary resource system.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
142 |
770 | 143 DMERR_FOPEN, |
144 DMERR_FREAD, | |
145 DMERR_FWRITE, | |
146 DMERR_FSEEK, | |
147 DMERR_NOT_FOUND, // Resource/data not found | |
0 | 148 |
770 | 149 DMERR_INVALID_DATA, // Some data was invalid |
150 DMERR_MALLOC, // Memory allocation failure | |
151 DMERR_ALREADY_INIT, // Resource has already been initialized | |
152 DMERR_INIT_FAIL, // General initialization failure | |
153 DMERR_INVALID_ARGS, | |
0 | 154 |
770 | 155 DMERR_NULLPTR, // NULL pointer specified in critical argument |
156 DMERR_NOT_SUPPORTED,// Operation not supported | |
157 DMERR_OUT_OF_DATA, | |
158 DMERR_EXTRA_DATA, | |
159 DMERR_BOUNDS, | |
1102
e06abfde6c39
Cosmetics pass: Remove excess whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1048
diff
changeset
|
160 |
908
03bda6477ad4
Add new error code DMERR_DATA_ERROR.
Matti Hamalainen <ccr@tnsp.org>
parents:
889
diff
changeset
|
161 DMERR_DATA_ERROR, // Data decoding/encoding/parsing error |
1817 | 162 |
1273
132706e3b94b
Improve error handling and reporting slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1172
diff
changeset
|
163 DMERR_VERSION, // Unsupported data version |
0 | 164 |
770 | 165 // PACK-file subsystem |
166 DMERR_NOTPACK, | |
1273
132706e3b94b
Improve error handling and reporting slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1172
diff
changeset
|
167 DMERR_PACK_VERSION, |
770 | 168 DMERR_INVALID, |
169 DMERR_COMPRESSION, | |
0 | 170 }; |
171 | |
955 | 172 |
813 | 173 // Directory/path separator stuff |
174 #define DM_DIR_SEPARATOR '/' | |
175 | |
0 | 176 |
177 // Resource management defines | |
178 #define DMRES_NAME_LEN 32 | |
179 #define DMRES_RES_FILE "res.txt" // Resource data file | |
180 | |
181 | |
182 /* Define a boolean type | |
183 */ | |
184 #if !defined(FALSE) && !defined(TRUE) && !defined(BOOL) | |
185 typedef enum { FALSE = 0, TRUE = 1 } BOOL; | |
186 #endif | |
187 | |
188 #ifndef BOOL | |
770 | 189 # ifdef bool |
190 # define BOOL bool | |
191 # else | |
192 # define BOOL int | |
193 # endif | |
0 | 194 #endif |
195 | |
196 | |
305
036fde2fd630
Add mathematical constants DM_PI, DM_PI2 and DM_E.
Matti Hamalainen <ccr@tnsp.org>
parents:
294
diff
changeset
|
197 /* Math constants |
036fde2fd630
Add mathematical constants DM_PI, DM_PI2 and DM_E.
Matti Hamalainen <ccr@tnsp.org>
parents:
294
diff
changeset
|
198 */ |
036fde2fd630
Add mathematical constants DM_PI, DM_PI2 and DM_E.
Matti Hamalainen <ccr@tnsp.org>
parents:
294
diff
changeset
|
199 #define DM_PI 3.14159265358f |
036fde2fd630
Add mathematical constants DM_PI, DM_PI2 and DM_E.
Matti Hamalainen <ccr@tnsp.org>
parents:
294
diff
changeset
|
200 #define DM_PI2 6.28318530718f |
036fde2fd630
Add mathematical constants DM_PI, DM_PI2 and DM_E.
Matti Hamalainen <ccr@tnsp.org>
parents:
294
diff
changeset
|
201 #define DM_E 2.71828182846f |
036fde2fd630
Add mathematical constants DM_PI, DM_PI2 and DM_E.
Matti Hamalainen <ccr@tnsp.org>
parents:
294
diff
changeset
|
202 |
036fde2fd630
Add mathematical constants DM_PI, DM_PI2 and DM_E.
Matti Hamalainen <ccr@tnsp.org>
parents:
294
diff
changeset
|
203 |
1146 | 204 /* Fixed point math types |
0 | 205 */ |
206 typedef union | |
207 { | |
36
f3407a58e01e
Change DMFixedPoint types and appropriate JSS functions back to using signed
Matti Hamalainen <ccr@tnsp.org>
parents:
26
diff
changeset
|
208 Sint64 dw; |
f3407a58e01e
Change DMFixedPoint types and appropriate JSS functions back to using signed
Matti Hamalainen <ccr@tnsp.org>
parents:
26
diff
changeset
|
209 Sint32 w[2]; |
0 | 210 } DMFixedPoint; |
211 | |
212 | |
213 typedef union | |
214 { | |
36
f3407a58e01e
Change DMFixedPoint types and appropriate JSS functions back to using signed
Matti Hamalainen <ccr@tnsp.org>
parents:
26
diff
changeset
|
215 Sint32 dw; |
f3407a58e01e
Change DMFixedPoint types and appropriate JSS functions back to using signed
Matti Hamalainen <ccr@tnsp.org>
parents:
26
diff
changeset
|
216 Sint16 w[2]; |
0 | 217 } DMFixedPoint32; |
218 | |
219 | |
220 /* Macros for fixed point math | |
221 */ | |
956
d4e411192238
Remove check for GCC >= 3.x, it's only sane to support 4+.
Matti Hamalainen <ccr@tnsp.org>
parents:
955
diff
changeset
|
222 #define FP_SET(a, k) a.dw = k ## ULL |
138
459a1be2bd0f
A minor improvement to FP_CONV() fixed point macro.
Matti Hamalainen <ccr@tnsp.org>
parents:
118
diff
changeset
|
223 #define FP_CONV(a, k) a.dw = (k) |
0 | 224 |
225 #ifndef SDL_BYTEORDER | |
226 # error Undefined byteorder! | |
227 #endif | |
228 | |
229 #if (SDL_BYTEORDER == SDL_BIG_ENDIAN) | |
230 # define FP_SETH(a, k) a.w[0] = (k) | |
231 # define FP_SETL(a, k) a.w[1] = (k) | |
232 # define FP_SETHL(a, h, l) { a.w[0] = (h); a.w[1] = (l); } | |
809
eba3b87f3f84
Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents:
805
diff
changeset
|
233 # define FP_GETH32(a) a.w[0] |
eba3b87f3f84
Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents:
805
diff
changeset
|
234 # define FP_GETL32(a) a.w[1] |
eba3b87f3f84
Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents:
805
diff
changeset
|
235 # define FP_GETH16(a) a.w[0] |
eba3b87f3f84
Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents:
805
diff
changeset
|
236 # define FP_GETL16(a) a.w[1] |
0 | 237 #elif (SDL_BYTEORDER == SDL_LIL_ENDIAN) |
238 # define FP_SETH(a, k) a.w[1] = (k) | |
239 # define FP_SETL(a, k) a.w[0] = (k) | |
240 # define FP_SETHL(a, h, l) { a.w[1] = (h); a.w[0] = (l); } | |
809
eba3b87f3f84
Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents:
805
diff
changeset
|
241 # define FP_GETH32(a) a.w[1] |
eba3b87f3f84
Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents:
805
diff
changeset
|
242 # define FP_GETL32(a) a.w[0] |
eba3b87f3f84
Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents:
805
diff
changeset
|
243 # define FP_GETH16(a) a.w[1] |
eba3b87f3f84
Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents:
805
diff
changeset
|
244 # define FP_GETL16(a) a.w[0] |
0 | 245 #else |
246 # error Unsupported byte order! | |
247 #endif | |
248 | |
809
eba3b87f3f84
Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents:
805
diff
changeset
|
249 #define FP_PRINTF64(a) printf("%.8x:%.8x", FP_GETH32(a), FP_GETL32(a)) |
eba3b87f3f84
Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents:
805
diff
changeset
|
250 #define FP_PRINTF32(a) printf("%.4x:%.4x", FP_GETH16(a), FP_GETL16(a)) |
0 | 251 |
252 #define FP_ADD(a, b) a.dw += b.dw | |
253 #define FP_SUB(a, b) a.dw -= b.dw | |
254 #define FP_ADD_R(r, a, b) r.dw = a.dw + b.dw | |
255 #define FP_SUB_R(r, a, b) r.dw = a.dw - b.dw | |
256 #define FP_DIV(a, b) a.dw /= b.dw | |
257 #define FP_MUL(a, b) a.dw *= b.dw | |
258 #define FP_DIV_R(r, a, b) r.dw = (a.dw / b.dw) | |
259 #define FP_MUL_R(r, a, b) r.dw = (a.dw * b.dw) | |
260 | |
261 | |
262 /* Miscellaneous types | |
263 */ | |
264 typedef struct | |
265 { | |
266 #if (SDL_BYTEORDER == SDL_BIG_ENDIAN) | |
267 Uint8 a,g,b,r; | |
268 #elif (SDL_BYTEORDER == SDL_LIL_ENDIAN) | |
269 Uint8 r,g,b,a; | |
270 #endif | |
971
f654435df15e
Rename DMRGBA32 struct to DMColor and remove the original redundant DMColor
Matti Hamalainen <ccr@tnsp.org>
parents:
958
diff
changeset
|
271 } DMColor; |
0 | 272 |
273 | |
274 typedef float DMFloat; | |
275 | |
276 | |
118
c36e0316de9f
Move DM_SWAP() macro to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
108
diff
changeset
|
277 // Macro for swapping two lvalues of same type |
c36e0316de9f
Move DM_SWAP() macro to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
108
diff
changeset
|
278 #define DM_SWAP(T, A, B) { if ((B) < (A)) { T swtmp = (B); B = (A); A = swtmp; } } |
c36e0316de9f
Move DM_SWAP() macro to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
108
diff
changeset
|
279 |
c36e0316de9f
Move DM_SWAP() macro to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
108
diff
changeset
|
280 |
0 | 281 /* Drawing modes used by blitting and some other functions. |
282 */ | |
283 enum | |
284 { | |
285 DMD_NONE = 0x0000, | |
286 DMD_TRANSPARENT = 0x0001, | |
287 DMD_SATURATE = 0x0002, | |
1102
e06abfde6c39
Cosmetics pass: Remove excess whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1048
diff
changeset
|
288 |
0 | 289 DMD_ANTIALIAS = 0x0004, |
1102
e06abfde6c39
Cosmetics pass: Remove excess whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1048
diff
changeset
|
290 |
0 | 291 DMD_NMODES = 6 |
292 }; | |
293 | |
294 | |
295 // Available bitdepths. Not all functions may support every one of these. | |
296 enum | |
297 { | |
298 DMD_8BIT = 0, | |
299 DMD_32BIT, | |
1102
e06abfde6c39
Cosmetics pass: Remove excess whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1048
diff
changeset
|
300 |
0 | 301 DMD_NBITDEPTHS |
302 }; | |
303 | |
304 | |
305 static inline int dmBitsPerPixel2Index(int bpp) | |
306 { | |
307 return (bpp == 8 ? 0 : (bpp == 32 ? 1 : -1)); | |
308 } | |
309 | |
310 | |
980
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
311 static inline DMFloat dmClamp10(const DMFloat a) |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
312 { |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
313 return (a < 0.0f ? 0.0f : (a > 1.0f ? 1.0f : a)); |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
314 } |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
315 |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
316 |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
317 static inline int dmClamp(const int v, const int min, const int max) |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
318 { |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
319 return (v < min ? min : (v > max ? max : v)); |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
320 } |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
321 |
43594ac98f91
Move dmClamp*() functions back to dmlib.h
Matti Hamalainen <ccr@tnsp.org>
parents:
976
diff
changeset
|
322 |
0 | 323 /* Arbitrary line drawing |
324 */ | |
325 #ifdef DM_GFX_LINES | |
232
79dac918c81e
Modularize line clipping etc. a lot, and export all line drawing and
Matti Hamalainen <ccr@tnsp.org>
parents:
153
diff
changeset
|
326 #define DM_HEADER |
79dac918c81e
Modularize line clipping etc. a lot, and export all line drawing and
Matti Hamalainen <ccr@tnsp.org>
parents:
153
diff
changeset
|
327 #include "dmlinefunc.h" |
234
a2abd0b991b6
Modularize line drawing related templates and functions, add clipping
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
328 |
262
9d015d32841a
Clean up the line clipping a bit, in preparation for fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
234
diff
changeset
|
329 enum |
9d015d32841a
Clean up the line clipping a bit, in preparation for fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
234
diff
changeset
|
330 { |
9d015d32841a
Clean up the line clipping a bit, in preparation for fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
234
diff
changeset
|
331 CLIP_TOP = 1, |
9d015d32841a
Clean up the line clipping a bit, in preparation for fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
234
diff
changeset
|
332 CLIP_BOTTOM = 2, |
9d015d32841a
Clean up the line clipping a bit, in preparation for fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
234
diff
changeset
|
333 CLIP_RIGHT = 4, |
9d015d32841a
Clean up the line clipping a bit, in preparation for fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
234
diff
changeset
|
334 CLIP_LEFT = 8 |
9d015d32841a
Clean up the line clipping a bit, in preparation for fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
234
diff
changeset
|
335 }; |
9d015d32841a
Clean up the line clipping a bit, in preparation for fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
234
diff
changeset
|
336 |
234
a2abd0b991b6
Modularize line drawing related templates and functions, add clipping
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
337 #define DM_CLIP_FUNC dmClipLineCoordsFloat |
a2abd0b991b6
Modularize line drawing related templates and functions, add clipping
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
338 #define DM_COORD_TYPE DMFloat |
a2abd0b991b6
Modularize line drawing related templates and functions, add clipping
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
339 #include "dmlineclip.h" |
a2abd0b991b6
Modularize line drawing related templates and functions, add clipping
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
340 |
232
79dac918c81e
Modularize line clipping etc. a lot, and export all line drawing and
Matti Hamalainen <ccr@tnsp.org>
parents:
153
diff
changeset
|
341 #undef DM_HEADER |
0 | 342 #endif |
343 | |
95
0430f484641b
Add unscaled blitting functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
90
diff
changeset
|
344 |
0430f484641b
Add unscaled blitting functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
90
diff
changeset
|
345 /* Various blitting functions |
0 | 346 */ |
347 #ifdef DM_GFX_BLITS | |
348 typedef int (*DMScaledBlitFunc)(SDL_Surface *src, const int x0, const int y0, const int dwidth, const int dheight, SDL_Surface *dst); | |
349 DMScaledBlitFunc dmGetScaledBlitFunc(SDL_PixelFormat *src, SDL_PixelFormat *dst, int mode); | |
350 int dmScaledBlitSurfaceAny(SDL_Surface *src, const int x0, const int y0, const int dwidth, const int dheight, SDL_Surface *dst, int mode); | |
19
10f58ff516b3
Add function prototypes for two special case scaled blit functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
0
diff
changeset
|
351 |
95
0430f484641b
Add unscaled blitting functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
90
diff
changeset
|
352 typedef int (*DMUnscaledBlitFunc)(SDL_Surface *src, const int x0, const int y0, SDL_Surface *dst); |
0430f484641b
Add unscaled blitting functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
90
diff
changeset
|
353 DMUnscaledBlitFunc dmGetUnscaledBlitFunc(SDL_PixelFormat *src, SDL_PixelFormat *dst, int mode); |
0430f484641b
Add unscaled blitting functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
90
diff
changeset
|
354 int dmUnscaledBlitSurfaceAny(SDL_Surface *src, const int x0, const int y0, SDL_Surface *dst, int mode); |
232
79dac918c81e
Modularize line clipping etc. a lot, and export all line drawing and
Matti Hamalainen <ccr@tnsp.org>
parents:
153
diff
changeset
|
355 |
1601
a3023fe79c43
Change dmConvertScaledSurface() interface by remove flags.
Matti Hamalainen <ccr@tnsp.org>
parents:
1557
diff
changeset
|
356 SDL_Surface *dmConvertScaledSurface(SDL_Surface *src, SDL_PixelFormat *fmt, const int dwidth, const int dheight); |
610
e74ad60b1e85
Add new scaled surface conversion function.
Matti Hamalainen <ccr@tnsp.org>
parents:
601
diff
changeset
|
357 |
e74ad60b1e85
Add new scaled surface conversion function.
Matti Hamalainen <ccr@tnsp.org>
parents:
601
diff
changeset
|
358 |
232
79dac918c81e
Modularize line clipping etc. a lot, and export all line drawing and
Matti Hamalainen <ccr@tnsp.org>
parents:
153
diff
changeset
|
359 #define DM_HEADER |
79dac918c81e
Modularize line clipping etc. a lot, and export all line drawing and
Matti Hamalainen <ccr@tnsp.org>
parents:
153
diff
changeset
|
360 #include "dmblitfunc.h" |
79dac918c81e
Modularize line clipping etc. a lot, and export all line drawing and
Matti Hamalainen <ccr@tnsp.org>
parents:
153
diff
changeset
|
361 #undef DM_HEADER |
612
696f03f30c0e
Make certain static inline graphics functions always available, no need to
Matti Hamalainen <ccr@tnsp.org>
parents:
611
diff
changeset
|
362 |
696f03f30c0e
Make certain static inline graphics functions always available, no need to
Matti Hamalainen <ccr@tnsp.org>
parents:
611
diff
changeset
|
363 #endif // DM_GFX_BLITS |
0 | 364 |
95
0430f484641b
Add unscaled blitting functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
90
diff
changeset
|
365 |
90
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
366 static inline void dmClearSurface(SDL_Surface *screen, const Uint32 col) |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
367 { |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
368 SDL_FillRect(screen, NULL, col); |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
369 } |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
370 |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
371 |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
372 static inline Uint32 dmMapRGB(SDL_Surface *screen, int r, int g, int b) |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
373 { |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
374 return SDL_MapRGB(screen->format, r, g, b); |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
375 } |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
376 |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
377 |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
378 static inline Uint32 dmMapRGBA(SDL_Surface *screen, int r, int g, int b, int a) |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
379 { |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
380 return SDL_MapRGBA(screen->format, r, g, b, a); |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
381 } |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
382 |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
383 |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
384 static inline int dmDirectBlitSurface(SDL_Surface *bmp, SDL_Surface *screen) |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
385 { |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
386 return SDL_BlitSurface(bmp, NULL, screen, NULL); |
1ab3fd8b9afc
Move some very tiny gfx functions to the dmlib header as static inline ones.
Matti Hamalainen <ccr@tnsp.org>
parents:
60
diff
changeset
|
387 } |
0 | 388 |
389 | |
611
828d86cd10e0
Add new dmCopySurface() helper/wrapper function.
Matti Hamalainen <ccr@tnsp.org>
parents:
610
diff
changeset
|
390 static inline SDL_Surface *dmCopySurface(SDL_Surface *src) |
828d86cd10e0
Add new dmCopySurface() helper/wrapper function.
Matti Hamalainen <ccr@tnsp.org>
parents:
610
diff
changeset
|
391 { |
828d86cd10e0
Add new dmCopySurface() helper/wrapper function.
Matti Hamalainen <ccr@tnsp.org>
parents:
610
diff
changeset
|
392 if (src != NULL) |
828d86cd10e0
Add new dmCopySurface() helper/wrapper function.
Matti Hamalainen <ccr@tnsp.org>
parents:
610
diff
changeset
|
393 return SDL_ConvertSurface(src, src->format, src->flags); |
828d86cd10e0
Add new dmCopySurface() helper/wrapper function.
Matti Hamalainen <ccr@tnsp.org>
parents:
610
diff
changeset
|
394 else |
828d86cd10e0
Add new dmCopySurface() helper/wrapper function.
Matti Hamalainen <ccr@tnsp.org>
parents:
610
diff
changeset
|
395 return NULL; |
828d86cd10e0
Add new dmCopySurface() helper/wrapper function.
Matti Hamalainen <ccr@tnsp.org>
parents:
610
diff
changeset
|
396 } |
828d86cd10e0
Add new dmCopySurface() helper/wrapper function.
Matti Hamalainen <ccr@tnsp.org>
parents:
610
diff
changeset
|
397 |
828d86cd10e0
Add new dmCopySurface() helper/wrapper function.
Matti Hamalainen <ccr@tnsp.org>
parents:
610
diff
changeset
|
398 |
0 | 399 /* Global variables |
400 */ | |
401 extern char *dmProgName, | |
402 *dmProgDesc, | |
403 *dmProgVersion, | |
404 *dmProgAuthor, | |
405 *dmProgLicense; | |
406 | |
407 extern int dmVerbosity; | |
408 void dmInitProg(char *name, char *desc, char *version, char *author, char *license); | |
409 void dmPrintBanner(FILE *outFile, const char *name, const char *usage); | |
410 | |
411 void dmMsgVA(int level, const char *fmt, va_list ap); | |
2383
43e39d9ec42f
Add __attribute__(__format__ ..) specifiers for functions that use printf() style format specifiers.
Matti Hamalainen <ccr@tnsp.org>
parents:
2361
diff
changeset
|
412 void dmMsg(int level, const char *fmt, ...) |
2385
5ffc48a0bebe
Conditionally define DM_ATTR_PRINTF_FMT(xstart, xend) instead of using
Matti Hamalainen <ccr@tnsp.org>
parents:
2383
diff
changeset
|
413 DM_ATTR_PRINTF_FMT(2, 3); |
0 | 414 void dmPrintVA(int level, const char *fmt, va_list ap); |
2383
43e39d9ec42f
Add __attribute__(__format__ ..) specifiers for functions that use printf() style format specifiers.
Matti Hamalainen <ccr@tnsp.org>
parents:
2361
diff
changeset
|
415 void dmPrint(int level, const char *fmt, ...) |
2385
5ffc48a0bebe
Conditionally define DM_ATTR_PRINTF_FMT(xstart, xend) instead of using
Matti Hamalainen <ccr@tnsp.org>
parents:
2383
diff
changeset
|
416 DM_ATTR_PRINTF_FMT(2, 3); |
0 | 417 |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
956
diff
changeset
|
418 int dmErrorVA(const int error, const char *fmt, va_list); |
2383
43e39d9ec42f
Add __attribute__(__format__ ..) specifiers for functions that use printf() style format specifiers.
Matti Hamalainen <ccr@tnsp.org>
parents:
2361
diff
changeset
|
419 int dmError(const int error, const char *fmt, ...) |
2385
5ffc48a0bebe
Conditionally define DM_ATTR_PRINTF_FMT(xstart, xend) instead of using
Matti Hamalainen <ccr@tnsp.org>
parents:
2383
diff
changeset
|
420 DM_ATTR_PRINTF_FMT(2, 3); |
2383
43e39d9ec42f
Add __attribute__(__format__ ..) specifiers for functions that use printf() style format specifiers.
Matti Hamalainen <ccr@tnsp.org>
parents:
2361
diff
changeset
|
421 void dmErrorMsg(const char *fmt, ...) |
2385
5ffc48a0bebe
Conditionally define DM_ATTR_PRINTF_FMT(xstart, xend) instead of using
Matti Hamalainen <ccr@tnsp.org>
parents:
2383
diff
changeset
|
422 DM_ATTR_PRINTF_FMT(1, 2); |
955 | 423 int dmGetErrno(); |
424 const char *dmErrorStr(const int error); | |
425 | |
1046
7e54b2d08ce7
Add special debug error message function/macro that can be
Matti Hamalainen <ccr@tnsp.org>
parents:
980
diff
changeset
|
426 #ifdef DM_DEBUG |
7e54b2d08ce7
Add special debug error message function/macro that can be
Matti Hamalainen <ccr@tnsp.org>
parents:
980
diff
changeset
|
427 # define dmErrorDBG dmError |
1048
509e6ed3a24e
Finishing touches to the DM_DEBUG stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
1047
diff
changeset
|
428 # define dmErrorDBGMsg dmErrorMsg |
1046
7e54b2d08ce7
Add special debug error message function/macro that can be
Matti Hamalainen <ccr@tnsp.org>
parents:
980
diff
changeset
|
429 #else |
7e54b2d08ce7
Add special debug error message function/macro that can be
Matti Hamalainen <ccr@tnsp.org>
parents:
980
diff
changeset
|
430 # define dmErrorDBG(ecode, fmt, ...) (ecode) // Dummy |
1048
509e6ed3a24e
Finishing touches to the DM_DEBUG stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
1047
diff
changeset
|
431 # define dmErrorDBGMsg(fmt, ...) |
1046
7e54b2d08ce7
Add special debug error message function/macro that can be
Matti Hamalainen <ccr@tnsp.org>
parents:
980
diff
changeset
|
432 #endif |
7e54b2d08ce7
Add special debug error message function/macro that can be
Matti Hamalainen <ccr@tnsp.org>
parents:
980
diff
changeset
|
433 |
1451 | 434 void * dmMalloc(size_t len); |
435 void * dmMalloc0(size_t len); | |
436 void * dmRealloc(void *ptr, size_t len); | |
437 void * dmCalloc(size_t n, size_t len); | |
438 void dmFree(void *ptr); | |
1453
73a4158b2e55
Add missing dmFreeRReal() function prototype.
Matti Hamalainen <ccr@tnsp.org>
parents:
1452
diff
changeset
|
439 void dmFreeRReal(void **ptr); |
1452
3a1f4e810874
Add dmFreeR() macro/function.
Matti Hamalainen <ccr@tnsp.org>
parents:
1451
diff
changeset
|
440 #define dmFreeR(ptr) dmFreeRReal((void **) ptr) |
1451 | 441 |
1172
0ec370b1c8d4
Check for DM_HAVE_STRING_H.
Matti Hamalainen <ccr@tnsp.org>
parents:
1166
diff
changeset
|
442 #if defined(DM_HAVE_MEMSET) || defined(DM_HAVE_STRING_H) |
1166 | 443 static inline void * dmMemset(void *ptr, const int c, size_t n) |
444 { | |
445 return memset(ptr, c, n); | |
446 } | |
447 #else | |
448 void * dmMemset(void *ptr, const int c, size_t n); | |
449 #endif | |
0 | 450 |
2027
750a7e125546
Add in several string helper functions from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
451 |
750a7e125546
Add in several string helper functions from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
452 /** String trimming option flags for dm_strdup_trim() |
750a7e125546
Add in several string helper functions from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
453 */ |
750a7e125546
Add in several string helper functions from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
454 enum |
750a7e125546
Add in several string helper functions from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
455 { |
750a7e125546
Add in several string helper functions from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
456 DM_TRIM_START = 1, |
750a7e125546
Add in several string helper functions from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
457 DM_TRIM_END = 2, |
750a7e125546
Add in several string helper functions from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
458 DM_TRIM_BOTH = 3 |
750a7e125546
Add in several string helper functions from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
459 }; |
750a7e125546
Add in several string helper functions from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
460 |
750a7e125546
Add in several string helper functions from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
461 |
750a7e125546
Add in several string helper functions from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
462 |
1882 | 463 char * dm_strdup(const char *str); |
464 char * dm_strndup(const char *str, const size_t n); | |
2027
750a7e125546
Add in several string helper functions from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
465 char * dm_strdup_trim(const char *src, const int flags); |
750a7e125546
Add in several string helper functions from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
466 char * dm_strndup_trim(const char *src, const size_t n, const int flags); |
1884
47fe47f01fea
Implement dm_strdup_vprintf_len(const char *fmt, va_list args, int *len), which
Matti Hamalainen <ccr@tnsp.org>
parents:
1882
diff
changeset
|
467 char * dm_strdup_vprintf_len(const char *fmt, va_list args, int *len); |
1882 | 468 char * dm_strdup_vprintf(const char *fmt, va_list args); |
469 char * dm_strdup_printf(const char *fmt, ...); | |
0 | 470 |
2027
750a7e125546
Add in several string helper functions from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
471 int dm_strcasecmp(const char *haystack, const char *needle); |
750a7e125546
Add in several string helper functions from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
472 int dm_strncasecmp(const char *haystack, const char *needle, size_t n); |
816 | 473 char * dm_strrcasecmp(char *str, const char *needle); |
0 | 474 |
2004
161e731eb152
Improve dmGetIntVal() to accept an optional negative value boolean flag
Matti Hamalainen <ccr@tnsp.org>
parents:
1884
diff
changeset
|
475 BOOL dmGetIntVal(const char *str, unsigned int *value, BOOL *neg); |
955 | 476 |
477 | |
294
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
478 /* Mutexes |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
479 */ |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
480 #ifdef DM_MUTEX_DEBUG |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
481 |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
482 typedef struct |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
483 { |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
484 BOOL used; |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
485 Uint32 id; |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
486 int state; |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
487 } DMMutexLock; |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
488 |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
489 typedef struct |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
490 { |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
491 char *cr_file; |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
492 int cr_line; |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
493 SDL_mutex *m; |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
494 DMMutexLock locks[8]; |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
495 } DMMutex; |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
496 |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
497 #define dmMutexLock(x) dmDOMutexLock(x, __FILE__, (int) __LINE__) |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
498 #define dmMutexUnlock(x) dmDOMutexUnlock(x, __FILE__, (int) __LINE__) |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
499 #define dmCreateMutex(x) dmDOCreateMutex(__FILE__, (int) __LINE__) |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
500 |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
501 int dmDOMutexLock(DMMutex *mutex, const char *file, const int line); |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
502 int dmDOMutexUnlock(DMMutex *mutex, const char *file, const int line); |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
503 DMMutex * dmDOCreateMutex(const char *file, const int line); |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
504 void dmDestroyMutex(DMMutex *mutex); |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
505 |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
506 #else |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
507 #define DMMutex SDL_mutex |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
508 #define dmCreateMutex() SDL_CreateMutex() |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
509 #define dmDestroyMutex(x) SDL_DestroyMutex(x) |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
510 #define dmMutexLock(x) SDL_mutexP(x) |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
511 #define dmMutexUnlock(x) SDL_mutexV(x) |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
512 #endif |
dd9809a93425
Improve mutex debugging facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
288
diff
changeset
|
513 |
0 | 514 /* Endianess swapping macros |
515 */ | |
955 | 516 #define DM_SWAP_16_LE_BE(value) ((Uint16) ( \ |
0 | 517 (Uint16) ((Uint16) (value) >> 8) | \ |
518 (Uint16) ((Uint16) (value) << 8)) ) | |
519 | |
520 | |
955 | 521 #define DM_SWAP_32_LE_BE(value) ((Uint32) ( \ |
0 | 522 (((Uint32) (value) & (Uint32) 0x000000ffU) << 24) | \ |
523 (((Uint32) (value) & (Uint32) 0x0000ff00U) << 8) | \ | |
524 (((Uint32) (value) & (Uint32) 0x00ff0000U) >> 8) | \ | |
525 (((Uint32) (value) & (Uint32) 0xff000000U) >> 24))) | |
526 | |
955 | 527 #define DM_SWAP_64_LE_BE(value) ((Uint64) ( \ |
528 (((Uint64) (value) & (Uint64) 0x00000000000000ffULL) << 56) | \ | |
529 (((Uint64) (value) & (Uint64) 0x000000000000ff00ULL) << 40) | \ | |
530 (((Uint64) (value) & (Uint64) 0x0000000000ff0000ULL) << 24) | \ | |
531 (((Uint64) (value) & (Uint64) 0x00000000ff000000ULL) << 8) | \ | |
532 (((Uint64) (value) & (Uint64) 0x000000ff00000000ULL) >> 8) | \ | |
533 (((Uint64) (value) & (Uint64) 0x0000ff0000000000ULL) >> 24) | \ | |
534 (((Uint64) (value) & (Uint64) 0x00ff000000000000ULL) >> 40) | \ | |
0 | 535 (((Uint64) (value) & (Uint64) 0xff00000000000000ULL) >> 56))) |
873 | 536 |
0 | 537 |
538 /* Macros that swap only when needed ... | |
539 */ | |
540 #if (SDL_BYTEORDER == SDL_BIG_ENDIAN) | |
770 | 541 # define DM_LE16_TO_NATIVE(value) DM_SWAP_16_LE_BE(value) |
542 # define DM_LE32_TO_NATIVE(value) DM_SWAP_32_LE_BE(value) | |
543 # define DM_NATIVE_TO_LE16(value) DM_SWAP_16_LE_BE(value) | |
544 # define DM_NATIVE_TO_LE32(value) DM_SWAP_32_LE_BE(value) | |
0 | 545 |
770 | 546 # define DM_BE16_TO_NATIVE(value) ((Uint16) (value)) |
547 # define DM_BE32_TO_NATIVE(value) ((Uint32) (value)) | |
548 # define DM_NATIVE_TO_BE16(value) ((Uint16) (value)) | |
549 # define DM_NATIVE_TO_BE32(value) ((Uint32) (value)) | |
0 | 550 |
872
b01d04e44b6f
Assume we always have 64bit type.
Matti Hamalainen <ccr@tnsp.org>
parents:
871
diff
changeset
|
551 # define DM_LE64_TO_NATIVE(value) DM_SWAP_64_LE_BE(value) |
b01d04e44b6f
Assume we always have 64bit type.
Matti Hamalainen <ccr@tnsp.org>
parents:
871
diff
changeset
|
552 # define DM_NATIVE_TO_LE64(value) DM_SWAP_64_LE_BE(value) |
b01d04e44b6f
Assume we always have 64bit type.
Matti Hamalainen <ccr@tnsp.org>
parents:
871
diff
changeset
|
553 # define DM_BE64_TO_NATIVE(value) ((Uint64) (value)) |
b01d04e44b6f
Assume we always have 64bit type.
Matti Hamalainen <ccr@tnsp.org>
parents:
871
diff
changeset
|
554 # define DM_NATIVE_TO_BE64(value) ((Uint64) (value)) |
0 | 555 |
556 #elif (SDL_BYTEORDER == SDL_LIL_ENDIAN) | |
557 | |
770 | 558 # define DM_LE16_TO_NATIVE(value) ((Uint16) (value)) |
559 # define DM_LE32_TO_NATIVE(value) ((Uint32) (value)) | |
560 # define DM_NATIVE_TO_LE16(value) ((Uint16) (value)) | |
561 # define DM_NATIVE_TO_LE32(value) ((Uint32) (value)) | |
0 | 562 |
770 | 563 # define DM_BE16_TO_NATIVE(value) DM_SWAP_16_LE_BE(value) |
564 # define DM_BE32_TO_NATIVE(value) DM_SWAP_32_LE_BE(value) | |
565 # define DM_NATIVE_TO_BE16(value) DM_SWAP_16_LE_BE(value) | |
566 # define DM_NATIVE_TO_BE32(value) DM_SWAP_32_LE_BE(value) | |
0 | 567 |
872
b01d04e44b6f
Assume we always have 64bit type.
Matti Hamalainen <ccr@tnsp.org>
parents:
871
diff
changeset
|
568 # define DM_LE64_TO_NATIVE(value) ((Uint64) (value)) |
b01d04e44b6f
Assume we always have 64bit type.
Matti Hamalainen <ccr@tnsp.org>
parents:
871
diff
changeset
|
569 # define DM_NATIVE_TO_LE64(value) ((Uint64) (value)) |
b01d04e44b6f
Assume we always have 64bit type.
Matti Hamalainen <ccr@tnsp.org>
parents:
871
diff
changeset
|
570 # define DM_BE64_TO_NATIVE(value) DM_SWAP_64_LE_BE(value) |
b01d04e44b6f
Assume we always have 64bit type.
Matti Hamalainen <ccr@tnsp.org>
parents:
871
diff
changeset
|
571 # define DM_NATIVE_TO_BE64(value) DM_SWAP_64_LE_BE(value) |
0 | 572 #endif |
573 | |
574 | |
575 #ifdef __cplusplus | |
576 } | |
577 #endif | |
359
59045853853d
Make resource management re-entrant.
Matti Hamalainen <ccr@tnsp.org>
parents:
341
diff
changeset
|
578 |
0 | 579 #endif // DMLIB_H |