VoltMod
C++23 framework for CS2 server plugins
Loading...
Searching...
No Matches
Hook.hpp File Reference
#include <VoltMod/Core/Log.hpp>
#include <VoltMod/Core/Result.hpp>
#include <VoltMod/Core/Signals/HookResult.hpp>
#include <VoltMod/Core/Signals/Subscription.hpp>
#include <VoltMod/Engine/Detours.hpp>
#include <VoltMod/Engine/GameData/BindingTypes.hpp>
#include <format>
#include <functional>
#include <memory>
#include <string_view>
#include <type_traits>
#include <utility>

Go to the source code of this file.

Classes

class  VoltMod::Internal::InstalledHook< HookKind, Object, Ret, Args >
 

Namespaces

namespace  VoltMod
 
namespace  VoltMod::Internal
 

Functions

KHook::Action VoltMod::Internal::ToKHookAction (HookAction action)
 
template<class Ret >
KHook::Return< Ret > VoltMod::Internal::ToKHook (HookResult< Ret > result)
 
KHook::Return< void > VoltMod::Internal::ToKHook (HookResult< void > result)
 
template<class Hook >
Subscription VoltMod::Internal::ToSubscription (std::unique_ptr< Hook > hook)
 
template<class Iface , class Ret , class... Args, class Before , class After = std::nullptr_t>
Subscription VoltMod::HookInterface (Ret(Iface::*method)(Args...), Iface *instance, Before &&before, After &&after=nullptr)
 Hook one virtual method of an engine interface for a subscription's lifetime.
 
template<class Object , class Ret , class... Args, class Before , class After = std::nullptr_t>
Result< Subscription > VoltMod::HookVirtual (std::string_view name, const VirtualFn< Ret(Object *, Args...)> &function, Before &&before, After &&after=nullptr)
 Hook a gamedata-bound virtual function on objects sharing its class vtable.
 
template<class Object , class Ret , class... Args, class Before , class After = std::nullptr_t>
Result< Subscription > VoltMod::HookFunction (std::string_view name, const Fn< Ret(Object *, Args...)> &function, Before &&before, After &&after=nullptr)
 Hook a signature-bound function at its entry.
 
template<class Iface , class Ret , class... Args, class... Passed>
Ret VoltMod::CallOriginal (Ret(Iface::*method)(Args...), Iface *instance, Passed &&... args)