@@ -41,6 +41,9 @@ public void Preprocess(Driver driver, ASTContext lib)
4141 IgnorePrivateDeclarations ( unit ) ;
4242 }
4343
44+ lib . FindFunction ( "QtSharedPointer::weakPointerFromVariant_internal" ) . First ( ) . ExplicitlyIgnore ( ) ;
45+ lib . FindFunction ( "QtSharedPointer::sharedPointerFromVariant_internal" ) . First ( ) . ExplicitlyIgnore ( ) ;
46+
4447 // QString is type-mapped to string so we only need two methods for the conversion
4548 var qString = lib . FindCompleteClass ( "QString" ) ;
4649 foreach ( var @class in qString . Declarations )
@@ -52,6 +55,23 @@ public void Preprocess(Driver driver, ASTContext lib)
5255 method . ExplicitlyIgnore ( ) ;
5356 }
5457
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+
5575 // HACK: work around https://github.com/mono/CppSharp/issues/594
5676 lib . FindCompleteClass ( "QGraphicsItem" ) . FindEnum ( "Extension" ) . Access = AccessSpecifier . Public ;
5777 lib . FindCompleteClass ( "QAbstractSlider" ) . FindEnum ( "SliderChange" ) . Access = AccessSpecifier . Public ;
@@ -132,7 +152,7 @@ public void Postprocess(Driver driver, ASTContext lib)
132152 {
133153 var prefix = Platform . IsWindows ? string . Empty : "lib" ;
134154 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 } " ;
136156 var inlinesLibraryPath = Path . Combine ( driver . Options . OutputDir , Platform . IsWindows ? "release" : string . Empty , inlinesLibraryFile ) ;
137157 this . wrappedModules . Add ( new KeyValuePair < string , string > ( module . LibraryName + ".dll" , inlinesLibraryPath ) ) ;
138158 }
@@ -166,8 +186,7 @@ public void Setup(Driver driver)
166186 moduleName . StartsWith ( "3D" , StringComparison . Ordinal ) )
167187 {
168188 module . OutputNamespace = string . Empty ;
169- module . InlinesLibraryName = $ "{ qtModule } -inlines";
170- module . TemplatesLibraryName = $ "{ qtModule } -templates";
189+ module . SymbolsLibraryName = $ "{ qtModule } -symbols";
171190 }
172191 else
173192 {
@@ -245,8 +264,8 @@ public void SetupPasses(Driver driver)
245264 driver . Context . TranslationUnitPasses . AddPass ( new GenerateEventEventsPass ( driver . Generator ) ) ;
246265 driver . Context . TranslationUnitPasses . AddPass ( new RemoveQObjectMembersPass ( ) ) ;
247266
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 ) =>
250269 {
251270 e . OutputDir = driver . Context . Options . OutputDir ;
252271 this . CompileMakefile ( e ) ;
@@ -279,9 +298,9 @@ private static void IgnorePrivateDeclaration(Declaration declaration)
279298 }
280299 }
281300
282- private void CompileMakefile ( GenerateInlinesPass . InlinesCodeEventArgs e )
301+ private void CompileMakefile ( GenerateSymbolsPass . SymbolsCodeEventArgs e )
283302 {
284- var pro = $ "{ e . Module . InlinesLibraryName } .pro";
303+ var pro = $ "{ e . Module . SymbolsLibraryName } .pro";
285304 var path = Path . Combine ( e . OutputDir , pro ) ;
286305 var proBuilder = new StringBuilder ( ) ;
287306 var qtModules = string . Join ( " " , from header in e . Module . Headers
@@ -295,7 +314,7 @@ private void CompileMakefile(GenerateInlinesPass.InlinesCodeEventArgs e)
295314
296315 proBuilder . Append ( $ "QT += { qtModules } \n ") ;
297316 proBuilder . Append ( "CONFIG += c++11\n " ) ;
298- proBuilder . Append ( $ "TARGET = { e . Module . InlinesLibraryName } \n ") ;
317+ proBuilder . Append ( $ "TARGET = { e . Module . SymbolsLibraryName } \n ") ;
299318 proBuilder . Append ( "TEMPLATE = lib\n " ) ;
300319 proBuilder . Append ( $ "SOURCES += { Path . ChangeExtension ( pro , "cpp" ) } \n ") ;
301320 if ( Environment . OSVersion . Platform == PlatformID . Win32NT )
0 commit comments