winamp/Src/omBrowser/ifc_omstorage.h
2024-09-24 14:54:57 +02:00

131 lines
4.0 KiB
C++

#ifndef NULLSOFT_WINAMP_OMSTORAGE_INTERFACE_HEADER
#define NULLSOFT_WINAMP_OMSTORAGE_INTERFACE_HEADER
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif
// {DEE1FCCD-8FFC-4ed2-8104-323382670BE0}
static const GUID IFC_OmStorage =
{ 0xdee1fccd, 0x8ffc, 0x4ed2, { 0x81, 0x4, 0x32, 0x33, 0x82, 0x67, 0xb, 0xe0 } };
#include <ifc_omstorageasync.h>
#include <bfc/dispatch.h>
class ifc_omservice;
class ifc_omservicehost;
class ifc_omserviceenum;
#define OMSTORAGE_E_UNKNOWN_FORMAT MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, ERROR_INVALID_DATA)
class __declspec(novtable) ifc_omstorage : public Dispatchable
{
public:
typedef enum
{
capLoad = 0x00000001,
capSave = 0x00000002,
capDelete = 0x00000004,
capReload = 0x00000008,
capPublic = 0x00001000,
} Capabilities;
typedef enum
{
saveModifiedOnly = 0x00000001,
saveClearModified = 0x00000002,
} SaveFlags;
protected:
ifc_omstorage() {}
~ifc_omstorage() {}
public:
HRESULT GetId(GUID *storageUid);
HRESULT GetType(GUID *storageType);
UINT GetCapabilities();
HRESULT GetDescription(wchar_t *buffer, unsigned int bufferMax);
HRESULT Load(const wchar_t *address, ifc_omservicehost *host, ifc_omserviceenum **ppEnum);
HRESULT Save(ifc_omservice **serviceList, unsigned long listCount, unsigned int saveFlags, unsigned long *savedCount);
HRESULT Delete(ifc_omservice **serviceList, unsigned long listCount, unsigned long *deletedCount);
HRESULT Reload(ifc_omservice **serviceList, unsigned long listCount, unsigned long *reloadedCount);
/* async calls */
HRESULT BeginLoad(const wchar_t *address, ifc_omservicehost *host, ifc_omstorageasync::AsyncCallback callback, void *data, ifc_omstorageasync **async);
HRESULT EndLoad(ifc_omstorageasync *async, ifc_omserviceenum **ppEnum);
HRESULT RequestAbort(ifc_omstorageasync *async, BOOL drop);
public:
DISPATCH_CODES
{
API_GETID = 10,
API_GETTYPE = 20,
API_GETCAPABILITIES = 30,
API_GETDESCRIPTION = 40,
API_LOAD = 60,
API_SAVE = 70,
API_DELETE = 80,
API_RELOAD = 90,
API_BEGINLOAD = 100,
API_ENDLOAD = 110,
API_REQUESTABORT = 120,
};
};
inline HRESULT ifc_omstorage::GetId(GUID *storageUid)
{
return _call(API_GETID, (HRESULT)E_NOTIMPL, storageUid);
}
inline HRESULT ifc_omstorage::GetType(GUID *storageType)
{
return _call(API_GETTYPE, (HRESULT)E_NOTIMPL, storageType);
}
inline UINT ifc_omstorage::GetCapabilities()
{
return (UINT)_call(API_GETCAPABILITIES, (UINT)0);
}
inline HRESULT ifc_omstorage::GetDescription(wchar_t *buffer, unsigned int bufferMax)
{
return _call(API_GETDESCRIPTION, (HRESULT)E_NOTIMPL, buffer, bufferMax);
}
inline HRESULT ifc_omstorage::Load(const wchar_t *address, ifc_omservicehost *host, ifc_omserviceenum **ppEnum)
{
return _call(API_LOAD, (HRESULT)E_NOTIMPL, address, host, ppEnum);
}
inline HRESULT ifc_omstorage::Save(ifc_omservice **serviceList, unsigned long listCount, unsigned int saveFlags, unsigned long *savedCount)
{
return _call(API_SAVE, (HRESULT)E_NOTIMPL, serviceList, listCount, saveFlags, savedCount);
}
inline HRESULT ifc_omstorage::Delete(ifc_omservice **serviceList, unsigned long listCount, unsigned long *deletedCount)
{
return _call(API_DELETE, (HRESULT)E_NOTIMPL, serviceList, listCount, deletedCount);
}
inline HRESULT ifc_omstorage::Reload(ifc_omservice **serviceList, unsigned long listCount, unsigned long *reloadedCount)
{
return _call(API_RELOAD, (HRESULT)E_NOTIMPL, serviceList, listCount, reloadedCount);
}
inline HRESULT ifc_omstorage::BeginLoad(const wchar_t *address, ifc_omservicehost *host, ifc_omstorageasync::AsyncCallback callback, void *data, ifc_omstorageasync **async)
{
return _call(API_BEGINLOAD, (HRESULT)E_NOTIMPL, address, host, callback, data, async);
}
inline HRESULT ifc_omstorage::EndLoad(ifc_omstorageasync *async, ifc_omserviceenum **ppEnum)
{
return _call(API_ENDLOAD, (HRESULT)E_NOTIMPL, async, ppEnum);
}
inline HRESULT ifc_omstorage::RequestAbort(ifc_omstorageasync *async, BOOL drop)
{
return _call(API_REQUESTABORT, (HRESULT)E_NOTIMPL, async, drop);
}
#endif //NULLSOFT_WINAMP_OMSTORAGE_INTERFACE_HEADER