mirror of
https://gitlab.com/eql/lqml.git
synced 2025-12-06 02:30:38 -08:00
49 lines
1.2 KiB
Markdown
49 lines
1.2 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.
|
|
|
|
For the complete list of marshalled types please see `toQVariant()` and
|
|
`from_qvariant()` in [marshal.cpp](../src/cpp/marshal.cpp).
|
|
|
|
|
|
|
|
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.
|
|
|