winamp/Src/Wasabi/api/filereader/api_filereader.h
2024-09-24 14:54:57 +02:00

105 lines
3.7 KiB
C++

#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