plugify 1.0.0.0
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | List of all members
plugify::JitCall Class Reference

Class encapsulates architecture-, OS- and compiler-specific function call semantics in a virtual "bind argument parameters from left to right and then call" interface allowing programmers to call C functions in a completely dynamic manner. In other words, instead of calling a function directly, class provides a mechanism to push the function parameters manually and to issue the call afterwards. More...

#include <call.hpp>

Collaboration diagram for plugify::JitCall:
Collaboration graph
[legend]

Classes

struct  Parameters
 Structure to represent function parameters. More...
 
struct  Return
 

Public Types

enum class  WaitType { None , Breakpoint , Wait_Keypress }
 
using CallingFunc = void(*)(Parameters::Data params, const Return *)
 
using HiddenParam = bool(*)(ValueType)
 

Public Member Functions

 JitCall (std::weak_ptr< asmjit::JitRuntime > rt)
 Constructor.
 
 JitCall (const JitCall &other)=delete
 Copy constructor.
 
 JitCall (JitCall &&other) noexcept
 Move constructor.
 
 ~JitCall ()
 Destructor.
 
MemAddr GetJitFunc (const asmjit::FuncSignature &sig, MemAddr target, WaitType waitType, bool hidden)
 Get a dynamically created function based on the raw signature.
 
MemAddr GetJitFunc (MethodHandle method, MemAddr target, WaitType waitType=WaitType::None, HiddenParam hidden=&ValueUtils::IsHiddenParam)
 Get a dynamically created function based on the method reference.
 
MemAddr GetFunction () const noexcept
 Get a dynamically created function.
 
MemAddr GetTargetFunc () const noexcept
 Get the target associated with the object.
 
std::string_view GetError () noexcept
 Get the error message, if any.
 
JitCalloperator= (const JitCall &other)=delete
 Copy assignment operator for JitCall.
 
JitCalloperator= (JitCall &&other) noexcept
 Move assignment operator for JitCall.
 

Detailed Description

Class encapsulates architecture-, OS- and compiler-specific function call semantics in a virtual "bind argument parameters from left to right and then call" interface allowing programmers to call C functions in a completely dynamic manner. In other words, instead of calling a function directly, class provides a mechanism to push the function parameters manually and to issue the call afterwards.

Definition at line 21 of file call.hpp.

Member Typedef Documentation

◆ CallingFunc

using plugify::JitCall::CallingFunc = void(*)(Parameters::Data params, const Return*)

Definition at line 134 of file call.hpp.

◆ HiddenParam

using plugify::JitCall::HiddenParam = bool(*)(ValueType)

Definition at line 135 of file call.hpp.

Member Enumeration Documentation

◆ WaitType

enum class plugify::JitCall::WaitType
strong

Definition at line 128 of file call.hpp.

Constructor & Destructor Documentation

◆ JitCall() [1/3]

plugify::JitCall::JitCall ( std::weak_ptr< asmjit::JitRuntime >  rt)
explicit

Constructor.

Parameters
rtWeak pointer to the asmjit::JitRuntime.

◆ JitCall() [2/3]

plugify::JitCall::JitCall ( const JitCall other)
delete

Copy constructor.

Parameters
otherAnother instance of Caller.

◆ JitCall() [3/3]

plugify::JitCall::JitCall ( JitCall &&  other)
noexcept

Move constructor.

Parameters
otherAnother instance of Caller.

Member Function Documentation

◆ GetError()

std::string_view plugify::JitCall::GetError ( )
inlinenoexcept

Get the error message, if any.

Returns
Error message.

Definition at line 176 of file call.hpp.

◆ GetFunction()

MemAddr plugify::JitCall::GetFunction ( ) const
inlinenoexcept

Get a dynamically created function.

Returns
Pointer to the already generated function.
Note
The returned pointer can be nullptr if function is not generate.

Definition at line 162 of file call.hpp.

◆ GetJitFunc() [1/2]

MemAddr plugify::JitCall::GetJitFunc ( const asmjit::FuncSignature &  sig,
MemAddr  target,
WaitType  waitType,
bool  hidden 
)

Get a dynamically created function based on the raw signature.

Parameters
sigFunction signature.
targetTarget function to call.
waitTypeOptionally insert a breakpoint before the call.
hiddenIf true, return will be pass as hidden argument.
Returns
Pointer to the generated function.

◆ GetJitFunc() [2/2]

MemAddr plugify::JitCall::GetJitFunc ( MethodHandle  method,
MemAddr  target,
WaitType  waitType = WaitType::None,
HiddenParam  hidden = &ValueUtils::IsHiddenParam 
)

Get a dynamically created function based on the method reference.

Parameters
methodReference to the method.
targetTarget function to call.
waitTypeOptionally insert a breakpoint before the call.
hiddenIf true, return will be pass as hidden argument.
Returns
Pointer to the generated function.

◆ GetTargetFunc()

MemAddr plugify::JitCall::GetTargetFunc ( ) const
inlinenoexcept

Get the target associated with the object.

This function returns a pointer to the target function associated with the object.

Returns
A void pointer to the target function.
Note
The returned pointer can be nullptr if no target is set.

Definition at line 170 of file call.hpp.

◆ operator=() [1/2]

JitCall & plugify::JitCall::operator= ( const JitCall other)
delete

Copy assignment operator for JitCall.

Parameters
otherThe other JitCall instance to copy from.
Returns
A reference to this instance after copying.

◆ operator=() [2/2]

JitCall & plugify::JitCall::operator= ( JitCall &&  other)
noexcept

Move assignment operator for JitCall.

Parameters
otherThe other JitCall instance to move from.
Returns
A reference to this instance after moving.
Note
This operator is marked noexcept to indicate it does not throw exceptions.

Member Data Documentation

◆ _errorCode

const char* plugify::JitCall::_errorCode {}

Definition at line 200 of file call.hpp.

◆ _targetFunc

MemAddr plugify::JitCall::_targetFunc

Definition at line 199 of file call.hpp.


The documentation for this class was generated from the following file: