signals.h 583 B

1234567891011121314151617181920212223242526272829303132
  1. #pragma once
  2. #include <vector>
  3. #define INVALID_ID -1
  4. typedef enum {
  5. ALL,
  6. ANY
  7. } SignalType;
  8. typedef struct SignalData {
  9. int id;
  10. void* ctx;
  11. bool triggered;
  12. } SignalData;
  13. class SignalManager {
  14. public:
  15. SignalManager() = default;
  16. void register_signal(int id, void* ctx);
  17. void register_slot(int id, void* ctx);
  18. void send(void* ctx);
  19. void reset(int id);
  20. bool validate(char* err, std::size_t err_size);
  21. // all id + ctx pairs must have triggered before we send
  22. std::vector<SignalData> signals;
  23. std::vector<SignalData> slots;
  24. };