[Kde-bindings] Lisp + Smoke

Richard Dale rdale at foton.es
Wed Apr 2 09:26:03 UTC 2008


On Wednesday 02 April 2008 04:50:44 Jonathan Gardner wrote:
> I am interested in seeing KDE/Qt in Lisp. I think Smoke is the ideal
> candidate for this.
>
> Questions: How does smoke work?
>
> I am playing with PerlQt right now. Even though I am an extremely
> experienced perl hacker (I get paid to do it) I still have a hard time
> reading perl code, especially XS. Any pointers would be appreciated.
The QtRuby bindings are based on the PerlQt code, but they are much easier to 
read.

The heart of the smoke approach for dynamic languages is to trap methods calls 
for methods which aren't there. In perl that is via autoload, in ruby it is 
method_missing(), or in smalltalk it would be #doesNotUnderstand:. Then once 
the call has been trapped, the C++ method is looked up in the smoke library 
based on the name of the method and the types of the arguments. The arguments 
are marshalled from the bindings language and the C++ method is called. So 
you would need to find a way of doing that in lisp for the object model it is 
using.

There are also callbacks for overriding C++ virtual methods, and for when the 
C++ instance is destructed.

-- Richard



More information about the Kde-bindings mailing list