You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-14 13:41:12 +00:00
C#: Add dedicated Variant struct, replacing System.Object
This commit is contained in:
@@ -86,7 +86,6 @@ namespace Godot.SourceGenerators
|
||||
MarshalType.Vector3Array => VariantType.PackedVector3Array,
|
||||
MarshalType.ColorArray => VariantType.PackedColorArray,
|
||||
MarshalType.GodotObjectOrDerivedArray => VariantType.Array,
|
||||
MarshalType.SystemObjectArray => VariantType.Array,
|
||||
MarshalType.SystemArrayOfSupportedType => VariantType.Array,
|
||||
MarshalType.GodotGenericDictionary => VariantType.Dictionary,
|
||||
MarshalType.GodotGenericArray => VariantType.Array,
|
||||
@@ -95,7 +94,7 @@ namespace Godot.SourceGenerators
|
||||
MarshalType.GenericIDictionary => VariantType.Dictionary,
|
||||
MarshalType.GenericICollection => VariantType.Array,
|
||||
MarshalType.GenericIEnumerable => VariantType.Array,
|
||||
MarshalType.SystemObject => VariantType.Nil,
|
||||
MarshalType.Variant => VariantType.Nil,
|
||||
MarshalType.GodotObjectOrDerived => VariantType.Object,
|
||||
MarshalType.StringName => VariantType.StringName,
|
||||
MarshalType.NodePath => VariantType.NodePath,
|
||||
@@ -140,8 +139,6 @@ namespace Godot.SourceGenerators
|
||||
return MarshalType.Double;
|
||||
case SpecialType.System_String:
|
||||
return MarshalType.String;
|
||||
case SpecialType.System_Object:
|
||||
return MarshalType.SystemObject;
|
||||
default:
|
||||
{
|
||||
var typeKind = type.TypeKind;
|
||||
@@ -175,6 +172,7 @@ namespace Godot.SourceGenerators
|
||||
{ Name: "RID" } => MarshalType.RID,
|
||||
{ Name: "Callable" } => MarshalType.Callable,
|
||||
{ Name: "SignalInfo" } => MarshalType.SignalInfo,
|
||||
{ Name: "Variant" } => MarshalType.Variant,
|
||||
_ => null
|
||||
};
|
||||
}
|
||||
@@ -198,8 +196,6 @@ namespace Godot.SourceGenerators
|
||||
return MarshalType.Float64Array;
|
||||
case SpecialType.System_String:
|
||||
return MarshalType.StringArray;
|
||||
case SpecialType.System_Object:
|
||||
return MarshalType.SystemObjectArray;
|
||||
}
|
||||
|
||||
if (elementType.SimpleDerivesFrom(typeCache.GodotObjectType))
|
||||
@@ -323,6 +319,9 @@ namespace Godot.SourceGenerators
|
||||
return null;
|
||||
}
|
||||
|
||||
private static StringBuilder Append(this StringBuilder source, string a, string b)
|
||||
=> source.Append(a).Append(b);
|
||||
|
||||
private static StringBuilder Append(this StringBuilder source, string a, string b, string c)
|
||||
=> source.Append(a).Append(b).Append(c);
|
||||
|
||||
@@ -346,7 +345,6 @@ namespace Godot.SourceGenerators
|
||||
string c, string d, string e, string f, string g, string h)
|
||||
=> source.Append(a).Append(b).Append(c).Append(d).Append(e).Append(f).Append(g).Append(h);
|
||||
|
||||
private const string Marshaling = "global::Godot.NativeInterop.Marshaling";
|
||||
private const string VariantUtils = "global::Godot.NativeInterop.VariantUtils";
|
||||
|
||||
public static StringBuilder AppendVariantToManagedExpr(this StringBuilder source,
|
||||
@@ -440,8 +438,6 @@ namespace Godot.SourceGenerators
|
||||
MarshalType.GodotObjectOrDerivedArray =>
|
||||
source.Append(VariantUtils, ".ConvertToSystemArrayOfGodotObject<",
|
||||
((IArrayTypeSymbol)typeSymbol).ElementType.FullQualifiedName(), ">(", inputExpr, ")"),
|
||||
MarshalType.SystemObjectArray =>
|
||||
source.Append(VariantUtils, ".ConvertToSystemArrayOfVariant(", inputExpr, ")"),
|
||||
MarshalType.SystemArrayOfSupportedType =>
|
||||
source.Append(VariantUtils, ".ConvertToSystemArrayOfSupportedType<",
|
||||
((IArrayTypeSymbol)typeSymbol).ElementType.FullQualifiedName(), ">(", inputExpr, ")"),
|
||||
@@ -466,8 +462,8 @@ namespace Godot.SourceGenerators
|
||||
MarshalType.GenericICollection or MarshalType.GenericIEnumerable =>
|
||||
source.Append(VariantUtils, ".ConvertToGenericArrayObject<",
|
||||
((INamedTypeSymbol)typeSymbol).TypeArguments[0].FullQualifiedName(), ">(", inputExpr, ")"),
|
||||
MarshalType.SystemObject =>
|
||||
source.Append(Marshaling, ".ConvertVariantToManagedObject(", inputExpr, ")"),
|
||||
MarshalType.Variant =>
|
||||
source.Append("global::Godot.Variant.CreateCopyingBorrowed(", inputExpr, ")"),
|
||||
MarshalType.GodotObjectOrDerived =>
|
||||
source.Append("(", typeSymbol.FullQualifiedName(),
|
||||
")", VariantUtils, ".ConvertToGodotObject(", inputExpr, ")"),
|
||||
@@ -579,8 +575,6 @@ namespace Godot.SourceGenerators
|
||||
source.Append(VariantUtils, ".CreateFromPackedColorArray(", inputExpr, ")"),
|
||||
MarshalType.GodotObjectOrDerivedArray =>
|
||||
source.Append(VariantUtils, ".CreateFromSystemArrayOfGodotObject(", inputExpr, ")"),
|
||||
MarshalType.SystemObjectArray =>
|
||||
source.Append(VariantUtils, ".CreateFromSystemArrayOfVariant(", inputExpr, ")"),
|
||||
MarshalType.SystemArrayOfSupportedType =>
|
||||
source.Append(VariantUtils, ".CreateFromSystemArrayOfSupportedType(", inputExpr, ")"),
|
||||
MarshalType.GodotGenericDictionary =>
|
||||
@@ -597,8 +591,8 @@ namespace Godot.SourceGenerators
|
||||
source.Append(VariantUtils, ".CreateFromSystemGenericICollection(", inputExpr, ")"),
|
||||
MarshalType.GenericIEnumerable =>
|
||||
source.Append(VariantUtils, ".CreateFromSystemGenericIEnumerable(", inputExpr, ")"),
|
||||
MarshalType.SystemObject =>
|
||||
source.Append(Marshaling, ".ConvertManagedObjectToVariant(", inputExpr, ")"),
|
||||
MarshalType.Variant =>
|
||||
source.Append(inputExpr, ".CopyNativeVariant()"),
|
||||
MarshalType.GodotObjectOrDerived =>
|
||||
source.Append(VariantUtils, ".CreateFromGodotObject(", inputExpr, ")"),
|
||||
MarshalType.StringName =>
|
||||
|
||||
Reference in New Issue
Block a user