UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UE::ReferenceChainSearch::TReferenceSearchBase< Derived >::FCollector< bNeedsPropertyReferencer > Class Template Referencefinal
+ Inheritance diagram for UE::ReferenceChainSearch::TReferenceSearchBase< Derived >::FCollector< bNeedsPropertyReferencer >:

Public Member Functions

 FCollector (FProcessor &InProcessor, FGCArrayStruct &InContext)
 
virtual void HandleObjectReference (UObject *&Object, const UObject *ReferencingObject, const FProperty *ReferencingProperty) override
 
virtual void HandleObjectReferences (UObject **Objects, int32 Num, const UObject *ReferencingObject, const FProperty *ReferencingProperty) override
 
virtual bool NeedsPropertyReferencer () const
 
virtual bool IsIgnoringArchetypeRef () const override
 
virtual bool IsIgnoringTransient () const override
 
virtual bool MarkWeakObjectReferenceForClearing (UObject **WeakReference, UObject *ReferenceOwner)
 
- Public Member Functions inherited from FReferenceCollector
virtual COREUOBJECT_API ~FReferenceCollector ()
 
virtual COREUOBJECT_API void AddStableReference (TObjectPtr< UObject > *Object)
 
virtual COREUOBJECT_API void AddStableReferenceArray (TArray< TObjectPtr< UObject > > *Objects)
 
virtual COREUOBJECT_API void AddStableReferenceSet (TSet< TObjectPtr< UObject > > *Objects)
 
template<typename KeyType , typename ValueType , typename Allocator , typename KeyFuncs >
void AddStableReferenceMap (TMapBase< KeyType, ValueType, Allocator, KeyFuncs > &Map)
 
virtual COREUOBJECT_API void AddStableReference (UObject **Object)
 
virtual COREUOBJECT_API void AddStableReferenceArray (TArray< UObject * > *Objects)
 
virtual COREUOBJECT_API void AddStableReferenceSet (TSet< UObject * > *Objects)
 
template<class UObjectType >
void AddStableReference (UObjectType **Object)
 
template<class UObjectType >
void AddStableReferenceArray (TArray< UObjectType * > *Objects)
 
template<class UObjectType >
void AddStableReferenceSet (TSet< UObjectType * > *Objects)
 
template<class UObjectType >
UE_FORCEINLINE_HINT void AddStableReference (TObjectPtr< UObjectType > *Object)
 
template<class UObjectType >
UE_FORCEINLINE_HINT void AddStableReferenceArray (TArray< TObjectPtr< UObjectType > > *Objects)
 
template<class UObjectType >
UE_FORCEINLINE_HINT void AddStableReferenceSet (TSet< TObjectPtr< UObjectType > > *Objects)
 
template<class UObjectType >
void AddReferencedObject (UObjectType *&Object, const UObject *ReferencingObject=nullptr, const FProperty *ReferencingProperty=nullptr)
 
template<class UObjectType >
void AddReferencedObject (const UObjectType *&Object, const UObject *ReferencingObject=nullptr, const FProperty *ReferencingProperty=nullptr)
 
template<class UObjectType >
void AddReferencedObjects (TArray< UObjectType * > &ObjectArray, const UObject *ReferencingObject=nullptr, const FProperty *ReferencingProperty=nullptr)
 
template<class UObjectType >
void AddReferencedObjects (TArray< const UObjectType * > &ObjectArray, const UObject *ReferencingObject=nullptr, const FProperty *ReferencingProperty=nullptr)
 
template<class UObjectType >
void AddReferencedObjects (TSet< UObjectType * > &ObjectSet, const UObject *ReferencingObject=nullptr, const FProperty *ReferencingProperty=nullptr)
 
template<typename KeyType , typename ValueType , typename Allocator , typename KeyFuncs >
void AddReferencedObjects (TMapBase< KeyType *, ValueType, Allocator, KeyFuncs > &Map, const UObject *ReferencingObject=nullptr, const FProperty *ReferencingProperty=nullptr)
 
template<typename KeyType , typename ValueType , typename Allocator , typename KeyFuncs >
void AddReferencedObjects (TMapBase< KeyType, ValueType *, Allocator, KeyFuncs > &Map, const UObject *ReferencingObject=nullptr, const FProperty *ReferencingProperty=nullptr)
 
template<typename KeyType , typename ValueType , typename Allocator , typename KeyFuncs >
void AddReferencedObjects (TMapBase< KeyType *, ValueType *, Allocator, KeyFuncs > &Map, const UObject *ReferencingObject=nullptr, const FProperty *ReferencingProperty=nullptr)
 
template<class UObjectType >
void AddReferencedObject (TObjectPtr< UObjectType > &Object, const UObject *ReferencingObject=nullptr, const FProperty *ReferencingProperty=nullptr)
 
template<class UObjectType >
void AddReferencedObject (TObjectPtr< const UObjectType > &Object, const UObject *ReferencingObject=nullptr, const FProperty *ReferencingProperty=nullptr)
 
template<class UObjectType >
void AddReferencedObjects (TArray< TObjectPtr< UObjectType > > &ObjectArray, const UObject *ReferencingObject=nullptr, const FProperty *ReferencingProperty=nullptr)
 
template<class UObjectType >
void AddReferencedObjects (TArray< TObjectPtr< const UObjectType > > &ObjectArray, const UObject *ReferencingObject=nullptr, const FProperty *ReferencingProperty=nullptr)
 
template<class UObjectType >
void AddReferencedObjects (TSet< TObjectPtr< UObjectType > > &ObjectSet, const UObject *ReferencingObject=nullptr, const FProperty *ReferencingProperty=nullptr)
 
template<typename KeyType , typename ValueType , typename Allocator , typename KeyFuncs >
void AddReferencedObjects (TMapBase< TObjectPtr< KeyType >, ValueType, Allocator, KeyFuncs > &Map, const UObject *ReferencingObject=nullptr, const FProperty *ReferencingProperty=nullptr)
 
template<typename KeyType , typename ValueType , typename Allocator , typename KeyFuncs >
void AddReferencedObjects (TMapBase< KeyType, TObjectPtr< ValueType >, Allocator, KeyFuncs > &Map, const UObject *ReferencingObject=nullptr, const FProperty *ReferencingProperty=nullptr)
 
template<typename KeyType , typename ValueType , typename Allocator , typename KeyFuncs >
void AddReferencedObjects (TMapBase< TObjectPtr< KeyType >, TObjectPtr< ValueType >, Allocator, KeyFuncs > &Map, const UObject *ReferencingObject=nullptr, const FProperty *ReferencingProperty=nullptr)
 
template<typename T >
void AddReferencedObject (TWeakObjectPtr< T > &P, const UObject *ReferencingObject=nullptr, const FProperty *ReferencingProperty=nullptr)
 
COREUOBJECT_API void AddReferencedObject (FWeakObjectPtr &P, const UObject *ReferencingObject=nullptr, const FProperty *ReferencingProperty=nullptr)
 
COREUOBJECT_API void AddReferencedObjects (const UScriptStruct *&ScriptStruct, void *Instance, const UObject *ReferencingObject=nullptr, const FProperty *ReferencingProperty=nullptr)
 
COREUOBJECT_API void AddReferencedObjects (TObjectPtr< const UScriptStruct > &ScriptStruct, void *Instance, const UObject *ReferencingObject=nullptr, const FProperty *ReferencingProperty=nullptr)
 
COREUOBJECT_API void AddReferencedObjects (TWeakObjectPtr< const UScriptStruct > &ScriptStruct, void *Instance, const UObject *ReferencingObject=nullptr, const FProperty *ReferencingProperty=nullptr)
 
COREUOBJECT_API void AddPropertyReferences (const UStruct *Struct, void *Instance, const UObject *ReferencingObject=nullptr)
 
COREUOBJECT_API void AddPropertyReferencesWithStructARO (const UScriptStruct *Struct, void *Instance, const UObject *ReferencingObject=nullptr)
 
COREUOBJECT_API void AddPropertyReferencesWithStructARO (const UClass *Class, void *Instance, const UObject *ReferencingObject=nullptr)
 
COREUOBJECT_API void AddPropertyReferencesLimitedToObjectProperties (const UStruct *Struct, void *Instance, const UObject *ReferencingObject=nullptr)
 
virtual void AllowEliminatingReferences (bool bAllow)
 
virtual void SetSerializedProperty (class FProperty *Inproperty)
 
virtual class FPropertyGetSerializedProperty () const
 
virtual void SetIsProcessingNativeReferences (bool bIsNative)
 
virtual bool IsProcessingNativeReferences () const
 
virtual bool NeedsInitialReferences () const
 
FReferenceCollectorArchiveGetVerySlowReferenceCollectorArchive ()
 

Protected Attributes

FProcessorProcessor
 
UE::GC::FWorkerContextContext
 

Additional Inherited Members

- Protected Member Functions inherited from FReferenceCollector
virtual COREUOBJECT_API void HandleObjectReferences (FObjectPtr *InObjects, const int32 ObjectNum, const UObject *InReferencingObject, const FProperty *InReferencingProperty)
 

Constructor & Destructor Documentation

◆ FCollector()

template<typename Derived >
template<bool bNeedsPropertyReferencer = false>
UE::ReferenceChainSearch::TReferenceSearchBase< Derived >::FCollector< bNeedsPropertyReferencer >::FCollector ( FProcessor InProcessor,
FGCArrayStruct InContext 
)
inline

Member Function Documentation

◆ HandleObjectReference()

template<typename Derived >
template<bool bNeedsPropertyReferencer = false>
virtual void UE::ReferenceChainSearch::TReferenceSearchBase< Derived >::FCollector< bNeedsPropertyReferencer >::HandleObjectReference ( UObject *&  InObject,
const UObject InReferencingObject,
const FProperty InReferencingProperty 
)
inlineoverridevirtual

Handle object reference. Called by AddReferencedObject.

Parameters
ObjectReferenced object.
ReferencingObjectReferencing object (if available).
ReferencingPropertyReferencing property (if available).

Implements FReferenceCollector.

◆ HandleObjectReferences()

template<typename Derived >
template<bool bNeedsPropertyReferencer = false>
virtual void UE::ReferenceChainSearch::TReferenceSearchBase< Derived >::FCollector< bNeedsPropertyReferencer >::HandleObjectReferences ( UObject **  InObjects,
int32  ObjectNum,
const UObject InReferencingObject,
const FProperty InReferencingProperty 
)
inlineoverridevirtual

Handle multiple object references. Called by AddReferencedObjects. DEFAULT IMPLEMENTATION IS SLOW as it calls HandleObjectReference multiple times. In order to optimize it, provide your own implementation.

Parameters
ObjectReferenced object.
ReferencingObjectReferencing object (if available).
ReferencingPropertyReferencing property (if available).

Reimplemented from FReferenceCollector.

◆ IsIgnoringArchetypeRef()

template<typename Derived >
template<bool bNeedsPropertyReferencer = false>
virtual bool UE::ReferenceChainSearch::TReferenceSearchBase< Derived >::FCollector< bNeedsPropertyReferencer >::IsIgnoringArchetypeRef ( ) const
inlineoverridevirtual

If true archetype references should not be added to this collector.

Implements FReferenceCollector.

◆ IsIgnoringTransient()

template<typename Derived >
template<bool bNeedsPropertyReferencer = false>
virtual bool UE::ReferenceChainSearch::TReferenceSearchBase< Derived >::FCollector< bNeedsPropertyReferencer >::IsIgnoringTransient ( ) const
inlineoverridevirtual

If true transient objects should not be added to this collector.

Implements FReferenceCollector.

◆ MarkWeakObjectReferenceForClearing()

template<typename Derived >
template<bool bNeedsPropertyReferencer = false>
virtual bool UE::ReferenceChainSearch::TReferenceSearchBase< Derived >::FCollector< bNeedsPropertyReferencer >::MarkWeakObjectReferenceForClearing ( UObject **  WeakReference,
UObject ReferenceOwner 
)
inlinevirtual

Marks a specific object reference as a weak reference. This does not affect GC but will be freed at a later point The default behavior returns false as weak references must be explicitly supported

Reimplemented from FReferenceCollector.

◆ NeedsPropertyReferencer()

template<typename Derived >
template<bool bNeedsPropertyReferencer = false>
virtual bool UE::ReferenceChainSearch::TReferenceSearchBase< Derived >::FCollector< bNeedsPropertyReferencer >::NeedsPropertyReferencer ( ) const
inlinevirtual

Make Add[OnlyObject]PropertyReference/AddReferencedObjects(UScriptStruct) use AddReferencedObjects(UObject*&) callbacks with ReferencingObject and ReferencingProperty context supplied and check for null references before making a callback.

Return false to use context free AddStableReference callbacks without null checks that avoid sync cache misses when batch processing references.

Reimplemented from FReferenceCollector.

Member Data Documentation

◆ Context

template<typename Derived >
template<bool bNeedsPropertyReferencer = false>
UE::GC::FWorkerContext& UE::ReferenceChainSearch::TReferenceSearchBase< Derived >::FCollector< bNeedsPropertyReferencer >::Context
protected

◆ Processor

template<typename Derived >
template<bool bNeedsPropertyReferencer = false>
FProcessor& UE::ReferenceChainSearch::TReferenceSearchBase< Derived >::FCollector< bNeedsPropertyReferencer >::Processor
protected

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