Skip to content

Commit 9ba53ac

Browse files
committed
Refactor CodeGenerator.GenerateMethodSpecifier to allow explicit specifier kind.
1 parent f49e6c9 commit 9ba53ac

File tree

6 files changed

+28
-13
lines changed

6 files changed

+28
-13
lines changed

src/Generator/Generators/C/CCodeGenerator.cs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -332,10 +332,16 @@ public virtual string GetMethodIdentifier(Function function,
332332
function.Name : function.OriginalName;
333333
}
334334

335-
public override void GenerateMethodSpecifier(Method method, Class @class)
335+
public override void GenerateMethodSpecifier(Method method,
336+
MethodSpecifierKind? kind = null)
336337
{
337-
var isHeaderFile = FileExtension == "h";
338-
if (isHeaderFile)
338+
bool isDeclaration;
339+
if (kind.HasValue)
340+
isDeclaration = kind == MethodSpecifierKind.Declaration;
341+
else
342+
isDeclaration = FileExtension == "h";
343+
344+
if (isDeclaration)
339345
{
340346
if (method.IsVirtual || method.IsOverride)
341347
Write("virtual ");
@@ -363,7 +369,7 @@ public override void GenerateMethodSpecifier(Method method, Class @class)
363369

364370
Write(")");
365371

366-
if (method.IsOverride && isHeaderFile)
372+
if (method.IsOverride && isDeclaration)
367373
Write(" override");
368374
}
369375

@@ -376,7 +382,7 @@ public override bool VisitMethodDecl(Method method)
376382
{
377383
PushBlock(BlockKind.Method, method);
378384

379-
GenerateMethodSpecifier(method, method.Namespace as Class);
385+
GenerateMethodSpecifier(method);
380386
Write(";");
381387

382388
PopBlock(NewLineKind.BeforeNextBlock);
@@ -406,7 +412,7 @@ public override bool VisitProperty(Property property)
406412

407413
public virtual void GeneratePropertyAccessorSpecifier(Method method)
408414
{
409-
GenerateMethodSpecifier(method, method.Namespace as Class);
415+
GenerateMethodSpecifier(method);
410416
}
411417

412418
public virtual void GeneratePropertyGetter(Method method)

src/Generator/Generators/C/CppHeaders.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ public override bool VisitMethodDecl(Method method)
546546
PushBlock(BlockKind.Method, method);
547547
GenerateDeclarationCommon(method);
548548

549-
GenerateMethodSpecifier(method, method.Namespace as Class);
549+
GenerateMethodSpecifier(method);
550550
WriteLine(";");
551551

552552
PopBlock(NewLineKind.BeforeNextBlock);

src/Generator/Generators/C/CppSources.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ public override bool VisitMethodDecl(Method method)
348348

349349
PushBlock(BlockKind.Method, method);
350350

351-
GenerateMethodSpecifier(method, method.Namespace as Class);
351+
GenerateMethodSpecifier(method);
352352
NewLine();
353353

354354
var @class = method.Namespace as Class;

src/Generator/Generators/CLI/CLIHeaders.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -676,7 +676,8 @@ public void GenerateProperty(Property property)
676676
PopBlock(NewLineKind.BeforeNextBlock);
677677
}
678678

679-
public override void GenerateMethodSpecifier(Method method, Class @class)
679+
public override void GenerateMethodSpecifier(Method method,
680+
MethodSpecifierKind? kind = null)
680681
{
681682
if ((method.IsVirtual || method.IsOverride) && !method.IsOperator)
682683
Write("virtual ");
@@ -712,7 +713,7 @@ public void GenerateMethod(Method method)
712713
PushBlock(BlockKind.Method, method);
713714
GenerateDeclarationCommon(method);
714715

715-
GenerateMethodSpecifier(method, method.Namespace as Class);
716+
GenerateMethodSpecifier(method);
716717
WriteLine(";");
717718

718719
if (method.OperatorKind == CXXOperatorKind.EqualEqual)

src/Generator/Generators/CSharp/CSharpSources.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2340,7 +2340,8 @@ public void GenerateFunction(Function function, string parentName)
23402340
PopBlock(NewLineKind.BeforeNextBlock);
23412341
}
23422342

2343-
public override void GenerateMethodSpecifier(Method method, Class @class)
2343+
public override void GenerateMethodSpecifier(Method method,
2344+
MethodSpecifierKind? kind = null)
23442345
{
23452346
bool isTemplateMethod = method.Parameters.Any(
23462347
p => p.Kind == ParameterKind.Extension);
@@ -2392,7 +2393,7 @@ public void GenerateMethod(Method method, Class @class)
23922393
Write(Helpers.GetAccess(method.Access));
23932394
}
23942395

2395-
GenerateMethodSpecifier(method, @class);
2396+
GenerateMethodSpecifier(method);
23962397

23972398
if (method.SynthKind == FunctionSynthKind.DefaultValueOverload && method.IsConstructor && !method.IsPure)
23982399
{

src/Generator/Generators/CodeGenerator.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,14 @@ public virtual void GenerateClassSpecifier(Class @class)
222222

223223
#region Method generation
224224

225-
public virtual void GenerateMethodSpecifier(Method method, Class @class)
225+
public enum MethodSpecifierKind
226+
{
227+
Declaration,
228+
Definition
229+
}
230+
231+
public virtual void GenerateMethodSpecifier(Method method,
232+
MethodSpecifierKind? kind = null)
226233
{
227234
}
228235

0 commit comments

Comments
 (0)