新增UndefinedIdentifiersAsStrings选项并完善变量控制器

This commit is contained in:
2025-10-27 10:50:36 +08:00
parent 971baf8c9e
commit 29dd4f5d96
4 changed files with 129 additions and 68 deletions

View File

@@ -7,7 +7,7 @@ using System.Threading.Tasks;
namespace Convention.RScript.Variable.CStyle
{
public class RScriptVariableGenerater : RScriptInjectVariableGenerater
public class CScriptRScriptVariableGenerater : RScriptInjectVariableGenerater
{
public static string GetTypename(Type type)
{
@@ -15,16 +15,25 @@ namespace Convention.RScript.Variable.CStyle
return name;
}
private int layer = 0;
private string Prefix => new('\t', layer);
private int m_layer = 0;
private int layer
{
get=>m_layer;
set
{
m_layer = value;
Prefix = new('\t', layer);
}
}
private string Prefix = "";
public RScriptVariableGenerater(Type targetType, [MaybeNull] Generater generater, string name) : base(targetType, generater, name)
public CScriptRScriptVariableGenerater(Type targetType, Generater generater, Destorier destorier, string name) : base(targetType, generater, destorier, name)
{
}
protected override string WriteClassBodyEnter(Type currentType)
{
string result = $"{Prefix}{"{public:"}";
string result = $"{Prefix}{"{"}\n{Prefix}public:";
layer++;
return result;
}
@@ -32,21 +41,21 @@ namespace Convention.RScript.Variable.CStyle
protected override string WriteClassBodyExit(Type currentType)
{
layer--;
return $"{Prefix}{"{"}";
return $"{Prefix}{"};"}";
}
protected override string WriteClassHead(Type currentType)
{
string description = string.IsNullOrEmpty(this.description) ? "" : string.Join("", from item in this.description.Split('\n') where string.IsNullOrEmpty(item) == false select $"{Prefix}{item}\n");
string suffix = currentType.BaseType == typeof(object) ? string.Empty : $" : public {GetTypename(currentType.BaseType)}";
string result = $"{Prefix}class {GetTypename(currentType)}{suffix}";
layer++;
string result = $"{Prefix}\\*{description}*\\\n{Prefix}{Prefix}class {GetTypename(currentType)}{suffix}";
return result;
}
protected override string WriteClassMethod(Type returnType, string methodName, string[] parameterNames, Type[] parameterTypes)
{
List<string> parameters = new();
for(int i=0,e=parameterNames.Length;i<e;i++)
for (int i = 0, e = parameterNames.Length; i < e; i++)
{
parameters.Add($"{GetTypename(parameterTypes[i])} {parameterNames[i]}");
}
@@ -68,7 +77,7 @@ namespace Convention.RScript.Variable.CStyle
protected override string WriteEnumBodyExit(Type currentType)
{
layer--;
return $"{Prefix}{"{"}";
return $"{Prefix}{"};"}";
}
protected override string WriteEnumHead(Type currentEnum)