@@ -41,6 +41,9 @@ public void Preprocess(Driver driver, ASTContext lib)
41
41
IgnorePrivateDeclarations ( unit ) ;
42
42
}
43
43
44
+ lib . FindFunction ( "QtSharedPointer::weakPointerFromVariant_internal" ) . First ( ) . ExplicitlyIgnore ( ) ;
45
+ lib . FindFunction ( "QtSharedPointer::sharedPointerFromVariant_internal" ) . First ( ) . ExplicitlyIgnore ( ) ;
46
+
44
47
// QString is type-mapped to string so we only need two methods for the conversion
45
48
var qString = lib . FindCompleteClass ( "QString" ) ;
46
49
foreach ( var @class in qString . Declarations )
@@ -52,6 +55,23 @@ public void Preprocess(Driver driver, ASTContext lib)
52
55
method . ExplicitlyIgnore ( ) ;
53
56
}
54
57
58
+ foreach ( var template in lib . FindDecl < ClassTemplate > ( "QList" ) )
59
+ {
60
+ var qListQVariant = template . Specializations . FirstOrDefault (
61
+ s =>
62
+ {
63
+ var type = s . Arguments [ 0 ] . Type . Type ;
64
+ if ( type == null )
65
+ return false ;
66
+ Class @class ;
67
+ return s . Arguments [ 0 ] . Type . Type . TryGetClass ( out @class ) && @class . Name == "QVariant" ;
68
+ } ) ;
69
+ if ( qListQVariant != null )
70
+ {
71
+ qListQVariant . Methods . First ( m => m . OriginalName == "toSet" ) . ExplicitlyIgnore ( ) ;
72
+ }
73
+ }
74
+
55
75
// HACK: work around https://github.com/mono/CppSharp/issues/594
56
76
lib . FindCompleteClass ( "QGraphicsItem" ) . FindEnum ( "Extension" ) . Access = AccessSpecifier . Public ;
57
77
lib . FindCompleteClass ( "QAbstractSlider" ) . FindEnum ( "SliderChange" ) . Access = AccessSpecifier . Public ;
@@ -132,7 +152,7 @@ public void Postprocess(Driver driver, ASTContext lib)
132
152
{
133
153
var prefix = Platform . IsWindows ? string . Empty : "lib" ;
134
154
var extension = Platform . IsWindows ? ".dll" : Platform . IsMacOS ? ".dylib" : ".so" ;
135
- var inlinesLibraryFile = string . Format ( "{0}{1}{2}" , prefix , module . InlinesLibraryName , extension ) ;
155
+ var inlinesLibraryFile = $ " { prefix } { module . SymbolsLibraryName } { extension } " ;
136
156
var inlinesLibraryPath = Path . Combine ( driver . Options . OutputDir , Platform . IsWindows ? "release" : string . Empty , inlinesLibraryFile ) ;
137
157
this . wrappedModules . Add ( new KeyValuePair < string , string > ( module . LibraryName + ".dll" , inlinesLibraryPath ) ) ;
138
158
}
@@ -166,8 +186,7 @@ public void Setup(Driver driver)
166
186
moduleName . StartsWith ( "3D" , StringComparison . Ordinal ) )
167
187
{
168
188
module . OutputNamespace = string . Empty ;
169
- module . InlinesLibraryName = $ "{ qtModule } -inlines";
170
- module . TemplatesLibraryName = $ "{ qtModule } -templates";
189
+ module . SymbolsLibraryName = $ "{ qtModule } -symbols";
171
190
}
172
191
else
173
192
{
@@ -245,8 +264,8 @@ public void SetupPasses(Driver driver)
245
264
driver . Context . TranslationUnitPasses . AddPass ( new GenerateEventEventsPass ( driver . Generator ) ) ;
246
265
driver . Context . TranslationUnitPasses . AddPass ( new RemoveQObjectMembersPass ( ) ) ;
247
266
248
- var generateInlinesPass = driver . Context . TranslationUnitPasses . FindPass < GenerateInlinesPass > ( ) ;
249
- generateInlinesPass . InlinesCodeGenerated += ( sender , e ) =>
267
+ var generateSymbolsPass = driver . Context . TranslationUnitPasses . FindPass < GenerateSymbolsPass > ( ) ;
268
+ generateSymbolsPass . SymbolsCodeGenerated += ( sender , e ) =>
250
269
{
251
270
e . OutputDir = driver . Context . Options . OutputDir ;
252
271
this . CompileMakefile ( e ) ;
@@ -279,9 +298,9 @@ private static void IgnorePrivateDeclaration(Declaration declaration)
279
298
}
280
299
}
281
300
282
- private void CompileMakefile ( GenerateInlinesPass . InlinesCodeEventArgs e )
301
+ private void CompileMakefile ( GenerateSymbolsPass . SymbolsCodeEventArgs e )
283
302
{
284
- var pro = $ "{ e . Module . InlinesLibraryName } .pro";
303
+ var pro = $ "{ e . Module . SymbolsLibraryName } .pro";
285
304
var path = Path . Combine ( e . OutputDir , pro ) ;
286
305
var proBuilder = new StringBuilder ( ) ;
287
306
var qtModules = string . Join ( " " , from header in e . Module . Headers
@@ -295,7 +314,7 @@ private void CompileMakefile(GenerateInlinesPass.InlinesCodeEventArgs e)
295
314
296
315
proBuilder . Append ( $ "QT += { qtModules } \n ") ;
297
316
proBuilder . Append ( "CONFIG += c++11\n " ) ;
298
- proBuilder . Append ( $ "TARGET = { e . Module . InlinesLibraryName } \n ") ;
317
+ proBuilder . Append ( $ "TARGET = { e . Module . SymbolsLibraryName } \n ") ;
299
318
proBuilder . Append ( "TEMPLATE = lib\n " ) ;
300
319
proBuilder . Append ( $ "SOURCES += { Path . ChangeExtension ( pro , "cpp" ) } \n ") ;
301
320
if ( Environment . OSVersion . Platform == PlatformID . Win32NT )
0 commit comments