Lua向C#逻辑迁移 一期 #13

将整个插件代码上传
This commit is contained in:
2025-10-26 21:48:39 +08:00
parent 56994b3927
commit 648386cd73
785 changed files with 53683 additions and 2 deletions

View File

@ -0,0 +1,165 @@
#pragma once
class UNREALSHARPRUNTIMEGLUE_API FCSScriptBuilder
{
public:
enum class IndentType
{
Spaces,
Tabs
};
explicit FCSScriptBuilder(IndentType InIndentMode)
: UnsafeBlockCount(0)
, IndentCount(0)
, IndentMode(InIndentMode)
{
}
void Indent()
{
++IndentCount;
}
void Unindent()
{
--IndentCount;
}
void AppendLine()
{
if (Report.Len() != 0)
{
Report.Append(LINE_TERMINATOR);
}
if (IndentMode == IndentType::Spaces)
{
for (int32 Index = 0; Index < IndentCount; Index++)
{
Report.Append(TEXT(" "));
}
}
else
{
for (int32 Index = 0; Index < IndentCount; Index++)
{
Report.Append(TEXT("\t"));
}
}
}
void Append(FStringView String)
{
Report.Append(String);
}
void Append(const FString& String)
{
Report.Append(String);
}
void Append(const TCHAR* String)
{
Report.Append(String);
}
void Append(const FName& Name)
{
Report.Append(Name.ToString());
}
void AppendLine(const FText& Text)
{
AppendLine();
if (const FString* SourceString = FTextInspector::GetSourceString(Text))
{
Report.Append(*SourceString);
}
else
{
Report.Append(Text.ToString());
}
}
void AppendLine(FStringView String)
{
AppendLine();
Report.Append(String);
}
void AppendLine(const FString& String)
{
AppendLine();
Report.Append(String);
}
void AppendLine(const ANSICHAR* Line)
{
AppendLine();
Report.Append(Line);
}
void AppendLine(const FName& Name)
{
AppendLine();
Report.Append(Name.ToString());
}
void AppendLine(const TCHAR* Line)
{
AppendLine();
Report.Append(Line);
}
void OpenBrace()
{
AppendLine(TEXT("{"));
Indent();
}
void CloseBrace()
{
Unindent();
AppendLine(TEXT("}"));
}
void EndUnsafeBlock()
{
check(UnsafeBlockCount >= 0);
if (!--UnsafeBlockCount)
{
CloseBrace();
}
}
void Clear()
{
Report.Reset();
}
FText ToText() const
{
return FText::FromString(ToString());
}
FString ToString() const
{
return Report.ToString();
}
bool IsEmpty() const
{
return Report.Len() == 0;
}
private:
TStringBuilder<2048> Report;
TArray<FString> Directives;
int32 UnsafeBlockCount;
int32 IndentCount;
IndentType IndentMode;
};