BNM 2.4.0
 
Loading...
Searching...
No Matches
BNM::FieldBase Struct Reference

Class base for working with il2cpp fields. More...

#include <FieldBase.hpp>

Public Member Functions

constexpr FieldBase ()=default
 Create empty field base.
 
 FieldBase (const FieldBase &other)=default
 Copy field.
 
 FieldBase (IL2CPP::FieldInfo *info)
 Create event from il2cpp field.
 
FieldBaseSetInstance (IL2CPP::Il2CppObject *val)
 Set field instance if it's non-static.
 
IL2CPP::FieldInfo * GetInfo () const
 Get FieldInfo.
 
BNM_PTR GetOffset () const
 Get field offset.
 
void * GetFieldPointer () const
 Get field pointer.
 
FieldBaseoperator[] (void *instance)
 Operator for setting instance.
 
FieldBaseoperator[] (IL2CPP::Il2CppObject *instance)
 Operator for setting instance.
 
FieldBaseoperator[] (UnityEngine::Object *instance)
 Operator for setting instance.
 
bool IsValid () const noexcept
 Check if field is valid.
 
std::string str () const
 Get full field name.
 
template<typename NewType>
Field< NewType > & cast () const
 Cast field to be able to get and set it with specified type.
 

Public Attributes

BNM::IL2CPP::FieldInfo * _data {}
 
BNM::IL2CPP::Il2CppObject * _instance {}
 
uint8_t _isStatic: 1 = false
 
uint8_t _isThreadStatic: 1 = false
 
uint8_t _isInStruct: 1 = false
 

Detailed Description

Class base for working with il2cpp fields.

This class provides fields and some basic functions to allow to get and set fields.

Constructor & Destructor Documentation

◆ FieldBase() [1/2]

BNM::FieldBase::FieldBase ( const FieldBase & other)
inlinedefault

Copy field.

Parameters
otherOther field

◆ FieldBase() [2/2]

BNM::FieldBase::FieldBase ( IL2CPP::FieldInfo * info)

Create event from il2cpp field.

Parameters
infoIl2cpp field

Member Function Documentation

◆ GetFieldPointer()

void * BNM::FieldBase::GetFieldPointer ( ) const
nodiscard

Get field pointer.

Warning
Don't support thread static fields!

It's useful for structs or if you want to save pointer to be able to use it directly without BNM's overhead.

Returns
Field pointer if field is valid and instance is set for non-static field, otherwise null.

◆ GetInfo()

IL2CPP::FieldInfo * BNM::FieldBase::GetInfo ( ) const
inlinenodiscard

Get FieldInfo.

Returns
FieldInfo

◆ GetOffset()

BNM_PTR BNM::FieldBase::GetOffset ( ) const
inlinenodiscard

Get field offset.

Returns
Field offset if field is valid, otherwise zero.

◆ IsValid()

bool BNM::FieldBase::IsValid ( ) const
inlinenodiscardnoexcept

Check if field is valid.

Returns
State of field

◆ operator[]() [1/3]

FieldBase & BNM::FieldBase::operator[] ( IL2CPP::Il2CppObject * instance)
inline

Operator for setting instance.

Parameters
instanceInstance
Returns
Reference to current FieldBase

◆ operator[]() [2/3]

FieldBase & BNM::FieldBase::operator[] ( UnityEngine::Object * instance)
inline

Operator for setting instance.

Parameters
instanceInstance
Returns
Reference to current FieldBase

◆ operator[]() [3/3]

FieldBase & BNM::FieldBase::operator[] ( void * instance)
inline

Operator for setting instance.

Parameters
instanceInstance
Returns
Reference to current FieldBase

◆ SetInstance()

FieldBase & BNM::FieldBase::SetInstance ( IL2CPP::Il2CppObject * val)

Set field instance if it's non-static.

Parameters
instanceInstance
Returns
Reference to current FieldBase

◆ str()

std::string BNM::FieldBase::str ( ) const
inlinenodiscard

Get full field name.

Returns string with full field name: ClassFullName.(field name)

Returns
Field's full name or "Dead field"