UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Change.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
7#include "HAL/Platform.h"
8#include "HAL/PlatformCrt.h"
10#include "Templates/UniquePtr.h"
12
15class UObject;
16
32{
33
34public:
35 enum class EChangeStyle
36 {
37 InPlaceSwap, // Call Execute() which returns new "opposite" FChange (default)
38 CommandPattern // call Revert() to Undo and Apply() to Redo
39 };
40
43
46
48 virtual void Apply( UObject* Object ) = 0;
49
51 virtual void Revert( UObject* Object ) = 0;
52
54 virtual bool HasExpired( UObject* Object ) const { return false; }
55
57 virtual void AddReferencedObjects( FReferenceCollector& Collector ) { }
58
60 virtual FString ToString() const = 0;
61
63 CORE_API virtual void PrintToLog( FFeedbackContext& FeedbackContext, const int32 IndentLevel = 0 );
64
82 virtual SIZE_T GetSize() const { return 0; }
83
85 virtual ~FChange()
86 {
87 }
88
89protected:
90
93 {
94 }
95
96private:
97 // Non-copyable
98 FChange( const FChange& ) = delete;
99 FChange& operator=( const FChange& ) = delete;
100
101};
102
103
104
111class FSwapChange : public FChange
112{
113
114public:
116 {
118 }
119
121 virtual void Apply(UObject* Object) final
122 {
123 check(false);
124 }
125
127 virtual void Revert(UObject* Object) final
128 {
129 check(false);
130 }
131
132};
133
134
140{
141
142public:
144 {
146 }
147
149 {
150 check(false);
151 return nullptr;
152 }
153
154};
155
156
157
158
159
160
162{
164 {
165 }
166
168 : Subchanges( MoveTemp( RHS.Subchanges ) )
169 {
170 }
171
174
175private:
176 // Non-copyable
178 FCompoundChangeInput& operator=( const FCompoundChangeInput& ) = delete;
179};
180
181
182
188{
189
190public:
191
194 : Input( MoveTemp( InitInput ) )
195 {
196 }
197
198 // Parent class overrides
200 CORE_API virtual FString ToString() const override;
201 CORE_API virtual void PrintToLog( class FFeedbackContext& FeedbackContext, const int32 IndentLevel = 0 ) override;
202
203
204private:
205
208
209private:
210 // Non-copyable
211 FCompoundChange( const FCompoundChange& ) = delete;
212 FCompoundChange& operator=( const FCompoundChange& ) = delete;
213
214};
215
216
#define check(expr)
Definition AssertionMacros.h:314
FPlatformTypes::SIZE_T SIZE_T
An unsigned integer the same size as a pointer, the same as UPTRINT.
Definition Platform.h:1150
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_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition Change.h:32
virtual void Apply(UObject *Object)=0
virtual EChangeStyle GetChangeType()=0
virtual ~FChange()
Definition Change.h:85
virtual CORE_API void PrintToLog(FFeedbackContext &FeedbackContext, const int32 IndentLevel=0)
Definition Change.cpp:11
virtual void AddReferencedObjects(FReferenceCollector &Collector)
Definition Change.h:57
FChange()
Definition Change.h:92
virtual SIZE_T GetSize() const
Definition Change.h:82
virtual void Revert(UObject *Object)=0
virtual bool HasExpired(UObject *Object) const
Definition Change.h:54
EChangeStyle
Definition Change.h:36
virtual FString ToString() const =0
virtual TUniquePtr< FChange > Execute(UObject *Object)=0
Definition Change.h:140
virtual EChangeStyle GetChangeType() final
Definition Change.h:143
virtual TUniquePtr< FChange > Execute(UObject *Object) final
Definition Change.h:148
Definition Change.h:188
virtual CORE_API FString ToString() const override
Definition Change.cpp:46
FCompoundChange(FCompoundChangeInput &&InitInput)
Definition Change.h:193
virtual CORE_API void PrintToLog(class FFeedbackContext &FeedbackContext, const int32 IndentLevel=0) override
Definition Change.cpp:82
Definition FeedbackContext.h:30
Definition UObjectGlobals.h:2492
Definition Change.h:112
virtual EChangeStyle GetChangeType() final
Definition Change.h:115
virtual void Revert(UObject *Object) final
Definition Change.h:127
virtual void Apply(UObject *Object) final
Definition Change.h:121
Definition Array.h:670
Definition UniquePtr.h:107
Definition Object.h:95
Definition Change.h:162
TArray< TUniquePtr< FChange > > Subchanges
Definition Change.h:173
FCompoundChangeInput()
Definition Change.h:163
FCompoundChangeInput(FCompoundChangeInput &&RHS)
Definition Change.h:167