From a77cbd96d792d9751db382c0517dc0faf98b431b Mon Sep 17 00:00:00 2001 From: OkiStuff <40648091+OkiStuff@users.noreply.github.com> Date: Tue, 4 Aug 2020 18:01:58 -0400 Subject: [PATCH 1/9] Added WinApi --- winapi.sn | 214 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 214 insertions(+) create mode 100644 winapi.sn diff --git a/winapi.sn b/winapi.sn new file mode 100644 index 0000000..e6c742d --- /dev/null +++ b/winapi.sn @@ -0,0 +1,214 @@ + +namespace std { + + #[target_os = "windows"] + namespace winapi { + + // Data Types + + alias DWORD = u32; + alias LPCSTR = const i8*; + alias PVOID = void*; + alias HANDLE = PVOID; + alias HWND = HANDLE; + alias HMENU = HANDLE; + alias short = u8; + alias SHORT = short; + alias WORD = SHORT; + + alias HINSTANCE = HANDLE; + alias LPVOID = void*; + alias LPWORD = WORD; + alias BOOL = int; + alias BYTE = i8; + alias BOOLEAN = BYTE; + alias ATOM = WORD; + + alias char = i8; + alias CHAR = char; + alias CCHAR = CHAR; + alias CONST = const; + alias COLORREF = DWORD; + alias DWORDLONG = u64; + alias DWORD32 = u32; + alias DWORD64 = u64; + alias float = f32; + alias FLOAT = float; + + alias HACCEL = HANDLE; + alias HALF_PTR = int; // Half size of pointer + alias HBITMAP = HANDLE; + alias HBRUSH = HANDLE; + alias HCOLORSPACE = HANDLE; + alias HCONV = HANDLE; + alias HCONVLIST = HANDLE; + alias HICON = HANDLE; + alias HCURSOR = HICON; + alias HDC = HANDLE; + alias HDROP = HANDLE; + alias HDDEDATA = HANDLE; + alias HDESK = HANDLE; + alias HDWP = HANDLE; + alias HENHEMTAFILE = HANDLE; + alias HFILE = int; + alias HFONT = HANDLE; + alias HGDIOBJ = HANDLE; + alias HGLOBAL = HANDLE; + alias HHOOK = HANDLE; + alias HINSTANCE = HANDLE; + alias HKEY = HANDLE; + alias HKL = HANDLE; + alias HLOCAL = HANDLE; + alias HMETAFILE = HANDLE; + alias HMODULE = HINSTANCE; + alias HMONITOR = HANDLE; + alias HPEN = HANDLE; + alias HRESULT = LONG; + alias HRGN = HANDLE; + alias HRSRC = HANDLE; + alias HSZ = HANDLE; + alias HWINSTA = HANDLE; + + alias INT = i32; + alias INT_PTR = i64; + alias INT8 = i8; + alias INT = i32; + alias INT64 = i64; + + alias LANGID = WORD; + alias LCID = DWORD; + alias LCTYPE = DWORD; + alias LGRPID = DWORD; + alias LONG = i32; + + alias LONG_PTR = i32*; + alias LONG32 = i32; + alias LONG64 = i64; + alias LPARAM = LONG_PTR; + alias LPBOOL = BOOL*; // BOOL far pointer; + alias LPBYTE = BYTE*; // BYTE far pointer; + alias LPCOLORREF = DWORD*; + alias LPCTSTR = LPCSTR; // #else typedef LPCSTR LPCTSTR; + alias LPCVOID = const void*; + alias LPCWSTR = const WCHAR*; + + alias wchar_t = i16; + alias WCHAR = wchar_t; + alias PWCHAR = WCHAR*; + alias VOID = void; + alias LPDWORD = DWORD*; + alias LPHANDLE = HANDLE*; + alias LPINT = int*; + alias LPLONG = long*; + alias LPSTR = CHAR*; + alias LPTSTR = LPWSTR; //#ifdef UNICODE + // typedef LPWSTR LPTSTR; + //#else + // typedef LPSTR LPTSTR; + //#endif + alias LPVOID = void*; + alias LPWORD = WORD*; + alias LPWSTR = WCHAR*; + alias LRESULT = LONG_PTR; + alias PBOOL = BOOL*; + alias PBOOLEAN = BOOLEN*; // BYTE NOTT FINISHED + alias PBYTE = BYTE*; // BYTE NOT FINISHED + alias PCHAR = CHAR*; + alias PCSTR = const CHAR*; + alias PCTSTR = null; //#ifdef UNICODE + // typedef LPCWSTR PCTSTR; + //#else + // typedef LPCSTR PCTSTR; + //#endif + alias PCWSTR = const WCHAR*; + alias PDWORD = DWORD*; + alias PDWORLDLONG = DWORDLONG*; + alias PDWORD_PTR = DWORD_PTR*; + alias PDWORD64 = WORD64; + alias PFLOAT = FLOAT*; + alias PHALF_PTR = HALF_PTR*; // A pointer to HALF_PTR + + alias PHANDLE = HANDLE*; + alias PHKEY = HKEY*; + alias PINT = int*; + alias PINT_PTR = INT_PTR; + alias PINT8 = INT8*; + alias PINT32 = i32*; //INT32 + alias PINT16 = i16*; //INT16 + alias PINT64 = INT64*; + alias PLCID = LCID*; + alias PLONG = LONG*; + alias PLONGLONG = i64*; // LONGLONG + + alias PLONG_PTR = LONG_PTR*; + alias PLONG32 = LONG32*; + alias PLONG64 = LONG64*; + alias POINTER_32 = i32; + alias POINTER_64 = i64; + + // if you can read this then you are trying to figure out how the worst winapi bindings work... + + alias POINTER_SIGNED = null; // BlockFindReturn + alias POINTER_UNSIGNED = null; // BlockFindReturn + alias PSHORT = SHORT*; + alias PSIZE_T = null; //SIZE_T; + alias PSSIZE_T = null; //SSIZE_T + alias PSTR = CHAR*; + alias PTBYTE = null; //TBYTE + alias PTCHAR = null; //TCHAR + alias PTSTR = null; //#ifdef UNICODE + // typedef LPWSTR PTSTR; + //#else typedef LPSTR PTSTR; + //#endif + + alias UCHAR = u8; + alias PUCHAR = UCHAR; //UCHAR + alias PUHALF_PTR = UHALF_PTR; //#ifdef _WIN64 + // typedef UHALF_PTR *PUHALF_PTR; + //#else + // typedef UHALF_PTR *PUHALF_PTR; + //#endif + + alias UINT = u32; + alias UINT8 = u8; + alias UINT16 = u16; + alias UINT64 = u64; + alias ULONG = i32; + alias ULONGLONG = i64; + alias ULONG32 = u32; + alias ULONG64 = u64; + alias USHORT = u16; + alias UNIT_PTR = u64; + alias UHALF_PTR = i32; // needs review https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types#half_ptr, https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types#uhalf_ptr + + alias UNICODE_STRING = null; // needs review https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types#unicode_string + + // ReturnBlockHere + + alias PUINT = UINT*; //UNINT + alias PUINT_PTR = UNIT_PTR*; + alias PUINT8 = UINT8*; + alias PUINT16 = UINT16*; + alias PUINT32 = UINT32*; + alias PUINT64 = UINT64*; + alias PULONG = ULONG*; + alias PULONGLONG = ULONGLONG*; + alias PULONG_PTR = ULONGLONG*; + alias PULONG32 = ULONG32*; + alias PULONG64 = ULONG64*; + + alias PUSHORT = USHORT*; + alias PWORD = WORD*; + alias PWSTR = WCHAR*; + + alias QWORD = u64; + alias SC_HANDLE = HANDLE; + alias SC_LOCK = LPVOID; + + alias SERVICE_STATUS_HANDLE = HANDLE; + alias TBYTE = WCHAR; + alias TCHAR = WCHAR; + + + } +} \ No newline at end of file From 262b738990d641777f152b8cea9c182850779a09 Mon Sep 17 00:00:00 2001 From: okistuff Date: Tue, 4 Aug 2020 18:14:18 -0400 Subject: [PATCH 2/9] Fixed some stuff and Cleaned the Code up :) --- winapi.sn | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/winapi.sn b/winapi.sn index e6c742d..34a64f7 100644 --- a/winapi.sn +++ b/winapi.sn @@ -35,6 +35,8 @@ namespace std { alias float = f32; alias FLOAT = float; + // The Start of HANDLE Hell - Okistuff + alias HACCEL = HANDLE; alias HALF_PTR = int; // Half size of pointer alias HBITMAP = HANDLE; @@ -69,6 +71,8 @@ namespace std { alias HSZ = HANDLE; alias HWINSTA = HANDLE; + // You Survived HANDLE hell! - Okistuff + alias INT = i32; alias INT_PTR = i64; alias INT8 = i8; @@ -148,14 +152,17 @@ namespace std { // if you can read this then you are trying to figure out how the worst winapi bindings work... + alias TBYTE = WCHAR; + alias TCHAR = WCHAR; + alias POINTER_SIGNED = null; // BlockFindReturn alias POINTER_UNSIGNED = null; // BlockFindReturn alias PSHORT = SHORT*; alias PSIZE_T = null; //SIZE_T; alias PSSIZE_T = null; //SSIZE_T alias PSTR = CHAR*; - alias PTBYTE = null; //TBYTE - alias PTCHAR = null; //TCHAR + alias PTBYTE = TBYTE; + alias PTCHAR = TCHAR; alias PTSTR = null; //#ifdef UNICODE // typedef LPWSTR PTSTR; //#else typedef LPSTR PTSTR; @@ -163,12 +170,9 @@ namespace std { alias UCHAR = u8; alias PUCHAR = UCHAR; //UCHAR - alias PUHALF_PTR = UHALF_PTR; //#ifdef _WIN64 - // typedef UHALF_PTR *PUHALF_PTR; - //#else - // typedef UHALF_PTR *PUHALF_PTR; - //#endif + alias PUHALF_PTR = UHALF_PTR; + alias UINT = u32; alias UINT8 = u8; alias UINT16 = u16; @@ -206,8 +210,8 @@ namespace std { alias SC_LOCK = LPVOID; alias SERVICE_STATUS_HANDLE = HANDLE; - alias TBYTE = WCHAR; - alias TCHAR = WCHAR; + + } From 606eaa5d0c4a36f3e29beba9db949f3d5696c6d6 Mon Sep 17 00:00:00 2001 From: okistuff Date: Tue, 4 Aug 2020 18:50:21 -0400 Subject: [PATCH 3/9] Added UNICODE_STRING, PUNICODE_STRING, PCUNICODE_STRING --- winapi.sn => std/windows/winapi.sn | 441 +++++++++++++++-------------- 1 file changed, 224 insertions(+), 217 deletions(-) rename winapi.sn => std/windows/winapi.sn (94%) diff --git a/winapi.sn b/std/windows/winapi.sn similarity index 94% rename from winapi.sn rename to std/windows/winapi.sn index 34a64f7..a2aeeea 100644 --- a/winapi.sn +++ b/std/windows/winapi.sn @@ -1,218 +1,225 @@ - -namespace std { - - #[target_os = "windows"] - namespace winapi { - - // Data Types - - alias DWORD = u32; - alias LPCSTR = const i8*; - alias PVOID = void*; - alias HANDLE = PVOID; - alias HWND = HANDLE; - alias HMENU = HANDLE; - alias short = u8; - alias SHORT = short; - alias WORD = SHORT; - - alias HINSTANCE = HANDLE; - alias LPVOID = void*; - alias LPWORD = WORD; - alias BOOL = int; - alias BYTE = i8; - alias BOOLEAN = BYTE; - alias ATOM = WORD; - - alias char = i8; - alias CHAR = char; - alias CCHAR = CHAR; - alias CONST = const; - alias COLORREF = DWORD; - alias DWORDLONG = u64; - alias DWORD32 = u32; - alias DWORD64 = u64; - alias float = f32; - alias FLOAT = float; - - // The Start of HANDLE Hell - Okistuff - - alias HACCEL = HANDLE; - alias HALF_PTR = int; // Half size of pointer - alias HBITMAP = HANDLE; - alias HBRUSH = HANDLE; - alias HCOLORSPACE = HANDLE; - alias HCONV = HANDLE; - alias HCONVLIST = HANDLE; - alias HICON = HANDLE; - alias HCURSOR = HICON; - alias HDC = HANDLE; - alias HDROP = HANDLE; - alias HDDEDATA = HANDLE; - alias HDESK = HANDLE; - alias HDWP = HANDLE; - alias HENHEMTAFILE = HANDLE; - alias HFILE = int; - alias HFONT = HANDLE; - alias HGDIOBJ = HANDLE; - alias HGLOBAL = HANDLE; - alias HHOOK = HANDLE; - alias HINSTANCE = HANDLE; - alias HKEY = HANDLE; - alias HKL = HANDLE; - alias HLOCAL = HANDLE; - alias HMETAFILE = HANDLE; - alias HMODULE = HINSTANCE; - alias HMONITOR = HANDLE; - alias HPEN = HANDLE; - alias HRESULT = LONG; - alias HRGN = HANDLE; - alias HRSRC = HANDLE; - alias HSZ = HANDLE; - alias HWINSTA = HANDLE; - - // You Survived HANDLE hell! - Okistuff - - alias INT = i32; - alias INT_PTR = i64; - alias INT8 = i8; - alias INT = i32; - alias INT64 = i64; - - alias LANGID = WORD; - alias LCID = DWORD; - alias LCTYPE = DWORD; - alias LGRPID = DWORD; - alias LONG = i32; - - alias LONG_PTR = i32*; - alias LONG32 = i32; - alias LONG64 = i64; - alias LPARAM = LONG_PTR; - alias LPBOOL = BOOL*; // BOOL far pointer; - alias LPBYTE = BYTE*; // BYTE far pointer; - alias LPCOLORREF = DWORD*; - alias LPCTSTR = LPCSTR; // #else typedef LPCSTR LPCTSTR; - alias LPCVOID = const void*; - alias LPCWSTR = const WCHAR*; - - alias wchar_t = i16; - alias WCHAR = wchar_t; - alias PWCHAR = WCHAR*; - alias VOID = void; - alias LPDWORD = DWORD*; - alias LPHANDLE = HANDLE*; - alias LPINT = int*; - alias LPLONG = long*; - alias LPSTR = CHAR*; - alias LPTSTR = LPWSTR; //#ifdef UNICODE - // typedef LPWSTR LPTSTR; - //#else - // typedef LPSTR LPTSTR; - //#endif - alias LPVOID = void*; - alias LPWORD = WORD*; - alias LPWSTR = WCHAR*; - alias LRESULT = LONG_PTR; - alias PBOOL = BOOL*; - alias PBOOLEAN = BOOLEN*; // BYTE NOTT FINISHED - alias PBYTE = BYTE*; // BYTE NOT FINISHED - alias PCHAR = CHAR*; - alias PCSTR = const CHAR*; - alias PCTSTR = null; //#ifdef UNICODE - // typedef LPCWSTR PCTSTR; - //#else - // typedef LPCSTR PCTSTR; - //#endif - alias PCWSTR = const WCHAR*; - alias PDWORD = DWORD*; - alias PDWORLDLONG = DWORDLONG*; - alias PDWORD_PTR = DWORD_PTR*; - alias PDWORD64 = WORD64; - alias PFLOAT = FLOAT*; - alias PHALF_PTR = HALF_PTR*; // A pointer to HALF_PTR - - alias PHANDLE = HANDLE*; - alias PHKEY = HKEY*; - alias PINT = int*; - alias PINT_PTR = INT_PTR; - alias PINT8 = INT8*; - alias PINT32 = i32*; //INT32 - alias PINT16 = i16*; //INT16 - alias PINT64 = INT64*; - alias PLCID = LCID*; - alias PLONG = LONG*; - alias PLONGLONG = i64*; // LONGLONG - - alias PLONG_PTR = LONG_PTR*; - alias PLONG32 = LONG32*; - alias PLONG64 = LONG64*; - alias POINTER_32 = i32; - alias POINTER_64 = i64; - - // if you can read this then you are trying to figure out how the worst winapi bindings work... - - alias TBYTE = WCHAR; - alias TCHAR = WCHAR; - - alias POINTER_SIGNED = null; // BlockFindReturn - alias POINTER_UNSIGNED = null; // BlockFindReturn - alias PSHORT = SHORT*; - alias PSIZE_T = null; //SIZE_T; - alias PSSIZE_T = null; //SSIZE_T - alias PSTR = CHAR*; - alias PTBYTE = TBYTE; - alias PTCHAR = TCHAR; - alias PTSTR = null; //#ifdef UNICODE - // typedef LPWSTR PTSTR; - //#else typedef LPSTR PTSTR; - //#endif - - alias UCHAR = u8; - alias PUCHAR = UCHAR; //UCHAR - alias PUHALF_PTR = UHALF_PTR; - - - alias UINT = u32; - alias UINT8 = u8; - alias UINT16 = u16; - alias UINT64 = u64; - alias ULONG = i32; - alias ULONGLONG = i64; - alias ULONG32 = u32; - alias ULONG64 = u64; - alias USHORT = u16; - alias UNIT_PTR = u64; - alias UHALF_PTR = i32; // needs review https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types#half_ptr, https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types#uhalf_ptr - - alias UNICODE_STRING = null; // needs review https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types#unicode_string - - // ReturnBlockHere - - alias PUINT = UINT*; //UNINT - alias PUINT_PTR = UNIT_PTR*; - alias PUINT8 = UINT8*; - alias PUINT16 = UINT16*; - alias PUINT32 = UINT32*; - alias PUINT64 = UINT64*; - alias PULONG = ULONG*; - alias PULONGLONG = ULONGLONG*; - alias PULONG_PTR = ULONGLONG*; - alias PULONG32 = ULONG32*; - alias PULONG64 = ULONG64*; - - alias PUSHORT = USHORT*; - alias PWORD = WORD*; - alias PWSTR = WCHAR*; - - alias QWORD = u64; - alias SC_HANDLE = HANDLE; - alias SC_LOCK = LPVOID; - - alias SERVICE_STATUS_HANDLE = HANDLE; - - - - - } + +namespace std { + + #[target_os = "windows"] + namespace winapi { + + // Data Types + + alias DWORD = u32; + alias LPCSTR = const i8*; + alias PVOID = void*; + alias HANDLE = PVOID; + alias HWND = HANDLE; + alias HMENU = HANDLE; + alias short = u8; + alias SHORT = short; + alias WORD = SHORT; + + alias HINSTANCE = HANDLE; + alias LPVOID = void*; + alias LPWORD = WORD; + alias BOOL = int; + alias BYTE = i8; + alias BOOLEAN = BYTE; + alias ATOM = WORD; + + alias char = i8; + alias CHAR = char; + alias CCHAR = CHAR; + alias CONST = const; + alias COLORREF = DWORD; + alias DWORDLONG = u64; + alias DWORD32 = u32; + alias DWORD64 = u64; + alias float = f32; + alias FLOAT = float; + + // The Start of HANDLE Hell - Okistuff + + alias HACCEL = HANDLE; + alias HALF_PTR = int; // Half size of pointer + alias HBITMAP = HANDLE; + alias HBRUSH = HANDLE; + alias HCOLORSPACE = HANDLE; + alias HCONV = HANDLE; + alias HCONVLIST = HANDLE; + alias HICON = HANDLE; + alias HCURSOR = HICON; + alias HDC = HANDLE; + alias HDROP = HANDLE; + alias HDDEDATA = HANDLE; + alias HDESK = HANDLE; + alias HDWP = HANDLE; + alias HENHEMTAFILE = HANDLE; + alias HFILE = int; + alias HFONT = HANDLE; + alias HGDIOBJ = HANDLE; + alias HGLOBAL = HANDLE; + alias HHOOK = HANDLE; + alias HINSTANCE = HANDLE; + alias HKEY = HANDLE; + alias HKL = HANDLE; + alias HLOCAL = HANDLE; + alias HMETAFILE = HANDLE; + alias HMODULE = HINSTANCE; + alias HMONITOR = HANDLE; + alias HPEN = HANDLE; + alias HRESULT = LONG; + alias HRGN = HANDLE; + alias HRSRC = HANDLE; + alias HSZ = HANDLE; + alias HWINSTA = HANDLE; + + // You Survived HANDLE hell! - Okistuff + + alias INT = i32; + alias INT_PTR = i64; + alias INT8 = i8; + alias INT = i32; + alias INT64 = i64; + + alias LANGID = WORD; + alias LCID = DWORD; + alias LCTYPE = DWORD; + alias LGRPID = DWORD; + alias LONG = i32; + + alias LONG_PTR = i32*; + alias LONG32 = i32; + alias LONG64 = i64; + alias LPARAM = LONG_PTR; + alias LPBOOL = BOOL*; // BOOL far pointer; + alias LPBYTE = BYTE*; // BYTE far pointer; + alias LPCOLORREF = DWORD*; + alias LPCTSTR = LPCSTR; // #else typedef LPCSTR LPCTSTR; + alias LPCVOID = const void*; + alias LPCWSTR = const WCHAR*; + + alias wchar_t = i16; + alias WCHAR = wchar_t; + alias PWCHAR = WCHAR*; + alias VOID = void; + alias LPDWORD = DWORD*; + alias LPHANDLE = HANDLE*; + alias LPINT = int*; + alias LPLONG = long*; + alias LPSTR = CHAR*; + alias LPTSTR = LPWSTR; //#ifdef UNICODE + // typedef LPWSTR LPTSTR; + //#else + // typedef LPSTR LPTSTR; + //#endif + alias LPVOID = void*; + alias LPWORD = WORD*; + alias LPWSTR = WCHAR*; + alias LRESULT = LONG_PTR; + alias PBOOL = BOOL*; + alias PBOOLEAN = BOOLEN*; // BYTE NOTT FINISHED + alias PBYTE = BYTE*; // BYTE NOT FINISHED + alias PCHAR = CHAR*; + alias PCSTR = const CHAR*; + alias PCTSTR = null; //#ifdef UNICODE + // typedef LPCWSTR PCTSTR; + //#else + // typedef LPCSTR PCTSTR; + //#endif + alias PCWSTR = const WCHAR*; + alias PDWORD = DWORD*; + alias PDWORLDLONG = DWORDLONG*; + alias PDWORD_PTR = DWORD_PTR*; + alias PDWORD64 = WORD64; + alias PFLOAT = FLOAT*; + alias PHALF_PTR = HALF_PTR*; // A pointer to HALF_PTR + + alias PHANDLE = HANDLE*; + alias PHKEY = HKEY*; + alias PINT = int*; + alias PINT_PTR = INT_PTR; + alias PINT8 = INT8*; + alias PINT32 = i32*; //INT32 + alias PINT16 = i16*; //INT16 + alias PINT64 = INT64*; + alias PLCID = LCID*; + alias PLONG = LONG*; + alias PLONGLONG = i64*; // LONGLONG + + alias PLONG_PTR = LONG_PTR*; + alias PLONG32 = LONG32*; + alias PLONG64 = LONG64*; + alias POINTER_32 = i32; + alias POINTER_64 = i64; + + // if you can read this then you are trying to figure out how the worst winapi bindings work... + + alias TBYTE = WCHAR; + alias TCHAR = WCHAR; + + alias POINTER_SIGNED = null; // BlockFindReturn + alias POINTER_UNSIGNED = null; // BlockFindReturn + alias PSHORT = SHORT*; + alias PSIZE_T = null; //SIZE_T; + alias PSSIZE_T = null; //SSIZE_T + alias PSTR = CHAR*; + alias PTBYTE = TBYTE; + alias PTCHAR = TCHAR; + alias PTSTR = null; //#ifdef UNICODE + // typedef LPWSTR PTSTR; + //#else typedef LPSTR PTSTR; + //#endif + + alias UCHAR = u8; + alias PUCHAR = UCHAR; //UCHAR + alias PUHALF_PTR = UHALF_PTR; + + + alias UINT = u32; + alias UINT8 = u8; + alias UINT16 = u16; + alias UINT64 = u64; + alias ULONG = i32; + alias ULONGLONG = i64; + alias ULONG32 = u32; + alias ULONG64 = u64; + alias USHORT = u16; + alias UNIT_PTR = u64; + alias UHALF_PTR = i32; // needs review https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types#half_ptr, https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types#uhalf_ptr + + class UNICODE_STRING { + Length: u16; + MaximumLength: u16; + Buffer: u16*; + } + + alias PUNICODE_STRING = UNICODE_STRING*; + alias PCUNICODE_STRING = const PUNICODE_STRING; + + // ReturnBlockHere + + alias PUINT = UINT*; //UNINT + alias PUINT_PTR = UNIT_PTR*; + alias PUINT8 = UINT8*; + alias PUINT16 = UINT16*; + alias PUINT32 = UINT32*; + alias PUINT64 = UINT64*; + alias PULONG = ULONG*; + alias PULONGLONG = ULONGLONG*; + alias PULONG_PTR = ULONGLONG*; + alias PULONG32 = ULONG32*; + alias PULONG64 = ULONG64*; + + alias PUSHORT = USHORT*; + alias PWORD = WORD*; + alias PWSTR = WCHAR*; + + alias QWORD = u64; + alias SC_HANDLE = HANDLE; + alias SC_LOCK = LPVOID; + + alias SERVICE_STATUS_HANDLE = HANDLE; + + + + + } } \ No newline at end of file From 82ce53b695e37e048766f80b3e77bc1d9dc5fa5b Mon Sep 17 00:00:00 2001 From: okistuff Date: Tue, 4 Aug 2020 18:53:14 -0400 Subject: [PATCH 4/9] Fixed some formatting stuff --- std/windows/winapi.sn | 2 -- 1 file changed, 2 deletions(-) diff --git a/std/windows/winapi.sn b/std/windows/winapi.sn index a2aeeea..f4ddd88 100644 --- a/std/windows/winapi.sn +++ b/std/windows/winapi.sn @@ -194,8 +194,6 @@ namespace std { alias PUNICODE_STRING = UNICODE_STRING*; alias PCUNICODE_STRING = const PUNICODE_STRING; - // ReturnBlockHere - alias PUINT = UINT*; //UNINT alias PUINT_PTR = UNIT_PTR*; alias PUINT8 = UINT8*; From 9ffb28a278ea62bae779d1332254681bf193e3ab Mon Sep 17 00:00:00 2001 From: okistuff Date: Wed, 5 Aug 2020 13:46:27 -0400 Subject: [PATCH 5/9] Finished WinAPI Data Types! --- std/windows/winapi.sn | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/std/windows/winapi.sn b/std/windows/winapi.sn index f4ddd88..d3b696c 100644 --- a/std/windows/winapi.sn +++ b/std/windows/winapi.sn @@ -119,11 +119,11 @@ namespace std { alias PBYTE = BYTE*; // BYTE NOT FINISHED alias PCHAR = CHAR*; alias PCSTR = const CHAR*; - alias PCTSTR = null; //#ifdef UNICODE - // typedef LPCWSTR PCTSTR; - //#else - // typedef LPCSTR PCTSTR; - //#endif + alias PCTSTR = LPCWSTR; + + + + alias PCWSTR = const WCHAR*; alias PDWORD = DWORD*; alias PDWORLDLONG = DWORDLONG*; @@ -152,21 +152,23 @@ namespace std { // if you can read this then you are trying to figure out how the worst winapi bindings work... + alias SIZE_T = u64; + alias SSIZE_T = LONG_PTR; + alias TBYTE = WCHAR; alias TCHAR = WCHAR; - alias POINTER_SIGNED = null; // BlockFindReturn - alias POINTER_UNSIGNED = null; // BlockFindReturn + alias POINTER_SIGNED = null; // NEED HELP! + alias POINTER_UNSIGNED = null; // NEED HELP! alias PSHORT = SHORT*; - alias PSIZE_T = null; //SIZE_T; - alias PSSIZE_T = null; //SSIZE_T + alias PSIZE_T = SIZE_T ; + alias PSSIZE_T = SSIZE_T; alias PSTR = CHAR*; alias PTBYTE = TBYTE; alias PTCHAR = TCHAR; - alias PTSTR = null; //#ifdef UNICODE - // typedef LPWSTR PTSTR; - //#else typedef LPSTR PTSTR; - //#endif + alias PTSTR = LPCWSTR; + + alias UCHAR = u8; alias PUCHAR = UCHAR; //UCHAR @@ -181,8 +183,9 @@ namespace std { alias ULONGLONG = i64; alias ULONG32 = u32; alias ULONG64 = u64; + alias ULONG_PTR = u64; alias USHORT = u16; - alias UNIT_PTR = u64; + alias UINT_PTR = u64; alias UHALF_PTR = i32; // needs review https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types#half_ptr, https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types#uhalf_ptr class UNICODE_STRING { @@ -195,7 +198,7 @@ namespace std { alias PCUNICODE_STRING = const PUNICODE_STRING; alias PUINT = UINT*; //UNINT - alias PUINT_PTR = UNIT_PTR*; + alias PUINT_PTR = UINT_PTR*; alias PUINT8 = UINT8*; alias PUINT16 = UINT16*; alias PUINT32 = UINT32*; @@ -215,7 +218,8 @@ namespace std { alias SC_LOCK = LPVOID; alias SERVICE_STATUS_HANDLE = HANDLE; - + alias USN = i64; + alias WPARA, = UINT_PTR; From 29760ec191c5aca1916fe343713490a38ba59234 Mon Sep 17 00:00:00 2001 From: okistuff Date: Wed, 5 Aug 2020 14:38:07 -0400 Subject: [PATCH 6/9] Added POINTERS --- std/windows/winapi.sn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/std/windows/winapi.sn b/std/windows/winapi.sn index d3b696c..d4fb40a 100644 --- a/std/windows/winapi.sn +++ b/std/windows/winapi.sn @@ -158,8 +158,8 @@ namespace std { alias TBYTE = WCHAR; alias TCHAR = WCHAR; - alias POINTER_SIGNED = null; // NEED HELP! - alias POINTER_UNSIGNED = null; // NEED HELP! + alias POINTER_SIGNED = i32; + alias POINTER_UNSIGNED = i64; alias PSHORT = SHORT*; alias PSIZE_T = SIZE_T ; alias PSSIZE_T = SSIZE_T; From 2cc0cb14a118724f3b62268c162e8a3cf86e77ef Mon Sep 17 00:00:00 2001 From: okistuff Date: Sat, 8 Aug 2020 12:55:27 -0400 Subject: [PATCH 7/9] Fixed some errors in WinAPI bindings --- examples/hello.sn | 1 + std/windows/winapi.sn | 100 +++++++++++++++++++++++------------------- 2 files changed, 56 insertions(+), 45 deletions(-) diff --git a/examples/hello.sn b/examples/hello.sn index 2260866..ba4ce01 100644 --- a/examples/hello.sn +++ b/examples/hello.sn @@ -1,5 +1,6 @@ import "io" + fn main() { std::print("Hello, World!"); } diff --git a/std/windows/winapi.sn b/std/windows/winapi.sn index d4fb40a..0bdb966 100644 --- a/std/windows/winapi.sn +++ b/std/windows/winapi.sn @@ -6,7 +6,39 @@ namespace std { // Data Types + alias UINT = u32; + alias UINT8 = u8; + alias UINT16 = u16; + alias UINT32 = u32; + alias UINT64 = u64; + alias ULONG = i32; + alias ULONGLONG = i64; + alias ULONG32 = u32; + alias ULONG64 = u64; + alias ULONG_PTR = u64; + alias USHORT = u16; + alias UINT_PTR = u64; + alias UHALF_PTR = i32; // needs review https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types#half_ptr, https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types#uhalf_ptr + + + alias LONG = i32; + alias LONG_PTR = i32*; + alias LONG32 = i32; + alias LONG64 = i64; + + alias INT = i32; + alias INT_PTR = i64; + alias INT8 = i8; + alias INT32 = i32; + alias INT64 = i64; + + alias DWORD = u32; + alias DWORD_PTR = ULONG_PTR; + alias DWORDLONG = u64; + alias DWORD32 = u32; + alias DWORD64 = u64; + alias LPCSTR = const i8*; alias PVOID = void*; alias HANDLE = PVOID; @@ -19,7 +51,7 @@ namespace std { alias HINSTANCE = HANDLE; alias LPVOID = void*; alias LPWORD = WORD; - alias BOOL = int; + alias BOOL = INT; alias BYTE = i8; alias BOOLEAN = BYTE; alias ATOM = WORD; @@ -27,18 +59,14 @@ namespace std { alias char = i8; alias CHAR = char; alias CCHAR = CHAR; - alias CONST = const; alias COLORREF = DWORD; - alias DWORDLONG = u64; - alias DWORD32 = u32; - alias DWORD64 = u64; alias float = f32; alias FLOAT = float; // The Start of HANDLE Hell - Okistuff alias HACCEL = HANDLE; - alias HALF_PTR = int; // Half size of pointer + alias HALF_PTR = INT; alias HBITMAP = HANDLE; alias HBRUSH = HANDLE; alias HCOLORSPACE = HANDLE; @@ -52,7 +80,7 @@ namespace std { alias HDESK = HANDLE; alias HDWP = HANDLE; alias HENHEMTAFILE = HANDLE; - alias HFILE = int; + alias HFILE = INT; alias HFONT = HANDLE; alias HGDIOBJ = HANDLE; alias HGLOBAL = HANDLE; @@ -73,50 +101,45 @@ namespace std { // You Survived HANDLE hell! - Okistuff - alias INT = i32; - alias INT_PTR = i64; - alias INT8 = i8; - alias INT = i32; - alias INT64 = i64; - + alias LANGID = WORD; alias LCID = DWORD; alias LCTYPE = DWORD; alias LGRPID = DWORD; - alias LONG = i32; - alias LONG_PTR = i32*; - alias LONG32 = i32; - alias LONG64 = i64; + alias wchar_t = i16; + alias WCHAR = wchar_t; + alias LPARAM = LONG_PTR; - alias LPBOOL = BOOL*; // BOOL far pointer; - alias LPBYTE = BYTE*; // BYTE far pointer; + alias LPBOOL = BOOL*; // BOOL far poINTer; + alias LPBYTE = BYTE*; // BYTE far poINTer; alias LPCOLORREF = DWORD*; alias LPCTSTR = LPCSTR; // #else typedef LPCSTR LPCTSTR; alias LPCVOID = const void*; alias LPCWSTR = const WCHAR*; - alias wchar_t = i16; - alias WCHAR = wchar_t; + alias LPVOID = void*; + alias LPWORD = WORD*; + alias LPWSTR = WCHAR*; + alias PWCHAR = WCHAR*; alias VOID = void; alias LPDWORD = DWORD*; alias LPHANDLE = HANDLE*; - alias LPINT = int*; - alias LPLONG = long*; + alias LPINT = INT*; + alias LPLONG = LONG*; alias LPSTR = CHAR*; alias LPTSTR = LPWSTR; //#ifdef UNICODE // typedef LPWSTR LPTSTR; //#else // typedef LPSTR LPTSTR; //#endif - alias LPVOID = void*; - alias LPWORD = WORD*; - alias LPWSTR = WCHAR*; + + alias LRESULT = LONG_PTR; alias PBOOL = BOOL*; - alias PBOOLEAN = BOOLEN*; // BYTE NOTT FINISHED - alias PBYTE = BYTE*; // BYTE NOT FINISHED + alias PBOOLEAN = BOOLEAN*; + alias PBYTE = BYTE*; alias PCHAR = CHAR*; alias PCSTR = const CHAR*; alias PCTSTR = LPCWSTR; @@ -128,13 +151,13 @@ namespace std { alias PDWORD = DWORD*; alias PDWORLDLONG = DWORDLONG*; alias PDWORD_PTR = DWORD_PTR*; - alias PDWORD64 = WORD64; + alias PDWORD64 = DWORD64*; alias PFLOAT = FLOAT*; - alias PHALF_PTR = HALF_PTR*; // A pointer to HALF_PTR + alias PHALF_PTR = HALF_PTR*; // A poINTer to HALF_PTR alias PHANDLE = HANDLE*; alias PHKEY = HKEY*; - alias PINT = int*; + alias PINT = INT*; alias PINT_PTR = INT_PTR; alias PINT8 = INT8*; alias PINT32 = i32*; //INT32 @@ -175,19 +198,6 @@ namespace std { alias PUHALF_PTR = UHALF_PTR; - alias UINT = u32; - alias UINT8 = u8; - alias UINT16 = u16; - alias UINT64 = u64; - alias ULONG = i32; - alias ULONGLONG = i64; - alias ULONG32 = u32; - alias ULONG64 = u64; - alias ULONG_PTR = u64; - alias USHORT = u16; - alias UINT_PTR = u64; - alias UHALF_PTR = i32; // needs review https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types#half_ptr, https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types#uhalf_ptr - class UNICODE_STRING { Length: u16; MaximumLength: u16; @@ -219,7 +229,7 @@ namespace std { alias SERVICE_STATUS_HANDLE = HANDLE; alias USN = i64; - alias WPARA, = UINT_PTR; + alias WPARAM = UINT_PTR; From 48e5ce4881afd3682c418a27e983204ddbedb7fe Mon Sep 17 00:00:00 2001 From: Nathanael Demacon Date: Mon, 10 Aug 2020 17:58:14 +0200 Subject: [PATCH 8/9] Remove line jump in examples/hello.sn --- examples/hello.sn | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/hello.sn b/examples/hello.sn index ba4ce01..2260866 100644 --- a/examples/hello.sn +++ b/examples/hello.sn @@ -1,6 +1,5 @@ import "io" - fn main() { std::print("Hello, World!"); } From 07ad9616d86988ccf17b1c65fa107335b5b97c7d Mon Sep 17 00:00:00 2001 From: OkiStuff <40648091+OkiStuff@users.noreply.github.com> Date: Mon, 10 Aug 2020 12:08:00 -0400 Subject: [PATCH 9/9] Removeed Comments Removed most of the comments. --- std/windows/winapi.sn | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/std/windows/winapi.sn b/std/windows/winapi.sn index 0bdb966..452e8aa 100644 --- a/std/windows/winapi.sn +++ b/std/windows/winapi.sn @@ -18,7 +18,7 @@ namespace std { alias ULONG_PTR = u64; alias USHORT = u16; alias UINT_PTR = u64; - alias UHALF_PTR = i32; // needs review https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types#half_ptr, https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types#uhalf_ptr + alias UHALF_PTR = i32; alias LONG = i32; @@ -111,10 +111,10 @@ namespace std { alias WCHAR = wchar_t; alias LPARAM = LONG_PTR; - alias LPBOOL = BOOL*; // BOOL far poINTer; - alias LPBYTE = BYTE*; // BYTE far poINTer; + alias LPBOOL = BOOL*; + alias LPBYTE = BYTE*; alias LPCOLORREF = DWORD*; - alias LPCTSTR = LPCSTR; // #else typedef LPCSTR LPCTSTR; + alias LPCTSTR = LPCSTR; alias LPCVOID = const void*; alias LPCWSTR = const WCHAR*; @@ -129,13 +129,8 @@ namespace std { alias LPINT = INT*; alias LPLONG = LONG*; alias LPSTR = CHAR*; - alias LPTSTR = LPWSTR; //#ifdef UNICODE - // typedef LPWSTR LPTSTR; - //#else - // typedef LPSTR LPTSTR; - //#endif + alias LPTSTR = LPWSTR; - alias LRESULT = LONG_PTR; alias PBOOL = BOOL*; alias PBOOLEAN = BOOLEAN*; @@ -234,4 +229,4 @@ namespace std { } -} \ No newline at end of file +}