Skip to content

Commit 64c3b24

Browse files
committed
TypeMap: cleanup patches from previous commits
1 parent 15ecf3b commit 64c3b24

File tree

6 files changed

+69
-117
lines changed

6 files changed

+69
-117
lines changed

src/Generator/Types/Std/Stdlib.CLI.cs

+17-17
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ namespace CppSharp.Types.Std.CLI
1111
[TypeMap("const char*", GeneratorKindID = GeneratorKind.CLI_ID)]
1212
public class ConstCharPointer : TypeMap
1313
{
14-
public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind)
14+
public override Type SignatureType(TypePrinterContext ctx)
1515
{
1616
return new CILType(typeof(string));
1717
}
1818

19-
public override void MarshalToNative(MarshalContext ctx, GeneratorKind kind)
19+
public override void MarshalToNative(MarshalContext ctx)
2020
{
2121
ctx.Before.WriteLine(
2222
"auto _{0} = clix::marshalString<clix::E_UTF8>({1});",
@@ -25,7 +25,7 @@ public override void MarshalToNative(MarshalContext ctx, GeneratorKind kind)
2525
ctx.Return.Write("_{0}.c_str()", ctx.ArgName);
2626
}
2727

28-
public override void MarshalToManaged(MarshalContext ctx, GeneratorKind kind)
28+
public override void MarshalToManaged(MarshalContext ctx)
2929
{
3030
if (ctx.Parameter != null && !ctx.Parameter.IsOut &&
3131
!ctx.Parameter.IsInOut)
@@ -83,18 +83,18 @@ public class ConstChar32TPointer : ConstCharPointer
8383
[TypeMap("basic_string<char, char_traits<char>, allocator<char>>", GeneratorKindID = GeneratorKind.CLI_ID)]
8484
public class String : TypeMap
8585
{
86-
public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind)
86+
public override Type SignatureType(TypePrinterContext ctx)
8787
{
8888
return new CILType(typeof(string));
8989
}
9090

91-
public override void MarshalToNative(MarshalContext ctx, GeneratorKind kind)
91+
public override void MarshalToNative(MarshalContext ctx)
9292
{
9393
ctx.Return.Write("clix::marshalString<clix::E_UTF8>({0})",
9494
ctx.Parameter.Name);
9595
}
9696

97-
public override void MarshalToManaged(MarshalContext ctx, GeneratorKind kind)
97+
public override void MarshalToManaged(MarshalContext ctx)
9898
{
9999
ctx.Return.Write("clix::marshalString<clix::E_UTF8>({0})",
100100
ctx.ReturnVarName);
@@ -104,18 +104,18 @@ public override void MarshalToManaged(MarshalContext ctx, GeneratorKind kind)
104104
[TypeMap("std::wstring", GeneratorKindID = GeneratorKind.CLI_ID)]
105105
public class WString : TypeMap
106106
{
107-
public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind)
107+
public override Type SignatureType(TypePrinterContext ctx)
108108
{
109109
return new CILType(typeof(string));
110110
}
111111

112-
public override void MarshalToNative(MarshalContext ctx, GeneratorKind kind)
112+
public override void MarshalToNative(MarshalContext ctx)
113113
{
114114
ctx.Return.Write("clix::marshalString<clix::E_UTF16>({0})",
115115
ctx.Parameter.Name);
116116
}
117117

118-
public override void MarshalToManaged(MarshalContext ctx, GeneratorKind kind)
118+
public override void MarshalToManaged(MarshalContext ctx)
119119
{
120120
ctx.Return.Write("clix::marshalString<clix::E_UTF16>({0})",
121121
ctx.ReturnVarName);
@@ -143,13 +143,13 @@ public override bool IsIgnored
143143
}
144144
}
145145

146-
public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind)
146+
public override Type SignatureType(TypePrinterContext ctx)
147147
{
148148
return new CustomType(
149149
$"::System::Collections::Generic::List<{ctx.GetTemplateParameterList()}>^");
150150
}
151151

152-
public override void MarshalToNative(MarshalContext ctx, GeneratorKind kind)
152+
public override void MarshalToNative(MarshalContext ctx)
153153
{
154154
var desugared = Type.Desugar();
155155
var templateType = desugared as TemplateSpecializationType;
@@ -207,7 +207,7 @@ public override void MarshalToNative(MarshalContext ctx, GeneratorKind kind)
207207
ctx.Return.Write(tmpVarName);
208208
}
209209

210-
public override void MarshalToManaged(MarshalContext ctx, GeneratorKind kind)
210+
public override void MarshalToManaged(MarshalContext ctx)
211211
{
212212
var desugared = Type.Desugar();
213213
var templateType = desugared as TemplateSpecializationType;
@@ -261,19 +261,19 @@ public class Map : TypeMap
261261
{
262262
public override bool IsIgnored { get { return true; } }
263263

264-
public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind)
264+
public override Type SignatureType(TypePrinterContext ctx)
265265
{
266266
var type = Type as TemplateSpecializationType;
267267
return new CustomType(
268268
$@"::System::Collections::Generic::Dictionary<{type.Arguments[0].Type}, {type.Arguments[1].Type}>^");
269269
}
270270

271-
public override void MarshalToNative(MarshalContext ctx, GeneratorKind kind)
271+
public override void MarshalToNative(MarshalContext ctx)
272272
{
273273
throw new System.NotImplementedException();
274274
}
275275

276-
public override void MarshalToManaged(MarshalContext ctx, GeneratorKind kind)
276+
public override void MarshalToManaged(MarshalContext ctx)
277277
{
278278
throw new System.NotImplementedException();
279279
}
@@ -294,12 +294,12 @@ public class SharedPtr : TypeMap
294294
[TypeMap("basic_ostream<char, char_traits<char>>", GeneratorKind.CLI_ID)]
295295
public class OStream : TypeMap
296296
{
297-
public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind)
297+
public override Type SignatureType(TypePrinterContext ctx)
298298
{
299299
return new CILType(typeof(System.IO.TextWriter));
300300
}
301301

302-
public override void MarshalToNative(MarshalContext ctx, GeneratorKind kind)
302+
public override void MarshalToNative(MarshalContext ctx)
303303
{
304304
var marshal = (CLIMarshalManagedToNativePrinter)ctx.MarshalToNative;
305305
if (!ctx.Parameter.Type.Desugar().IsPointer())

src/Generator/Types/Std/Stdlib.CSharp.cs

+16-16
Original file line numberDiff line numberDiff line change
@@ -14,41 +14,41 @@ namespace CppSharp.Types.Std.CSharp
1414
[TypeMap("int", GeneratorKindID = GeneratorKind.CSharp_ID)]
1515
public class Int : TypeMap
1616
{
17-
public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind) =>
17+
public override Type SignatureType(TypePrinterContext ctx) =>
1818
CSharpTypePrinter.GetSignedType(Context.TargetInfo.IntWidth);
1919
}
2020

2121
[TypeMap("unsigned int", GeneratorKindID = GeneratorKind.CSharp_ID)]
2222
public class UnsignedInt : TypeMap
2323
{
24-
public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind) =>
24+
public override Type SignatureType(TypePrinterContext ctx) =>
2525
CSharpTypePrinter.GetUnsignedType(Context.TargetInfo.IntWidth);
2626
}
2727

2828
[TypeMap("long", GeneratorKindID = GeneratorKind.CSharp_ID)]
2929
public class Long : TypeMap
3030
{
31-
public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind) =>
31+
public override Type SignatureType(TypePrinterContext ctx) =>
3232
CSharpTypePrinter.GetSignedType(Context.TargetInfo.LongWidth);
3333
}
3434

3535
[TypeMap("unsigned long", GeneratorKindID = GeneratorKind.CSharp_ID)]
3636
public class UnsignedLong : TypeMap
3737
{
38-
public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind) =>
38+
public override Type SignatureType(TypePrinterContext ctx) =>
3939
CSharpTypePrinter.GetUnsignedType(Context.TargetInfo.LongWidth);
4040
}
4141

4242
[TypeMap("char", GeneratorKindID = GeneratorKind.CSharp_ID)]
4343
public class Char : TypeMap
4444
{
45-
public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind)
45+
public override Type SignatureType(TypePrinterContext ctx)
4646
{
4747
return new CILType(ctx.Kind == TypePrinterContextKind.Native ||
4848
!Context.Options.MarshalCharAsManagedChar ? typeof(sbyte) : typeof(char));
4949
}
5050

51-
public override void MarshalToNative(MarshalContext ctx, GeneratorKind kind)
51+
public override void MarshalToNative(MarshalContext ctx)
5252
{
5353
if (Context.Options.MarshalCharAsManagedChar)
5454
ctx.Return.Write("global::System.Convert.ToSByte({0})",
@@ -57,7 +57,7 @@ public override void MarshalToNative(MarshalContext ctx, GeneratorKind kind)
5757
ctx.Return.Write(ctx.Parameter.Name);
5858
}
5959

60-
public override void MarshalToManaged(MarshalContext ctx, GeneratorKind kind)
60+
public override void MarshalToManaged(MarshalContext ctx)
6161
{
6262
if (Context.Options.MarshalCharAsManagedChar)
6363
ctx.Return.Write("global::System.Convert.ToChar({0})",
@@ -70,7 +70,7 @@ public override void MarshalToManaged(MarshalContext ctx, GeneratorKind kind)
7070
[TypeMap("char16_t", GeneratorKindID = GeneratorKind.CSharp_ID)]
7171
public class Char16T : TypeMap
7272
{
73-
public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind)
73+
public override Type SignatureType(TypePrinterContext ctx)
7474
{
7575
return new CILType(typeof(char));
7676
}
@@ -79,7 +79,7 @@ public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind)
7979
[TypeMap("wchar_t", GeneratorKindID = GeneratorKind.CSharp_ID)]
8080
public class WCharT : TypeMap
8181
{
82-
public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind)
82+
public override Type SignatureType(TypePrinterContext ctx)
8383
{
8484
return new CILType(typeof(char));
8585
}
@@ -88,7 +88,7 @@ public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind)
8888
[TypeMap("const char*", GeneratorKindID = GeneratorKind.CSharp_ID)]
8989
public class ConstCharPointer : TypeMap
9090
{
91-
public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind)
91+
public override Type SignatureType(TypePrinterContext ctx)
9292
{
9393
if (ctx.Kind == TypePrinterContextKind.Managed)
9494
return new CILType(typeof(string));
@@ -117,7 +117,7 @@ public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind)
117117
$"{Context.Options.Encoding.EncodingName} is not supported yet.");
118118
}
119119

120-
public override void MarshalToNative(MarshalContext ctx, GeneratorKind kind)
120+
public override void MarshalToNative(MarshalContext ctx)
121121
{
122122
string param = ctx.Parameter.Name;
123123
if (ctx.Parameter.Usage == ParameterUsage.Unknown &&
@@ -194,7 +194,7 @@ public override void MarshalToNative(MarshalContext ctx, GeneratorKind kind)
194194
ctx.Return.Write($"{bytePtr}");
195195
}
196196

197-
public override void MarshalToManaged(MarshalContext ctx, GeneratorKind kind)
197+
public override void MarshalToManaged(MarshalContext ctx)
198198
{
199199
if (ctx.Parameter != null && !ctx.Parameter.IsOut &&
200200
!ctx.Parameter.IsInOut)
@@ -304,7 +304,7 @@ public class ConstChar32TPointer : ConstCharPointer
304304
[TypeMap("basic_string<char, char_traits<char>, allocator<char>>", GeneratorKindID = GeneratorKind.CSharp_ID)]
305305
public class String : TypeMap
306306
{
307-
public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind)
307+
public override Type SignatureType(TypePrinterContext ctx)
308308
{
309309
if (ctx.Kind == TypePrinterContextKind.Managed)
310310
return new CILType(typeof(string));
@@ -316,7 +316,7 @@ public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind)
316316
return new CustomType(basicString.Visit(typePrinter).Type);
317317
}
318318

319-
public override void MarshalToNative(MarshalContext ctx, GeneratorKind kind)
319+
public override void MarshalToNative(MarshalContext ctx)
320320
{
321321
Type type = ctx.Parameter.Type.Desugar();
322322
ClassTemplateSpecialization basicString = GetBasicString(type);
@@ -361,7 +361,7 @@ public override void MarshalToNative(MarshalContext ctx, GeneratorKind kind)
361361
}
362362
}
363363

364-
public override void MarshalToManaged(MarshalContext ctx, GeneratorKind kind)
364+
public override void MarshalToManaged(MarshalContext ctx)
365365
{
366366
var type = Type.Desugar(resolveTemplateSubstitution: false);
367367
ClassTemplateSpecialization basicString = GetBasicString(type);
@@ -415,7 +415,7 @@ private static ClassTemplateSpecialization GetBasicString(Type type)
415415
[TypeMap("FILE", GeneratorKindID = GeneratorKind.CSharp_ID)]
416416
public class FILE : TypeMap
417417
{
418-
public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind)
418+
public override Type SignatureType(TypePrinterContext ctx)
419419
{
420420
return new CILType(typeof(System.IntPtr));
421421
}

src/Generator/Types/TypeMap.cs

+6-54
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@
22
using CppSharp.AST;
33
using CppSharp.Generators;
44
using CppSharp.Generators.AST;
5-
using CppSharp.Generators.C;
65
using CppSharp.Generators.CLI;
7-
using CppSharp.Generators.Cpp;
8-
using CppSharp.Generators.CSharp;
96
using Attribute = System.Attribute;
107
using Type = CppSharp.AST.Type;
118

@@ -51,64 +48,19 @@ public class TypeMap
5148
/// </summary>
5249
public virtual bool DoesMarshalling => true;
5350

54-
public Type SignatureType(TypePrinterContext ctx)
51+
public virtual Type SignatureType(TypePrinterContext ctx)
5552
{
56-
return SignatureType(ctx, Context.Options.GeneratorKind);
53+
return new CILType(typeof(object));
5754
}
5855

59-
public virtual Type SignatureType(TypePrinterContext ctx, GeneratorKind kind)
56+
public virtual void MarshalToNative(MarshalContext ctx)
6057
{
61-
switch (kind)
62-
{
63-
case var _ when ReferenceEquals(kind, GeneratorKind.C):
64-
case var _ when ReferenceEquals(kind, GeneratorKind.CPlusPlus):
65-
case var _ when ReferenceEquals(kind, GeneratorKind.CLI):
66-
case var _ when ReferenceEquals(kind, GeneratorKind.CSharp):
67-
return new CILType(typeof(object));
68-
default:
69-
throw new System.NotImplementedException();
70-
}
58+
ctx.Return.Write(ctx.Parameter.Name);
7159
}
7260

73-
public void MarshalToNative(MarshalContext ctx)
61+
public virtual void MarshalToManaged(MarshalContext ctx)
7462
{
75-
MarshalToNative(ctx, Context.Options.GeneratorKind);
76-
}
77-
78-
public virtual void MarshalToNative(MarshalContext ctx, GeneratorKind kind)
79-
{
80-
kind ??= Context.Options.GeneratorKind;
81-
switch (kind)
82-
{
83-
case var _ when ReferenceEquals(kind, GeneratorKind.C):
84-
case var _ when ReferenceEquals(kind, GeneratorKind.CPlusPlus):
85-
case var _ when ReferenceEquals(kind, GeneratorKind.CLI):
86-
case var _ when ReferenceEquals(kind, GeneratorKind.CSharp):
87-
ctx.Return.Write(ctx.Parameter.Name);
88-
return;
89-
default:
90-
throw new System.NotImplementedException();
91-
}
92-
}
93-
94-
public void MarshalToManaged(MarshalContext ctx)
95-
{
96-
MarshalToManaged(ctx, Context.Options.GeneratorKind);
97-
}
98-
99-
public virtual void MarshalToManaged(MarshalContext ctx, GeneratorKind kind)
100-
{
101-
switch (kind)
102-
{
103-
case var _ when ReferenceEquals(kind, GeneratorKind.C):
104-
case var _ when ReferenceEquals(kind, GeneratorKind.CPlusPlus):
105-
case var _ when ReferenceEquals(kind, GeneratorKind.CLI):
106-
case var _ when ReferenceEquals(kind, GeneratorKind.CSharp):
107-
ctx.Return.Write(ctx.ReturnVarName);
108-
return;
109-
default:
110-
throw new System.NotImplementedException();
111-
}
63+
ctx.Return.Write(ctx.ReturnVarName);
11264
}
11365

11466
#region C# backend

tests/dotnet/CLI/CLI.Gen.cs

+6-6
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ namespace CppSharp.Tests
99
[TypeMap("IgnoredClassTemplateForEmployee", GeneratorKindID = GeneratorKind.CLI_ID)]
1010
public class IgnoredClassTemplateForEmployeeMap : TypeMap
1111
{
12-
public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind)
12+
public override Type SignatureType(TypePrinterContext ctx)
1313
{
1414
return new CustomType("CLI::Employee^");
1515
}
1616

17-
public override void MarshalToManaged(MarshalContext ctx, GeneratorKind kind)
17+
public override void MarshalToManaged(MarshalContext ctx)
1818
{
1919
ctx.Return.Write($"gcnew CLI::Employee({ctx.ReturnVarName}.m_employee)");
2020
}
@@ -25,17 +25,17 @@ namespace CLI
2525
[TypeMap("TestMappedTypeNonConstRefParam", GeneratorKindID = GeneratorKind.CLI_ID)]
2626
public class TestMappedTypeNonConstRefParamTypeMap : TypeMap
2727
{
28-
public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind)
28+
public override Type SignatureType(TypePrinterContext ctx)
2929
{
3030
return new CILType(typeof(string));
3131
}
3232

33-
public override void MarshalToManaged(MarshalContext ctx, GeneratorKind kind)
33+
public override void MarshalToManaged(MarshalContext ctx)
3434
{
3535
ctx.Return.Write("clix::marshalString<clix::E_UTF8>({0}.m_str)", ctx.ReturnVarName);
3636
}
3737

38-
public override void MarshalToNative(MarshalContext ctx, GeneratorKind kind)
38+
public override void MarshalToNative(MarshalContext ctx)
3939
{
4040
if (ctx.Parameter.Usage == ParameterUsage.InOut)
4141
{
@@ -57,7 +57,7 @@ namespace Cpp
5757
[TypeMap("TestMappedTypeNonConstRefParam", GeneratorKindID = GeneratorKind.CPlusPlus_ID)]
5858
public class TestMappedTypeNonConstRefParamTypeMap : TypeMap
5959
{
60-
public override Type SignatureType(TypePrinterContext ctx, GeneratorKind kind)
60+
public override Type SignatureType(TypePrinterContext ctx)
6161
{
6262
var tagType = ctx.Type as TagType;
6363
var typePrinter = new CppTypePrinter(Context);

0 commit comments

Comments
 (0)