From cac1cf7a1f8edaf2c7f9809dae32b0ac550c92f1 Mon Sep 17 00:00:00 2001 From: Marco Tylus Date: Mon, 29 Dec 2025 02:35:05 +0900 Subject: [PATCH] chore(file): add initial file headers (#107) --- storm/File.hpp | 25 +++++++++++++++++++++++++ storm/file/SFile.hpp | 25 +++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 storm/File.hpp create mode 100644 storm/file/SFile.hpp diff --git a/storm/File.hpp b/storm/File.hpp new file mode 100644 index 0000000..b055f55 --- /dev/null +++ b/storm/File.hpp @@ -0,0 +1,25 @@ +#ifndef STORM_FILE_HPP +#define STORM_FILE_HPP + +#include +#include "storm/Core.hpp" + +#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); + +#endif diff --git a/storm/file/SFile.hpp b/storm/file/SFile.hpp new file mode 100644 index 0000000..f9b7fbb --- /dev/null +++ b/storm/file/SFile.hpp @@ -0,0 +1,25 @@ +#ifndef STORM_FILE_SFILE_HPP +#define STORM_FILE_SFILE_HPP + +#include +#include + +class SArchive; +struct SOVERLAPPED; +struct TASYNCPARAMBLOCK; + +class SFile { + public: + static int32_t Close(SFile*); + static int32_t FileExists(const char* filename); + static size_t GetFileSize(SFile*, size_t*); + static int32_t IsStreamingMode(); + static int32_t IsStreamingTrial(); + static int32_t Load(SArchive*, const char*, void**, size_t*, size_t, uint32_t, SOVERLAPPED*); + static int32_t Open(const char*, SFile**); + static int32_t OpenEx(SArchive*, const char*, uint32_t, SFile**); + static int32_t Read(SFile*, void*, size_t, size_t*, SOVERLAPPED*, TASYNCPARAMBLOCK*); + static int32_t Unload(void*); +}; + +#endif