fork(1) download
  1. #include <iostream>
  2. #include <map>
  3. #include <functional>
  4.  
  5. typedef std::map<int,std::function<void()>> ProcessMessageMap;
  6.  
  7. void print_hi()
  8. {
  9. std::cout<<"hi"<<std::endl;
  10. }
  11.  
  12. void print_bye()
  13. {
  14. std::cout<<"bye"<<std::endl;
  15. }
  16.  
  17.  
  18. enum Message
  19. {
  20. SAY_HI = 0,
  21. SAY_BYE,
  22. DONT_DO_ANYTHING
  23. } messages;
  24.  
  25. void process_message( const ProcessMessageMap &m, Message msg )
  26. {
  27. auto i = m.find(msg);
  28. if(i != m.end())
  29. {
  30. (i->second)();
  31. }
  32. }
  33.  
  34. void setup_map( ProcessMessageMap &m )
  35. {
  36. m[SAY_HI] = std::bind(print_hi);;
  37. m[SAY_BYE] = std::bind(print_bye);
  38. }
  39.  
  40. int main()
  41. {
  42. ProcessMessageMap msg_map;
  43. setup_map( msg_map );
  44. process_message( msg_map, SAY_HI );
  45. process_message( msg_map, SAY_BYE );
  46. return 0;
  47. }
Success #stdin #stdout 0s 2988KB
stdin
Standard input is empty
stdout
hi
bye