Added overloaded constructors for FCsvParser which move/copy rather than (move/copy)+move.
Fixed a rather weird const_cast construct.
#rb robert.manuszewski
#preflight 63fcaa40ae54ee4ce90c021b
[CL 24422896 by steve robb in ue5-main branch]
* Added ScriptDelegateFwd.h and put it in the right module (CoreUObject). before fwd declarations was in Core.
* Fixed problem with StructuredArchive forward declaring and used functions that was force inlined in another file. header units did not like this and caused linker errors (and I'm surprised it worked before)
* Various fixes related to how global variables are defined (static for global variables means that they are not visible outside header units)
* Various fixes related to how global functions are defined (static for global functions means that they are not visible outside header units)
* Move some method implementations to cpp file to work around header unit compile crashes (and they should probably be there firstplace)
* Removed *_API on some types to fix header unit linker errors
* Added WITH_EDITOR around code that only compiles in editor config (these headers were not included anywhere but HU can't know that)
#preflight 63f50161ac06ce789f9c34d2
#rb steve.robb
[CL 24348303 by henrik karlsson in ue5-main branch]
* Made code compatible with modules/header units. This includes following things:
* Removed static in front of global functions/variables (static indicates it is hidden outside of module/header unit which is not what many places want...)
* Moved dllexport from type to methods in order to get dllexport of static constexpr fields. This is supposed to work according to microsoft but since it is a good change I don't mind doing it anyway)
* static constexpr -> static constexpr inline for member variables and methods (this makes them available outside module/headerunit)
* Added HEADER_UNIT_IGNORE markup to includes that are circular
* Added HEADER_UNIT_SKIP to files that can't compile by themselves
#preflight 63e2aeba3c44c83044bfcc75
#rb steve.robb
[CL 24066986 by henrik karlsson in ue5-main branch]
Changed replay header version to be a custom version
Changed local file replay streamer version to be a custom version
#jira UE-149900
#preflight 639a40e12540a78d27a7c884
[CL 23836403 by Brian Bekich in ue5-main branch]
#rb Matt.Peters, Devin.Doucette
#jira none
#rnx
#preflight 637b8b4c170bc34a9315a29d
- The array view returned by FCbFieldView uses uint64 as it's size type, but TArray uses the significantly smaller type int32.
- It is very unlikely that we will ever see a truncation here but if it doesn't happen it could create some annoyingly difficult to diagnose bugs.
- We now test to make sure that the data can fit into a TArray before loading it, if not we print an error.
- The error logging is in a private function so that the code can be in the cpp and reduce include pollution in the header, it will also help hide the expanded code from the UE_LOGGING macro.
[CL 23232164 by paul chipchase in ue5-main branch]
Takeaways. Try to use "friend" on functions/operators that are frequently overloaded EXCEPT if they are in a templated type that is frequently instantiated. So do not put friends in TMap, TSet, TObjectPtr etc, this will slow down compile times. There is a break-even somewhere and hard to tell where it is but taking a class that is templatized on character type probably don't matter either way and then it is nicer to use a friend since that simplies error messages when compiler can't resolve functions/operators.
If it is possible to use member functions instead of friend that is the best option in terms of compile time performance. With c++20 you only have to write operator==(Foo, Bar) and the compiler will automatically provide operator==(Bar, Foo), operator!=(Foo, Bar) and operator!=(Bar, Foo).
Changes in this changelist involes
* Making operator<< friends in non-template types and not friends in template types
* Making operator==/!= members where possible and if not possible moved out if type is a frequently instantiated templated type.
#preflight 636970f5376a9cd6a80da54a
#rb steve.robb
[CL 23038965 by henrik karlsson in ue5-main branch]