Browse Source

Changed a bit the method for a class definition to be able to reuse it for interfaces.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>
pull/68/head
Dimitar Dobrev 13 years ago
parent
commit
c5382ee666
  1. 26
      src/Generator/Generators/CSharp/CSharpTextTemplate.cs

26
src/Generator/Generators/CSharp/CSharpTextTemplate.cs

@ -366,21 +366,7 @@ namespace CppSharp.Generators.CSharp
PushBlock(CSharpBlockKind.Class); PushBlock(CSharpBlockKind.Class);
GenerateDeclarationCommon(@class); GenerateDeclarationCommon(@class);
Write(Helpers.GetAccess(@class)); GenerateClassProlog(@class);
Write("unsafe ");
if (Options.GeneratePartialClasses)
Write("partial ");
Write("interface ");
Write("{0}", SafeIdentifier(@class.Name));
if (@class.HasBase)
{
Write(" : {0}", string.Join(", ",
from @base in @class.Bases
select QualifiedIdentifier(@base.Class)));
}
NewLine(); NewLine();
WriteStartBraceIndent(); WriteStartBraceIndent();
@ -699,14 +685,16 @@ namespace CppSharp.Generators.CSharp
if (Options.GeneratePartialClasses) if (Options.GeneratePartialClasses)
Write("partial "); Write("partial ");
Write(@class.IsValueType ? "struct " : "class "); Write(@class.IsInterface ? "interface " : (@class.IsValueType ? "struct " : "class "));
Write("{0}", SafeIdentifier(@class.Name)); Write("{0}", SafeIdentifier(@class.Name));
var needsBase = @class.HasBaseClass && !@class.IsValueType var needsBase = @class.HasBaseClass && !@class.IsValueType
&& !@class.Bases[0].Class.IsValueType && !@class.Bases[0].Class.IsValueType
&& !@class.Bases[0].Class.Ignore; && !@class.Bases[0].Class.Ignore;
if (needsBase || @class.IsRefType) var isRefClass = @class.IsRefType && !@class.IsInterface;
if (needsBase || isRefClass)
Write(" : "); Write(" : ");
if (needsBase) if (needsBase)
@ -715,11 +703,11 @@ namespace CppSharp.Generators.CSharp
from @base in @class.Bases from @base in @class.Bases
select QualifiedIdentifier(@base.Class))); select QualifiedIdentifier(@base.Class)));
if (@class.IsRefType) if (isRefClass)
Write(", "); Write(", ");
} }
if (@class.IsRefType) if (isRefClass)
Write("IDisposable"); Write("IDisposable");
} }

Loading…
Cancel
Save