UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
InstanceCounter.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "Containers/Map.h"
6#include "CoreTypes.h"
9#include "Misc/Build.h"
10#include "UObject/NameTypes.h"
11
12class FOutputDevice;
13
14/*
15 A helper object for counting instances of struct or classes for debugging
16 purposes, e.g. to get an absolute count of the number of "Foo"'s in existence
17
18 Suggested use
19
20 class UFoo
21 {
22 public:
23 // etc etc
24
25 protected:
26 COUNT_INSTANCES(FTypeIWantToCount)
27 };
28
29*/
31{
32public:
33
39
44
47
static CORE_API int32 GetInstanceCount(const TCHAR* Name);
54
static CORE_API void LogCounts(FOutputDevice& OutputDevice);
62
63protected:
64
67
70
71protected:
72
75
76 // Log increment/decrement?
77 bool DoLog;
78
87
94};
95
96
97#if !UE_BUILD_SHIPPING
98
102 #define COUNT_INSTANCES(TypeName) \
103 struct FCount##TypeName : FInstanceCountingObject { FCount##TypeName() : FInstanceCountingObject(TEXT(PREPROCESSOR_TO_STRING(TypeName))) {} }; FCount##TypeName TypeName##Count;
104
108 #define COUNT_INSTANCES_AND_LOG(TypeName) \
109 struct FCount##TypeName : FInstanceCountingObject { FCount##TypeName() : FInstanceCountingObject(TEXT(PREPROCESSOR_TO_STRING(TypeName)), true) {} }; FCount##TypeName TypeName##Count;
110
111
112#else
113
114 #define COUNT_INSTANCES(TypeName)
115 #define COUNT_INSTANCES_AND_LOG(TypeName)
116
117#endif // SHIPPING
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
Definition InstanceCounter.h:31
static CORE_API FGlobalVars & GetGlobals()
Definition InstanceCounter.cpp:21
static CORE_API FGlobalVars * Globals
Definition InstanceCounter.h:92
static CORE_API int32 GetInstanceCount(const TCHAR *Name)
Definition InstanceCounter.cpp:88
FName Name
Definition InstanceCounter.h:74
virtual CORE_API ~FInstanceCountingObject()
Definition InstanceCounter.cpp:44
CORE_API void DecrementStats()
Definition InstanceCounter.cpp:68
bool DoLog
Definition InstanceCounter.h:77
CORE_API void IncrementStats()
Definition InstanceCounter.cpp:49
static CORE_API void LogCounts(FOutputDevice &OutputDevice)
Definition InstanceCounter.cpp:95
Definition NameTypes.h:617
Definition OutputDevice.h:133
Definition UnrealString.h.inl:34
Definition InstanceCounter.h:83
FCriticalSection Mutex
Definition InstanceCounter.h:85
TMap< FName, int32 > InstanceCounts
Definition InstanceCounter.h:84