[Kde-bindings] kalyptus can now generate a SmokeKDE library

Richard Dale Richard_Dale at tipitina.demon.co.uk
Wed Sep 17 15:26:47 UTC 2003


On Wednesday 17 September 2003 15:28, Germain Garand wrote:
> Le Mardi 16 Septembre 2003 16:16, Richard Dale a écrit :
> > I've just checked in some changes to the kalyptus parser and Smoke code
> > generation, so it parses the current kdelibs ok - it just does the whole
> > of the Qt/KDE libs and puts the whole lot in a single libsmokekde.so. It
> > compiles, but I haven't tried it yet.
>
> Yum! I hadn't any luck in linking it yet, but it does compile fine!
> That's a wonderful playground you are opening there :-)
Indeed, if I run rbqtapi heroic amounts of stuff appears.. I think getting rid 
of useless classes is quite important to get the lib size down:

15512 -rwxrwxr-x    1 duke     15862346 Sep 17 12:36 libsmokekde.so.1.2.1

Will the new vtable scheme in Smoke v2 cut down the code bloat caused by all 
the inherited virtual methods being copied into the descendant classes for 
the callbacks?

> (ah, too bad KDE doesn't provide a file remembering compile-time defines...
> we should suggest that to the kde-core folks. I tried a similar hack to
> what you've commited for the translation macros, but I still get some
> misterious missing symbols... might a be a b0rked CVS though, my copy is
> old and hacked)
>
> > I've attached the contents of my kdebindings/smoke/kde build directory -
> > I haven't checked in that because its changed in smoke/qt, and I haven't
> > worked out the new way yet.
> >
> > I've added a file called kde_header_list which has all the headers
> > beginning with 'k' in kdelibs, plus these:
>
> I don't know if it could help for maintenance but I've made a script
> extracting all installed headers name from Makefile.am's, see attachment.
> You'd run it as :
> find $KDEDIR/kdelibs -name Makefile.am | xargs perl get_headers.pl
Maybe you can check in the new dir kdebindings/smoke/kde for the build if you 
know better than me? I couldn't quite work out what generated what and when..

> > So I don't know if there are any show stopping ones there that can't be
> > done without.
> > The following KDE classes are also excluded:
> >
> > 	    $className eq 'KEditListBox::CustomEditor' ||
> > 		$className eq 'KIO::KBookmarkMenuNSImporter' ||
> > 	    $className eq 'KPerDomainSettings' ||
> > 	    $className eq 'KApplicationPropsPlugin' ||
> > 	    $className eq 'KPrinter' ||
> > 	    $className eq 'KXMLGUIClient' ||
> > 	    $className eq 'KOpenWithHandler' ||
> > 	    $className eq 'KFileOpenWithHandler' ||
> > 	    $className eq 'KBindingPropsPlugin' ||
> > 	    $className eq 'KPropsDlgPlugin' ||
> > 	    $className eq 'KFileSharePropsPlugin' ||
> > 	    $className eq 'KFileItem' ||
> > 	    $className eq 'KBookmarkMenuNSImporter' ||
> > 	    $className eq 'KDevicePropsPlugin' ||
> > 	    $className eq 'KWin::WindowInfo' ||
> > 	    $className eq 'KFileMetaInfoProvider' ||
> > 	    $className eq 'KFileMimeTypeInfo' ||
> > 	    $className eq 'KExecPropsPlugin' ||
> > 	    $className eq 'KFilePermissionsPropsPlugin' ||
> > 	    $className eq 'KImageFilePreview' ||
> > 	    $className eq 'KBookmarkManager' ||
> > 	    $className eq 'KMainWindowInterface' ||
> > 	    $className eq 'KBookmarkNotifier' ||
> > 	    $className eq 'KOCRDialogFactory' ||
> > 	    $className eq 'KExtendedBookmarkOwner' ||
> > 	    $className eq 'KSharedPixmap' ||
> > 	    $className eq 'KLibrary' ||
> > 	    $className eq 'KScanDialogFactory' ||
> > 	    $className eq 'KBufferedIO' ||
> > 	    $className eq 'KExtendedSocket' ||
> > 	    $className eq 'KDictSpellingHighlighter' ||
> > 		$className eq 'KPropertiesDialog' ||
> > 	    $className eq 'KStdAccel::ShortcutList' ||
>
> Quite a list! It must have been a loooong compile fest to get here 8-|
Yes, very tedious. It reminds of why it was more fun to work on QtRuby than 
the other bindings I've done - because I didn't have to go through all those 
DO generate and compile 0.5 millions lines of C++, find code generation 
problem REPEAT until v.bored cycles.. :)

>  I wonder why you removed QWorkspace though?
Because it borked the build! You'll have to try it. I think now we have 
something out there that builds and runs, we can discuss, improve and zap 
individual problems like this as they come up.

Some classes crashed in init_class(), and I had to avoid them, so they should 
be removed from the build before they get to the runtime:

			if c =~ /__/ or c =~ /KMimeType/ or c =~ /KURLBar/ or c =~ /KURLComboBox/
				return
			end

> > We can play with Perl and Ruby versions of KDE/Smoke v1 (woo hoo!) while
> > Ashley finishes off Smoke v2. Then by the time he has finished we'll have
> > example programs to test it with, and we'll know any special problems
> > with marshalling etc with KDE.
>
> Yes! Thank you so much  :-)
We have a Bazaar!

-- Richard


More information about the Kde-bindings mailing list