UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
uLang::CToolchain Class Reference

#include <Toolchain.h>

+ Inheritance diagram for uLang::CToolchain:

Public Member Functions

UE_API SBuildResults BuildProject (const CSourceProject &SourceProject, const SBuildContext &BuildContext, const SProgramContext &ProgramContext)
 
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)
 
UE_API ECompilerResult CompileVst (const TSRef< Verse::Vst::Project > &Vst, const SBuildContext &BuildContext, const SProgramContext &ProgramContext)
 
UE_API ECompilerResult SemanticAnalyzeVst (TOptional< TSRef< CSemanticProgram > > &OutProgram, const TSRef< Verse::Vst::Project > &Vst, const SBuildContext &BuildContext, const SProgramContext &ProgramContext)
 
UE_API ECompilerResult ExtractLocalization (const TSRef< CSemanticProgram > &Program, const SBuildContext &BuildContext, const SProgramContext &ProgramContext)
 
UE_API ECompilerResult IrGenerateProgram (const TSRef< CSemanticProgram > &Program, const SBuildContext &BuildContext, const SProgramContext &ProgramContext)
 
UE_API ECompilerResult AssembleProgram (const TSRef< CSemanticProgram > &Program, const SBuildContext &BuildContext, const SProgramContext &ProgramContext)
 
UE_API ELinkerResult Link (const SBuildContext &BuildContext, const SProgramContext &ProgramContext)
 
const TOptional< TSRef< IParserPass > > & GetParser () const
 
const TSRefArray< IPostVstFilter > & GetPostVstFilters () const
 
const TOptional< TSRef< ISemanticAnalyzerPass > > & GetSemanticAnalyzer () const
 
const TSRefArray< IPostSemanticAnalysisFilter > & GetPostSemanticAnalysisFilters () const
 
const TSRefArray< IPostIrFilter > & GetPostIrFilters () const
 
const TOptional< TSRef< IAssemblerPass > > & GetAssembler () const
 
const TSPtr< Verse::Vst::Project > & GetProjectVst () const
 
void SetProjectVst (const TSRef< Verse::Vst::Project > &NewProject)
 
UE_API TArray< FSolLocalizationInfoTakeLocalizationInfo ()
 
UE_API TArray< FSolLocalizationInfoTakeStringInfo ()
 
- Public Member Functions inherited from uLang::CSharedMix
 CSharedMix ()
 
virtual UE_API ~CSharedMix ()
 
 CSharedMix (const CSharedMix &Other)=delete
 
CSharedMixoperator= (const CSharedMix &Other)=delete
 
uint32_t GetRefCount () const
 

Friends

VERSECOMPILER_API TSRef< CToolchainCreateToolchain (const SToolchainParams &Params)
 

Additional Inherited Members

- Static Protected Member Functions inherited from uLang::CSharedMix
template<class ObjectType >
static TSPtrG< ObjectType, false, CHeapRawAllocatorSharedThis (ObjectType *This)
 
template<class ObjectType >
static TSPtrG< const ObjectType, false, CHeapRawAllocatorSharedThis (const ObjectType *This)
 

Detailed Description

The compiler toolchain, which has five stages of compilation. It's structured as a layered, multi-stage compiler API. Each stage is interchangeable, which means the frontend and the backend are retargetable.

This class needs to be assembled by the Toolchain Loader, which uses the Modular Features to find a module or modules that implement the five stages of the compiler. This also lets the user mix in various optimizing passes (post-Vst filters), or bytecode packing (post-expression filters) from any source.

Member Function Documentation

◆ AssembleProgram()

ECompilerResult uLang::CToolchain::AssembleProgram ( const TSRef< CSemanticProgram > &  Program,
const SBuildContext BuildContext,
const SProgramContext ProgramContext 
)

Run semantic analysis and code generation on a given Vst snippet Steps:

  1. Pre translate injections
  2. Assembler (code generation)

◆ BuildProject()

SBuildResults uLang::CToolchain::BuildProject ( const CSourceProject SourceProject,
const SBuildContext BuildContext,
const SProgramContext ProgramContext 
)

Compile and link all text snippets in the given project

◆ CompileVst()

ECompilerResult uLang::CToolchain::CompileVst ( const TSRef< Verse::Vst::Project > &  Vst,
const SBuildContext BuildContext,
const SProgramContext ProgramContext 
)

Run SemanticAnalyzeVst and AssembleProgram on an Vst.

◆ ExtractLocalization()

ECompilerResult uLang::CToolchain::ExtractLocalization ( const TSRef< CSemanticProgram > &  Program,
const SBuildContext BuildContext,
const SProgramContext ProgramContext 
)

Extract localization information.

◆ GetAssembler()

const TOptional< TSRef< IAssemblerPass > > & uLang::CToolchain::GetAssembler ( ) const
inline

◆ GetParser()

const TOptional< TSRef< IParserPass > > & uLang::CToolchain::GetParser ( ) const
inline

Accessors for the various stages of the compiler. Most users will never actually need to grab these stages individual, but in the cases where you need to do partial compilation, they can be useful to manually run

◆ GetPostIrFilters()

const TSRefArray< IPostIrFilter > & uLang::CToolchain::GetPostIrFilters ( ) const
inline

◆ GetPostSemanticAnalysisFilters()

const TSRefArray< IPostSemanticAnalysisFilter > & uLang::CToolchain::GetPostSemanticAnalysisFilters ( ) const
inline

◆ GetPostVstFilters()

const TSRefArray< IPostVstFilter > & uLang::CToolchain::GetPostVstFilters ( ) const
inline

◆ GetProjectVst()

const TSPtr< Verse::Vst::Project > & uLang::CToolchain::GetProjectVst ( ) const
inline

◆ GetSemanticAnalyzer()

const TOptional< TSRef< ISemanticAnalyzerPass > > & uLang::CToolchain::GetSemanticAnalyzer ( ) const
inline

◆ IrGenerateProgram()

ECompilerResult uLang::CToolchain::IrGenerateProgram ( const TSRef< CSemanticProgram > &  Program,
const SBuildContext BuildContext,
const SProgramContext ProgramContext 
)

Run IR generation on a given Ast snippet. Steps:

  1. IR generation
  2. (future lenient analysis)

◆ Link()

ELinkerResult uLang::CToolchain::Link ( const SBuildContext BuildContext,
const SProgramContext ProgramContext 
)

Run linker (not currently used)

◆ ParseSnippet()

ECompilerResult uLang::CToolchain::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 
)

Parse a snippet of text and return the resulting Vst snippet Steps:

  1. Pre parse injections (from both toolchain and build context)
  2. Parse
  3. Post Vst filters
  4. Post parse injections (from both toolchain and build context)

◆ SemanticAnalyzeVst()

ECompilerResult uLang::CToolchain::SemanticAnalyzeVst ( TOptional< TSRef< CSemanticProgram > > &  OutProgram,
const TSRef< Verse::Vst::Project > &  Vst,
const SBuildContext BuildContext,
const SProgramContext ProgramContext 
)

Run semantic analysis on a given Vst snippet Steps:

  1. Pre semantic analysis injections (from both toolchain and build context)
  2. Semantic analysis
  3. Post expression filters
  4. Post semantic analysis injections (from both toolchain and build context)

◆ SetProjectVst()

void uLang::CToolchain::SetProjectVst ( const TSRef< Verse::Vst::Project > &  NewProject)
inline

Directly sets the cached VST project to the new project specified.

Warning: doing this will cause the previously cached VST project's destructor to be called, which means that any AST nodes that still hold references to the VST nodes within will now have those references be invalidated. The only time you should use this is if you don't care about the previous VST project anymore and its accompanying AST either.

Parameters
NewProjectThe new project to store.

◆ TakeLocalizationInfo()

TArray< FSolLocalizationInfo > uLang::CToolchain::TakeLocalizationInfo ( )

◆ TakeStringInfo()

TArray< FSolLocalizationInfo > uLang::CToolchain::TakeStringInfo ( )

Friends And Related Symbol Documentation

◆ CreateToolchain

VERSECOMPILER_API TSRef< CToolchain > CreateToolchain ( const SToolchainParams Params)
friend

The documentation for this class was generated from the following files: