aboutsummaryrefslogtreecommitdiff
path: root/Src/devices/deviceSupportedCommandStore.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/devices/deviceSupportedCommandStore.h')
-rw-r--r--Src/devices/deviceSupportedCommandStore.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/Src/devices/deviceSupportedCommandStore.h b/Src/devices/deviceSupportedCommandStore.h
new file mode 100644
index 00000000..88e6f142
--- /dev/null
+++ b/Src/devices/deviceSupportedCommandStore.h
@@ -0,0 +1,69 @@
+#ifndef _NULLSOFT_WINAMP_DEVICES_DEVICE_SUPPORTED_COMMAND_STORE_HEADER
+#define _NULLSOFT_WINAMP_DEVICES_DEVICE_SUPPORTED_COMMAND_STORE_HEADER
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+
+#include "./ifc_devicesupportedcommandstore.h"
+#include "./deviceSupportedCommand.h"
+#include "./ifc_devicesupportedcommandenum.h"
+#include <vector>
+
+class DeviceSupportedCommandStore : public ifc_devicesupportedcommandstore
+{
+
+protected:
+ DeviceSupportedCommandStore();
+ ~DeviceSupportedCommandStore();
+
+public:
+ static HRESULT CreateInstance(DeviceSupportedCommandStore **instance);
+
+public:
+ /* Dispatchable */
+ size_t AddRef();
+ size_t Release();
+ int QueryInterface(GUID interface_guid, void **object);
+
+ /* ifc_devicesupportedcommandstore*/
+ HRESULT Add(const char *name, DeviceCommandFlags flags);
+ HRESULT Remove(const char *name);
+ HRESULT RemoveAll();
+
+ HRESULT GetFlags(const char *name, DeviceCommandFlags *flagsOut);
+ HRESULT SetFlags(const char *name, DeviceCommandFlags mask, DeviceCommandFlags value);
+
+ HRESULT Get(const char *name, ifc_devicesupportedcommand **command);
+ HRESULT GetActive(ifc_devicesupportedcommand **command);
+
+ HRESULT Enumerate(ifc_devicesupportedcommandenum **enumerator);
+
+ HRESULT Clone(ifc_devicesupportedcommandstore **instance, BOOL fullCopy);
+
+public:
+ void Lock();
+ void Unlock();
+
+protected:
+ static int SearchCallback(const void *key, const void *element);
+ static int SortCallback(const void *element1, const void *element2);
+ DeviceSupportedCommand *Find(const char *name, size_t *indexOut);
+
+protected:
+ typedef std::vector<DeviceSupportedCommand*> CommandList;
+
+protected:
+ size_t ref;
+ CommandList commandList;
+ CRITICAL_SECTION lock;
+
+protected:
+ RECVS_DISPATCH;
+
+
+
+};
+
+#endif // _NULLSOFT_WINAMP_DEVICES_DEVICE_SUPPORTED_COMMAND_STORE_HEADER \ No newline at end of file