@@ -16,18 +16,46 @@ public class VaList : TypeMap
16
16
public override bool IsIgnored => true ;
17
17
}
18
18
19
+ [ TypeMap ( "int" , GeneratorKind = GeneratorKind . CSharp ) ]
20
+ public class Int : TypeMap
21
+ {
22
+ public override Type CSharpSignatureType ( TypePrinterContext ctx ) =>
23
+ CSharpTypePrinter . GetSignedType ( Context . TargetInfo . IntWidth ) ;
24
+ }
25
+
26
+ [ TypeMap ( "unsigned int" , GeneratorKind = GeneratorKind . CSharp ) ]
27
+ public class UnsignedInt : TypeMap
28
+ {
29
+ public override Type CSharpSignatureType ( TypePrinterContext ctx ) =>
30
+ CSharpTypePrinter . GetUnsignedType ( Context . TargetInfo . IntWidth ) ;
31
+ }
32
+
33
+ [ TypeMap ( "long" , GeneratorKind = GeneratorKind . CSharp ) ]
34
+ public class Long : TypeMap
35
+ {
36
+ public override Type CSharpSignatureType ( TypePrinterContext ctx ) =>
37
+ CSharpTypePrinter . GetSignedType ( Context . TargetInfo . LongWidth ) ;
38
+ }
39
+
40
+ [ TypeMap ( "unsigned long" , GeneratorKind = GeneratorKind . CSharp ) ]
41
+ public class UnsignedLong : TypeMap
42
+ {
43
+ public override Type CSharpSignatureType ( TypePrinterContext ctx ) =>
44
+ CSharpTypePrinter . GetUnsignedType ( Context . TargetInfo . LongWidth ) ;
45
+ }
46
+
19
47
[ TypeMap ( "char" , GeneratorKind = GeneratorKind . CSharp ) ]
20
48
public class Char : TypeMap
21
49
{
22
50
public override Type CSharpSignatureType ( TypePrinterContext ctx )
23
51
{
24
52
return new CILType ( ctx . Kind == TypePrinterContextKind . Native ||
25
- ! Options . MarshalCharAsManagedChar ? typeof ( sbyte ) : typeof ( char ) ) ;
53
+ ! Context . Options . MarshalCharAsManagedChar ? typeof ( sbyte ) : typeof ( char ) ) ;
26
54
}
27
55
28
56
public override void CSharpMarshalToNative ( CSharpMarshalContext ctx )
29
57
{
30
- if ( Options . MarshalCharAsManagedChar )
58
+ if ( Context . Options . MarshalCharAsManagedChar )
31
59
ctx . Return . Write ( "global::System.Convert.ToSByte({0})" ,
32
60
ctx . Parameter . Name ) ;
33
61
else
@@ -36,7 +64,7 @@ public override void CSharpMarshalToNative(CSharpMarshalContext ctx)
36
64
37
65
public override void CSharpMarshalToManaged ( CSharpMarshalContext ctx )
38
66
{
39
- if ( Options . MarshalCharAsManagedChar )
67
+ if ( Context . Options . MarshalCharAsManagedChar )
40
68
ctx . Return . Write ( "global::System.Convert.ToChar({0})" ,
41
69
ctx . ReturnVarName ) ;
42
70
else
@@ -51,16 +79,6 @@ public override Type CSharpSignatureType(TypePrinterContext ctx)
51
79
{
52
80
return new CILType ( typeof ( char ) ) ;
53
81
}
54
-
55
- public override void CSharpMarshalToNative ( CSharpMarshalContext ctx )
56
- {
57
- ctx . Return . Write ( ctx . Parameter . Name ) ;
58
- }
59
-
60
- public override void CSharpMarshalToManaged ( CSharpMarshalContext ctx )
61
- {
62
- ctx . Return . Write ( ctx . ReturnVarName ) ;
63
- }
64
82
}
65
83
66
84
[ TypeMap ( "wchar_t" , GeneratorKind = GeneratorKind . CSharp ) ]
@@ -70,16 +88,6 @@ public override Type CSharpSignatureType(TypePrinterContext ctx)
70
88
{
71
89
return new CILType ( typeof ( char ) ) ;
72
90
}
73
-
74
- public override void CSharpMarshalToNative ( CSharpMarshalContext ctx )
75
- {
76
- ctx . Return . Write ( ctx . Parameter . Name ) ;
77
- }
78
-
79
- public override void CSharpMarshalToManaged ( CSharpMarshalContext ctx )
80
- {
81
- ctx . Return . Write ( ctx . ReturnVarName ) ;
82
- }
83
91
}
84
92
85
93
[ TypeMap ( "const char*" , GeneratorKind = GeneratorKind . CSharp ) ]
@@ -92,13 +100,13 @@ public override Type CSharpSignatureType(TypePrinterContext ctx)
92
100
93
101
if ( ctx . Parameter == null || ctx . Parameter . Name == Helpers . ReturnIdentifier )
94
102
return new CustomType ( CSharpTypePrinter . IntPtrType ) ;
95
- if ( Options . Encoding == Encoding . ASCII )
103
+ if ( Context . Options . Encoding == Encoding . ASCII )
96
104
return new CustomType ( "[MarshalAs(UnmanagedType.LPStr)] string" ) ;
97
- if ( Options . Encoding == Encoding . Unicode ||
98
- Options . Encoding == Encoding . BigEndianUnicode )
105
+ if ( Context . Options . Encoding == Encoding . Unicode ||
106
+ Context . Options . Encoding == Encoding . BigEndianUnicode )
99
107
return new CustomType ( "[MarshalAs(UnmanagedType.LPWStr)] string" ) ;
100
108
throw new System . NotSupportedException (
101
- $ "{ Options . Encoding . EncodingName } is not supported yet.") ;
109
+ $ "{ Context . Options . Encoding . EncodingName } is not supported yet.") ;
102
110
}
103
111
104
112
public override void CSharpMarshalToNative ( CSharpMarshalContext ctx )
@@ -111,19 +119,19 @@ public override void CSharpMarshalToNative(CSharpMarshalContext ctx)
111
119
ctx . Return . Write ( ctx . Parameter . Name ) ;
112
120
return ;
113
121
}
114
- if ( Equals ( Options . Encoding , Encoding . ASCII ) )
122
+ if ( Equals ( Context . Options . Encoding , Encoding . ASCII ) )
115
123
{
116
124
ctx . Return . Write ( $ "Marshal.StringToHGlobalAnsi({ ctx . Parameter . Name } )") ;
117
125
return ;
118
126
}
119
- if ( Equals ( Options . Encoding , Encoding . Unicode ) ||
120
- Equals ( Options . Encoding , Encoding . BigEndianUnicode ) )
127
+ if ( Equals ( Context . Options . Encoding , Encoding . Unicode ) ||
128
+ Equals ( Context . Options . Encoding , Encoding . BigEndianUnicode ) )
121
129
{
122
130
ctx . Return . Write ( $ "Marshal.StringToHGlobalUni({ ctx . Parameter . Name } )") ;
123
131
return ;
124
132
}
125
133
throw new System . NotSupportedException (
126
- $ "{ Options . Encoding . EncodingName } is not supported yet.") ;
134
+ $ "{ Context . Options . Encoding . EncodingName } is not supported yet.") ;
127
135
}
128
136
129
137
public override void CSharpMarshalToManaged ( CSharpMarshalContext ctx )
@@ -144,7 +152,7 @@ public override void CSharpMarshalToManaged(CSharpMarshalContext ctx)
144
152
var encoding = isChar ? Encoding . ASCII : Encoding . Unicode ;
145
153
146
154
if ( Equals ( encoding , Encoding . ASCII ) )
147
- encoding = Options . Encoding ;
155
+ encoding = Context . Options . Encoding ;
148
156
149
157
if ( Equals ( encoding , Encoding . ASCII ) )
150
158
{
@@ -579,15 +587,5 @@ public override Type CSharpSignatureType(TypePrinterContext ctx)
579
587
{
580
588
return new CILType ( typeof ( System . IntPtr ) ) ;
581
589
}
582
-
583
- public override void CSharpMarshalToNative ( CSharpMarshalContext ctx )
584
- {
585
- ctx . Return . Write ( ctx . Parameter . Name ) ;
586
- }
587
-
588
- public override void CSharpMarshalToManaged ( CSharpMarshalContext ctx )
589
- {
590
- ctx . Return . Write ( ctx . ReturnVarName ) ;
591
- }
592
590
}
593
591
}
0 commit comments