Stuff?
This commit is contained in:
@@ -158,16 +158,19 @@
|
|||||||
<ClInclude Include="Container\TypeList.h" />
|
<ClInclude Include="Container\TypeList.h" />
|
||||||
<ClInclude Include="Database\SQLite\SQLite.h" />
|
<ClInclude Include="Database\SQLite\SQLite.h" />
|
||||||
<ClInclude Include="Database\SQLite\sqlite3.h" />
|
<ClInclude Include="Database\SQLite\sqlite3.h" />
|
||||||
<ClInclude Include="Timer.h" />
|
<ClInclude Include="System\FileSystem.h" />
|
||||||
|
<ClInclude Include="System\Threading.h" />
|
||||||
<ClInclude Include="Time\HighResolutionClock.h" />
|
<ClInclude Include="Time\HighResolutionClock.h" />
|
||||||
<ClInclude Include="Time\SystemClock.h" />
|
<ClInclude Include="Time\SystemClock.h" />
|
||||||
<ClInclude Include="Time\Time.h" />
|
<ClInclude Include="Time\Time.h" />
|
||||||
|
<ClInclude Include="Time\Timer.h" />
|
||||||
<ClInclude Include="Utility\MassOp.h" />
|
<ClInclude Include="Utility\MassOp.h" />
|
||||||
<ClInclude Include="Type\Double.h" />
|
<ClInclude Include="Type\Double.h" />
|
||||||
<ClInclude Include="Type\Long.h" />
|
<ClInclude Include="Type\Long.h" />
|
||||||
<ClInclude Include="Utility\IndexerV1.h" />
|
<ClInclude Include="Utility\IndexerV1.h" />
|
||||||
<ClInclude Include="Utility\DisplayEnumerator.h" />
|
<ClInclude Include="Utility\DisplayEnumerator.h" />
|
||||||
<ClInclude Include="Utility\IndexerV2.h" />
|
<ClInclude Include="Utility\IndexerV2.h" />
|
||||||
|
<ClInclude Include="Utility\ThreadWrapper.h" />
|
||||||
<ClInclude Include="Utility\WindowMessageHandler.h" />
|
<ClInclude Include="Utility\WindowMessageHandler.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -175,10 +178,12 @@
|
|||||||
<ClCompile Include="Container\List.cpp" />
|
<ClCompile Include="Container\List.cpp" />
|
||||||
<ClCompile Include="Database\SQLite\SQLite.cpp" />
|
<ClCompile Include="Database\SQLite\SQLite.cpp" />
|
||||||
<ClCompile Include="Database\SQLite\sqlite3.c" />
|
<ClCompile Include="Database\SQLite\sqlite3.c" />
|
||||||
<ClCompile Include="Timer.cpp" />
|
<ClCompile Include="System\FileSystem.cpp" />
|
||||||
|
<ClCompile Include="System\Threading.cpp" />
|
||||||
<ClCompile Include="Time\HighResolutionClock.cpp" />
|
<ClCompile Include="Time\HighResolutionClock.cpp" />
|
||||||
<ClCompile Include="Time\SystemClock.cpp" />
|
<ClCompile Include="Time\SystemClock.cpp" />
|
||||||
<ClCompile Include="Time\Time.cpp" />
|
<ClCompile Include="Time\Time.cpp" />
|
||||||
|
<ClCompile Include="Time\Timer.cpp" />
|
||||||
<ClCompile Include="Type\Double.cpp" />
|
<ClCompile Include="Type\Double.cpp" />
|
||||||
<ClCompile Include="Type\Long.cpp" />
|
<ClCompile Include="Type\Long.cpp" />
|
||||||
<ClCompile Include="Utility\IndexerV1.cpp" />
|
<ClCompile Include="Utility\IndexerV1.cpp" />
|
||||||
@@ -186,6 +191,7 @@
|
|||||||
<ClCompile Include="Utility\DisplayEnumerator.cpp" />
|
<ClCompile Include="Utility\DisplayEnumerator.cpp" />
|
||||||
<ClCompile Include="Utility\IndexerV2.cpp" />
|
<ClCompile Include="Utility\IndexerV2.cpp" />
|
||||||
<ClCompile Include="Utility\MassOp.cpp" />
|
<ClCompile Include="Utility\MassOp.cpp" />
|
||||||
|
<ClCompile Include="Utility\ThreadWrapper.cpp" />
|
||||||
<ClCompile Include="Utility\WindowMessageHandler.cpp" />
|
<ClCompile Include="Utility\WindowMessageHandler.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -48,6 +48,12 @@
|
|||||||
<Filter Include="Resource Files">
|
<Filter Include="Resource Files">
|
||||||
<UniqueIdentifier>{13f1a82e-2123-4652-a573-2dd8235ae033}</UniqueIdentifier>
|
<UniqueIdentifier>{13f1a82e-2123-4652-a573-2dd8235ae033}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="Header Files\System">
|
||||||
|
<UniqueIdentifier>{5545a0db-1127-4588-8522-680ec51473e0}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Source Files\System">
|
||||||
|
<UniqueIdentifier>{c14c025c-cae9-4d80-abe0-f04895a8f944}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="Utility\WindowMessageHandler.cpp">
|
<ClCompile Include="Utility\WindowMessageHandler.cpp">
|
||||||
@@ -95,9 +101,18 @@
|
|||||||
<ClCompile Include="Type\Long.cpp">
|
<ClCompile Include="Type\Long.cpp">
|
||||||
<Filter>Source Files\Type</Filter>
|
<Filter>Source Files\Type</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="Timer.cpp">
|
<ClCompile Include="Utility\ThreadWrapper.cpp">
|
||||||
|
<Filter>Source Files\Utility</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="System\Threading.cpp">
|
||||||
|
<Filter>Source Files\System</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Time\Timer.cpp">
|
||||||
<Filter>Source Files\Time</Filter>
|
<Filter>Source Files\Time</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="System\FileSystem.cpp">
|
||||||
|
<Filter>Source Files\System</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="BlitzUtility.h">
|
<ClInclude Include="BlitzUtility.h">
|
||||||
@@ -145,9 +160,18 @@
|
|||||||
<ClInclude Include="Type\Long.h">
|
<ClInclude Include="Type\Long.h">
|
||||||
<Filter>Header Files\Type</Filter>
|
<Filter>Header Files\Type</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="Timer.h">
|
<ClInclude Include="Utility\ThreadWrapper.h">
|
||||||
|
<Filter>Header Files\Utility</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="System\Threading.h">
|
||||||
|
<Filter>Header Files\System</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="Time\Timer.h">
|
||||||
<Filter>Header Files\Time</Filter>
|
<Filter>Header Files\Time</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="System\FileSystem.h">
|
||||||
|
<Filter>Header Files\System</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="Resources\BlitzUtility.bb">
|
<None Include="Resources\BlitzUtility.bb">
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ End Type
|
|||||||
|
|
||||||
Function BU_Helper_Window_LockPointer(HWND% = 0)
|
Function BU_Helper_Window_LockPointer(HWND% = 0)
|
||||||
If HWND = 0 Then
|
If HWND = 0 Then
|
||||||
BU_User32_ClipCursor(0)
|
BU_User32_ClipCursorEx(0)
|
||||||
Else
|
Else
|
||||||
Local tRect.BU_Rectangle = New BU_Rectangle
|
Local tRect.BU_Rectangle = New BU_Rectangle
|
||||||
|
|
||||||
@@ -105,6 +105,8 @@ Function BU_Helper_Window_LockPointer(HWND% = 0)
|
|||||||
End Function
|
End Function
|
||||||
|
|
||||||
Function BU_Helper_Window_LockPointerAuto(HWND=0)
|
Function BU_Helper_Window_LockPointerAuto(HWND=0)
|
||||||
|
If HWND = 0 Then HWND = SystemProperty("AppHwnd")
|
||||||
|
|
||||||
If BU_User32_GetActiveWindow() = HWND Then
|
If BU_User32_GetActiveWindow() = HWND Then
|
||||||
BU_Helper_Window_LockPointer(HWND)
|
BU_Helper_Window_LockPointer(HWND)
|
||||||
Else
|
Else
|
||||||
@@ -159,6 +161,8 @@ Function BU_Helper_Window_MakeBorderless(HWND=0)
|
|||||||
End Function
|
End Function
|
||||||
|
|
||||||
Function BU_Helper_Window_Center(HWND=0, Monitor=0)
|
Function BU_Helper_Window_Center(HWND=0, Monitor=0)
|
||||||
|
If HWND = 0 Then HWND = SystemProperty("AppHwnd")
|
||||||
|
|
||||||
Local displayEnumerator = BU_DisplayEnumerator_Create()
|
Local displayEnumerator = BU_DisplayEnumerator_Create()
|
||||||
Local displayAmount = BU_DisplayEnumerator_Enumerate(displayEnumerator)
|
Local displayAmount = BU_DisplayEnumerator_Enumerate(displayEnumerator)
|
||||||
If Monitor >= displayAmount Then Monitor = displayAmount - 1
|
If Monitor >= displayAmount Then Monitor = displayAmount - 1
|
||||||
@@ -195,6 +199,8 @@ Function BU_Helper_Window_Center(HWND=0, Monitor=0)
|
|||||||
End Function
|
End Function
|
||||||
|
|
||||||
Function BU_Helper_Window_Fill(HWND=0, Monitor=0)
|
Function BU_Helper_Window_Fill(HWND=0, Monitor=0)
|
||||||
|
If HWND = 0 Then HWND = SystemProperty("AppHwnd")
|
||||||
|
|
||||||
Local displayEnumerator = BU_DisplayEnumerator_Create()
|
Local displayEnumerator = BU_DisplayEnumerator_Create()
|
||||||
Local displayAmount = BU_DisplayEnumerator_Enumerate(displayEnumerator)
|
Local displayAmount = BU_DisplayEnumerator_Enumerate(displayEnumerator)
|
||||||
If Monitor >= displayAmount Then Monitor = displayAmount - 1
|
If Monitor >= displayAmount Then Monitor = displayAmount - 1
|
||||||
|
|||||||
@@ -15,8 +15,9 @@
|
|||||||
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
|
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
|
||||||
|
|
||||||
.lib "BlitzUtility.dll"
|
.lib "BlitzUtility.dll"
|
||||||
; Container -------------------------------------------------------------------
|
;----------------------------------------------------------------
|
||||||
; -- List (Single Element)
|
;! Container - List (Element-wide)
|
||||||
|
;----------------------------------------------------------------
|
||||||
BU_List_Create%(element*)
|
BU_List_Create%(element*)
|
||||||
BU_List_Destroy%(list%)
|
BU_List_Destroy%(list%)
|
||||||
BU_List_First%(list%)
|
BU_List_First%(list%)
|
||||||
@@ -28,12 +29,100 @@ BU_List_After%(list%, other*)
|
|||||||
BU_List_Insert(list%, element*)
|
BU_List_Insert(list%, element*)
|
||||||
BU_List_InsertEx(list%, element*, other*)
|
BU_List_InsertEx(list%, element*, other*)
|
||||||
BU_List_Remove(list%, element*)
|
BU_List_Remove(list%, element*)
|
||||||
; -- TypeList (Single Type)
|
|
||||||
|
;----------------------------------------------------------------
|
||||||
|
;! Container - TypeList (Type-wide)
|
||||||
|
;----------------------------------------------------------------
|
||||||
BU_TypeList_Create%(obj*)
|
BU_TypeList_Create%(obj*)
|
||||||
BU_TypeList_Activate(list%)
|
BU_TypeList_Activate(list%)
|
||||||
BU_TypeList_Deactivate(list%)
|
BU_TypeList_Deactivate(list%)
|
||||||
BU_TypeList_Destroy(list%)
|
BU_TypeList_Destroy(list%)
|
||||||
|
|
||||||
|
;----------------------------------------------------------------
|
||||||
|
;! System - FileSystem
|
||||||
|
;----------------------------------------------------------------
|
||||||
|
BU_FileSystem_WriteFile%(Path$)
|
||||||
|
;@desc: Opens or creates a file for writing only. Truncates existing content.
|
||||||
|
BU_FileSystem_OpenFile%(Path$)
|
||||||
|
;@desc: Opens an existing file for reading or writing.
|
||||||
|
BU_FileSystem_ReadFile%(Path$)
|
||||||
|
;@desc: Opens an existing file for reading only.
|
||||||
|
BU_FileSystem_CloseFile(File%)
|
||||||
|
;@desc: Closes an open file.
|
||||||
|
BU_FileSystem_FlushFile(File%)
|
||||||
|
;@desc: Flushes all buffers to disk for the file.
|
||||||
|
BU_FileSystem_EOF%(File%)
|
||||||
|
;@desc: Checks if the File handle is valid and not at the end of the file.
|
||||||
|
;@return:
|
||||||
|
; 0 = Good, Not End Of File
|
||||||
|
; 1 = End Of File
|
||||||
|
; -1 = Bad File Handle
|
||||||
|
; -2 = Failed to do internal action.
|
||||||
|
BU_FileSystem_SeekFile(File%, Pos%)
|
||||||
|
BU_FileSystem_SeekFileIn(File%, Pos%)
|
||||||
|
BU_FileSystem_SeekFileOut(File%, Pos%)
|
||||||
|
BU_FileSystem_FilePos%(File%) : "BU_FileSystem_FilePosIn"
|
||||||
|
BU_FileSystem_FilePosIn%(File%)
|
||||||
|
BU_FileSystem_FilePosOut%(File%)
|
||||||
|
|
||||||
|
BU_FileSystem_WriteByte(File%, Value%)
|
||||||
|
BU_FileSystem_ReadByte%(File%)
|
||||||
|
BU_FileSystem_WriteShort(File%, Value%)
|
||||||
|
BU_FileSystem_ReadShort%(File%)
|
||||||
|
BU_FileSystem_WriteInt(File%, Value%)
|
||||||
|
BU_FileSystem_ReadInt%(File%)
|
||||||
|
BU_FileSystem_WriteFloat(File%, Value#) : "BU_FileSystem_WriteInt"
|
||||||
|
BU_FileSystem_ReadFloat#(File%) : "BU_FileSystem_ReadInt"
|
||||||
|
|
||||||
|
;----------------------------------------------------------------
|
||||||
|
;! System - Threading
|
||||||
|
;----------------------------------------------------------------
|
||||||
|
BU_Thread_Create%(pFunction%, pData%, uiStackSize%, bIsSuspended%)
|
||||||
|
BU_Thread_Destroy(pThread%)
|
||||||
|
BU_Thread_Terminate(pThread%, iExitCode%)
|
||||||
|
BU_Thread_Suspend%(pThread%)
|
||||||
|
BU_Thread_Resume%(pThread%)
|
||||||
|
BU_Thread_Wait%(pThread%, iTimeout%)
|
||||||
|
BU_Thread_GetExitCode%(pThread%)
|
||||||
|
BU_Thread_Exit(iExitCode%)
|
||||||
|
BU_Mutex_Create%()
|
||||||
|
BU_Mutex_Destroy(pMutex%)
|
||||||
|
BU_Mutex_Lock%(pMutex%, iTimeout%)
|
||||||
|
BU_Mutex_Unlock%(pMutex%)
|
||||||
|
|
||||||
|
;----------------------------------------------------------------
|
||||||
|
;! Time - Time
|
||||||
|
;----------------------------------------------------------------
|
||||||
|
BU_Time_Now%()
|
||||||
|
BU_Time_Create%(seconds%, minutes%, hours%, days%, months%, years%, isDST%)
|
||||||
|
BU_Time_Destroy(pTime%)
|
||||||
|
BU_Time_Format$(pTime%, formatString$)
|
||||||
|
|
||||||
|
;----------------------------------------------------------------
|
||||||
|
;! Time - Timer
|
||||||
|
;----------------------------------------------------------------
|
||||||
|
BU_Timer_Create%(Interval%, hwnd%) : "_BU_Timer_Create@8"
|
||||||
|
BU_Timer_Destroy%(Timer%) : "_BU_Timer_Destroy@4"
|
||||||
|
BU_Timer_Wait%(Timer%) : "_BU_Timer_Wait@4"
|
||||||
|
|
||||||
|
;----------------------------------------------------------------
|
||||||
|
;! Time - SystemClock
|
||||||
|
;----------------------------------------------------------------
|
||||||
|
BU_SystemClock_Now%()
|
||||||
|
BU_SystemClock_Destroy(pSystemClock%)
|
||||||
|
BU_SystemClock_FromTime%(pTime%)
|
||||||
|
BU_SystemClock_AsTime%(pSystemClock%)
|
||||||
|
|
||||||
|
;----------------------------------------------------------------
|
||||||
|
;! Time - HighResolutionClock
|
||||||
|
;----------------------------------------------------------------
|
||||||
|
BU_HighResolutionClock_Now%()
|
||||||
|
BU_HighResolutionClock_Destroy(pHighResolutionClock%)
|
||||||
|
BU_HighResolutionClock_Duration%(pHighResolutionClock%, pOther%)
|
||||||
|
BU_HighResolutionClock_DurationLL%(pHighResolutionClock%, pOther%)
|
||||||
|
BU_HighResolutionClock_DurationF#(pHighResolutionClock%, pOther%)
|
||||||
|
BU_HighResolutionClock_DurationD%(pHighResolutionClock%, pOther%)
|
||||||
|
|
||||||
; Database --------------------------------------------------------------------
|
; Database --------------------------------------------------------------------
|
||||||
; -- SQLite3
|
; -- SQLite3
|
||||||
; Core
|
; Core
|
||||||
@@ -144,29 +233,6 @@ BU_SQLite_Value_SubType%(pValue%)
|
|||||||
BU_SQLite_Value_Duplicate%(pValue%)
|
BU_SQLite_Value_Duplicate%(pValue%)
|
||||||
BU_SQLite_Value_Free(pValue%)
|
BU_SQLite_Value_Free(pValue%)
|
||||||
|
|
||||||
; Time ------------------------------------------------------------------------
|
|
||||||
; -- Time
|
|
||||||
BU_Time_Now%()
|
|
||||||
BU_Time_Create%(seconds%, minutes%, hours%, days%, months%, years%, isDST%)
|
|
||||||
BU_Time_Destroy(pTime%)
|
|
||||||
BU_Time_Format$(pTime%, formatString$)
|
|
||||||
; -- Timer
|
|
||||||
BU_Timer_Create%(Interval%, hwnd%) : "_BU_Timer_Create@8"
|
|
||||||
BU_Timer_Destroy%(Timer%) : "_BU_Timer_Destroy@4"
|
|
||||||
BU_Timer_Wait%(Timer%) : "_BU_Timer_Wait@4"
|
|
||||||
; -- SystemClock
|
|
||||||
BU_SystemClock_Now%()
|
|
||||||
BU_SystemClock_Destroy(pSystemClock%)
|
|
||||||
BU_SystemClock_FromTime%(pTime%)
|
|
||||||
BU_SystemClock_AsTime%(pSystemClock%)
|
|
||||||
; -- HighResolutionClock
|
|
||||||
BU_HighResolutionClock_Now%()
|
|
||||||
BU_HighResolutionClock_Destroy(pHighResolutionClock%)
|
|
||||||
BU_HighResolutionClock_Duration%(pHighResolutionClock%, pOther%)
|
|
||||||
BU_HighResolutionClock_DurationLL%(pHighResolutionClock%, pOther%)
|
|
||||||
BU_HighResolutionClock_DurationF#(pHighResolutionClock%, pOther%)
|
|
||||||
BU_HighResolutionClock_DurationD%(pHighResolutionClock%, pOther%)
|
|
||||||
|
|
||||||
; Types - Long ----------------------------------------------------------------
|
; Types - Long ----------------------------------------------------------------
|
||||||
BU_Long_New%() :"_BU_Long_New@0"
|
BU_Long_New%() :"_BU_Long_New@0"
|
||||||
BU_Long_Copy%(pThis%) :"_BU_Long_Copy@4"
|
BU_Long_Copy%(pThis%) :"_BU_Long_Copy@4"
|
||||||
@@ -267,6 +333,9 @@ BU_MassOp_Create%(length%)
|
|||||||
BU_MassOp_Destroy(massop%)
|
BU_MassOp_Destroy(massop%)
|
||||||
BU_MassOp_Instruction(massop%, index%, type%, code%, leftOperand%, rightOperand%, result%)
|
BU_MassOp_Instruction(massop%, index%, type%, code%, leftOperand%, rightOperand%, result%)
|
||||||
BU_MassOp_Run(massop%)
|
BU_MassOp_Run(massop%)
|
||||||
|
; -- ThreadWrapper
|
||||||
|
BU_ThreadWrapper_Create%(pFunction%, pData%)
|
||||||
|
BU_ThreadWrapper_Destroy(pThreadWrapper%)
|
||||||
; -- Window Message Handler
|
; -- Window Message Handler
|
||||||
BU_WindowMessageHandler_Install(hwnd%)
|
BU_WindowMessageHandler_Install(hwnd%)
|
||||||
BU_WindowMessageHandler_Uninstall(hwnd%)
|
BU_WindowMessageHandler_Uninstall(hwnd%)
|
||||||
@@ -274,6 +343,7 @@ BU_WindowMessageHandler_Message_Close%(hwnd%)
|
|||||||
BU_WindowMessageHandler_Message_Destroy%(hwnd%)
|
BU_WindowMessageHandler_Message_Destroy%(hwnd%)
|
||||||
BU_WindowMessageHandler_Message_Resize%(hwnd%, point*)
|
BU_WindowMessageHandler_Message_Resize%(hwnd%, point*)
|
||||||
|
|
||||||
|
|
||||||
; Helpers ---------------------------------------------------------------------
|
; Helpers ---------------------------------------------------------------------
|
||||||
.lib " "
|
.lib " "
|
||||||
; -- Blitz Functions
|
; -- Blitz Functions
|
||||||
@@ -282,6 +352,7 @@ BU_Helper_Window_LockPointerAuto(HWND%)
|
|||||||
BU_Helper_Window_MakeBorderless(HWND%)
|
BU_Helper_Window_MakeBorderless(HWND%)
|
||||||
BU_Helper_Window_Center(HWND%, Monitor%)
|
BU_Helper_Window_Center(HWND%, Monitor%)
|
||||||
BU_Helper_Window_Fill(HWND%, Monitor%)
|
BU_Helper_Window_Fill(HWND%, Monitor%)
|
||||||
|
|
||||||
; -- Windows API (User32)
|
; -- Windows API (User32)
|
||||||
.lib "User32.dll"
|
.lib "User32.dll"
|
||||||
BU_User32_ClientToScreen%(hwnd%, point*) : "ClientToScreen"
|
BU_User32_ClientToScreen%(hwnd%, point*) : "ClientToScreen"
|
||||||
@@ -298,6 +369,7 @@ BU_User32_GetClientRect%(hwnd%, rect*) : "GetClientRect"
|
|||||||
BU_User32_GetClientRectEx%(hwnd%, rect%) : "GetClientRect"
|
BU_User32_GetClientRectEx%(hwnd%, rect%) : "GetClientRect"
|
||||||
BU_User32_SetWindowPos%(hwnd%, hWndInsertAfter%, x%, y%, cx%, cy%, wFlags%) : "SetWindowPos"
|
BU_User32_SetWindowPos%(hwnd%, hWndInsertAfter%, x%, y%, cx%, cy%, wFlags%) : "SetWindowPos"
|
||||||
BU_User32_MessageBox%(hwnd%, lpText$, lpCaption$, uType%) : "MessageBoxA"
|
BU_User32_MessageBox%(hwnd%, lpText$, lpCaption$, uType%) : "MessageBoxA"
|
||||||
|
|
||||||
; -- Windows API (Kernel32)
|
; -- Windows API (Kernel32)
|
||||||
.lib "Kernel32.dll"
|
.lib "Kernel32.dll"
|
||||||
BU_Kernel32_FlushFileBuffers%(hFile%) : "FlushFileBuffers"
|
BU_Kernel32_FlushFileBuffers%(hFile%) : "FlushFileBuffers"
|
||||||
|
|||||||
@@ -0,0 +1,128 @@
|
|||||||
|
// BlitzUtility - Expanding the normal Blitz functionality.
|
||||||
|
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as
|
||||||
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#include "FileSystem.h"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
DLL_FUNCTION(std::fstream*) BU_FileSystem_WriteFile(const char* path) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_FileSystem_WriteFile=_BU_FileSystem_WriteFile@4")
|
||||||
|
std::fstream* file = new std::fstream();
|
||||||
|
file->open(path, ios::in | ios::out || ios::trunc | ios::binary);
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(std::fstream*) BU_FileSystem_OpenFile(const char* path) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_FileSystem_OpenFile=_BU_FileSystem_OpenFile@4")
|
||||||
|
std::fstream* file = new std::fstream();
|
||||||
|
file->open(path, ios::in | ios::out | ios::binary);
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(std::fstream*) BU_FileSystem_ReadFile(const char* path) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_FileSystem_ReadFile=_BU_FileSystem_ReadFile@4")
|
||||||
|
std::fstream* file = new std::fstream();
|
||||||
|
file->open(path, ios::in | ios::binary);
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(void) BU_FileSystem_CloseFile(std::fstream* file) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_FileSystem_CloseFile=_BU_FileSystem_CloseFile@4")
|
||||||
|
file->close();
|
||||||
|
delete file;
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(void) BU_FileSystem_FlushFile(std::fstream* file) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_FileSystem_FlushFile=_BU_FileSystem_FlushFile@4")
|
||||||
|
file->flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(int32_t) BU_FileSystem_EOF(std::fstream* file) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_FileSystem_EOF=_BU_FileSystem_EOF@4")
|
||||||
|
if (file->eof())
|
||||||
|
return 1;
|
||||||
|
if (file->bad())
|
||||||
|
return -1;
|
||||||
|
if (file->fail())
|
||||||
|
return -2;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(void) BU_FileSystem_SeekFile(std::fstream* file, int32_t pos) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_FileSystem_SeekFile=_BU_FileSystem_SeekFile@8")
|
||||||
|
file->seekg(pos);
|
||||||
|
file->seekp(pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(void) BU_FileSystem_SeekFileIn(std::fstream* file, int32_t pos) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_FileSystem_SeekFileIn=_BU_FileSystem_SeekFileIn@8")
|
||||||
|
file->seekg(pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(void) BU_FileSystem_SeekFileOut(std::fstream* file, int32_t pos) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_FileSystem_SeekFileOut=_BU_FileSystem_SeekFileOut@8")
|
||||||
|
file->seekp(pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(int32_t) BU_FileSystem_FilePosIn(std::fstream* file) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_FileSystem_FilePosIn=_BU_FileSystem_FilePosIn@4")
|
||||||
|
return (int32_t)file->tellg();
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(int32_t) BU_FileSystem_FilePosOut(std::fstream* file) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_FileSystem_FilePosOut=_BU_FileSystem_FilePosOut@4")
|
||||||
|
return (int32_t)file->tellp();
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(void) BU_FileSystem_WriteByte(std::fstream* file, int32_t value) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_FileSystem_WriteByte=_BU_FileSystem_WriteByte@8")
|
||||||
|
char myVal[1] = { value & 0xFF};
|
||||||
|
file->write(myVal, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(int32_t) BU_FileSystem_ReadByte(std::fstream* file) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_FileSystem_ReadByte=_BU_FileSystem_ReadByte@4")
|
||||||
|
char myVal[1] = { 0 };
|
||||||
|
file->read(myVal, 1);
|
||||||
|
return myVal[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(void) BU_FileSystem_WriteShort(std::fstream* file, int32_t value) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_FileSystem_WriteShort=_BU_FileSystem_WriteShort@8")
|
||||||
|
char myVal[2] = { value & 0xFF, (value >> 8) & 0xFF};
|
||||||
|
file->write(myVal, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(int32_t) BU_FileSystem_ReadShort(std::fstream* file) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_FileSystem_ReadShort=_BU_FileSystem_ReadShort@4")
|
||||||
|
char myVal[2] = { 0, 0 };
|
||||||
|
file->read(myVal, 2);
|
||||||
|
return (myVal[1] << 8) + myVal[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(void) BU_FileSystem_WriteInt(std::fstream* file, int32_t value) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_FileSystem_WriteInt=_BU_FileSystem_WriteInt@8")
|
||||||
|
char myVal[4] = { value & 0xFF, (value >> 8) & 0xFF, (value >> 16) & 0xFF , (value >> 24) & 0xFF };
|
||||||
|
file->write(myVal, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(int32_t) BU_FileSystem_ReadInt(std::fstream* file) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_FileSystem_ReadInt=_BU_FileSystem_ReadInt@4")
|
||||||
|
char myVal[4] = { 0, 0, 0, 0 };
|
||||||
|
file->read(myVal, 4);
|
||||||
|
return (myVal[3] << 24) + (myVal[2] << 16) + (myVal[1] << 8) + myVal[0];
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
// Blitz - Steam wrapper for Blitz.
|
||||||
|
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as
|
||||||
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include "BlitzUtility.h"
|
||||||
|
#include <mutex>
|
||||||
|
#include <iostream>
|
||||||
|
#include <fstream>
|
||||||
@@ -0,0 +1,143 @@
|
|||||||
|
// BlitzUtility - Expanding the normal Blitz functionality.
|
||||||
|
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as
|
||||||
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#include "Threading.h"
|
||||||
|
|
||||||
|
// Types of Blitz Functions.
|
||||||
|
typedef int32_t(__stdcall *BP_BlitzFunction1_t)(int32_t);
|
||||||
|
int32_t BP_CallFunction1(BP_BlitzFunction1_t lpFunctionPointer, int32_t p1) {
|
||||||
|
int32_t returnValue, StackPointer;
|
||||||
|
|
||||||
|
__asm { // Store Stack Pointer
|
||||||
|
mov StackPointer, esp;
|
||||||
|
}
|
||||||
|
|
||||||
|
returnValue = lpFunctionPointer(p1);
|
||||||
|
|
||||||
|
__asm { // Restore Stack Pointer
|
||||||
|
mov esp, StackPointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
return returnValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
BlitzThread::BlitzThread(void* ptr, void* data, uint32_t uiStackSize, bool bIsSuspended) {
|
||||||
|
this->ptr = ptr;
|
||||||
|
this->data = data;
|
||||||
|
|
||||||
|
this->thread = CreateThread(NULL, uiStackSize, &ThreadMain, this, (bIsSuspended ? CREATE_SUSPENDED : 0), NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
BlitzThread::~BlitzThread() {
|
||||||
|
this->Terminate(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BlitzThread::Terminate(int32_t exitCode) {
|
||||||
|
if (this->thread) {
|
||||||
|
TerminateThread(this->thread, -1);
|
||||||
|
this->thread = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t BlitzThread::Suspend() {
|
||||||
|
return SuspendThread(this->thread);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t BlitzThread::Resume() {
|
||||||
|
return ResumeThread(this->thread);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t BlitzThread::Wait(int32_t timeout) {
|
||||||
|
return WaitForSingleObject(this->thread, timeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t BlitzThread::GetExitCode() {
|
||||||
|
DWORD pExitCode;
|
||||||
|
GetExitCodeThread(this->thread, &pExitCode);
|
||||||
|
return pExitCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
DWORD WINAPI BlitzThread::ThreadMain(LPVOID pData) {
|
||||||
|
BlitzThread* pThis = reinterpret_cast<BlitzThread*>(pData);
|
||||||
|
|
||||||
|
try {
|
||||||
|
return BP_CallFunction1((BP_BlitzFunction1_t)pThis->ptr, reinterpret_cast<int32_t>(pThis->data));
|
||||||
|
} catch (std::exception e) {
|
||||||
|
return -2;
|
||||||
|
} catch (...) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(BlitzThread*) BU_Thread_Create(void* pFunction, void* pData, uint32_t uiStackSize, uint32_t bIsSuspended) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_Thread_Create=_BU_Thread_Create@16")
|
||||||
|
return new BlitzThread(pFunction, pData, uiStackSize, !!bIsSuspended);
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(void) BU_Thread_Destroy(BlitzThread* pThread) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_Thread_Destroy=_BU_Thread_Destroy@4")
|
||||||
|
delete pThread;
|
||||||
|
}
|
||||||
|
DLL_FUNCTION(void) BU_Thread_Terminate(BlitzThread* pThread, int32_t exitCode) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_Thread_Terminate=_BU_Thread_Terminate@8")
|
||||||
|
pThread->Terminate(exitCode);
|
||||||
|
delete pThread;
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(int32_t) BU_Thread_Suspend(BlitzThread* pThread) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_Thread_Suspend=_BU_Thread_Suspend@4")
|
||||||
|
return pThread->Suspend();
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(int32_t) BU_Thread_Resume(BlitzThread* pThread) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_Thread_Resume=_BU_Thread_Resume@4")
|
||||||
|
return pThread->Resume();
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(int32_t) BU_Thread_Wait(BlitzThread* pThread, int32_t timeout) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_Thread_Wait=_BU_Thread_Wait@8")
|
||||||
|
return pThread->Wait(timeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(int32_t) BU_Thread_GetExitCode(BlitzThread* pThread) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_Thread_GetExitCode=_BU_Thread_GetExitCode@4")
|
||||||
|
return pThread->GetExitCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(void) BU_Thread_Exit(int32_t exitCode) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_Thread_Exit=_BU_Thread_Exit@4")
|
||||||
|
ExitThread(exitCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(HANDLE) BU_Mutex_Create(int32_t bInitialOwner) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_Mutex_Create=_BU_Mutex_Create@4")
|
||||||
|
return CreateMutex(NULL, !!bInitialOwner, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(void) BU_Mutex_Destroy(HANDLE mutex) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_Mutex_Destroy=_BU_Mutex_Destroy@4")
|
||||||
|
CloseHandle(mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(int32_t) BU_Mutex_Lock(HANDLE mutex, int32_t timeout) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_Mutex_Lock=_BU_Mutex_Lock@8")
|
||||||
|
return WaitForSingleObject(mutex, timeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(int32_t) BU_Mutex_Unlock(HANDLE mutex) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_Mutex_Unlock=_BU_Mutex_Unlock@4")
|
||||||
|
return ReleaseMutex(mutex);
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
// Blitz - Steam wrapper for Blitz.
|
||||||
|
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as
|
||||||
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include "BlitzUtility.h"
|
||||||
|
#include <mutex>
|
||||||
|
#include <chrono>
|
||||||
|
|
||||||
|
class BlitzThread {
|
||||||
|
public:
|
||||||
|
BlitzThread(void* ptr, void* data, uint32_t uiStackSize, bool bIsSuspended);
|
||||||
|
~BlitzThread();
|
||||||
|
|
||||||
|
void Terminate(int32_t exitCode);
|
||||||
|
|
||||||
|
int32_t Suspend();
|
||||||
|
int32_t Resume();
|
||||||
|
int32_t Wait(int32_t timeout);
|
||||||
|
int32_t GetExitCode();
|
||||||
|
|
||||||
|
static DWORD WINAPI ThreadMain(LPVOID pData);
|
||||||
|
private:
|
||||||
|
void *ptr, *data;
|
||||||
|
std::exception* ex;
|
||||||
|
|
||||||
|
HANDLE thread;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+4
-8
@@ -44,18 +44,14 @@ DLL_FUNCTION(void) BU_Time_Destroy(time_t* pTime) {
|
|||||||
delete pTime;
|
delete pTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char* BU_Time_Format_Buffer = new char[1024];
|
||||||
DLL_FUNCTION(const char*) BU_Time_Format(time_t* pTime, const char* pchFormatString) {
|
DLL_FUNCTION(const char*) BU_Time_Format(time_t* pTime, const char* pchFormatString) {
|
||||||
#pragma comment(linker, "/EXPORT:BU_Time_Format=_BU_Time_Format@8")
|
#pragma comment(linker, "/EXPORT:BU_Time_Format=_BU_Time_Format@8")
|
||||||
std::string buffer;
|
|
||||||
tm* pTM = new tm;
|
tm* pTM = new tm;
|
||||||
localtime_s(pTM, pTime);
|
localtime_s(pTM, pTime);
|
||||||
|
|
||||||
uint32_t length = strlen(pchFormatString);
|
strftime(BU_Time_Format_Buffer, 1024, pchFormatString, pTM);
|
||||||
buffer.resize(length);
|
|
||||||
while (strftime(&buffer[0], buffer.size(), pchFormatString, pTM) == 0) {
|
|
||||||
buffer.resize(buffer.size() * 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
delete pTM;
|
delete pTM;
|
||||||
return buffer.c_str();
|
|
||||||
|
return BU_Time_Format_Buffer;
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
// BlitzUtility - Expanding the normal Blitz functionality.
|
||||||
|
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as
|
||||||
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#include "ThreadWrapper.h"
|
||||||
|
|
||||||
|
class ThreadWrapper {
|
||||||
|
public:
|
||||||
|
ThreadWrapper(void* ptr, void* data) {
|
||||||
|
this->ptr = ptr;
|
||||||
|
this->data = data;
|
||||||
|
}
|
||||||
|
~ThreadWrapper() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static int Core(ThreadWrapper* data) {
|
||||||
|
try {
|
||||||
|
BP_CallFunction1((BP_BlitzFunction1_t)data->ptr, reinterpret_cast<int32_t>(data->data));
|
||||||
|
} catch (const std::exception& e) {
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << e.what();
|
||||||
|
MessageBoxA(0, ss.str().c_str(), "ThreadWrapper", 0);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
void *ptr, *data;
|
||||||
|
std::exception lastException;
|
||||||
|
};
|
||||||
|
|
||||||
|
DLL_FUNCTION(ThreadWrapper*) BU_ThreadWrapper_Create(void* ptr, void* data) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_ThreadWrapper_Create=_BU_ThreadWrapper_Create@8")
|
||||||
|
return new ThreadWrapper(ptr, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_FUNCTION(void) BU_ThreadWrapper_Destroy(ThreadWrapper* pThreadWrapper) {
|
||||||
|
#pragma comment(linker, "/EXPORT:BU_ThreadWrapper_Destroy=_BU_ThreadWrapper_Destroy@4")
|
||||||
|
delete pThreadWrapper;
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
// Blitz - Steam wrapper for Blitz.
|
||||||
|
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as
|
||||||
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include "BlitzUtility.h"
|
||||||
|
|
||||||
|
// Types of Blitz Functions.
|
||||||
|
typedef int32_t(__stdcall *BP_BlitzFunction1_t)(int32_t);
|
||||||
|
int32_t BP_CallFunction1(BP_BlitzFunction1_t lpFunctionPointer, int32_t p1);
|
||||||
Reference in New Issue
Block a user