diff --git a/extensions/bintools/CallWrapper.cpp b/extensions/bintools/CallWrapper.cpp index 8437a643..d13eff6c 100644 --- a/extensions/bintools/CallWrapper.cpp +++ b/extensions/bintools/CallWrapper.cpp @@ -68,6 +68,11 @@ CallWrapper::~CallWrapper() g_SPEngine->ExecFree(m_Addrs[ADDR_CODEBASE]); } +void CallWrapper::Destroy() +{ + delete this; +} + CallConvention CallWrapper::GetCallConvention() { return m_Cv; diff --git a/extensions/bintools/CallWrapper.h b/extensions/bintools/CallWrapper.h index df880b23..d349a969 100644 --- a/extensions/bintools/CallWrapper.h +++ b/extensions/bintools/CallWrapper.h @@ -49,6 +49,7 @@ public: //ICallWrapper const PassInfo *GetReturnInfo(); unsigned int GetParamCount(); void Execute(void *vParamStack, void *retBuffer); + void Destroy(); public: inline void deleteThis() { delete this; } void *m_Addrs[4]; diff --git a/public/extensions/IBinTools.h b/public/extensions/IBinTools.h index a18affea..34fceeeb 100644 --- a/public/extensions/IBinTools.h +++ b/public/extensions/IBinTools.h @@ -22,7 +22,7 @@ #include #define SMINTERFACE_BINTOOLS_NAME "IBinTools" -#define SMINTERFACE_BINTOOLS_VERSION 1 +#define SMINTERFACE_BINTOOLS_VERSION 2 /** * @brief Function calling encoding utilities @@ -105,13 +105,23 @@ namespace SourceMod /** * @brief Returns the number of parameters. + * + * @return Number of parameters. */ virtual unsigned int GetParamCount() =0; /** * @brief Execute the contained function. + * + * @param vParamStack A blob of memory containing stack data. + * @param retBuffer Buffer to store return value. */ virtual void Execute(void *vParamStack, void *retBuffer) =0; + + /** + * @brief Destroys all resources used by this object. + */ + virtual void Destroy() =0; }; /**