Browse Source

Abstract generated method override check into AST extensions.

pull/778/head
Joao Matos 9 years ago
parent
commit
44c2be4375
  1. 10
      src/AST/FunctionExtensions.cs
  2. 2
      src/Generator/Generators/CLI/CLIHeaders.cs
  3. 12
      src/Generator/Generators/CSharp/CSharpSources.cs

10
src/AST/FunctionExtensions.cs

@ -74,6 +74,16 @@ namespace CppSharp.AST @@ -74,6 +74,16 @@ namespace CppSharp.AST
return @params;
}
public static bool IsGeneratedOverride(this Method method)
{
// Check if overriding a function from a secondary base.
var @class = method.Namespace as Class;
Method rootBaseMethod;
return method.IsOverride &&
(rootBaseMethod = @class.GetBaseMethod(method, true)) != null &&
rootBaseMethod.IsGenerated && rootBaseMethod.IsVirtual;
}
public static bool CanOverride(this Method @override, Method method)
{
return (method.OriginalName == @override.OriginalName &&

2
src/Generator/Generators/CLI/CLIHeaders.cs

@ -713,9 +713,7 @@ namespace CppSharp.Generators.CLI @@ -713,9 +713,7 @@ namespace CppSharp.Generators.CLI
Write(")");
if (method.IsOverride)
{
Write(" override");
}
}
public void GenerateMethod(Method method)

12
src/Generator/Generators/CSharp/CSharpSources.cs

@ -2078,13 +2078,7 @@ namespace CppSharp.Generators.CSharp @@ -2078,13 +2078,7 @@ namespace CppSharp.Generators.CSharp
public override void GenerateMethodSpecifier(Method method, Class @class)
{
// check if overriding a function from a secondary base
Method rootBaseMethod;
var isOverride = method.IsOverride &&
(rootBaseMethod = @class.GetBaseMethod(method, true)) != null &&
rootBaseMethod.IsGenerated && rootBaseMethod.IsVirtual;
if (method.IsVirtual && !isOverride && !method.IsOperator && !method.IsPure)
if (method.IsVirtual && !method.IsGeneratedOverride() && !method.IsOperator && !method.IsPure)
Write("virtual ");
var isBuiltinOperator = method.IsOperator &&
@ -2093,10 +2087,8 @@ namespace CppSharp.Generators.CSharp @@ -2093,10 +2087,8 @@ namespace CppSharp.Generators.CSharp
if (method.IsStatic || isBuiltinOperator)
Write("static ");
if (isOverride)
{
if (method.IsGeneratedOverride())
Write("override ");
}
if (method.IsPure)
Write("abstract ");

Loading…
Cancel
Save