Implement a simple function register manager (SysReg)

This commit is contained in:
Maple Redleaf
2025-11-12 11:22:01 -06:00
parent 70df396822
commit e1fce167e2
2 changed files with 36 additions and 0 deletions

18
include/sysreg.h Normal file
View File

@@ -0,0 +1,18 @@
#include <functional>
#include <memory>
#include <string>
#include <vector>
namespace VoidFrame {
class SysReg {
public:
std::function<void(void)> *
RegisterCallback(const std::string &&name,
std::function<void(void)> &callback);
const std::function<void(void)> *GetCallback(std::string &&name);
void DeleteCallback(std::string &&name);
private:
std::unordered_map<std::string, std::unique_ptr<std::function<void(void)>>>
callbacks;
};
} // namespace VoidFrame

18
src/sysreg.cpp Normal file
View File

@@ -0,0 +1,18 @@
#include "../include/sysreg.h"
using namespace VoidFrame;
std::function<void(void)> *
SysReg::RegisterCallback(const std::string &&name,
std::function<void(void)> &callback) {
callbacks[name] =
std::make_unique<std::function<void(void)>>(std::move(callback));
return callbacks[name].get();
}
const std::function<void(void)> *SysReg::GetCallback(std::string &&name) {
return callbacks[name].get();
}
void SysReg::DeleteCallback(std::string &&name) { callbacks.erase(name); }