Skip to content

Commit db7949b

Browse files
authored
Misc changes (mono#1710)
* Minor code refactoring for re-use. * Add Class.FindVariable helper method. * Upgrade to .NET 6.
1 parent c4a24b0 commit db7949b

File tree

8 files changed

+39
-24
lines changed

8 files changed

+39
-24
lines changed

build/Helpers.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ msvc_cpp_defines = { }
6161
default_gcc_version = "9.0.0"
6262
generate_build_config = true
6363
premake.path = premake.path .. ";" .. path.join(builddir, "modules")
64-
targetframework = "netcoreapp3.1"
64+
targetframework = "net6.0"
6565

6666
function string.starts(str, start)
6767
if str == nil then return end

src/AST/Class.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,11 @@ public Method FindMethodByUSR(string usr)
286286
.FirstOrDefault(m => m.USR == usr);
287287
}
288288

289+
public Variable FindVariable(string name)
290+
{
291+
return Variables.FirstOrDefault(m => m.Name == name);
292+
}
293+
289294
public override T Visit<T>(IDeclVisitor<T> visitor)
290295
{
291296
return visitor.VisitClassDecl(this);

src/CLI/CppSharp.CLI.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
33
<OutputType>Exe</OutputType>
4+
<TargetFramework>net6.0</TargetFramework>
45
</PropertyGroup>
56

67
<ItemGroup>

src/Generator/Generators/C/CppTypePrinter.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,8 @@ public override TypePrinterResult VisitClassTemplateSpecializationDecl(
584584
args.Add(arg.Type.Visit(this));
585585
break;
586586
case TemplateArgument.ArgumentKind.Declaration:
587-
args.Add(arg.Declaration.Visit(this));
587+
if (arg.Declaration != null)
588+
args.Add(arg.Declaration.Visit(this));
588589
break;
589590
case TemplateArgument.ArgumentKind.Integral:
590591
ClassTemplate template = specialization.TemplatedDecl;
@@ -596,6 +597,7 @@ public override TypePrinterResult VisitClassTemplateSpecializationDecl(
596597
{
597598
args.Add(arg.Integral.ToString(CultureInfo.InvariantCulture));
598599
}
600+
599601
break;
600602
}
601603
}
@@ -634,7 +636,7 @@ public override TypePrinterResult VisitFunctionDecl(Function function)
634636
CppSharp.AST.Type desugared = function.FunctionType.Type.Desugar();
635637
if (!desugared.IsPointerTo(out functionType))
636638
functionType = (FunctionType)desugared;
637-
string exceptionType = Print(functionType.ExceptionSpecType);
639+
string exceptionType = functionType != null ? Print(functionType.ExceptionSpecType) : "";
638640

639641
var @return = function.OriginalReturnType.Visit(this);
640642
@return.Name = @class + name;

src/Generator/Generators/CodeGenerator.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ public virtual bool VisitClassDeclContext(Class @class)
316316
property.Visit(this);
317317
}
318318

319-
VisitClassConstructors(@class);
319+
VisitClassConstructors(@class.Constructors.Where(c => !ASTUtils.CheckIgnoreMethod(c)));
320320
VisitClassMethods(@class);
321321

322322
return true;
@@ -333,9 +333,9 @@ public virtual void VisitClassMethods(Class @class)
333333
}
334334
}
335335

336-
public virtual void VisitClassConstructors(Class @class)
336+
public virtual void VisitClassConstructors(IEnumerable<Method> constructors)
337337
{
338-
foreach (var ctor in @class.Constructors.Where(c => !ASTUtils.CheckIgnoreMethod(c)))
338+
foreach (var ctor in constructors)
339339
{
340340
ctor.Visit(this);
341341
}

src/Generator/Generators/NAPI/NAPIHelpers.cs

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Globalization;
4+
using System.IO;
45
using System.Linq;
56
using CppSharp.AST;
67
using CppSharp.AST.Extensions;
@@ -9,11 +10,9 @@
910

1011
namespace CppSharp.Generators.Cpp
1112
{
12-
public class NAPICodeGenerator : CCodeGenerator
13+
public class MethodGroupCodeGenerator : CCodeGenerator
1314
{
14-
public override string FileExtension => "cpp";
15-
16-
public NAPICodeGenerator(BindingContext context, IEnumerable<TranslationUnit> units)
15+
protected MethodGroupCodeGenerator(BindingContext context, IEnumerable<TranslationUnit> units)
1716
: base(context, units)
1817
{
1918
}
@@ -43,9 +42,9 @@ public override bool VisitClassDecl(Class @class)
4342
return VisitClassDeclContext(@class);
4443
}
4544

46-
public override void VisitClassConstructors(Class @class)
45+
public override void VisitClassConstructors(IEnumerable<Method> ctors)
4746
{
48-
var constructors = @class.Constructors.Where(c => c.IsGenerated && !c.IsCopyConstructor)
47+
var constructors = ctors.Where(c => c.IsGenerated && !c.IsCopyConstructor)
4948
.ToList();
5049

5150
if (!constructors.Any())
@@ -59,7 +58,7 @@ public static bool ShouldGenerate(Function function)
5958
if (!function.IsGenerated)
6059
return false;
6160

62-
if (!(function is Method method))
61+
if (function is not Method method)
6362
return true;
6463

6564
if (method.IsConstructor || method.IsDestructor)
@@ -88,10 +87,27 @@ public virtual void GenerateMethodGroup(List<Method> @group)
8887
foreach (var method in @group)
8988
{
9089
method.Visit(this);
91-
return;
9290
}
9391
}
9492

93+
public static string GetTranslationUnitName(TranslationUnit unit)
94+
{
95+
var paths = unit.FileRelativePath.Split('/').ToList();
96+
paths = paths.Select(p => Path.GetFileNameWithoutExtension(p.ToLowerInvariant())).ToList();
97+
var name = string.Join('_', paths);
98+
return name;
99+
}
100+
}
101+
102+
public class NAPICodeGenerator : MethodGroupCodeGenerator
103+
{
104+
public override string FileExtension => "cpp";
105+
106+
public NAPICodeGenerator(BindingContext context, IEnumerable<TranslationUnit> units)
107+
: base(context, units)
108+
{
109+
}
110+
95111
public virtual MarshalPrinter<MarshalContext, CppTypePrinter> GetMarshalManagedToNativePrinter(MarshalContext ctx)
96112
{
97113
return new NAPIMarshalManagedToNativePrinter(ctx);

src/Generator/Generators/NAPI/NAPISources.cs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using System;
22
using System.Collections.Generic;
3-
using System.Globalization;
43
using System.IO;
54
using System.Linq;
65
using CppSharp.AST;
@@ -24,14 +23,6 @@ public NAPISources(BindingContext context, IEnumerable<TranslationUnit> units)
2423
{
2524
}
2625

27-
public static string GetTranslationUnitName(TranslationUnit unit)
28-
{
29-
var paths = unit.FileRelativePath.Split('/').ToList();
30-
paths = paths.Select(p => Path.GetFileNameWithoutExtension(p.ToLowerInvariant())).ToList();
31-
var name = string.Join('_', paths);
32-
return name;
33-
}
34-
3526
public override void Process()
3627
{
3728
GenerateFilePreamble(CommentKind.BCPL);

src/Generator/Generators/QuickJS/QuickJSSources.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ public QuickJSClassFuncDef(BindingContext context) : base(context, null)
198198
{
199199
}
200200

201-
public override void VisitClassConstructors(Class @class)
201+
public override void VisitClassConstructors(IEnumerable<Method> ctors)
202202
{
203203
}
204204

0 commit comments

Comments
 (0)