diff options
Diffstat (limited to 'Src/omBrowser/ifc_omstorage.h')
-rw-r--r-- | Src/omBrowser/ifc_omstorage.h | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/Src/omBrowser/ifc_omstorage.h b/Src/omBrowser/ifc_omstorage.h new file mode 100644 index 00000000..b7917c2c --- /dev/null +++ b/Src/omBrowser/ifc_omstorage.h @@ -0,0 +1,131 @@ +#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
\ No newline at end of file |