<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>arno&#039;s blog</title>
	<atom:link href="http://www.arnorehn.de/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.arnorehn.de/blog</link>
	<description>just another blog</description>
	<lastBuildDate>Mon, 02 Apr 2012 16:40:05 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5</generator>
		<item>
		<title>Connecting C++11 lambdas to Qt4 Signals with libffi (now portable)</title>
		<link>http://www.arnorehn.de/blog/2012/04/connecting-c11-lambdas-to-qt4-signals-with-libffi/</link>
		<comments>http://www.arnorehn.de/blog/2012/04/connecting-c11-lambdas-to-qt4-signals-with-libffi/#comments</comments>
		<pubDate>Sun, 01 Apr 2012 21:56:40 +0000</pubDate>
		<dc:creator>Arno</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[c++11]]></category>
		<category><![CDATA[lambda]]></category>
		<category><![CDATA[libffi]]></category>
		<category><![CDATA[qt]]></category>

		<guid isPermaLink="false">http://www.arnorehn.de/blog/?p=93</guid>
		<description><![CDATA[I know that this is probably not very useful, considering that it&#8217;s not portable and with Qt5 about to be released in June, but I found it interesting to experiment with the new language features and <span class="ellipsis">&#8230;</span> <span class="more-link-wrap"><a href="http://www.arnorehn.de/blog/2012/04/connecting-c11-lambdas-to-qt4-signals-with-libffi/" class="more-link"><span>Read More ...</span></a></span>]]></description>
				<content:encoded><![CDATA[<p>I know that this is probably not very useful, <del>considering that it&#8217;s not portable and</del> with Qt5 about to be <a href="http://qt-project.org/wiki/Qt_5.0">released in June</a>, but I found it interesting to experiment with the new language features and libffi.</p>
<p>The result is a class which lets you connect any function pointer or lambda, with or without bound variables, to Qt4 signals. Example of what you can do with it:</p><pre class="crayon-plain-tag">#include &lt;QtCore&gt;
#include &lt;QtGui&gt;
#include &lt;QtDebug&gt;

#include "lambdaconnection.h"

void printValue(int i) {
    qDebug() &lt;&lt; "value:" &lt;&lt; i;
}

int main(int argc, char **argv) {
    QApplication app(argc, argv);

    QSlider slider(Qt::Horizontal);
    slider.show();

    LambdaConnection::connect(&amp;slider, SIGNAL(valueChanged(int)), &amp;printValue);

    LambdaConnection::connect(&amp;slider, SIGNAL(valueChanged(int)), [&amp;app] (int i)
    {
        if (i &gt;= 99) {
            qDebug() &lt;&lt; "quit.";
            app.quit();
        }
    }); 

    app.exec();
}</pre><p>Quite nice, I think <img src="http://www.arnorehn.de/blog/wp-includes/images/smilies/icon_smile.gif" alt=":)" /> You can get the source for <a href="http://www.arnorehn.de/blog/wp-content/uploads/2012/04/lambdaconnection.h">lambdaconnection.h here</a>.</p>
<p><del>Its main drawback is the use of pointers to member functions as ordinary function pointers. It works with gcc and maybe clang, but it’s probably going to break with other compilers and/or operating systems.</del> <strong>UPDATE:</strong> By converting everything to std::function, we can have one template function which is called by libffi and handles any further lambda calls. No need for member-function-pointers anymore. Portability shouldn&#8217;t be an issue anymore, too.</p>
<p>Additionally, to avoid code duplication, it simply converts function pointers to std::function objects. This adds some overhead when calling the function pointer.</p>
<p>Anyway, it’s only an afternoon’s work and it was fun to code. Maybe someone will find this interesting <img src="http://www.arnorehn.de/blog/wp-includes/images/smilies/icon_smile.gif" alt=":)" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.arnorehn.de/blog/2012/04/connecting-c11-lambdas-to-qt4-signals-with-libffi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Java bindings?</title>
		<link>http://www.arnorehn.de/blog/2010/07/java-bindings/</link>
		<comments>http://www.arnorehn.de/blog/2010/07/java-bindings/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 16:22:44 +0000</pubDate>
		<dc:creator>Arno</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.arnorehn.de/blog/2010/07/java-bindings/</guid>
		<description><![CDATA[Since the C# bindings are apparently not really used/wanted by anyone (except for some Windows people &#8211; but that&#8217;s really not my main development platform) I thought that maybe some more people are interested in <span class="ellipsis">&#8230;</span> <span class="more-link-wrap"><a href="http://www.arnorehn.de/blog/2010/07/java-bindings/" class="more-link"><span>Read More ...</span></a></span>]]></description>
				<content:encoded><![CDATA[<p>Since the C# bindings are apparently not really used/wanted by anyone (except for some Windows people &#8211; but that&#8217;s really not my main development platform) I thought that maybe some more people are interested in Java bindings.</p>
<p>There was a poll on kdedevelopers.org two years ago that showed Java ahead of Ruby and C# &#8211; but it doesn&#8217;t seem to be really representative: there are at least some Ruby plasmoids on kde-look.org, but none in C# (which was still ahead of Ruby). Given that Trolltech/Nokia abandoned QtJambi I&#8217;m not too sure about Java bindings either.</p>
<p>So I&#8217;m asking the community directly before I start putting too much work into a project that noone really wants: So far we have (active) bindings projects for Python, Ruby and Perl &#8211; is there any demand for Qt/KDE Java bindings in the community? Or if not for Java, for any other language/platform?</p>
<p>Looking forward to your comments <img src='http://www.arnorehn.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.arnorehn.de/blog/2010/07/java-bindings/feed/</wfw:commentRss>
		<slash:comments>62</slash:comments>
		</item>
		<item>
		<title>And the bindings keep rocking: Writing Ruby KIO slaves</title>
		<link>http://www.arnorehn.de/blog/2010/07/and-the-bindings-keep-rocking-writing-ruby-kio-slaves/</link>
		<comments>http://www.arnorehn.de/blog/2010/07/and-the-bindings-keep-rocking-writing-ruby-kio-slaves/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 10:48:43 +0000</pubDate>
		<dc:creator>Arno</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.arnorehn.de/blog/?p=73</guid>
		<description><![CDATA[It seems like I got into a hacking frenzy after yesterday&#8217;s Ruby plugins for Kate. Today I sat down and took another look at the KRubyPluginFactory to implement KIO slave support. So here it is, <span class="ellipsis">&#8230;</span> <span class="more-link-wrap"><a href="http://www.arnorehn.de/blog/2010/07/and-the-bindings-keep-rocking-writing-ruby-kio-slaves/" class="more-link"><span>Read More ...</span></a></span>]]></description>
				<content:encoded><![CDATA[<p>It seems like I got into a hacking frenzy after yesterday&#8217;s Ruby plugins for Kate. Today I sat down and took another look at the KRubyPluginFactory to implement KIO slave support.</p>
<p>So here it is, our very first Ruby Hello World KIO slave:</p><pre class="crayon-plain-tag"># kate: space-indent on; indent-width 2;

require 'korundum4'
require 'kio'

module Rubytest

  class Main &lt; KIO::SlaveBase

    def initialize protocol, pool_sock, app_sock
      super protocol, pool_sock, app_sock
    end

    def get url
      mimeType 'text/plain'

      data Qt::ByteArray.new('Hello World from our first Ruby KIO slave!')

      finished
    end

  end

end</pre><p>We&#8217;ll also need a rubytest.protocol file that describes our new protocol:</p><pre class="crayon-plain-tag">[Protocol]
exec=krubypluginfactory
input=none
output=filesystem
protocol=rubytest
reading=true</pre><p>To test it, you just have to type rubytest:/ into konqi&#8217;s addressbar and you should see nice hello world greeting.</p>
<p>Some more info on the structure of a Ruby kio slave: the Ruby script always has to be named &#8216;main.rb&#8217; and the SlaveBase derived class always &#8216;Main&#8217;. The module name is the camelized form of the protocol (so a protocol &#8216;foo_bar&#8217; would map to a module name &#8216;FooBar&#8217;). The script has to reside in &lt;kde prefix&gt;/share/apps/kio_&lt;protocol name&gt;.<br />
The .protocol file itself should be installed to &lt;kde prefix&gt;/share/kde4/services.</p>
<p>As with the Kate plugin, I packaged this example in a <a href="http://www.arnorehn.de/blog/wp-content/uploads/2010/07/kio_rubytest.tar.gz">tarball</a>. It ships a Makefile and can easily be installed to your home directory with &#8216;make install&#8217;.<br />
I committed this feature to both trunk and the 4.5 branch &#8211; so you can soon start coding your own KIO slaves in Ruby! <img src='http://www.arnorehn.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.arnorehn.de/blog/2010/07/and-the-bindings-keep-rocking-writing-ruby-kio-slaves/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why KDE bindings simply rock (or: Creating our first Ruby plugin for Kate)</title>
		<link>http://www.arnorehn.de/blog/2010/07/why-kde-bindings-simply-rock-or-creating-our-first-ruby-plugin-for-kate/</link>
		<comments>http://www.arnorehn.de/blog/2010/07/why-kde-bindings-simply-rock-or-creating-our-first-ruby-plugin-for-kate/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 18:02:05 +0000</pubDate>
		<dc:creator>Arno</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[bindings]]></category>
		<category><![CDATA[kate]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.arnorehn.de/blog/?p=61</guid>
		<description><![CDATA[Akademy really speeds up development and communication between developers: Yesterday I was poked by Milian Wolff and he told me how many people want to write Kate plugins in languages other than C++ and ECMAScript <span class="ellipsis">&#8230;</span> <span class="more-link-wrap"><a href="http://www.arnorehn.de/blog/2010/07/why-kde-bindings-simply-rock-or-creating-our-first-ruby-plugin-for-kate/" class="more-link"><span>Read More ...</span></a></span>]]></description>
				<content:encoded><![CDATA[<p>Akademy really speeds up development and communication between developers:<br />
Yesterday I was poked by Milian Wolff and he told me how many people want to write Kate plugins in languages other than C++ and ECMAScript and how he always told them that&#8217;s not possible and probably a huge amount of work to get working. Well, that wasn&#8217;t entirely true:<br />
If the target application has a SMOKE lib that wraps its API and an according bindings extensions, it works pretty much out of the box, thanks to the gorgeous KPluginFactory API and of course thanks to our gorgeous bindings.<br />
Kate was a bit trickier to get working though, because it used old and deprecated API to load plugins. Well, I filed a <a href="http://gitorious.org/kate/kate/merge_requests/9" target="_blank">merge request</a> on gitorious about that, fixed a bug in KRubyPluginFactory and now I&#8217;m very proud to present</p>
<h4>The absolutely gorgeous, simple, straight-forward, packed with all the Ruby goodness, very first Ruby Hello-World Kate plugin:</h4>
<p></p><pre class="crayon-plain-tag">require 'kate'

# The module name has to be the capitalized name of the containing directory.
# In this case, the directory name is kate_ruby_test, so the module name _has_
# to be KateRubyTest.
module KateRubyTest

  # The main class name is the capitalized name of the main script. In this case it's 'test.rb',
  # so the main class name is 'Test'.
  class Test &lt; Kate::Plugin

    # initializer
    def initialize parent, args = nil
      # call Kate::Plugin's constructor
      super parent, 'kate-ruby-hello-world'
    end

    def createView mainWindow
      # @componentData is automatically set to the plugin's component data after the constructor has run
      return KateRubyHelloWorldView.new mainWindow, @componentData
    end

  end

  class KateRubyHelloWorldView &lt; Kate::PluginView
    slots 'slotInsertHello()'

    def initialize mainWindow, componentData
      super mainWindow

      # create the action defined in the ui.rc file
      @guiClient = Kate::XMLGUIClient.new componentData
      action = @guiClient.actionCollection.addAction('edit_insert_helloworld')
      action.text = KDE::i18n('Insert Hello World')
      connect action, SIGNAL('triggered(bool)'), self, SLOT('slotInsertHello()')

      # and add our client to the gui factory
      mainWindow.guiFactory.addClient @guiClient
    end

    def slotInsertHello
      return if self.mainWindow.nil?

      kv = self.mainWindow.activeView

      kv.insertText 'Hello World!' if !kv.nil?
    end

    def readSessionConfig config, groupPrefix
      # do something useful here
    end

    def writeSessionConfig config, groupPrefix
      # do something useful here
    end

  end

end</pre><p><br/></p>
<p>You&#8217;ll also need an ui.rc file that defines the actions to be merged into the Kate main window and a .desktop file which describes your plugin. Actually I&#8217;m too lazy to post them all here, so I made a nice <a href='http://www.arnorehn.de/blog/wp-content/uploads/2010/07/kate_ruby_test.tar.gz'>package</a> containing everything you need, together with a Makefile which can &#8216;make install&#8217; the plugin into your home directory.</p>
<p>Since all SMOKE based bindings wrap the C++ API nearly 1:1 and only add syntactic language specific sugar on top, you can create nearly any plugin you like in any language, without modifying the host application, as long as the API is wrapped in a SMOKE lib and a bindings extension. In C# you can even create KIO slaves (a monodoc KIO slave example is shipped with the kdebindings tarball). That feature hasn&#8217;t been added to Ruby yet, but is on my ToDo list.</p>
<p>So praise the bindings, praise the KDE plugin infrastructure and start working on Ruby Kate plugins! <img src='http://www.arnorehn.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>You can find the Ruby Kate binding and the SMOKE kate lib in current kdebindings trunk.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arnorehn.de/blog/2010/07/why-kde-bindings-simply-rock-or-creating-our-first-ruby-plugin-for-kate/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>qyotoassemblygen progress</title>
		<link>http://www.arnorehn.de/blog/2010/04/qyotoassemblygen-progress/</link>
		<comments>http://www.arnorehn.de/blog/2010/04/qyotoassemblygen-progress/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 21:29:07 +0000</pubDate>
		<dc:creator>Arno</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[bindings]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[qyotoassemblygen]]></category>
		<category><![CDATA[smoke]]></category>

		<guid isPermaLink="false">http://arnorehn.de/cgi-bin/weblog_basic/index.php?p=48</guid>
		<description><![CDATA[Some time back I have started a tool called qyotoassemblygen [0], which will hopefully ease the generation of .NET/Mono bindings based on SMOKE libraries. It basically introspects a SMOKE library and generates a System.CodeDom tree <span class="ellipsis">&#8230;</span> <span class="more-link-wrap"><a href="http://www.arnorehn.de/blog/2010/04/qyotoassemblygen-progress/" class="more-link"><span>Read More ...</span></a></span>]]></description>
				<content:encoded><![CDATA[<p>Some time back I have started a tool called qyotoassemblygen [0], which will hopefully ease the generation of .NET/Mono bindings based on SMOKE libraries. It basically introspects a SMOKE library and generates a System.CodeDom tree from that information. The CodeDom can then be used to generate C# code and/or compile an assembly.<br />
Although some parts were rather difficult and had to be rewritten again and again (like checking whether a method has to be marked &#8220;override&#8221; or &#8220;virtual&#8221;), I can now announce that it&#8221;s quite stable and generates all of the Qt assemblies just fine <img src='http://www.arnorehn.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . I&#8221;m currently working on getting the KDE assemblies to build, which is really just a matter of sorting out *Private classes.</p>
<p>By using plugins the tool is not bound to Qt-based bindings, so we could as well generate assemblies for other toolkits, like Wt (for which there is already a smoke lib, thanks to Richard <img src='http://www.arnorehn.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ). Plugins will also make it easy to add syntactic sugar like event support for Qyoto (which I hope I can implement for KDE SC 4.5).</p>
<p>If everything works as expected, we can hopefully drop kalyptus completely in the next release and reduce our maintenance cost considerably <img src='http://www.arnorehn.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>[0] http://websvn.kde.org/trunk/playground/bindings/qyotoassemblygen</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arnorehn.de/blog/2010/04/qyotoassemblygen-progress/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Current git branch in shell prompt</title>
		<link>http://www.arnorehn.de/blog/2010/04/current-git-branch-in-shell-prompt/</link>
		<comments>http://www.arnorehn.de/blog/2010/04/current-git-branch-in-shell-prompt/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 01:55:12 +0000</pubDate>
		<dc:creator>Arno</dc:creator>
				<category><![CDATA[git]]></category>
		<category><![CDATA[Other]]></category>
		<category><![CDATA[bash]]></category>

		<guid isPermaLink="false">http://arnorehn.de/cgi-bin/weblog_basic/index.php?p=34</guid>
		<description><![CDATA[Since I&#8221;ve read much about git and how great it is, I recently thought that I had to try it myself. And indeed, it is quite amazing and is nice to work with. There was <span class="ellipsis">&#8230;</span> <span class="more-link-wrap"><a href="http://www.arnorehn.de/blog/2010/04/current-git-branch-in-shell-prompt/" class="more-link"><span>Read More ...</span></a></span>]]></description>
				<content:encoded><![CDATA[<p>Since I&#8221;ve read much about git and how great it is, I recently thought that I had to try it myself. And indeed, it is quite amazing and is nice to work with. There was one thing that I disliked, though: I never quite knew in which branch of my repository I was, especially after I&#8221;ve been away from coding for a few hours.<br />
Of course I could just look that up, but I tend to forget that and then end up with code that belongs to a different branch. Now the shell prompt looked like a good place to show the current branch, but simply executing &#8220;git branch | grep ^*&#8221; would only work in the top-level directory of the repository. So I wrote the following function which will traverse all containing directories and look for a .git directory. Having found one, it will nicely print the the branch in dark green color, with a @ sign in front of it:</p>
<p><strong>Update:</strong> As many people have pointed out, bash-completion provides a function called __git_ps1 which will happily print the current git branch and can be used as well. I don&#8221;t quite like the rest of bash-completion, though, so I&#8221;ll stick with my own.<br />
As Yuri pointed out, git branch works from any directory, so here&#8221;s the updated (and much shorter <img src='http://www.arnorehn.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) version:</p>
<p></p><pre class="crayon-plain-tag">function formattedGitBranch {
    _branch="$(git branch 2>/dev/null | sed -e "/^\s/d" -e "s/^\*\s//")"
    test -n "$_branch" && echo -e " @\e[0;32m $_branch"
}</pre><p></p>
<p>Having this in my .bashrc, I could integrate it quite nicely with my prompt:</p><pre class="crayon-plain-tag">\[\e[1;32m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\]$(formattedGitBranch) \[\e[1;32m\]\$ \[\e[m\]\[\e[0m\]</pre><p></p>
<p>Screenshot:<br />
<img src="http://www.arnorehn.de/var/git-prompt.png" alt="git prompt" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.arnorehn.de/blog/2010/04/current-git-branch-in-shell-prompt/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Qyoto on Windows!</title>
		<link>http://www.arnorehn.de/blog/2009/09/qyoto-on-windows/</link>
		<comments>http://www.arnorehn.de/blog/2009/09/qyoto-on-windows/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 20:43:41 +0000</pubDate>
		<dc:creator>Arno</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[qyoto]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://arnorehn.de/cgi-bin/weblog_basic/index.php?p=18</guid>
		<description><![CDATA[Now that the new smokegenerator is in trunk and generating smoke on windows shouldn&#8221;t be a pain anymore, I thought that I could dig out my nearly unused Vista partition on my laptop and start <span class="ellipsis">&#8230;</span> <span class="more-link-wrap"><a href="http://www.arnorehn.de/blog/2009/09/qyoto-on-windows/" class="more-link"><span>Read More ...</span></a></span>]]></description>
				<content:encoded><![CDATA[<p>Now that the new smokegenerator is in trunk and generating smoke on windows shouldn&#8221;t be a pain anymore, I thought that I could dig out my nearly unused Vista partition on my laptop and start porting Qyoto to Windows.<br />
First thing I did was removing the preinstalled Vista and installing it again to get rid of all the preinstalled crap Dell thought I needed. Next was installing Visual C++ and C# (the Express editions are free as in beer and work ok &#8211; nothing in comparison to KDevelop4 though) and KDE 4.3. Thanks to all of the KDE Windows team &#8211; you make Windows much more bearable! I also installed msys &#8211; can&#8221;t live without a proper shell anymore.</p>
<p>Now came the actual porting: To support MS .NET and not only Mono, I needed to add support for csc.exe (the MS C# compiler) to the existing C# macros. As I recently discovered how to add support for a new language to cmake (which lacks documentation but is really easy once you understood it) I simply rewrote the C# macros as a new cmake language plugin. Compilation was pretty straight-forward, then.<br />
But as was to be expected, the examples simply crashed upon start. Long story short: Some of them work now and this is how it looks:</p>
<p><a href="http://www.arnorehn.de/cgi-data/weblog_basic/uploads/2009/09/qyoto_t5.png"><img src="http://www.arnorehn.de/cgi-data/weblog_basic/uploads/2009/09/qyoto_t5_small.jpg" alt="Qt tutorial t5 with Qyoto" /></a></p>
<p>This is still really unstable and crashes every few minutes with an AccessViolationException. Have to figure out why it does that.. But first I have to do some other things, mainly porting the remaining kalyptus-generated smoke modules to the new smokegenerator. This shouldn&#8221;t take too long, so I think I can complete the Windows port soon <img src='http://www.arnorehn.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  So stay tuned!</p>
<p>Update: The AccessViolationExceptions should be fixed now. If you want to try Qyoto on Windows and have problems getting it to compile or run, please send a mail to the kde-bindings mailinglist and include the complete error and backtrace. You can also search the mailing list archives since this topic came up quite often recently.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arnorehn.de/blog/2009/09/qyoto-on-windows/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>gsoc, week 11 &#8211; generating smokekde :)</title>
		<link>http://www.arnorehn.de/blog/2009/08/gsoc-week-11-generating-smokekde/</link>
		<comments>http://www.arnorehn.de/blog/2009/08/gsoc-week-11-generating-smokekde/#comments</comments>
		<pubDate>Sun, 09 Aug 2009 22:10:29 +0000</pubDate>
		<dc:creator>Arno</dc:creator>
				<category><![CDATA[gsoc]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[bindings]]></category>
		<category><![CDATA[c++ parser]]></category>
		<category><![CDATA[smoke]]></category>
		<category><![CDATA[smokegenerator]]></category>

		<guid isPermaLink="false">http://arnorehn.de/cgi-bin/weblog_basic/index.php?p=13</guid>
		<description><![CDATA[Now that the Qt classes generate and compile fine (as Richard already wrote) I tried to generate the smokekde sources with the new generator last week. After fixing quite a bunch of bugs that didn&#8221;t <span class="ellipsis">&#8230;</span> <span class="more-link-wrap"><a href="http://www.arnorehn.de/blog/2009/08/gsoc-week-11-generating-smokekde/" class="more-link"><span>Read More ...</span></a></span>]]></description>
				<content:encoded><![CDATA[<p>Now that the Qt classes generate and compile fine (<a href="http://kdedevelopers.org/node/4019">as Richard already wrote</a>) I tried to generate the smokekde sources with the new generator last week.</p>
<p>After fixing quite a bunch of bugs that didn&#8221;t surface when generating smokeqt, it works now really well.<br />
There isn&#8221;t much difference between the config files for qt and kde, too &#8211; it&#8221;s mainly the lists of stuff to include and very little stuff to be excluded (d pointers, q pointers, other private stuff&#8230;).<br />
This really shows that the new parser is superior to kalyptus, which had dozens of hacks in it for the code to generate nicely.</p>
<p>In case you want to test it, get the source from /trunk/playground/bindings/smokegenerator. To make testing easier, I wrapped the generation in cmake, so a normal cmake; make; make install should build and install smokeqt and smokekde for you.</p>
<p>The new generator still generates a lot of code for deprecated methods, which isn&#8221;t really nice &#8211; but maybe the parser can be modified so it recognizes __attribute__((deprecated)) flags.<br />
There are also still issues with fixed-width array types, which luckily don&#8221;t occur too often in KDE sources. This only affects KMD5 for the moment. I&#8221;ll fix this next week, so then should smokekde with smokegenerator be equal to smokekde with kalyptus <img src='http://www.arnorehn.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.arnorehn.de/blog/2009/08/gsoc-week-11-generating-smokekde/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello Planet!</title>
		<link>http://www.arnorehn.de/blog/2009/07/hello-planet/</link>
		<comments>http://www.arnorehn.de/blog/2009/07/hello-planet/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 00:00:30 +0000</pubDate>
		<dc:creator>Arno</dc:creator>
				<category><![CDATA[gsoc]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[bindings]]></category>
		<category><![CDATA[c++ parser]]></category>
		<category><![CDATA[smoke]]></category>
		<category><![CDATA[smokegenerator]]></category>

		<guid isPermaLink="false">http://arnorehn.de/cgi-bin/weblog_basic/index.php?p=3</guid>
		<description><![CDATA[Hi, my name is Arno Rehn and I&#8221;m a bindings developer. I&#8221;m working mainly on the C# bindings for Qt and KDE together with Richard Dale. Currently I&#8221;m also working on my gsoc project &#8211; <span class="ellipsis">&#8230;</span> <span class="more-link-wrap"><a href="http://www.arnorehn.de/blog/2009/07/hello-planet/" class="more-link"><span>Read More ...</span></a></span>]]></description>
				<content:encoded><![CDATA[<p>Hi,</p>
<p>my name is Arno Rehn and I&#8221;m a bindings developer. I&#8221;m working mainly on the C# bindings for Qt and KDE together with Richard Dale.</p>
<p>Currently I&#8221;m also working on my gsoc project &#8211; Rewriting the SMOKE generator using one of Roberto Raggi&#8221;s C++ parsers.<br />
SMOKE is a library which provides the possibility to dynamically call methods on classes. It is the foundation for many of the Qt/KDE bindings, like Ruby, C# and PHP.<br />
The old generator for the SMOKE sources is based on a perl tool, kalyptus, and only works with a bunch of hacks in the code. It tends to break on new releases of Qt or KDE which introduce new features.</p>
<p>The goal of my project is to create a stable and robust tool, similar to the moc, which you just run on the headers of your project and you then end up with a bunch of source files that are the basis for bindings for your project.</p>
<p>Eventually I decided to use the new parser from KDevelop4, since that has a pretty convenient API (unlike the QtJambi / qtscriptgenerator one). It took some time to remove the KDevPlatform/KDevelop specific bits, though. It would&#8221;ve also been nice if I could&#8221;ve used the DUChain from KDevelop, but that seems to be so tightly integrated that I would have to provide half of KDevelop to use it.</p>
<p>I&#8221;m pretty much ahead of time &#8211; the generator is nearly finished. By the end of the GCDS, which I&#8221;m attending until Thursday, it should be working completely &#8211; at least with the Qt classes.</p>
<p>P.S.: I know that gsoc has started quite some time back, but I was really to lazy/busy to start a blog <img src='http://www.arnorehn.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.arnorehn.de/blog/2009/07/hello-planet/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
