iQyoto/Kimono C# bindings
Speaker: Richard Dale
The Qyoto/Kimono languages bindings are currently under development, and will allow C# to be used to write Qt/KDE programs. The talk will describe the unusual design of the bindings; how they use transparent proxies to divert every single method call to a single SmokeInvocation.Invoke() method, which then looks up the call in the Smoke language independent dynamic runtime, marshals the arguments and calls the target C++ method. This differs from the usual way of implementing bindings for a language like Java or C# where each method call would directly invoke the target C++ method via JNI or a C function from P/Invoke respectively.
The architecture has been designed from the ground up to enable multi-language Aspect Oriented Programming; each method call, slot invocation and signal emit is a point cut that can be intercepted and customised with Ruby code (and not xml as is customary). Thus the Domain Specific Language (i.e. Ruby) used to describe point cuts, can also be use to write advice code if desired (as well as C# of course).
They are autogenerated directly from the Qt/KDE headers, greatly reducing the maintenance effort. KDE doxygen comments are automatically converted to the xml based C# style of comment format.
Any language that is based on the CLR, such as C#, Iron Python, Boo, VB.NET or Nemerle will be able to use the bindings, allowing some very interesting possibilities for writing KDE applications.
I began working on adding KDevelop Objective-C support in late 1999, adding syntax highlighting, class parsing and so on. This made me think of the idea of providing some Qt/KDE Objective-C bindings along with C ones in early 2000. The project was a technical success and I then began work on some Java bindings which were first released in early 2001. Since then I've helped with the PerlQt bindings project, and wrote the QtRuby and Korundum bindings based on the PerlQt code and the language independent Smoke library. I've also added Ruby support to KDevelop including a debugger various QtRuby/Korundum and Rails project templates. I've been working on the C# Qyoto/Kimono bindings on and off for the last two and a half years.
I've been a professional programmer since 1978, and am currently working for Foton Sistemas Inteligentes in Gran Canaria, on diverse projects such as the 'Meduxa' KDE distribution for all the Canarian schools, and a Rails based Ferry booking system.