00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef NL_INPUT_DEVICE_SERVER_H
00027 #define NL_INPUT_DEVICE_SERVER_H
00028
00029 #include "nel/misc/types_nl.h"
00030 #include <vector>
00031
00032
00033 namespace NLMISC
00034 {
00035
00036 class CEventServer;
00037 struct IInputDevice;
00038 struct IInputDeviceEvent;
00039
00040
00047 class CInputDeviceServer
00048 {
00049 public:
00051 void registerDevice(IInputDevice *device);
00053 void removeDevice(IInputDevice *device);
00054
00055 uint getNumDevices() const { return _Devices.size(); }
00056
00057 IInputDevice *getDevice(uint index) { return _Devices[index]; }
00059 bool isDevice(IInputDevice *device) const;
00061 void poll(CEventServer *server);
00063 void submitEvent(IInputDeviceEvent *deviceEvent);
00064
00065 virtual ~CInputDeviceServer() {}
00066 private:
00067 typedef std::vector<IInputDevice *> TDeviceCont;
00068 typedef std::vector<IInputDeviceEvent *> TEventCont;
00069 private:
00070 TDeviceCont _Devices;
00071 TEventCont _Events;
00072 };
00073
00074
00075
00076
00079 struct IInputDeviceEvent
00080 {
00081 IInputDevice *Emitter;
00082
00083 virtual bool operator < (const IInputDeviceEvent &IInputDeviceEvent) const = 0;
00084 virtual ~IInputDeviceEvent() {};
00085 };
00086
00087
00088 }
00089
00090
00091 #endif // NL_INPUT_DEVICE_SERVER_H
00092
00093