Skip to content

Commit 8689812

Browse files
committed
Added support for scope kinds in CSharpTypePrinter.
1 parent 850dcfa commit 8689812

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

src/Generator/Generators/CSharp/CSharpTypePrinter.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ namespace CppSharp.Generators.CSharp
1313
{
1414
public class CSharpTypePrinter : TypePrinter
1515
{
16-
public string IntPtrType => "global::System.IntPtr";
16+
public string IntPtrType => QualifiedType("System.IntPtr");
1717

1818
public BindingContext Context { get; set; }
1919

@@ -25,6 +25,11 @@ public CSharpTypePrinter(BindingContext context)
2525
Context = context;
2626
}
2727

28+
public string QualifiedType(string name)
29+
{
30+
return IsGlobalQualifiedScope ? $"global::{name}" : name;
31+
}
32+
2833
public override TypePrinterResult VisitTagType(TagType tag, TypeQualifiers quals)
2934
{
3035
if (tag.Declaration == null)
@@ -429,7 +434,8 @@ public override TypePrinterResult VisitCILType(CILType type, TypeQualifiers qual
429434
case TypeCode.String:
430435
return "string";
431436
}
432-
return $"global::{type.Type.FullName}";
437+
438+
return QualifiedType(type.Type.FullName);
433439
}
434440

435441
public static void GetPrimitiveTypeWidth(PrimitiveType primitive,
@@ -545,7 +551,7 @@ public override TypePrinterResult VisitPrimitiveType(PrimitiveType primitive,
545551
case PrimitiveType.LongDouble: return new TypePrinterResult { Type = "fixed byte",
546552
NameSuffix = $"[{Context.TargetInfo.LongDoubleWidth}]"};
547553
case PrimitiveType.IntPtr: return IntPtrType;
548-
case PrimitiveType.UIntPtr: return "global::System.UIntPtr";
554+
case PrimitiveType.UIntPtr: return QualifiedType("System.UIntPtr");
549555
case PrimitiveType.Null: return "void*";
550556
case PrimitiveType.String: return "string";
551557
case PrimitiveType.Float128: return "__float128";
@@ -645,7 +651,7 @@ string GetName(Declaration decl)
645651
!string.IsNullOrWhiteSpace(unit.Module.OutputNamespace))
646652
names.Push(unit.Module.OutputNamespace);
647653

648-
return $"global::{string.Join(".", names)}";
654+
return QualifiedType(string.Join(".", names));
649655
}
650656

651657
public override TypePrinterResult VisitParameters(IEnumerable<Parameter> @params,

src/Generator/Generators/TypePrinter.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ public class TypePrinter : ITypePrinter<TypePrinterResult>,
3434

3535
public MarshalKind MarshalKind => marshalKinds.Peek();
3636

37+
public TypePrintScopeKind ScopeKind = TypePrintScopeKind.GlobalQualified;
38+
public bool IsGlobalQualifiedScope => ScopeKind == TypePrintScopeKind.GlobalQualified;
39+
3740
public TypePrinter()
3841
{
3942
contexts = new Stack<TypePrinterContextKind>();

0 commit comments

Comments
 (0)