Skip to content

Commit 549da90

Browse files
Merge pull request #556 from fredrikhr/strip-enum-member-type-name
Refactor Enum member type escaping
2 parents 7e48890 + f3237de commit 549da90

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

sources/ClangSharp.PInvokeGenerator/PInvokeGenerator.VisitDecl.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,6 @@ private void VisitEnumConstantDecl(EnumConstantDecl enumConstantDecl)
273273

274274
var accessSpecifier = AccessSpecifier.None;
275275
var name = GetRemappedCursorName(enumConstantDecl);
276-
var escapedName = EscapeName(name);
277276
var typeName = GetTargetTypeName(enumConstantDecl, out _);
278277
var isAnonymousEnum = false;
279278
var parentName = "";
@@ -295,10 +294,7 @@ private void VisitEnumConstantDecl(EnumConstantDecl enumConstantDecl)
295294
parentName = _outputBuilder.Name;
296295
}
297296

298-
if (Config.StripEnumMemberTypeName)
299-
{
300-
escapedName = PrefixAndStrip(escapedName, parentName, trimChar: '_');
301-
}
297+
var escapedName = EscapeAndStripEnumMemberName(name, parentName);
302298

303299
var kind = isAnonymousEnum ? ValueKind.Primitive : ValueKind.Enumerator;
304300
var flags = ValueFlags.Constant;

sources/ClangSharp.PInvokeGenerator/PInvokeGenerator.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2332,6 +2332,20 @@ private string EscapeAndStripMethodName(string name)
23322332
return EscapeName(name);
23332333
}
23342334

2335+
private string EscapeAndStripEnumMemberName(string name, string enumTypeName)
2336+
{
2337+
if (Config.StripEnumMemberTypeName)
2338+
{
2339+
var escapedName = PrefixAndStrip(name, enumTypeName, trimChar: '_');
2340+
if (escapedName.Length > 0 && char.IsAsciiDigit(escapedName[0]))
2341+
{
2342+
escapedName = '_' + escapedName;
2343+
}
2344+
return escapedName;
2345+
}
2346+
return EscapeName(name);
2347+
}
2348+
23352349
internal static string EscapeCharacter(char value) => value switch {
23362350
'\0' => @"\0",
23372351
'\\' => @"\\",

0 commit comments

Comments
 (0)