37 union FFieldObjectUnion
55 Container.Field =
nullptr;
67 Container.Field =
const_cast<FField*
>(InField);
78 decltype(ImplicitConv<const UObject*>(std::declval<T>()))* =
nullptr
83 Container.Object =
const_cast<UObject*
>(ImplicitConv<const UObject*>(InObject));
105 return !!Container.Object;
122 inline operator bool()
const
137 template <
typename T>
140 static_assert(
sizeof(T) > 0,
"T must not be an incomplete type");
141 return IsA(T::StaticClass());
178 return Container.Object;
196 return Container.Field;
212 return Container.Field;
222 return Container.Object;
232 return Container.Field;
236 UClass* GetOwnerClass()
const;
237 const std::string& GetFullName()
const;
238 const std::string& GetPathName()
const;
239 const std::string& GetName()
const;
240 const std::string& GetClassName()
const;
241 const std::string& GetFName()
const;
242 bool IsNative()
const;
247 return Container.Field == Other.Container.Field;
250 bool operator!=(
const FFieldVariant& Other)
const
252 return Container.Field != Other.Container.Field;
281 uint64_t m_CastFlags;
299 FField* ConstructDefaultObject();
363 inline bool HasAnyCastFlags(
const uint64_t InCastFlags)
const
365 return !!(m_CastFlags & InCastFlags);
367 inline bool HasAllCastFlags(
const uint64_t InCastFlags)
const
369 return (m_CastFlags & InCastFlags) == InCastFlags;
382 const uint64_t OtherClassId = InClass->
GetId();
383 return OtherClassId ? !!(m_CastFlags & OtherClassId) : IsChildOf_Walk(InClass);
386 const std::string& GetDescription()
const;
387 const std::string& GetDisplayNameText()
const;
391 return ConstructFn(InOwner, InName, InFlags);
394 FFieldClass* GetSuperClass()
const
408 DefaultObject = ConstructDefaultObject();
409 KR_CORE_ASSERT(DefaultObject,
"Default object is null");
411 return DefaultObject;
433 bool IsChildOf_Walk(
const FFieldClass* InBaseClass)
const
435 for (
const FFieldClass* TempField =
this; TempField; TempField = TempField->GetSuperClass())
437 if (TempField == InBaseClass)
459 typedef FField BaseFieldClass;
480 void Rename(
const std::string& NewName);
#define KARMA_API
Defining Karma's API macro for storage class information.
Definition Core.h:41
#define KR_NONCOPYABLE(TypeName)
Makes a type non-copyable and non-movable by deleting copy/move constructors and assignment/move oper...
Definition Core.h:127
#define FORCEINLINE
Typical inlining macro for clarity.
Definition Core.h:157
This file contains some commonly used game code macros.
EObjectFlags
Flags describing an object instance.
Definition UObjectGlobals.h:183
@ RF_NoFlags
No flags, used to avoid a cast.
Definition UObjectGlobals.h:186
EClassFlags
Flags describing a class.
Definition UObjectGlobals.h:57
Object representing a type of an FField struct. Mimics a subset of UObject reflection functions.
Definition Field.h:273
uint64_t GetId() const
Definition Field.h:349
const std::string & GetName() const
Definition Field.h:339
static std::unordered_map< std::string, FFieldClass * > & GetNameToFieldClassMap()
bool IsChildOf(const FFieldClass *InClass) const
See if the class is child of a class.
Definition Field.h:380
uint64_t GetCastFlags() const
Definition Field.h:359
static KarmaVector< FFieldClass * > & GetAllFieldClasses()
FFieldClass(const char *InCPPName, uint64_t InId, uint64_t InCastFlags, FFieldClass *InSuperClass, FField *(*ConstructFnPtr)(const FFieldVariant &, const std::string &, EObjectFlags))
Initialize various data members of the class.
Definition Field.cpp:6
FField * GetDefaultObject()
Definition Field.h:404
Base class of reflection data objects.
Definition Field.h:450
FField * m_Next
Definition Field.h:466
void Rename(const std::string &NewName)
Rename the FField object.
Definition Field.cpp:21
std::string m_NamePrivate
Definition Field.h:469
EObjectFlags m_FlagsPrivate
Definition Field.h:472
FFieldVariant m_Owner
Definition Field.h:463
Special container that can hold either UObject or FField.
Definition Field.h:32
FORCEINLINE UObject * ToUObjectUnsafe() const
Definition Field.h:220
UObject * ToUObject() const
Getter for UObject if possible.
Definition Field.h:174
bool IsA(const UClass *InClass) const
bool IsValidLowLevel() const
FORCEINLINE FField * ToFieldUnsafe() const
Definition Field.h:210
bool IsValid() const
Maybe sees if UObject is being held.
Definition Field.h:103
bool IsA(const FFieldClass *InClass) const
void * GetRawPointer() const
Definition Field.h:230
FField * ToField() const
Getter for FField if possible.
Definition Field.h:192
FFieldVariant(T &&InObject)
Overloaded template constructor (UObject)
Definition Field.h:80
bool IsUObject() const
Getter for bIsUobject.
Definition Field.h:92
FFieldVariant(const FField *InField)
Overloaded constructor (FField)
Definition Field.h:64
FFieldVariant()
Constructor.
Definition Field.h:52
An object class.
Definition Class.h:158
The base class of all the game code relevant objects.
Definition Object.h:106
Karma's std::vector wrapper.
Definition KarmaTypes.h:152