00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
#ifndef UINPUTMAP_HPP
00029 
#define UINPUTMAP_HPP
00030 
00031 
#include "uobject.hpp"
00032 
00033 
#include "ukeystroke.hpp"
00034 
#include "signals/ufo_signals.hpp"
00035 
#include "events/uactionevent.hpp"
00036 
00037 
namespace ufo {
00038 
00050 class UFO_EXPORT UInputMap : 
public UObject  {
00051     UFO_DECLARE_DYNAMIC_CLASS(UInputMap)
00052 
public:
00053     
void put(
const UKeyStroke & strokeA, 
const UActionSlot & listenerA);
00054     
void remove(
const UKeyStroke & strokeA);
00055     UActionSlot * get(
const UKeyStroke & strokeA);
00056 
00057     
void clear();
00058 
private:
00059     
typedef std::map<UKeyStroke, UActionSlot> MapType;
00060     MapType m_map;
00061 };
00062 
00063 
00067 
00068 
inline void
00069 UInputMap::put(
const UKeyStroke & strokeA, 
const UActionSlot & listenerA) {
00070     m_map[strokeA] = listenerA;
00071 }
00072 
00073 
inline void
00074 UInputMap::remove(
const UKeyStroke & strokeA) {
00075     m_map.erase(strokeA);
00076 }
00077 
00078 
inline UActionSlot *
00079 UInputMap::get(
const UKeyStroke & strokeA) {
00080     
00081     
00082     
for (MapType::iterator iter = m_map.begin();
00083             iter != m_map.end();
00084             ++iter) {
00085         
if ((*iter).first == strokeA) {
00086             
return &((*iter).second);
00087         }
00088     }
00089     
00090 
00091 
00092 
00093 
00094 
00095     
return NULL;
00096 }
00097 
00098 
inline void
00099 UInputMap::clear() {
00100     m_map.clear();
00101 }
00102 
00103 } 
00104 
00105 
#endif // UINPUTMAP_HPP