Browse Source

Port class handling to visitor model in C# generator.

pull/742/head
Joao Matos 9 years ago
parent
commit
17d06ac0e5
  1. 12
      src/Generator/Generators/CSharp/CSharpSources.cs
  2. 2
      src/Generator/Generators/CodeTemplate.cs

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

@ -253,7 +253,7 @@ namespace CppSharp.Generators.CSharp
if (!@class.IsDependent) if (!@class.IsDependent)
{ {
GenerateClass(@class); @class.Visit(this);
continue; continue;
} }
@ -355,7 +355,7 @@ namespace CppSharp.Generators.CSharp
if (specialization.Ignore) if (specialization.Ignore)
GenerateClassInternals(specialization); GenerateClassInternals(specialization);
else else
GenerateClass(specialization); specialization.Visit(this);
} }
foreach (var nestedClass in classTemplate.Classes) foreach (var nestedClass in classTemplate.Classes)
@ -441,10 +441,10 @@ namespace CppSharp.Generators.CSharp
#region Classes #region Classes
public void GenerateClass(Class @class) public override bool VisitClassDecl(Class @class)
{ {
if (@class.IsIncomplete) if (@class.IsIncomplete)
return; return false;
foreach (var nestedTemplate in @class.Classes.Where(c => !c.IsIncomplete && c.IsDependent)) foreach (var nestedTemplate in @class.Classes.Where(c => !c.IsIncomplete && c.IsDependent))
GenerateClassTemplateSpecializationInternal(nestedTemplate); GenerateClassTemplateSpecializationInternal(nestedTemplate);
@ -476,7 +476,7 @@ namespace CppSharp.Generators.CSharp
if (!@class.IsAbstractImpl) if (!@class.IsAbstractImpl)
GenerateClassInternals(@class); GenerateClassInternals(@class);
@class.Visit(this); VisitDeclContext(@class);
if (@class.IsDependent || !@class.IsGenerated) if (@class.IsDependent || !@class.IsGenerated)
goto exit; goto exit;
@ -527,6 +527,8 @@ namespace CppSharp.Generators.CSharp
if (typeMap != null) if (typeMap != null)
Context.TypeMaps.TypeMaps.Add(key, typeMap); Context.TypeMaps.TypeMaps.Add(key, typeMap);
return true;
} }
private void GenerateInterface(Class @class) private void GenerateInterface(Class @class)

2
src/Generator/Generators/CodeTemplate.cs

@ -135,7 +135,7 @@ namespace CppSharp.Generators
public virtual bool VisitClassTemplateSpecializationDecl(ClassTemplateSpecialization specialization) public virtual bool VisitClassTemplateSpecializationDecl(ClassTemplateSpecialization specialization)
{ {
throw new NotImplementedException(); return VisitClassDecl(specialization);
} }
public virtual bool VisitFunctionTemplateDecl(FunctionTemplate template) public virtual bool VisitFunctionTemplateDecl(FunctionTemplate template)

Loading…
Cancel
Save