aboutsummaryrefslogtreecommitdiff
path: root/Src/omBrowser/ifc_omstorage.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/omBrowser/ifc_omstorage.h')
-rw-r--r--Src/omBrowser/ifc_omstorage.h131
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