aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/filereader/api_filereader.h
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Wasabi/api/filereader/api_filereader.h
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/Wasabi/api/filereader/api_filereader.h')
-rw-r--r--Src/Wasabi/api/filereader/api_filereader.h104
1 files changed, 104 insertions, 0 deletions
diff --git a/Src/Wasabi/api/filereader/api_filereader.h b/Src/Wasabi/api/filereader/api_filereader.h
new file mode 100644
index 00000000..427c276f
--- /dev/null
+++ b/Src/Wasabi/api/filereader/api_filereader.h
@@ -0,0 +1,104 @@
+#ifndef __API_FILEREADER_H
+#define __API_FILEREADER_H
+
+#include <bfc/dispatch.h>
+
+class NOVTABLE api_fileReader : public Dispatchable
+{
+ public:
+ void *fileOpen(const wchar_t *filename, OSFNCSTR mode);
+ void fileClose(void *fileHandle);
+ size_t fileRead(void *buffer, size_t size, void *fileHandle);
+ size_t fileWrite(const void *buffer, int size, void *fileHandle);
+ int fileSeek(int64_t offset, int origin, void *fileHandle);
+ uint64_t fileTell(void *fileHandle);
+ uint64_t fileGetFileSize(void *fileHandle);
+ //int fileExists(const wchar_t *filename);
+ int fileRemove(const wchar_t *filename);
+ int fileRemoveUndoable(const wchar_t *filename);
+ int fileMove(const wchar_t *filename, const wchar_t *destfilename);
+
+ enum {
+ API_FILEREADER_FILEOPEN = 0,
+ API_FILEREADER_FILECLOSE = 10,
+ API_FILEREADER_FILEREAD = 20,
+ API_FILEREADER_FILEWRITE = 30,
+ API_FILEREADER_FILESEEK = 40,
+ API_FILEREADER_FILETELL = 50,
+ API_FILEREADER_FILEGETFILESIZE = 60,
+ //API_FILEREADER_FILEEXISTS = 70,
+ API_FILEREADER_FILEREMOVE = 80,
+ API_FILEREADER_FILEREMOVEUNDOABLE = 90,
+ API_FILEREADER_FILEMOVE = 100,
+ };
+};
+
+inline void *api_fileReader::fileOpen(const wchar_t *filename, OSFNCSTR mode) {
+ return _call(API_FILEREADER_FILEOPEN, (void *)NULL, filename, mode);
+}
+
+inline void api_fileReader::fileClose(void *fileHandle) {
+ _voidcall(API_FILEREADER_FILECLOSE, fileHandle);
+}
+
+inline size_t api_fileReader::fileRead(void *buffer, size_t size, void *fileHandle) {
+ return _call(API_FILEREADER_FILEREAD, (size_t)0, buffer, size, fileHandle);
+}
+
+inline size_t api_fileReader::fileWrite(const void *buffer, int size, void *fileHandle) {
+ return _call(API_FILEREADER_FILEWRITE, (size_t)0, buffer, size, fileHandle);
+}
+
+inline int api_fileReader::fileSeek(int64_t offset, int origin, void *fileHandle) {
+ return _call(API_FILEREADER_FILESEEK, (int)0, offset, origin, fileHandle);
+}
+
+inline uint64_t api_fileReader::fileTell(void *fileHandle) {
+ return _call(API_FILEREADER_FILETELL, (uint64_t)0, fileHandle);
+}
+
+inline uint64_t api_fileReader::fileGetFileSize(void *fileHandle) {
+ return _call(API_FILEREADER_FILEGETFILESIZE, (uint64_t)0, fileHandle);
+}
+
+/*inline int api_fileReader::fileExists(const wchar_t *filename) {
+ return _call(API_FILEREADER_FILEEXISTS, (int)0, filename);
+}*/
+
+inline int api_fileReader::fileRemove(const wchar_t *filename) {
+ return _call(API_FILEREADER_FILEREMOVE, (int)0, filename);
+}
+
+inline int api_fileReader::fileRemoveUndoable(const wchar_t *filename) {
+ return _call(API_FILEREADER_FILEREMOVEUNDOABLE, (int)0, filename);
+}
+
+inline int api_fileReader::fileMove(const wchar_t *filename, const wchar_t *destfilename) {
+ return _call(API_FILEREADER_FILEMOVE, (int)0, filename, destfilename);
+}
+
+class api_fileReaderI : public api_fileReader {
+ public:
+ virtual void *fileOpen(const wchar_t *filename, const wchar_t *mode)=0;
+ virtual void fileClose(void *fileHandle)=0;
+ virtual size_t fileRead(void *buffer, size_t size, void *fileHandle)=0;
+ virtual int fileWrite(const void *buffer, int size, void *fileHandle)=0;
+ virtual int fileSeek(int64_t offset, int origin, void *fileHandle)=0;
+ virtual uint64_t fileTell(void *fileHandle)=0;
+ virtual uint64_t fileGetFileSize(void *fileHandle)=0;
+ //virtual int fileExists(const wchar_t *filename)=0;
+ virtual int fileRemove(const wchar_t *filename)=0;
+ virtual int fileRemoveUndoable(const wchar_t *filename)=0;
+ virtual int fileMove(const wchar_t *filename, const wchar_t *destfilename)=0;
+
+ protected:
+ RECVS_DISPATCH;
+};
+
+// {E357E736-4967-4279-B948-5073A186F565}
+static const GUID fileReaderApiServiceGuid =
+{ 0xe357e736, 0x4967, 0x4279, { 0xb9, 0x48, 0x50, 0x73, 0xa1, 0x86, 0xf5, 0x65 } };
+
+extern api_fileReader *fileApi;
+
+#endif