diff --git a/storm/Core.hpp b/storm/Core.hpp index 34dbd6d..50834ce 100644 --- a/storm/Core.hpp +++ b/storm/Core.hpp @@ -13,6 +13,11 @@ #endif #endif +#if !defined(WHOA_SYSTEM_WIN) +typedef void* HANDLE; +typedef void* LPOVERLAPPED; +#endif + int32_t STORMAPI StormDestroy(); #endif diff --git a/storm/File.hpp b/storm/File.hpp index b055f55..481b959 100644 --- a/storm/File.hpp +++ b/storm/File.hpp @@ -1,25 +1,29 @@ #ifndef STORM_FILE_HPP #define STORM_FILE_HPP -#include #include "storm/Core.hpp" +#include "storm/Handle.hpp" +#include #if defined(WHOA_SYSTEM_WIN) #include -#else -typedef void* HANDLE; -typedef uint32_t DWORD; -typedef uint32_t* LPDWORD; -typedef int32_t LONG; -typedef void* LPOVERLAPPED; #endif -bool STORMAPI SFileOpenArchive(const char* mpqName, DWORD priority, DWORD flags, HANDLE* archive); -bool STORMAPI SFileCloseArchive(HANDLE archive); -bool STORMAPI SFileOpenFileEx(HANDLE archive, const char* fileName, DWORD searchScope, HANDLE* file); -bool STORMAPI SFileReadFile(HANDLE file, void* buffer, DWORD toRead, LPDWORD read, LPOVERLAPPED overlapped); -DWORD STORMAPI SFileGetFileSize(HANDLE file, LPDWORD fileSizeHigh); -DWORD STORMAPI SFileSetFilePointer(HANDLE file, LONG filePos, LONG* filePosHigh, DWORD moveMethod); -bool STORMAPI SFileCloseFile(HANDLE file); +DECLARE_STORM_HANDLE(HSARCHIVE); +DECLARE_STORM_HANDLE(HSFILE); + +int32_t STORMAPI SFileOpenArchive(const char* archivename, int32_t priority, uint32_t flags, HSARCHIVE* handle); + +int32_t STORMAPI SFileCloseArchive(HSARCHIVE handle); + +int32_t STORMAPI SFileOpenFileEx(HSARCHIVE archivehandle, const char* filename, uint32_t flags, HSFILE* handle); + +int32_t STORMAPI SFileReadFile(HSFILE handle, void* buffer, uint32_t bytestoread, uint32_t* bytesread, LPOVERLAPPED overlapped); + +uint32_t STORMAPI SFileGetFileSize(HSFILE handle, uint32_t* filesizehigh); + +uint32_t STORMAPI SFileSetFilePointer(HSFILE handle, int32_t distancetomove, int32_t* distancetomovehigh, uint32_t movemethod); + +int32_t STORMAPI SFileCloseFile(HSFILE handle); #endif