You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#rb Zousar.Shaker #rnx #ROBOMERGE-SOURCE: CL 17083958 in //UE5/Main/... #ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v853-17066230) [CL 17083970 by devin doucette in ue5-release-engine-test branch]
100 lines
3.8 KiB
C++
100 lines
3.8 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "Containers/StringFwd.h"
|
|
#include "Logging/LogMacros.h"
|
|
#include "Misc/AsciiSet.h"
|
|
|
|
struct FGuid;
|
|
|
|
template <typename FuncType> class TUniqueFunction;
|
|
|
|
namespace UE::DerivedData { class FBuildAction; }
|
|
namespace UE::DerivedData { class FBuildActionBuilder; }
|
|
namespace UE::DerivedData { class FBuildDefinition; }
|
|
namespace UE::DerivedData { class FBuildDefinitionBuilder; }
|
|
namespace UE::DerivedData { class FBuildInputsBuilder; }
|
|
namespace UE::DerivedData { class FBuildOutputBuilder; }
|
|
namespace UE::DerivedData { class FBuildSession; }
|
|
namespace UE::DerivedData { class FOptionalBuildInputs; }
|
|
namespace UE::DerivedData { class IBuild; }
|
|
namespace UE::DerivedData { class IBuildFunctionRegistry; }
|
|
namespace UE::DerivedData { class IBuildInputResolver; }
|
|
namespace UE::DerivedData { class IBuildScheduler; }
|
|
namespace UE::DerivedData { class IBuildWorkerRegistry; }
|
|
namespace UE::DerivedData { class ICache; }
|
|
namespace UE::DerivedData { class IRequestOwner; }
|
|
namespace UE::DerivedData { struct FBuildJobCompleteParams; }
|
|
namespace UE::DerivedData { struct FBuildKey; }
|
|
namespace UE::DerivedData { enum class EBuildPolicy : uint8; }
|
|
namespace UE::DerivedData { using FOnBuildJobComplete = TUniqueFunction<void (FBuildJobCompleteParams&& Params)>; }
|
|
|
|
namespace UE::DerivedData::Private
|
|
{
|
|
|
|
DECLARE_LOG_CATEGORY_EXTERN(LogDerivedDataBuild, Log, All);
|
|
|
|
// Implemented in DerivedDataBuild.cpp
|
|
IBuild* CreateBuild(ICache& Cache);
|
|
|
|
// Implemented in DerivedDataBuildFunctionRegistry.cpp
|
|
IBuildFunctionRegistry* CreateBuildFunctionRegistry();
|
|
|
|
// Implemented in DerivedDataBuildWorkerRegistry.cpp
|
|
IBuildWorkerRegistry* CreateBuildWorkerRegistry();
|
|
|
|
// Implemented in DerivedDataBuildScheduler.cpp
|
|
IBuildScheduler* CreateBuildScheduler();
|
|
|
|
// Implemented in DerivedDataBuildDefinition.cpp
|
|
FBuildDefinitionBuilder CreateBuildDefinition(FStringView Name, FStringView Function);
|
|
|
|
// Implemented in DerivedDataBuildAction.cpp
|
|
FBuildActionBuilder CreateBuildAction(FStringView Name, FStringView Function, const FGuid& FunctionVersion, const FGuid& BuildSystemVersion);
|
|
|
|
// Implemented in DerivedDataBuildInput.cpp
|
|
FBuildInputsBuilder CreateBuildInputs(FStringView Name);
|
|
|
|
// Implemented in DerivedDataBuildOutput.cpp
|
|
FBuildOutputBuilder CreateBuildOutput(FStringView Name, FStringView Function);
|
|
|
|
// Implemented in DerivedDataBuildSession.cpp
|
|
FBuildSession CreateBuildSession(
|
|
FStringView Name,
|
|
ICache& Cache,
|
|
IBuild& BuildSystem,
|
|
IBuildScheduler& Scheduler,
|
|
IBuildInputResolver* InputResolver);
|
|
|
|
// Implemented in DerivedDataBuildJob.cpp
|
|
struct FBuildJobCreateParams
|
|
{
|
|
ICache& Cache;
|
|
IBuild& BuildSystem;
|
|
IBuildScheduler& Scheduler;
|
|
IBuildInputResolver* InputResolver{};
|
|
IRequestOwner& Owner;
|
|
EBuildPolicy Policy{};
|
|
};
|
|
void CreateBuildJob(const FBuildJobCreateParams& Params, const FBuildKey& Key, FOnBuildJobComplete&& OnComplete);
|
|
void CreateBuildJob(const FBuildJobCreateParams& Params, const FBuildDefinition& Definition, FOnBuildJobComplete&& OnComplete);
|
|
void CreateBuildJob(const FBuildJobCreateParams& Params, const FBuildAction& Action, const FOptionalBuildInputs& Inputs, FOnBuildJobComplete&& OnComplete);
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
inline bool IsValidBuildFunctionName(FStringView Function)
|
|
{
|
|
constexpr FAsciiSet Valid("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
|
|
return !Function.IsEmpty() && FAsciiSet::HasOnly(Function, Valid);
|
|
}
|
|
|
|
inline void AssertValidBuildFunctionName(FStringView Function, FStringView Name)
|
|
{
|
|
checkf(IsValidBuildFunctionName(Function),
|
|
TEXT("A build function name must be alphanumeric and non-empty for build of '%.*s' by '%.*s'."),
|
|
Name.Len(), Name.GetData(), Function.Len(), Function.GetData());
|
|
}
|
|
|
|
} // UE::DerivedData::Private
|