mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-04-28 11:14:38 +00:00
Not sure how sound implicit casting `pthread_key_t` to `DWORD` is, but we can get away with it for now. Otherwise, we're gonna need to keep a global list of registered keys and mutex that and blah blah blah
97 lines
2 KiB
C++
97 lines
2 KiB
C++
#ifndef WLINUX_H
|
|
#define WLINUX_H
|
|
|
|
#pragma once
|
|
|
|
#include <cstdint>
|
|
#include <cstring>
|
|
#include <string>
|
|
#include <pthread.h>
|
|
|
|
#define TRUE true
|
|
#define FALSE false
|
|
#define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
|
|
#define ZeroMemory RtlZeroMemory
|
|
#define WINAPI
|
|
|
|
typedef unsigned int DWORD;
|
|
typedef const char *LPCSTR;
|
|
typedef bool BOOL;
|
|
typedef void* LPVOID;
|
|
typedef char WCHAR;
|
|
typedef unsigned char BYTE;
|
|
typedef BYTE* PBYTE;
|
|
typedef const wchar_t* LPCWSTR;
|
|
typedef unsigned long long ULONGLONG;
|
|
typedef int HRESULT;
|
|
typedef unsigned int UINT;
|
|
typedef void* HANDLE;
|
|
typedef int INT;
|
|
typedef long* PLONG;
|
|
typedef unsigned int* LPDWORD;
|
|
typedef const void* LPCVOID;
|
|
typedef char CHAR;
|
|
typedef void* PVOID;
|
|
typedef unsigned long* ULONG_PTR;
|
|
typedef long LONG;
|
|
typedef void VOID;
|
|
typedef ULONGLONG PlayerUID;
|
|
typedef DWORD WORD;
|
|
typedef struct {
|
|
DWORD LowPart;
|
|
long long QuadPart;
|
|
LONG HighPart;
|
|
} LARGE_INTEGER;
|
|
typedef long long LONGLONG;
|
|
typedef size_t SIZE_T;
|
|
typedef std::wstring LPWSTR;
|
|
typedef unsigned char boolean; // java brainrot
|
|
#define __debugbreak()
|
|
#define __int32 int
|
|
typedef unsigned long ULONG;
|
|
typedef unsigned char byte;
|
|
|
|
// https://learn.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-filetime
|
|
typedef struct _FILETIME {
|
|
DWORD dwLowDateTime;
|
|
DWORD dwHighDateTime;
|
|
} FILETIME, *PFILETIME, *LPFILETIME;
|
|
|
|
#define FILE_BEGIN SEEK_SET
|
|
|
|
typedef short SHORT;
|
|
|
|
typedef VOID* XMEMCOMPRESSION_CONTEXT;
|
|
typedef VOID* XMEMDECOMPRESSION_CONTEXT;
|
|
|
|
typedef float FLOAT;
|
|
|
|
#define TLS_OUT_OF_INDEXES ((DWORD)0xFFFFFFFF)
|
|
|
|
DWORD TlsAlloc(VOID) {
|
|
pthread_key_t key;
|
|
|
|
if (pthread_key_create(&key, NULL) == 0) {
|
|
return key;
|
|
} else {
|
|
return TLS_OUT_OF_INDEXES;
|
|
}
|
|
}
|
|
|
|
BOOL TlsFree(DWORD dwTlsIndex)
|
|
{
|
|
return pthread_key_delete(dwTlsIndex) == 0;
|
|
}
|
|
|
|
LPVOID TlsGetValue(DWORD dwTlsIndex)
|
|
{
|
|
return pthread_getspecific(dwTlsIndex);
|
|
}
|
|
|
|
BOOL TlsSetValue(DWORD dwTlsIndex, LPVOID lpTlsValue)
|
|
{
|
|
return pthread_setspecific(dwTlsIndex, lpTlsValue) == 0;
|
|
}
|
|
|
|
#endif // WLINUX_H
|