Browse Source

Unify class specifier code generation.

pull/778/head
Joao Matos 8 years ago
parent
commit
157da89ed5
  1. 27
      src/Generator/Generators/CLI/CLIHeaders.cs
  2. 8
      src/Generator/Generators/CSharp/CSharpSources.cs
  3. 8
      src/Generator/Generators/CodeGenerator.cs

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

@ -245,8 +245,18 @@ namespace CppSharp.Generators.CLI @@ -245,8 +245,18 @@ namespace CppSharp.Generators.CLI
GenerateDeclarationCommon(@class);
if (GenerateClassProlog(@class))
GenerateClassSpecifier(@class);
if (@class.IsOpaque)
{
WriteLine(";");
return;
}
NewLine();
WriteLine("{");
WriteLine("public:");
NewLine();
// Process the nested types.
PushIndent();
@ -571,7 +581,7 @@ namespace CppSharp.Generators.CLI @@ -571,7 +581,7 @@ namespace CppSharp.Generators.CLI
PopIndent();
}
public bool GenerateClassProlog(Class @class)
public override void GenerateClassSpecifier(Class @class)
{
if (@class.IsUnion)
WriteLine("[System::Runtime::InteropServices::StructLayout({0})]",
@ -590,12 +600,6 @@ namespace CppSharp.Generators.CLI @@ -590,12 +600,6 @@ namespace CppSharp.Generators.CLI
if (@class.IsStatic)
Write(" abstract sealed");
if (@class.IsOpaque)
{
WriteLine(";");
return true;
}
if (!@class.IsStatic)
{
if (@class.HasRefBase())
@ -603,13 +607,6 @@ namespace CppSharp.Generators.CLI @@ -603,13 +607,6 @@ namespace CppSharp.Generators.CLI
else if (@class.IsRefType)
Write(" : ICppInstance");
}
NewLine();
WriteLine("{");
WriteLine("public:");
NewLine();
return false;
}
public void GenerateClassProperties(Class @class)

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

@ -242,7 +242,7 @@ namespace CppSharp.Generators.CSharp @@ -242,7 +242,7 @@ namespace CppSharp.Generators.CSharp
foreach (var nestedClass in classTemplate.Classes)
{
NewLine();
GenerateClassProlog(nestedClass);
GenerateClassSpecifier(nestedClass);
NewLine();
WriteStartBraceIndent();
GenerateClassInternals(nestedClass);
@ -306,7 +306,7 @@ namespace CppSharp.Generators.CSharp @@ -306,7 +306,7 @@ namespace CppSharp.Generators.CSharp
PushBlock(BlockKind.Class);
GenerateDeclarationCommon(@class);
GenerateClassProlog(@class);
GenerateClassSpecifier(@class);
NewLine();
WriteStartBraceIndent();
@ -379,7 +379,7 @@ namespace CppSharp.Generators.CSharp @@ -379,7 +379,7 @@ namespace CppSharp.Generators.CSharp
PushBlock(BlockKind.Interface);
GenerateDeclarationCommon(@class);
GenerateClassProlog(@class);
GenerateClassSpecifier(@class);
NewLine();
WriteStartBraceIndent();
@ -550,7 +550,7 @@ namespace CppSharp.Generators.CSharp @@ -550,7 +550,7 @@ namespace CppSharp.Generators.CSharp
return @class.IsValueType || !@class.HasBase || !@class.HasRefBase();
}
public void GenerateClassProlog(Class @class)
public override void GenerateClassSpecifier(Class @class)
{
// private classes must be visible to because the internal structs can be used in dependencies
// the proper fix is InternalsVisibleTo

8
src/Generator/Generators/CodeGenerator.cs

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

Loading…
Cancel
Save