ArticyXImporter
ArticyXImporter for Unreal Engine
Loading...
Searching...
No Matches
CodeGenerator.h
1//
2// Copyright (c) 2023 articy Software GmbH & Co. KG. All rights reserved.
3//
4
5#pragma once
6
7#include "CoreMinimal.h"
8#include "ArticyImportData.h"
9#include "Misc/CompilationResult.h"
10
11
13
18class CodeGenerator
19{
20public:
27 static bool GenerateCode(UArticyImportData* Data);
28
34 static void CacheCodeFiles();
35
43 static bool RestoreCachedFiles();
44
52 static void GenerateAssets(UArticyImportData* Data);
53
59 static void Recompile(UArticyImportData* Data);
60
66 static FString GetSourceFolder();
67
71 static FString GetGeneratedInterfacesFilename(const UArticyImportData* Data);
72 static FString GetGeneratedTypesFilename(const UArticyImportData* Data);
73 static FString GetGeneratedTypeInformationFilename(const UArticyImportData* Data);
74 static FString GetGlobalVarsClassname(const UArticyImportData* Data, const bool bOmittPrefix = false);
75 static FString GetGVNamespaceClassname(const UArticyImportData* Data, const FString& Namespace);
76 static FString GetDatabaseClassname(const UArticyImportData* Data, const bool bOmittPrefix = false);
77 static FString GetArticyTypeClassname(const UArticyImportData* Data, const bool bOmittPrefix = false);
78 static FString GetArticyLocalizerClassname(const UArticyImportData* Data, const bool bOmittPrefix = false);
79 static FString GetMethodsProviderClassname(const UArticyImportData* Data, const bool bOmittPrefix = false);
80 static FString GetExpressoScriptsClassname(const UArticyImportData* Data, const bool bOmittPrefix = false);
81 static FString GetFeatureInterfaceClassName(const UArticyImportData* Data, const FArticyTemplateFeatureDef& Feature, const bool bOmittPrefix = false);
82
89 static bool DeleteGeneratedCode(const FString& Filename = "");
90
99 static bool DeleteExtraCode(const TArray<FString>& GeneratedFiles);
100
109 static bool DeleteGeneratedAssets(const FArticyPackageDefs& PackageDefs);
110
119 static bool RenameGeneratedAssets(const FArticyPackageDefs& PackageDefs);
120
121private:
129 static void Compile(UArticyImportData* Data);
130
138 static void OnCompiled(UArticyImportData* Data);
139
146 static bool ParseForError(const FString& Log);
147
158 static bool RestorePreviousImport(UArticyImportData* Data, const bool& bNotifyUser = true, ECompilationResult::Type Reason = ECompilationResult::Unknown);
159
160 // Cached files, mapped from FileName to FileContent
161 static TMap<FString, FString> CachedFiles;
162
163 //========================================//
164
165 CodeGenerator() {}
166 ~CodeGenerator() {}
167};
static FString GetArticyTypeClassname(const UArticyImportData *Data, const bool bOmittPrefix=false)
Gets the class name for the Articy type system based on import data.
Definition CodeGenerator.cpp:156
static FString GetArticyLocalizerClassname(const UArticyImportData *Data, const bool bOmittPrefix=false)
Gets the class name for the Articy localizer system based on import data.
Definition CodeGenerator.cpp:168
static void GenerateAssets(UArticyImportData *Data)
Generates assets based on the provided import data.
Definition CodeGenerator.cpp:580
static void CacheCodeFiles()
Caches the content of code files in the source folder.
Definition CodeGenerator.cpp:259
static bool GenerateCode(UArticyImportData *Data)
Generates code files based on the provided import data.
Definition CodeGenerator.cpp:286
static FString GetGeneratedInterfacesFilename(const UArticyImportData *Data)
Helper methods for generated class/struct names.
Definition CodeGenerator.cpp:60
static FString GetFeatureInterfaceClassName(const UArticyImportData *Data, const FArticyTemplateFeatureDef &Feature, const bool bOmittPrefix=false)
Gets the class name for a feature interface based on import data.
Definition CodeGenerator.cpp:144
static FString GetDatabaseClassname(const UArticyImportData *Data, const bool bOmittPrefix=false)
Gets the class name for the database based on import data.
Definition CodeGenerator.cpp:107
static FString GetMethodsProviderClassname(const UArticyImportData *Data, const bool bOmittPrefix=false)
Gets the class name for the methods provider based on import data.
Definition CodeGenerator.cpp:119
static FString GetSourceFolder()
Returns the main source folder for all the generated code.
Definition CodeGenerator.cpp:49
static bool DeleteExtraCode(const TArray< FString > &GeneratedFiles)
Deletes extra generated code files that are not in the provided list.
Definition CodeGenerator.cpp:197
static bool DeleteGeneratedAssets(const FArticyPackageDefs &PackageDefs)
Deletes generated assets based on package definitions.
Definition CodeGenerator.cpp:350
static bool RenameGeneratedAssets(const FArticyPackageDefs &PackageDefs)
Renames generated assets based on package definitions.
Definition CodeGenerator.cpp:413
static FString GetExpressoScriptsClassname(const UArticyImportData *Data, const bool bOmittPrefix=false)
Gets the class name for expresso scripts based on import data.
Definition CodeGenerator.cpp:131
static FString GetGVNamespaceClassname(const UArticyImportData *Data, const FString &Namespace)
Gets the class name for a global variable namespace based on import data.
Definition CodeGenerator.cpp:95
static bool DeleteGeneratedCode(const FString &Filename="")
Deletes a file inside the source folder (empty Filename deletes the whole folder).
Definition CodeGenerator.cpp:181
static FString GetGlobalVarsClassname(const UArticyImportData *Data, const bool bOmittPrefix=false)
Gets the class name for global variables based on import data.
Definition CodeGenerator.cpp:83
static bool RestoreCachedFiles()
Restores cached files from previous import sessions.
Definition CodeGenerator.cpp:816
static void Recompile(UArticyImportData *Data)
Initiates the recompilation process for the generated code.
Definition CodeGenerator.cpp:337
static FString GetGeneratedTypesFilename(const UArticyImportData *Data)
Gets the filename for the generated types based on import data.
Definition CodeGenerator.cpp:71
Definition ArticyImportData.h:411
Definition PackagesImport.h:312
Definition ObjectDefinitionsImport.h:170