77template <
typename FModifier,
typename FAllocOp>
81 using FModifier::ShouldRecordAlloc;
82 using FModifier::HandleFatalError;
83 using FModifier::HandleDisplayMessage;
87 if (NumCharacters > 0 && NumCharacters <
MAX_SPRINTF)
108 HandleFatalError(*FString::Printf(
TEXT(
"Failed to create allocation log file \"%s\". Capture will not start."), *Filename));
125 return Op.AllocIndex;
137 Op.AllocIndex = AllocIndex;
172template <
typename FModifier,
typename FAllocOp>
179 using FModifier::HandleFatalError;
180 using FModifier::HandleErrorMessage;
181 using FModifier::OnPlaybackStart;
182 using FModifier::OnPlaybackEnd;
183 using FModifier::OnNewPlaybackFrame;
184 using FModifier::OnEndPlaybackFrame;
185 using FModifier::OnFree;
186 using FModifier::OnAlloc;
187 using FModifier::IsValidAllocation;
208 for (
int32 LineIndex = 1; LineIndex <
AllocLog.Num(); ++LineIndex)
247 const int32 OpCount = FMath::Min(MaxOpCount,
Ops.
Num());
251 for (
int32 Iteration = 0; Iteration < NumIterations; ++Iteration)
253 for (
int32 OpIndex = 0; OpIndex < OpCount; ++OpIndex)
284 HandleErrorMessage(*FString::Printf(
TEXT(
"Duplicated allocation with index %lld found. This should not happen. The log may be corrupted."), Op.AllocIndex));
#define MAX_SPRINTF
Definition CString.h:15
uint32 GFrameNumberRenderThread
Definition CoreGlobals.cpp:427
@ INDEX_NONE
Definition CoreMiscDefines.h:150
SharedPointerInternals::TRawPtrProxy< ObjectType > MakeShareable(ObjectType *InObject)
Definition SharedPointer.h:1947
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
FRWLock Lock
Definition UnversionedPropertySerialization.cpp:921
virtual void Serialize(void *V, int64 Length)
Definition Archive.h:1689
Definition ScopeLock.h:141
static CORE_API IFileManager & Get()
Definition FileManagerGeneric.cpp:1072
Definition AllocLogRecordingPlayback.h:174
TArray< FAllocOp > Ops
Definition AllocLogRecordingPlayback.h:190
typename FModifier::FAllocType FAllocType
Definition AllocLogRecordingPlayback.h:177
void Load(FString &Filename)
Definition AllocLogRecordingPlayback.h:199
typename FAllocOp::FFilterType FFilterType
Definition AllocLogRecordingPlayback.h:176
void Play(int32 MaxOpCount=INT32_MAX)
Definition AllocLogRecordingPlayback.h:244
FFilterType CurrentFilter
Definition AllocLogRecordingPlayback.h:189
TAllocPlaybackLog(FFilterType InFilter, ArgTypes &&... Args)
Definition AllocLogRecordingPlayback.h:194
Definition AllocLogRecordingPlayback.h:79
FCriticalSection CS
Definition AllocLogRecordingPlayback.h:94
ANSICHAR LineBuffer[MAX_SPRINTF]
Definition AllocLogRecordingPlayback.h:97
void WriteLineBuffer(int32 NumCharacters)
Definition AllocLogRecordingPlayback.h:85
TSharedPtr< FArchive > OutputFile
Definition AllocLogRecordingPlayback.h:95
void RecordFree(int64 AllocIndex)
Definition AllocLogRecordingPlayback.h:130
int64 RecordAlloc(ArgTypes &&... Args)
Definition AllocLogRecordingPlayback.h:115
int64 CurrentAllocationIndex
Definition AllocLogRecordingPlayback.h:93
TAllocRecordingLog(const FString &Filename, ArgTypes &&... Args)
Definition AllocLogRecordingPlayback.h:101
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
UE_NODEBUG UE_FORCEINLINE_HINT bool Find(const ElementType &Item, SizeType &Index) const
Definition Array.h:1302
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition AllocLogRecordingPlayback.h:19
bool bIsFree
Definition AllocLogRecordingPlayback.h:22
int32 FrameNumber
Definition AllocLogRecordingPlayback.h:21
int64 AllocIndex
Definition AllocLogRecordingPlayback.h:20
int32 WriteValueStrings(ANSICHAR *Dest) const
Definition AllocLogRecordingPlayback.h:29
static int32 WriteHeader(ANSICHAR *Dest)
Definition AllocLogRecordingPlayback.h:24
int32 ParseValueStrings(const TArray< FString > &ValueStrings)
Definition AllocLogRecordingPlayback.h:34
static CORE_API bool LoadFileToStringArray(TArray< FString > &Result, const TCHAR *Filename)
Definition FileHelper.cpp:302
static UE_FORCEINLINE_HINT int32 Atoi(const CharType *String)
Definition CString.h:1173
static UE_FORCEINLINE_HINT int64 Atoi64(const CharType *String)
Definition CString.h:1179
static int32 Sprintf(CharType *Dest, const FmtType &Fmt, Types... Args)
Definition CString.h:569