#pragma once #include "../pointer/pointer.hpp" #include #include class CSigScan { public: using ProcedureFn = std::function; struct SigData_t { std::span m_Signature; ProcedureFn m_Procedure; }; CSigScan(const char* name, const char* libraryName, const std::initializer_list& data); void FindSignature(); auto FreeData() { std::vector().swap(m_Data); } auto GetPtr() const { return m_Value; } template auto GetPtrAs() const { return m_Value.Get(); } CSigScan(const CSigScan&) = delete; CSigScan& operator=(const CSigScan&) = delete; private: const char* m_Name; const char* m_LibraryName; std::vector m_Data; CPointer m_Value; }; class CSigScanManager { public: static CSigScanManager& Get() { static CSigScanManager inst; return inst; } void ScheduleScan(CSigScan* sigScan); void ProcessScans(); private: std::vector m_ScheduledScans; };