comparison include/animone/types.h @ 25:60ded877339b

dep/animone: fix tons of issues for example, the window ID stuff was just... completely wrong. since we're supporting multiple different window systems, it *has* to be a union rather than just a single integer type. HWND is also not a DWORD, it's a pointer(!), so now it's stored as a std::uintptr_t. (this probably breaks things)
author Paper <paper@paper.us.eu.org>
date Thu, 20 Jun 2024 03:03:05 -0400
parents 973734ebd2be
children 77a5ea5e996c
comparison
equal deleted inserted replaced
24:f1b9adaa41b3 25:60ded877339b
1 #ifndef ANIMONE_ANIMONE_TYPES_H_ 1 #ifndef ANIMONE_ANIMONE_TYPES_H_
2 #define ANIMONE_ANIMONE_TYPES_H_ 2 #define ANIMONE_ANIMONE_TYPES_H_
3 3
4 /* define this as unsigned long (DWORD) on win32 so we 4 #include <cstdint>
5 * don't force the user to include <windows.h> or <IntBase.h> */ 5
6 #ifdef _WIN32 6 /* windows is so annoying */
7 # include <cstdint> 7 #ifdef ANIMONE_STATIC
8 # define ANIMONE_API
9 #else
10 # ifdef _WIN32
11 # ifdef DLL_EXPORT
12 # define ANIMONE_API __declspec(dllexport)
13 # else
14 # define ANIMONE_API __declspec(dllimport)
15 # endif
16 # else
17 # define ANIMONE_API
18 # endif
19 #endif
20
21 /* FIXME configure this in autoconf */
22 #ifndef _WIN32
23 #include <sys/types.h>
24 #endif
8 25
9 namespace animone::internal { 26 namespace animone::internal {
27
28 #ifdef _WIN32
10 using pid_t = std::uint32_t; 29 using pid_t = std::uint32_t;
11 }
12 #else 30 #else
13 /* <sys/types.h> shouldn't be that big, right? */
14 # include <sys/types.h>
15 namespace animone::internal {
16 using pid_t = ::pid_t; 31 using pid_t = ::pid_t;
17 }
18 #endif 32 #endif
19 33
34 /* different window systems have different sized IDs */
35 union ANIMONE_API wid_t {
36 std::uintptr_t win32;
37 std::int64_t quartz; // FIXME is this correct?
38 std::uint32_t x11;
39 };
40
41 }
42
20 #endif // ANIMONE_ANIMONE_TYPES_H_ 43 #endif // ANIMONE_ANIMONE_TYPES_H_