UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Toolchain.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
6#include "uLang/Common/Misc/EnumUtils.h" // for ULANG_ENUM_BIT_FLAGS()
16#include "uLang/Syntax/VstNode.h" // for Vst::Node
20
21#define UE_API VERSECOMPILER_API
22
23namespace uLang
24{
25
26 // Forward declarations
27 class CToolchain;
28 class CUTF8StringView;
29
91
93
118
123
135
136 /* Compiler+Linker toolchain
137 **************************************************************************/
138
149 class CToolchain : public CSharedMix
150 {
151 public:
156
168 const uint32_t VerseVersion = Verse::Version::Default,
169 const uint32_t UploadedAtFNVersion = VerseFN::UploadedAtFNVersion::Latest);
170
175
185
190
198
206
211
217 const TOptional<TSRef<IParserPass>>& GetParser() const { return _Params.Parser; }
222 const TOptional<TSRef<IAssemblerPass>>& GetAssembler() const { return _Params.Assembler; }
223 const TSPtr<Verse::Vst::Project>& GetProjectVst() const { return _ProjectVst; }
224
236 {
237 this->_ProjectVst = NewProject;
238 }
239
240 // Take localization information, i.e, it removes it from this object.
242
243 // Take string information, i.e, it removes it from this object.
245
246 private:
248 friend TSRef<CToolchain>;
249 UE_API CToolchain(const SToolchainParams& Params); // use CreateToolchain() to construct
250
251 struct SOrderedPackage
252 {
253 const CSourcePackage* _Package = nullptr;
254 int32_t _DependencyDepth = -1;
255 };
256
257 // Build a list of packages ordered by dependency depth
258 // Returns true if successful, or false if glitches were encountered
259 UE_API bool BuildOrderedPackageList(const CSourceProject& SourceProject, const SBuildContext& BuildContext, TArray<SOrderedPackage>& OutOrderedPackageList) const;
260
261 SToolchainParams _Params;
262
263 TSPtr<Verse::Vst::Project> _ProjectVst;
264
265 // Localization and string information stored here.
266 TArray<FSolLocalizationInfo> _LocalizationInfo;
268 };
269}
270
271#undef UE_API
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ULANG_ENUM_BIT_FLAGS(Enum,...)
Definition EnumUtils.h:6
#define UE_API
Definition SColorGradingComponentViewer.h:12
#define ULANG_FORCEINLINE
Definition Common.h:188
Definition Array.h:670
Definition SharedPointer.h:28
Definition SourceProject.h:103
Definition SourceProject.h:275
Definition Toolchain.h:150
const TSRefArray< IPostIrFilter > & GetPostIrFilters() const
Definition Toolchain.h:221
UE_API ECompilerResult ParseSnippet(const uLang::TSRef< Verse::Vst::Snippet > &OutVst, const CUTF8StringView &TextSnippet, const SBuildContext &BuildContext, const uint32_t VerseVersion=Verse::Version::Default, const uint32_t UploadedAtFNVersion=VerseFN::UploadedAtFNVersion::Latest)
Definition Toolchain.cpp:395
UE_API ECompilerResult AssembleProgram(const TSRef< CSemanticProgram > &Program, const SBuildContext &BuildContext, const SProgramContext &ProgramContext)
Definition Toolchain.cpp:560
UE_API ECompilerResult IrGenerateProgram(const TSRef< CSemanticProgram > &Program, const SBuildContext &BuildContext, const SProgramContext &ProgramContext)
Definition Toolchain.cpp:535
UE_API TArray< FSolLocalizationInfo > TakeStringInfo()
Definition Toolchain.cpp:530
const TSRefArray< IPostVstFilter > & GetPostVstFilters() const
Definition Toolchain.h:218
const TOptional< TSRef< IAssemblerPass > > & GetAssembler() const
Definition Toolchain.h:222
UE_API SBuildResults BuildProject(const CSourceProject &SourceProject, const SBuildContext &BuildContext, const SProgramContext &ProgramContext)
Definition Toolchain.cpp:190
UE_API ECompilerResult ExtractLocalization(const TSRef< CSemanticProgram > &Program, const SBuildContext &BuildContext, const SProgramContext &ProgramContext)
Definition Toolchain.cpp:518
const TOptional< TSRef< IParserPass > > & GetParser() const
Definition Toolchain.h:217
UE_API ECompilerResult CompileVst(const TSRef< Verse::Vst::Project > &Vst, const SBuildContext &BuildContext, const SProgramContext &ProgramContext)
Definition Toolchain.cpp:442
UE_API ECompilerResult SemanticAnalyzeVst(TOptional< TSRef< CSemanticProgram > > &OutProgram, const TSRef< Verse::Vst::Project > &Vst, const SBuildContext &BuildContext, const SProgramContext &ProgramContext)
Definition Toolchain.cpp:469
const TOptional< TSRef< ISemanticAnalyzerPass > > & GetSemanticAnalyzer() const
Definition Toolchain.h:219
UE_API TArray< FSolLocalizationInfo > TakeLocalizationInfo()
Definition Toolchain.cpp:525
friend VERSECOMPILER_API TSRef< CToolchain > CreateToolchain(const SToolchainParams &Params)
Definition Toolchain.cpp:145
const TSRefArray< IPostSemanticAnalysisFilter > & GetPostSemanticAnalysisFilters() const
Definition Toolchain.h:220
void SetProjectVst(const TSRef< Verse::Vst::Project > &NewProject)
Definition Toolchain.h:235
const TSPtr< Verse::Vst::Project > & GetProjectVst() const
Definition Toolchain.h:223
Definition UTF8StringView.h:15
Definition Array.h:51
Definition SharedPointerArray.h:21
Definition SharedPointer.h:77
Definition tLang.cpp:1785
Definition VVMEngineEnvironment.h:23
ULANG_FORCEINLINE bool IsCompileComplete(ECompilerResult E)
Definition Toolchain.h:122
ULANG_FORCEINLINE bool IsCompileIncomplete(ECompilerResult E)
Definition Toolchain.h:121
bool Enum_HasAnyFlags(Enum Flags, Enum Contains)
Definition EnumUtils.h:26
TSRef< CToolchain > CreateToolchain(const SToolchainParams &Params)
Definition Toolchain.cpp:145
ECompilerResult
Definition Toolchain.h:95
ULANG_FORCEINLINE bool IsAbortedCompile(ECompilerResult E)
Definition Toolchain.h:120
ELinkerResult
Definition IAssemblerPass.h:11
ULANG_FORCEINLINE bool IsCompileFailure(ECompilerResult E)
Definition Toolchain.h:119
Definition DetourTileCache.cpp:72
Definition CompilerTypes.h:170
Definition Toolchain.h:125
ELinkerResult _LinkerResult
Definition Toolchain.h:133
VERSECOMPILER_API bool HasFailure() const
Definition Toolchain.cpp:150
SBuildResults & operator|=(const SBuildResults &Other)
Definition Toolchain.cpp:155
SBuildStatistics _Statistics
Definition Toolchain.h:129
bool _IOErrorsFound
Definition Toolchain.h:131
ECompilerResult _CompilerResult
Definition Toolchain.h:132
Various statistics for a given build that can be used in analytics.
Definition Diagnostics.h:34
Definition CompilerTypes.h:194
Definition CompilerTypes.h:16
Definition Toolchain.h:31
TOptional< TSRef< IAssemblerPass > > Assembler
Definition Toolchain.h:84
TSRefArray< IPostIrFilter > PostIrFilters
Definition Toolchain.h:70
TSRefArray< IPostSemanticAnalysisFilter > PostSemanticAnalysisFilters
Definition Toolchain.h:63
SToolchainInjections LayerInjections
Definition Toolchain.h:89
TSRefArray< IPostVstFilter > PostVstFilters
Definition Toolchain.h:48
TOptional< TSRef< ISemanticAnalyzerPass > > SemanticAnalyzer
Definition Toolchain.h:56
TOptional< TSRef< IParserPass > > Parser
Definition Toolchain.h:38
TOptional< TSRef< IIrGeneratorPass > > IrGenerator
Definition Toolchain.h:76
Definition Optional.h:23