Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.67 KB | None | 0 0
  1. #define SIGNAL_ARRAY_CONTENT(a) #a,
  2. #define SIGNAL_ENUM_CONTENT(a) a,
  3. #define SIGNAL_PUSH_BACK(a) signals.push_back(#a);
  4.  
  5. #define SIGNAL_CASE(a) case Signals::a: SimpleEmit(#a, std::forward<T>(params)...); break;
  6.  
  7. #define SIGNALS(...)\
  8. enum class Signals : unsigned int\
  9. {\
  10. FOR_EACH(SIGNAL_ENUM_CONTENT, __VA_ARGS__)\
  11. };\
  12. template<typename... T>\
  13. inline void EmitSignal(Signals signal, T&&... params){\
  14. switch(signal){\
  15. FOR_EACH(SIGNAL_CASE, __VA_ARGS__)\
  16. default: break;}\
  17. }\
  18. virtual std::vector<KigsID> GetSignalList() override\
  19. {\
  20. auto signals = ParentClassType::GetSignalList();\
  21. FOR_EACH(SIGNAL_PUSH_BACK, __VA_ARGS__)\
  22. return signals;\
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement