view 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
line wrap: on
line source

#ifndef ANIMONE_ANIMONE_TYPES_H_
#define ANIMONE_ANIMONE_TYPES_H_

#include <cstdint>

/* windows is so annoying */
#ifdef ANIMONE_STATIC
# define ANIMONE_API
#else
# ifdef _WIN32
#  ifdef DLL_EXPORT
#   define ANIMONE_API __declspec(dllexport)
#  else
#   define ANIMONE_API __declspec(dllimport)
#  endif
# else
#  define ANIMONE_API
# endif
#endif

/* FIXME configure this in autoconf */
#ifndef _WIN32
#include <sys/types.h>
#endif

namespace animone::internal {

#ifdef _WIN32
using pid_t = std::uint32_t;
#else
using pid_t = ::pid_t;
#endif

/* different window systems have different sized IDs */
union ANIMONE_API wid_t {
	std::uintptr_t win32;
	std::int64_t quartz; // FIXME is this correct?
	std::uint32_t x11;
};

}

#endif // ANIMONE_ANIMONE_TYPES_H_