lqml/cpp-lib/readme.md
2022-02-22 16:59:09 +01:00

44 lines
1.1 KiB
Markdown

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 lib.pro
$ 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.