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 #ifndef KOKO_CALLBACK_MAP_H_
00026 #define KOKO_CALLBACK_MAP_H_
00027
00028 #include <map>
00029
00030 #include "Callbacks.h"
00031 #include "koko.h"
00032
00033 class KokoBuffer;
00034
00035 class CallbackMap
00036 {
00037 public:
00038 CallbackMap(void);
00039 ~CallbackMap(void);
00040
00041 bool Add(KokoTag tag, Callback *cb);
00042 inline bool Add(KokoTag tag, Callback &cb)
00043 {
00044 Callback *cbp = cb.clone();
00045 this->Add(tag, cbp);
00046 };
00047
00048 bool Remove(KokoTag tag);
00049 bool Invoke(KokoTag tag, KokoBuffer &databuf);
00050
00051 private:
00052 typedef std::pair<KokoTag, Callback *> CBPair;
00053 typedef std::map<KokoTag, Callback *> CBMap;
00054 typedef CBMap::iterator CBIterator;
00055 typedef std::pair<CBIterator, bool> CBBool;
00056 CBMap cbmap;
00057 };
00058
00059 #endif