/TGame/TCommon/Message/MsgFactoryByMap.h

http://awoe.googlecode.com/ · C Header · 38 lines · 21 code · 11 blank · 6 comment · 0 complexity · 9df0f1eca5f06f7996e10ea13a09eadc MD5 · raw file

  1. #ifndef __MSG_FACTORY__BYMAP__
  2. #define __MSG_FACTORY__BYMAP__
  3. #include "MsgFactoryIf.h"
  4. typedef IMsg* (*MessageFunctor)();
  5. //
  6. // Message Factory
  7. //
  8. class TCOM_API MsgFactoryByMap: public IMsgFactory
  9. {
  10. public:
  11. MsgFactoryByMap();
  12. virtual ~MsgFactoryByMap();
  13. //
  14. // create a message base on message category and message id
  15. //
  16. virtual IMsg* createMsg(int nMsgCate, int nMsgID);
  17. template<class Msg>
  18. static IMsg* create()
  19. {
  20. return new Msg;
  21. }
  22. void registerMsg(int nCate, int nID, MessageFunctor func);
  23. protected:
  24. typedef stdext::hash_map<int, MessageFunctor> MessageCreatorMap;
  25. MessageCreatorMap m_theMap;
  26. };
  27. #endif