Browse Source

Minor code refactoring for re-use.

pull/1710/head
Joao Matos 3 years ago
parent
commit
aa4d445c20
  1. 6
      src/Generator/Generators/C/CppTypePrinter.cs
  2. 6
      src/Generator/Generators/CodeGenerator.cs
  3. 32
      src/Generator/Generators/NAPI/NAPIHelpers.cs
  4. 9
      src/Generator/Generators/NAPI/NAPISources.cs
  5. 2
      src/Generator/Generators/QuickJS/QuickJSSources.cs

6
src/Generator/Generators/C/CppTypePrinter.cs

@ -584,7 +584,8 @@ namespace CppSharp.Generators.C @@ -584,7 +584,8 @@ namespace CppSharp.Generators.C
args.Add(arg.Type.Visit(this));
break;
case TemplateArgument.ArgumentKind.Declaration:
args.Add(arg.Declaration.Visit(this));
if (arg.Declaration != null)
args.Add(arg.Declaration.Visit(this));
break;
case TemplateArgument.ArgumentKind.Integral:
ClassTemplate template = specialization.TemplatedDecl;
@ -596,6 +597,7 @@ namespace CppSharp.Generators.C @@ -596,6 +597,7 @@ namespace CppSharp.Generators.C
{
args.Add(arg.Integral.ToString(CultureInfo.InvariantCulture));
}
break;
}
}
@ -634,7 +636,7 @@ namespace CppSharp.Generators.C @@ -634,7 +636,7 @@ namespace CppSharp.Generators.C
CppSharp.AST.Type desugared = function.FunctionType.Type.Desugar();
if (!desugared.IsPointerTo(out functionType))
functionType = (FunctionType)desugared;
string exceptionType = Print(functionType.ExceptionSpecType);
string exceptionType = functionType != null ? Print(functionType.ExceptionSpecType) : "";
var @return = function.OriginalReturnType.Visit(this);
@return.Name = @class + name;

6
src/Generator/Generators/CodeGenerator.cs

@ -316,7 +316,7 @@ namespace CppSharp.Generators @@ -316,7 +316,7 @@ namespace CppSharp.Generators
property.Visit(this);
}
VisitClassConstructors(@class);
VisitClassConstructors(@class.Constructors.Where(c => !ASTUtils.CheckIgnoreMethod(c)));
VisitClassMethods(@class);
return true;
@ -333,9 +333,9 @@ namespace CppSharp.Generators @@ -333,9 +333,9 @@ namespace CppSharp.Generators
}
}
public virtual void VisitClassConstructors(Class @class)
public virtual void VisitClassConstructors(IEnumerable<Method> constructors)
{
foreach (var ctor in @class.Constructors.Where(c => !ASTUtils.CheckIgnoreMethod(c)))
foreach (var ctor in constructors)
{
ctor.Visit(this);
}

32
src/Generator/Generators/NAPI/NAPIHelpers.cs

@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using CppSharp.AST;
using CppSharp.AST.Extensions;
@ -9,11 +10,9 @@ using CppSharp.Generators.NAPI; @@ -9,11 +10,9 @@ using CppSharp.Generators.NAPI;
namespace CppSharp.Generators.Cpp
{
public class NAPICodeGenerator : CCodeGenerator
public class MethodGroupCodeGenerator : CCodeGenerator
{
public override string FileExtension => "cpp";
public NAPICodeGenerator(BindingContext context, IEnumerable<TranslationUnit> units)
protected MethodGroupCodeGenerator(BindingContext context, IEnumerable<TranslationUnit> units)
: base(context, units)
{
}
@ -43,9 +42,9 @@ namespace CppSharp.Generators.Cpp @@ -43,9 +42,9 @@ namespace CppSharp.Generators.Cpp
return VisitClassDeclContext(@class);
}
public override void VisitClassConstructors(Class @class)
public override void VisitClassConstructors(IEnumerable<Method> ctors)
{
var constructors = @class.Constructors.Where(c => c.IsGenerated && !c.IsCopyConstructor)
var constructors = ctors.Where(c => c.IsGenerated && !c.IsCopyConstructor)
.ToList();
if (!constructors.Any())
@ -59,7 +58,7 @@ namespace CppSharp.Generators.Cpp @@ -59,7 +58,7 @@ namespace CppSharp.Generators.Cpp
if (!function.IsGenerated)
return false;
if (!(function is Method method))
if (function is not Method method)
return true;
if (method.IsConstructor || method.IsDestructor)
@ -88,10 +87,27 @@ namespace CppSharp.Generators.Cpp @@ -88,10 +87,27 @@ namespace CppSharp.Generators.Cpp
foreach (var method in @group)
{
method.Visit(this);
return;
}
}
public static string GetTranslationUnitName(TranslationUnit unit)
{
var paths = unit.FileRelativePath.Split('/').ToList();
paths = paths.Select(p => Path.GetFileNameWithoutExtension(p.ToLowerInvariant())).ToList();
var name = string.Join('_', paths);
return name;
}
}
public class NAPICodeGenerator : MethodGroupCodeGenerator
{
public override string FileExtension => "cpp";
public NAPICodeGenerator(BindingContext context, IEnumerable<TranslationUnit> units)
: base(context, units)
{
}
public virtual MarshalPrinter<MarshalContext, CppTypePrinter> GetMarshalManagedToNativePrinter(MarshalContext ctx)
{
return new NAPIMarshalManagedToNativePrinter(ctx);

9
src/Generator/Generators/NAPI/NAPISources.cs

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using CppSharp.AST;
@ -24,14 +23,6 @@ namespace CppSharp.Generators.Cpp @@ -24,14 +23,6 @@ namespace CppSharp.Generators.Cpp
{
}
public static string GetTranslationUnitName(TranslationUnit unit)
{
var paths = unit.FileRelativePath.Split('/').ToList();
paths = paths.Select(p => Path.GetFileNameWithoutExtension(p.ToLowerInvariant())).ToList();
var name = string.Join('_', paths);
return name;
}
public override void Process()
{
GenerateFilePreamble(CommentKind.BCPL);

2
src/Generator/Generators/QuickJS/QuickJSSources.cs

@ -198,7 +198,7 @@ namespace CppSharp.Generators.Cpp @@ -198,7 +198,7 @@ namespace CppSharp.Generators.Cpp
{
}
public override void VisitClassConstructors(Class @class)
public override void VisitClassConstructors(IEnumerable<Method> ctors)
{
}

Loading…
Cancel
Save