| .. | ||
| cpp | ||
| readme.md | ||
| run.lisp | ||
Info
Please see run.lisp, which should be self explaining.
If you want to call Lisp from your Qt plugin, just include ecl_fun_plugin.h,
which is independent from LQML, so you could even use it in Qt projects not
linking the LQML library.
Function ecl_fun() is convenient because you don't need to care about type
conversions, as long as you only use bool, long, double, QString,
QByteArray or (nested) QVariant lists of mentioned types.
Build
$ cd cpp
$ qmake
$ make
$ cd ..
Run
$ lqml ~/slime/lqml-start-swank.lisp
$ emacs run.lisp
After M-x slime-connect and loading run.lisp, you can see that, despite
the argument and return type simply being defined as QVariant, you may also
pass lists, because a QVariant can also be of type QVariantList, so this
is a perfect fit for (nested) Lisp lists.
So, we pass a nested Lisp list, and it gets converted and shown on Qt side with
the respective types. Then the QVariantList is returned to Lisp, where it is
automatically converted back to a nested Lisp list.