Browse Source

Unify class method specifier code generation.

pull/778/head
Joao Matos 9 years ago
parent
commit
f70d1d0165
  1. 17
      src/Generator/Generators/CLI/CLIHeaders.cs
  2. 23
      src/Generator/Generators/CSharp/CSharpSources.cs
  3. 8
      src/Generator/Generators/CodeGenerator.cs

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

@ -687,14 +687,8 @@ namespace CppSharp.Generators.CLI
PopBlock(NewLineKind.BeforeNextBlock); PopBlock(NewLineKind.BeforeNextBlock);
} }
public void GenerateMethod(Method method) public override void GenerateMethodSpecifier(Method method, Class @class)
{ {
if (ASTUtils.CheckIgnoreMethod(method, Options)) return;
PushBlock(BlockKind.Method, method);
GenerateDeclarationCommon(method);
if ((method.IsVirtual || method.IsOverride) && !method.IsOperator) if ((method.IsVirtual || method.IsOverride) && !method.IsOperator)
Write("virtual "); Write("virtual ");
@ -722,7 +716,16 @@ namespace CppSharp.Generators.CLI
{ {
Write(" override"); Write(" override");
} }
}
public void GenerateMethod(Method method)
{
if (ASTUtils.CheckIgnoreMethod(method, Options)) return;
PushBlock(BlockKind.Method, method);
GenerateDeclarationCommon(method);
GenerateMethodSpecifier(method, method.Namespace as Class);
WriteLine(";"); WriteLine(";");
if (method.OperatorKind == CXXOperatorKind.EqualEqual) if (method.OperatorKind == CXXOperatorKind.EqualEqual)

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

@ -2076,16 +2076,8 @@ namespace CppSharp.Generators.CSharp
PopBlock(NewLineKind.BeforeNextBlock); PopBlock(NewLineKind.BeforeNextBlock);
} }
public void GenerateMethod(Method method, Class @class) public override void GenerateMethodSpecifier(Method method, Class @class)
{ {
PushBlock(BlockKind.Method, method);
GenerateDeclarationCommon(method);
if (method.ExplicitInterfaceImpl == null)
{
Write(Helpers.GetAccess(GetValidMethodAccess(method)));
}
// check if overriding a function from a secondary base // check if overriding a function from a secondary base
Method rootBaseMethod; Method rootBaseMethod;
var isOverride = method.IsOverride && var isOverride = method.IsOverride &&
@ -2126,6 +2118,19 @@ namespace CppSharp.Generators.CSharp
Write(FormatMethodParameters(method.Parameters)); Write(FormatMethodParameters(method.Parameters));
Write(")"); Write(")");
}
public void GenerateMethod(Method method, Class @class)
{
PushBlock(BlockKind.Method, method);
GenerateDeclarationCommon(method);
if (method.ExplicitInterfaceImpl == null)
{
Write(Helpers.GetAccess(GetValidMethodAccess(method)));
}
GenerateMethodSpecifier(method, @class);
if (method.SynthKind == FunctionSynthKind.DefaultValueOverload && method.IsConstructor && !method.IsPure) if (method.SynthKind == FunctionSynthKind.DefaultValueOverload && method.IsConstructor && !method.IsPure)
{ {

8
src/Generator/Generators/CodeGenerator.cs

@ -226,6 +226,14 @@ namespace CppSharp.Generators
#endregion #endregion
#region Method generation
public virtual void GenerateMethodSpecifier(Method method, Class @class)
{
}
#endregion
#region Visitor methods #region Visitor methods
public virtual bool VisitDeclaration(Declaration decl) public virtual bool VisitDeclaration(Declaration decl)

Loading…
Cancel
Save