Introduce versioning system to GENERATED_*BODY macros
Search for existing functions using case sensitive and whole word match.
Move checks for existing of *_Validate and *_Implementation functions to *generated.cpp to allow changing that code in hotfixes.
#codereview Robert.Manuszewski
[CL 2508131 by Mikolaj Sieluzycki in Main branch]
Rob asked me to back out GENERATED_*_BODY -> GENERATED_BODY change for now until the "_Validate and _Implementation auto-generation" discussion is over.
#codereview Robert.Manuszewski
[CL 2481343 by Jaroslaw Palczynski in Main branch]
We've changed the way vtable ptr are obtained for UClasses. Right now we use special empty constructor to get it, so we don't have to use normal one which was causing troubles. This special vtable helper constructor is generated automatically for most cases, but sometimes it's not possible (e.g. no default constructor for members types). In such case there is a possibility to override that generated constructor and write a custom one. The signature is UCustomClass::UCustomClass(FVTableHelper& Helper) and it needs to call base class'es constructor with the same parameter. Please do not use these constructors for anything else. There is no guarantee the object will be in correct state after calling this.
You can still disable this functionality if something breaks, just set WITH_HOT_RELOAD_CTORS to 0.
[CL 2466152 by Jaroslaw Palczynski in Main branch]
UE-4916
#change Replaced CLASS_Temporary (UHT-only flag) with CLASS_Constructed to check if a class needs to be constructed or not in generated code
#change Modified code generator to make sure UClasses don't get reconstructed if not required
[CL 2351525 by Robert Manuszewski in Main branch]
In order to use new feature user have to change GENERATED_UCLASS_BODY() macro to the new GENERATED_BODY(). Then no constructor is implicitly declared. If there is no constructor declared in UCLASS then PCIP one is declared and defined that passes PCIP down to super-class. On the other hand if there is a constructor declared then UObject system expects to have one of the default or PCIP constructor to initialize a class during loading from disk, default object creation, etc. and it expects that user will declare and define one.
There is a possibility now to create UCLASS with the default constructor (i.e. no PCIP).
New macro is encouraged by standard classes and in-editor wizards templates.
#codereview Robert.Manuszewski
[CL 2325282 by Jaroslaw Palczynski in Main branch]
EPropertyReferenceFlags removed too, because it is unused.
#ttp 329394: UHT: Support the C++ "enum class" syntax for UENUMs
#codereview robert.manuszewski
[CL 2252907 by Steve Robb in Main branch]
#ttp 331467: Make UHT not depend on CoreUObject
#change GScriptHelper made an object instead of a heap-allocated pointer.
#change NameLookupCPP made an object instead of a heap-allocated pointer.
#add FClasses::FindAnyClass added.
#change FClasses construction moved earlier.
#change FClass::GetInnerClass added.
#change More UClasses changed to FClasses.
#codereview robert.manuszewski
[CL 2091696 by Steve Robb in Main branch]