Skip to content

Commit 4da340c

Browse files
committed
Add DontUseUsingStaticsForGuidMember
1 parent 4c866fb commit 4da340c

File tree

3 files changed

+36
-4
lines changed

3 files changed

+36
-4
lines changed

sources/ClangSharp.PInvokeGenerator/PInvokeGenerator.VisitDecl.cs

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1411,7 +1411,15 @@ private void VisitRecordDecl(RecordDecl recordDecl)
14111411
var className = GetClass(uuidName);
14121412

14131413
_testOutputBuilder.AddUsingDirective("System");
1414-
_testOutputBuilder.AddUsingDirective($"static {GetNamespace(className)}.{className}");
1414+
1415+
if (_config.DontUseUsingStaticsForGuidMember)
1416+
{
1417+
_testOutputBuilder.AddUsingDirective($"{GetNamespace(className)}");
1418+
}
1419+
else
1420+
{
1421+
_testOutputBuilder.AddUsingDirective($"static {GetNamespace(className)}.{className}");
1422+
}
14151423

14161424
_testOutputBuilder.WriteIndented("/// <summary>Validates that the <see cref=\"Guid\" /> of the <see cref=\"");
14171425
_testOutputBuilder.Write(escapedName);
@@ -1440,7 +1448,13 @@ private void VisitRecordDecl(RecordDecl recordDecl)
14401448
_testOutputBuilder.Write("Is.EqualTo(");
14411449
}
14421450

1443-
_testOutputBuilder.Write(uuidName);
1451+
var usableUuidName = uuidName;
1452+
if (_config.DontUseUsingStaticsForGuidMember)
1453+
{
1454+
usableUuidName = $"{className}.{usableUuidName}";
1455+
}
1456+
1457+
_testOutputBuilder.Write(usableUuidName);
14441458

14451459
if (_config.GenerateTestsNUnit)
14461460
{
@@ -1626,12 +1640,26 @@ private void VisitRecordDecl(RecordDecl recordDecl)
16261640
_outputBuilder.EmitUsingDirective("System");
16271641
_outputBuilder.EmitUsingDirective("System.Runtime.CompilerServices");
16281642

1629-
_outputBuilder.EmitUsingDirective($"static {GetNamespace(uuidClassName)}.{uuidClassName}");
1643+
if (_config.DontUseUsingStaticsForGuidMember)
1644+
{
1645+
_outputBuilder.EmitUsingDirective($"{GetNamespace(uuidClassName)}");
1646+
}
1647+
else
1648+
{
1649+
_outputBuilder.EmitUsingDirective($"static {GetNamespace(uuidClassName)}.{uuidClassName}");
1650+
}
1651+
1652+
var usableUuidName = uuidName;
1653+
if (_config.DontUseUsingStaticsForGuidMember)
1654+
{
1655+
usableUuidName = $"{uuidClassName}.{usableUuidName}";
1656+
}
1657+
16301658
_outputBuilder.BeginValue(in valueDesc);
16311659

16321660
var code = _outputBuilder.BeginCSharpCode();
16331661
code.Write("(Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in ");
1634-
code.Write(uuidName);
1662+
code.Write(usableUuidName);
16351663
code.Write("))");
16361664
_outputBuilder.EndCSharpCode(code);
16371665

sources/ClangSharp.PInvokeGenerator/PInvokeGeneratorConfiguration.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,8 @@ public IReadOnlyCollection<string> ExcludedNames
267267

268268
public bool StripEnumMemberTypeName => _options.HasFlag(PInvokeGeneratorConfigurationOptions.StripEnumMemberTypeName);
269269

270+
public bool DontUseUsingStaticsForGuidMember => _options.HasFlag(PInvokeGeneratorConfigurationOptions.DontUseUsingStaticsForGuidMember);
271+
270272
public string HeaderText => _headerText;
271273

272274
[AllowNull]

sources/ClangSharp.PInvokeGenerator/PInvokeGeneratorConfigurationOptions.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,4 +88,6 @@ public enum PInvokeGeneratorConfigurationOptions : long
8888
GenerateGenericPointerWrapper = 1L << 38,
8989

9090
StripEnumMemberTypeName = 1L << 39,
91+
92+
DontUseUsingStaticsForGuidMember = 1L << 40,
9193
}

0 commit comments

Comments
 (0)