From 71bc1d3525d607ad10970d645ea1b85efb305ca2 Mon Sep 17 00:00:00 2001 From: polos Date: Fri, 28 Apr 2017 12:05:59 +0200 Subject: [PATCH] unix: add "make install" option for exe, lib, modules (refactor file locations) --- Qt_EQL/cpp_calling_lisp/eql_cpp.pro | 4 +- Qt_EQL/cpp_calling_lisp/lib.cpp | 2 +- Qt_EQL_plugin/qt_plugin.cpp | 2 +- Qt_EQL_plugin/qt_plugin.pro | 4 +- README-1.txt | 77 ++- README-2-REBUILD.txt | 14 +- doc/Debugging.htm | 2 +- doc/Deploy.htm | 3 +- doc/EQL-Slime-Integration.htm | 2 +- doc/Slime.htm | 2 +- examples/M-modules/quick/README.txt | 3 - .../quick/Tic-Tac-Toe/lib/qml_lisp.h | 60 -- .../quick/Tic-Tac-Toe/lib/qml_lisp.pro | 17 - .../quick/Tic-Tac-Toe/properties.lisp | 2 +- .../M-modules/quick/Tic-Tac-Toe/qml-lisp.lisp | 4 +- .../quick/Tic-Tac-Toe/tic-tac-toe.lisp | 2 - .../quick/item-model/lib/qml_lisp.cpp | 108 ---- .../quick/item-model/lib/qml_lisp.pro | 17 - .../quick/item-model/properties.lisp | 2 +- .../M-modules/quick/item-model/qml-lisp.lisp | 4 +- .../quick/painted-item/lib/qml_lisp.cpp | 108 ---- .../quick/painted-item/lib/qml_lisp.h | 60 -- .../quick/painted-item/lib/qml_lisp.pro | 17 - .../quick/painted-item/properties.lisp | 2 +- .../quick/painted-item/qml-lisp.lisp | 4 +- .../quick/palindrome-1/properties.lisp | 2 +- .../quick/palindrome-2/lib/libqml_lisp.so | Bin 95312 -> 0 bytes .../quick/palindrome-2/lib/qml_lisp.cpp | 108 ---- .../quick/palindrome-2/lib/qml_lisp.h | 60 -- .../quick/palindrome-2/lib/qml_lisp.pro | 17 - .../palindrome-2/lib/tmp/moc_qml_lisp.cpp | 568 ------------------ .../quick/palindrome-2/lib/tmp/moc_qml_lisp.o | Bin 66168 -> 0 bytes .../quick/palindrome-2/lib/tmp/qml_lisp.o | Bin 81496 -> 0 bytes .../quick/palindrome-2/properties.lisp | 2 +- .../quick/palindrome-2/qml-lisp.lisp | 4 +- .../M-modules/quick/qml-lisp/lib/qml_lisp.cpp | 108 ---- .../M-modules/quick/qml-lisp/lib/qml_lisp.h | 60 -- .../M-modules/quick/qml-lisp/lib/qml_lisp.pro | 17 - .../M-modules/quick/qml-lisp/properties.lisp | 2 +- .../M-modules/quick/qml-lisp/qml-lisp.lisp | 4 +- .../M-modules/quick/qml-lisp/qml/example.qml | 2 +- .../M-modules/quick/sokoban/lib/qml_lisp.cpp | 108 ---- .../M-modules/quick/sokoban/lib/qml_lisp.h | 60 -- .../M-modules/quick/sokoban/lib/qml_lisp.pro | 17 - .../M-modules/quick/sokoban/properties.lisp | 2 +- .../M-modules/quick/sokoban/qml-lisp.lisp | 4 +- .../quick/table-view/lib/qml_lisp.cpp | 108 ---- .../M-modules/quick/table-view/lib/qml_lisp.h | 60 -- .../quick/table-view/lib/qml_lisp.pro | 17 - .../quick/table-view/properties.lisp | 2 +- .../M-modules/quick/table-view/qml-lisp.lisp | 4 +- .../web-kit-engine/lib/webkit_bridge.cpp | 1 - .../web-kit-engine/lib/webkit_bridge.h | 2 +- .../web-kit-engine/lib/webkit_bridge.pro | 5 +- .../Examples-Browser/lib/webkit_bridge.h | 2 +- .../Examples-Browser/lib/webkit_bridge.pro | 5 +- .../webkit/Tic-Tac-Toe/lib/webkit_bridge.h | 2 +- .../webkit/Tic-Tac-Toe/lib/webkit_bridge.pro | 5 +- examples/M-modules/webkit/lib/webkit_bridge.h | 2 +- .../M-modules/webkit/lib/webkit_bridge.pro | 5 +- examples/X-extras/move-blocks/cpp/lib.cpp | 2 +- examples/X-extras/move-blocks/cpp/lib.pro | 5 +- examples/X-extras/palindrome/exe/main.cpp | 3 +- examples/X-extras/palindrome/exe/main.h | 1 - examples/X-extras/palindrome/exe/main.pro | 15 +- examples/X-extras/qimage/cpp/lib.pro | 5 +- helper/generate.lisp | 6 +- {src/lisp => lib}/ecl-readline.lisp | 0 {gui => lib}/gui.lisp | 6 +- {gui => lib}/gui.ui | 0 {src/lisp => lib}/invokables.lisp | 0 {gui => lib}/properties.lisp | 2 +- {gui => lib}/properties.ui | 0 {src/lisp => lib}/qselect.lisp | 0 {src/lisp => lib}/quic.lisp | 0 {src/lisp => lib}/restart-dialog.lisp | 0 {slime => lib}/thread-safe.lisp | 0 my_app/main.cpp | 2 +- my_app/my_app.pro | 14 +- slime/repl-hook.lisp | 2 +- src/dyn_object.cpp | 2 +- src/ecl_fun.cpp | 17 +- src/ecl_fun.h | 4 +- src/eql.cpp | 13 +- src/{ => eql5}/dyn_object.h | 0 src/{ => eql5}/eql.h | 4 +- src/{ => eql5}/eql_fun.h | 0 src/{ => eql5}/eql_global.h | 0 src/eql_exe.pro | 26 +- src/eql_lib.pro | 35 +- src/gen/_lobjects.cpp | 4 +- src/gen/_lobjects.h | 2 +- src/gen/_main_n_methods.h | 2 +- src/gen/_main_q_methods.h | 2 +- src/gen/help/_ini2.h | 2 +- src/gen/multimedia/_ini2.h | 2 +- src/gen/network/_ini2.h | 2 +- src/gen/quick/_ini2.h | 6 +- .../lib => src/gen/quick}/qml_lisp.cpp | 2 +- .../lib => src/gen/quick}/qml_lisp.h | 19 +- src/gen/sql/_ini2.h | 2 +- src/gen/webengine/_ini2.h | 2 +- src/gen/webkit/_ini2.h | 2 +- src/link-wrappers.lisp | 5 +- src/link.lisp | 5 +- src/lisp/ini.lisp | 17 +- src/main.cpp | 2 +- src/make-eql-lib-wrappers.lisp | 6 +- src/make-eql-lib.lisp | 5 +- src/module_help.pro | 3 + src/module_multimedia.pro | 3 + src/module_network.pro | 3 + src/module_quick.pro | 9 +- src/module_sql.pro | 3 + src/module_svg.pro | 3 + src/module_webengine.pro | 3 + src/module_webkit.pro | 3 + src/qt_eql.cpp | 2 +- src/qt_eql.h | 2 +- src/rebuild | 21 +- 120 files changed, 267 insertions(+), 1928 deletions(-) delete mode 100644 examples/M-modules/quick/Tic-Tac-Toe/lib/qml_lisp.h delete mode 100644 examples/M-modules/quick/Tic-Tac-Toe/lib/qml_lisp.pro delete mode 100644 examples/M-modules/quick/item-model/lib/qml_lisp.cpp delete mode 100644 examples/M-modules/quick/item-model/lib/qml_lisp.pro delete mode 100644 examples/M-modules/quick/painted-item/lib/qml_lisp.cpp delete mode 100644 examples/M-modules/quick/painted-item/lib/qml_lisp.h delete mode 100644 examples/M-modules/quick/painted-item/lib/qml_lisp.pro delete mode 100755 examples/M-modules/quick/palindrome-2/lib/libqml_lisp.so delete mode 100644 examples/M-modules/quick/palindrome-2/lib/qml_lisp.cpp delete mode 100644 examples/M-modules/quick/palindrome-2/lib/qml_lisp.h delete mode 100644 examples/M-modules/quick/palindrome-2/lib/qml_lisp.pro delete mode 100644 examples/M-modules/quick/palindrome-2/lib/tmp/moc_qml_lisp.cpp delete mode 100644 examples/M-modules/quick/palindrome-2/lib/tmp/moc_qml_lisp.o delete mode 100644 examples/M-modules/quick/palindrome-2/lib/tmp/qml_lisp.o delete mode 100644 examples/M-modules/quick/qml-lisp/lib/qml_lisp.cpp delete mode 100644 examples/M-modules/quick/qml-lisp/lib/qml_lisp.h delete mode 100644 examples/M-modules/quick/qml-lisp/lib/qml_lisp.pro delete mode 100644 examples/M-modules/quick/sokoban/lib/qml_lisp.cpp delete mode 100644 examples/M-modules/quick/sokoban/lib/qml_lisp.h delete mode 100644 examples/M-modules/quick/sokoban/lib/qml_lisp.pro delete mode 100644 examples/M-modules/quick/table-view/lib/qml_lisp.cpp delete mode 100644 examples/M-modules/quick/table-view/lib/qml_lisp.h delete mode 100644 examples/M-modules/quick/table-view/lib/qml_lisp.pro rename {src/lisp => lib}/ecl-readline.lisp (100%) rename {gui => lib}/gui.lisp (99%) rename {gui => lib}/gui.ui (100%) rename {src/lisp => lib}/invokables.lisp (100%) rename {gui => lib}/properties.lisp (98%) rename {gui => lib}/properties.ui (100%) rename {src/lisp => lib}/qselect.lisp (100%) rename {src/lisp => lib}/quic.lisp (100%) rename {src/lisp => lib}/restart-dialog.lisp (100%) rename {slime => lib}/thread-safe.lisp (100%) rename src/{ => eql5}/dyn_object.h (100%) rename src/{ => eql5}/eql.h (95%) rename src/{ => eql5}/eql_fun.h (100%) rename src/{ => eql5}/eql_global.h (100%) rename {examples/M-modules/quick/Tic-Tac-Toe/lib => src/gen/quick}/qml_lisp.cpp (99%) rename {examples/M-modules/quick/item-model/lib => src/gen/quick}/qml_lisp.h (85%) diff --git a/Qt_EQL/cpp_calling_lisp/eql_cpp.pro b/Qt_EQL/cpp_calling_lisp/eql_cpp.pro index a450a99..6f8af7c 100644 --- a/Qt_EQL/cpp_calling_lisp/eql_cpp.pro +++ b/Qt_EQL/cpp_calling_lisp/eql_cpp.pro @@ -1,7 +1,8 @@ QT += widgets TEMPLATE = lib CONFIG += plugin release -LIBS += -L../.. -leql5 +INCLUDEPATH += /usr/local/include +LIBS += -L/usr/local/lib -leql5 DESTDIR = ../ TARGET = eql_fun_cpp OBJECTS_DIR = ./tmp/ @@ -12,4 +13,5 @@ win32 { } HEADERS += lib.h + SOURCES += lib.cpp diff --git a/Qt_EQL/cpp_calling_lisp/lib.cpp b/Qt_EQL/cpp_calling_lisp/lib.cpp index dc7a976..890ffb2 100644 --- a/Qt_EQL/cpp_calling_lisp/lib.cpp +++ b/Qt_EQL/cpp_calling_lisp/lib.cpp @@ -1,5 +1,5 @@ #include "lib.h" -#include "../../src/eql_fun.h" // for eql_fun() +#include // for eql_fun() QT_BEGIN_NAMESPACE diff --git a/Qt_EQL_plugin/qt_plugin.cpp b/Qt_EQL_plugin/qt_plugin.cpp index 7c57b0d..73e100f 100644 --- a/Qt_EQL_plugin/qt_plugin.cpp +++ b/Qt_EQL_plugin/qt_plugin.cpp @@ -1,5 +1,5 @@ #include "qt_plugin.h" -#include "eql.h" +#include QT_BEGIN_NAMESPACE diff --git a/Qt_EQL_plugin/qt_plugin.pro b/Qt_EQL_plugin/qt_plugin.pro index e397c6c..1ce2379 100644 --- a/Qt_EQL_plugin/qt_plugin.pro +++ b/Qt_EQL_plugin/qt_plugin.pro @@ -1,7 +1,7 @@ TEMPLATE = lib CONFIG += dll no_keywords release -INCLUDEPATH += ../src -LIBS += -L.. -leql5 +INCLUDEPATH += /usr/local/include +LIBS += -L/usr/local/lib -leql5 TARGET = qt_plugin DESTDIR = ./ OBJECTS_DIR = ./tmp/ diff --git a/README-1.txt b/README-1.txt index 970214e..db7fde0 100644 --- a/README-1.txt +++ b/README-1.txt @@ -47,8 +47,8 @@ REQUIREMENTS QtWebKit note: If you want QtWebKit included in the official downloads from qt.io archives, you need to choose Qt 5.5, and not later versions! - QtWebKit will continue to work with versions > 5.5, but it has to be compiled - manually (which is not fun). + QtWebKit will continue to work with versions > 5.5, but it has to be + compiled manually (which is not fun). QtWebKit has a better, more native integration with Qt than QtWebEngine, see for example QWebElement, which doesn't exist in QtWebEngine. @@ -57,21 +57,25 @@ REQUIREMENTS PREPARE ======= -Install the ECL sources, and build it from the sources (ECL needs to be built with the -same compiler you'll use to compile EQL5). +Install the ECL sources, and build it from the sources (ECL needs to be built +with the same compiler you'll use to compile EQL5). Just use the standard configuration of ECL (both threads & unicode enabled). Qt4/Qt5 note: - You can have both old EQL (Qt4) and EQL5 (Qt5) installed in parallel (exe and lib - names differ). + You can have both old EQL (Qt4) and EQL5 (Qt5) installed in parallel (exe and + lib names differ). - If you have both Qt4 and Qt5 installed, you can use the following environment variable - to switch between the both (Unix): + If you have both Qt4 and Qt5 installed, you can use the following environment + variable to switch between the both (Unix): export QT_SELECT=5 +Please note that you need to build EQL5 in a path where you will keep it (you +can't move around the whole file tree later, since the build path needs to be +hard-coded in the executable). + BUILD @@ -80,7 +84,8 @@ BUILD (N.B. for rebuilding, please see README-REBUILD.txt) [Windows] - You first need to adapt the file 'src/windows.pri' (include & library paths). + You first need to adapt the file 'src/windows.pri' (include & library + paths). Since EQL requires the C compiler anyway (not the bytecode compiler), you should put this line in your '~/.eclrc': (require :cmp) @@ -89,12 +94,13 @@ BUILD Substitute make with nmake. [MinGW] - If 'make' is stuck in an infinite loop of creating the 'Makefile', just remove - the line 'include(windows.pri)' from your '*.pro' file, setting eventually - needed paths in your '~/.profile' instead. + If 'make' is stuck in an infinite loop of creating the 'Makefile', just + remove the line 'include(windows.pri)' from your '*.pro' file, setting + eventually needed paths in your '~/.profile' instead. [OSX] - To force creation of a Makefile (instead of an Xcode project), use this flag: + To force creation of a Makefile (instead of an Xcode project), use this + flag: qmake -spec macx-g++ 1) In src/ run: @@ -105,15 +111,25 @@ BUILD qmake eql_lib.pro make + sudo make install (unix only) qmake eql_exe.pro make + sudo make install (unix only) This will build both the EQL executable and shared library. + If you ran "make install", you'll find the installed files here: + + /usr/local/bin/ + /usr/local/lib/ + /usr/local/include/eql5/ + 3) cd .. [Linux] + N.B: skip this if you did "sudo make install" + You need to create links to EQL, something like (note the "5"): cd /usr/lib sudo ln -s ~/eql5/libeql5.so.1 libeql5.so.1 @@ -121,12 +137,14 @@ BUILD sudo ln -s ~/eql5/eql5 eql5 [OSX] + N.B: skip this if you did "sudo make install" + You need to create links to EQL, something like (note the "5"): cd /usr/local/lib sudo ln -s ~/eql5/libeql5.1.dylib libeql5.1.dylib cd /usr/local/bin sudo ln -s ~/eql5/eql5.app/Contents/MacOS/eql5 eql5 - + [Windows] Add your EQL directory to the Path environment variable, see: @@ -136,11 +154,6 @@ BUILD RUN === -PLEASE NOTE: -You will often need to "reset" (command) your console/shell after EQL finished -working, especially during development time or other exits than "(eql:qquit)". - - You can run a simple interactive REPL UI doing: eql5 -qgui @@ -150,8 +163,8 @@ To run a Lisp file without top-level, do: (If you don't see the application window, it might be in the background. Use your taskbar to show it.) -If you start the EQL executable without arguments, it will start the usual ECL top-level -(without processing Qt events). +If you start the EQL executable without arguments, it will start the usual ECL +top-level (without processing Qt events). To _not_ load ~/.eclrc on startup, do: eql5 -norc @@ -160,12 +173,19 @@ To quit the tool, do: (eql:qquit) or (eql:qq) -In order to run (sort of) a top-level processing Qt events, do (requires ECL threads): +In order to run (sort of) a top-level processing Qt events, do: eql5 -qtpl Note: If you want to use "ecl-readline" together with "-qtpl", just compile - "eql5/src/lisp/ecl-readline.lisp" (which depends on the "readline" C library). - It will then be loaded automatically on startup. + "lib/ecl-readline.lisp" (which depends on the "readline" C library). + It will then be loaded automatically on startup: + + cd ~/eql5/lib + ecl -compile ecl-readline.lisp + + N.B: Using readline, you will often need to "reset" (command) your + console/shell after EQL finished working, especially during + development time or other exits than "(eql:qquit)". @@ -176,8 +196,10 @@ To build an EQL module (corresponding to a Qt module), do the following in src/: qmake module_.pro (e.g. qmake module_network.pro) make + sudo make install (unix only) [Linux,OSX] + (N.B: skip this if you did "sudo make install") You need to create links to the modules, see EQL library above. In Lisp, use function QREQUIRE to load a module: @@ -194,9 +216,10 @@ You might want to put this in your ~/.eclrc file: (setf eql:*qtpl* t ; same as -qtpl eql:*break-on-errors* t) -It is HIGHLY RECOMMENDED to integrate the wrapper functions, see README-3-OPTIONAL. -This will make all Qt functions real Lisp functions, which also means symbol tab- -completion, both in Emacs/Slime and with ecl-readline. +It is HIGHLY RECOMMENDED to integrate the wrapper functions, see +README-3-OPTIONAL. +This will make all Qt functions real Lisp functions, which also means symbol +tab-completion, both in Emacs/Slime and with ecl-readline. diff --git a/README-2-REBUILD.txt b/README-2-REBUILD.txt index 09f6471..fea03fd 100644 --- a/README-2-REBUILD.txt +++ b/README-2-REBUILD.txt @@ -1,12 +1,13 @@ REBUILD STEPS (on every upgrade of: ECL, Qt, EQL) ============= -1) remove directory src/tmp/ - remove file src/lisp/ecl-readline.fas* +0) cd src + +1) remove directory tmp/ 2) ecl -shell make-eql-lib.lisp -3) qmake, make in this order: (MSVC: nmake) +3) qmake, make, sudo make install (Unix only) in this order: (MSVC: nmake) eql_lib.pro eql_exe.pro @@ -14,10 +15,6 @@ REBUILD STEPS (on every upgrade of: ECL, Qt, EQL) module_network.pro module_... - for readline (Unix): - - ecl -compile src/lisp/ecl-readline.lisp - Optionally (integrate wrapper functions): 4) eql5 make-eql-lib-wrappers.lisp @@ -27,6 +24,7 @@ Optionally (integrate wrapper functions): touch tmp/eql.o (or delete "tmp/eql.o*") qmake eql_lib.pro make + sudo make install (Unix only) IMPORTANT NOTES @@ -50,4 +48,4 @@ ECL/C++ integration). TIP === -If you're on Linux, see "src/rebuild". +If you're on Linux, see "src/rebuild" (needs password for make install). diff --git a/doc/Debugging.htm b/doc/Debugging.htm index 104ef31..165bd21 100644 --- a/doc/Debugging.htm +++ b/doc/Debugging.htm @@ -121,7 +121,7 @@ is resolved automatically (RESTART-QT-EVENTS would block the REPL i

In order to automatically switch the REPL to a given package after loading a file, add this line:

  (qlater (lambda () (in-package :my-package)))

-

If you use ECL readline (see ecl-readline.lisp in sources):
After entering :qq (quitting the top-level), the console/shell should always be reset (but you won't probably see the command while typing it; an alias might help):

+

If you use ECL readline (see lib/ecl-readline.lisp, to be compiled manually the first time):
After entering :qq (quitting the top-level), the console/shell should always be reset (but you won't probably see the command while typing it; an alias might help):

  $ reset

 
  diff --git a/doc/Deploy.htm b/doc/Deploy.htm index 8f73bcd..feca9fb 100644 --- a/doc/Deploy.htm +++ b/doc/Deploy.htm @@ -11,10 +11,11 @@

Please follow the my_app/README.txt (which assumes that your lisp files are in my_app/lisp/)

The dependencies are:

    -
  • eql5, ecl, QtCore, QtGui, QtWidgets, QtPrintSupport shared libraries +
  • eql5, ecl, Qt5Core, Qt5Gui, Qt5Widgets, Qt5PrintSupport shared libraries (plus used modules, both Qt5 and EQL5)
  • your *.ui files (if any)
  • your *.qm translation files (if any)
+

[Unix]
Deploy the installed libraries from /usr/local/lib/, because they have already been stripped, and are therefore smaller.

A detailed description of deploying Qt applications can be found in Qt Assistant.

diff --git a/doc/EQL-Slime-Integration.htm b/doc/EQL-Slime-Integration.htm index 05a3fb1..4491ff0 100644 --- a/doc/EQL-Slime-Integration.htm +++ b/doc/EQL-Slime-Integration.htm @@ -58,7 +58,7 @@ cl_funcall(1, (cl_object)closure); // ECL function call } -

After introducing a macro qrun*, and wrapping all EQL functions in it (see "slime/thread-safe.lisp"), we are done!

+

After introducing a macro qrun*, and wrapping all EQL functions in it (see "lib/thread-safe.lisp"), we are done!

(Please note that the above code is a stripped down version, see sources for the actual implementation.)


diff --git a/doc/Slime.htm b/doc/Slime.htm index 7b33bb3..79f6bec 100644 --- a/doc/Slime.htm +++ b/doc/Slime.htm @@ -49,7 +49,7 @@

Notes

If you notice slow execution of a function called from the REPL, try to wrap it in qrun/qrun*, as this will reduce eventual, multiple thread switches (for each EQL function call) to a single one.

-

All EQL functions are wrapped in qrun* (see eql5/slime/thread-safe.lisp), so it's safe to call them either directly from the REPL or using 'eval region' (or from any other ECL thread).

+

All EQL functions are wrapped in qrun* (see lib/thread-safe.lisp), so it's safe to call them either directly from the REPL or using 'eval region' (or from any other ECL thread).

If the Slime REPL hangs, you can simply try to connect again (losing the old connection): no need to restart Lisp.

This Slime mode is both convenient and simple to use, but conses a little more for every EQL function call.
If you absolutely want direct EQL function calls, please see the less convenient Slime REPL Hook mode.

diff --git a/examples/M-modules/quick/README.txt b/examples/M-modules/quick/README.txt index ecfdc22..0a58e18 100644 --- a/examples/M-modules/quick/README.txt +++ b/examples/M-modules/quick/README.txt @@ -1,6 +1,3 @@ -Please note that you will need to build a small C++ plugin for most of the -examples (see "lib/"); this is just for providing the "import EQL5" in QML. - If you are new to QML/EQL5, you probably want to go through the examples (and READMEs) in this order: diff --git a/examples/M-modules/quick/Tic-Tac-Toe/lib/qml_lisp.h b/examples/M-modules/quick/Tic-Tac-Toe/lib/qml_lisp.h deleted file mode 100644 index c8531b6..0000000 --- a/examples/M-modules/quick/Tic-Tac-Toe/lib/qml_lisp.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef LIB_H -#define LIB_H - -#include -#include -#include - -#ifdef Q_CC_MSVC -#define LIB_EXPORT __declspec(dllexport) -#else -#define LIB_EXPORT -#endif - -QT_BEGIN_NAMESPACE - -extern "C" { LIB_EXPORT QObject* ini(); } - -class Lisp : public QObject { - Q_OBJECT - -public: - Q_INVOKABLE QVariant call(const QJSValue&, - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue()); - - Q_INVOKABLE QVariant apply(const QJSValue&, - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue()); -}; - -class EQLPaintedItem : public QQuickPaintedItem { - Q_OBJECT - -public: - EQLPaintedItem(QQuickItem* parent = 0) : QQuickPaintedItem(parent) {} - - void paint(QPainter* painter) { - eql_fun("qml:paint", - Q_ARG(QQuickPaintedItem*, this), - Q_ARG(QPainter*, painter)); } -}; - -QT_END_NAMESPACE - -#endif diff --git a/examples/M-modules/quick/Tic-Tac-Toe/lib/qml_lisp.pro b/examples/M-modules/quick/Tic-Tac-Toe/lib/qml_lisp.pro deleted file mode 100644 index 6e8dd06..0000000 --- a/examples/M-modules/quick/Tic-Tac-Toe/lib/qml_lisp.pro +++ /dev/null @@ -1,17 +0,0 @@ -QT += qml quick -TEMPLATE = lib -CONFIG += plugin release -INCLUDEPATH += ../../../../../src -LIBS += -L../../../../.. -leql5 -DESTDIR = ./ -TARGET = qml_lisp -OBJECTS_DIR = ./tmp/ -MOC_DIR = ./tmp/ - -win32 { - include(../../../../../src/windows.pri) -} - -HEADERS += qml_lisp.h -SOURCES += qml_lisp.cpp - diff --git a/examples/M-modules/quick/Tic-Tac-Toe/properties.lisp b/examples/M-modules/quick/Tic-Tac-Toe/properties.lisp index 5816280..7bfc237 100644 --- a/examples/M-modules/quick/Tic-Tac-Toe/properties.lisp +++ b/examples/M-modules/quick/Tic-Tac-Toe/properties.lisp @@ -6,7 +6,7 @@ (defun show-properties-dialog (&optional item) "Lists all instance properties of a QML item (either a QQuickItem or an 'objectName'). If no item is passed, QML:*CALLER* will be used." (unless (find-package :properties) - (load (in-home "gui/properties"))) + (load (in-home "lib/properties"))) (funcall (%sym :show :properties) (or (if (stringp item) (qml:find-quick-item item) diff --git a/examples/M-modules/quick/Tic-Tac-Toe/qml-lisp.lisp b/examples/M-modules/quick/Tic-Tac-Toe/qml-lisp.lisp index b94c8f4..1fc2c05 100644 --- a/examples/M-modules/quick/Tic-Tac-Toe/qml-lisp.lisp +++ b/examples/M-modules/quick/Tic-Tac-Toe/qml-lisp.lisp @@ -3,7 +3,6 @@ ;;; * allows to get/set any QML property from Lisp (needs 'objectName' to be set) ;;; * allows to evaluate JS code from Lisp (needs 'objectName' to be set) ;;; -;;; (requires a C++ plugin, see "lib/") (defpackage :qml-lisp (:use :common-lisp :eql) @@ -26,9 +25,8 @@ (in-package :qml-lisp) -(defvar *qml-lisp* (qload-c++ "lib/qml_lisp")) -(defvar *caller* nil) (defvar *quick-view* nil) +(defvar *caller* nil) (defun string-to-symbol (name) (let ((upper (string-upcase name)) diff --git a/examples/M-modules/quick/Tic-Tac-Toe/tic-tac-toe.lisp b/examples/M-modules/quick/Tic-Tac-Toe/tic-tac-toe.lisp index 7788888..ec5589e 100644 --- a/examples/M-modules/quick/Tic-Tac-Toe/tic-tac-toe.lisp +++ b/examples/M-modules/quick/Tic-Tac-Toe/tic-tac-toe.lisp @@ -4,8 +4,6 @@ ;;; This is a port of a QtQuick1/Qt4 example. ;;; The JS game logic has been ported to Lisp. ;;; -;;; (requires a C++ plugin, see "lib/") -;;; #-qt-wrapper-functions ; see README-OPTIONAL.txt (load (in-home "src/lisp/all-wrappers")) diff --git a/examples/M-modules/quick/item-model/lib/qml_lisp.cpp b/examples/M-modules/quick/item-model/lib/qml_lisp.cpp deleted file mode 100644 index aeb8702..0000000 --- a/examples/M-modules/quick/item-model/lib/qml_lisp.cpp +++ /dev/null @@ -1,108 +0,0 @@ -#include "qml_lisp.h" - -QT_BEGIN_NAMESPACE - -static Lisp* lisp = 0; - -static QObject* lisp_provider(QQmlEngine*, QJSEngine*) { return lisp; } - -QObject* ini() { - if(!lisp) { - lisp = new Lisp; - qmlRegisterSingletonType("EQL5", 1, 0, "Lisp", lisp_provider); - qmlRegisterType("EQL5", 1, 0, "PaintedItem"); } - return lisp; } - -static QQmlContext* rootContext() { - QVariant var = eql_fun("qml:root-context", QMetaType::VoidStar); - return Q_PTR(QQmlContext*, var); } - -static QVariant qmlApply(QObject* caller, const QString& function, const QVariantList& arguments) { - QVariant var = - eql_fun("qml:qml-apply", QVariant::String, - Q_ARG(QObject*, caller), - Q_ARG(QString, function), - Q_ARG(QVariantList, arguments)); - QString str(var.toString()); - if(str.startsWith("#<>")) { // prepared in Lisp for JS eval - QQmlExpression exp(rootContext(), caller, str.mid(3)); - return exp.evaluate(); } - return var; } - -QVariant Lisp::call(const QJSValue& caller_or_function, const QJSValue& function_or_arg0, - const QJSValue& arg1, - const QJSValue& arg2, - const QJSValue& arg3, - const QJSValue& arg4, - const QJSValue& arg5, - const QJSValue& arg6, - const QJSValue& arg7, - const QJSValue& arg8, - const QJSValue& arg9, - const QJSValue& arg10, - const QJSValue& arg11, - const QJSValue& arg12, - const QJSValue& arg13, - const QJSValue& arg14, - const QJSValue& arg15, - const QJSValue& arg16) { - QObject* caller = 0; - QString function; - QVariantList arguments; - if(caller_or_function.isQObject()) { - caller = caller_or_function.toQObject(); - function = function_or_arg0.toString(); } - else if(caller_or_function.isString()) { - function = caller_or_function.toString(); - if(!function_or_arg0.isUndefined()) { - arguments << function_or_arg0.toVariant(); }} - if(!arg1.isUndefined()) { - arguments << arg1.toVariant(); - if(!arg2.isUndefined()) { - arguments << arg2.toVariant(); - if(!arg3.isUndefined()) { - arguments << arg3.toVariant(); - if(!arg4.isUndefined()) { - arguments << arg4.toVariant(); - if(!arg5.isUndefined()) { - arguments << arg5.toVariant(); - if(!arg6.isUndefined()) { - arguments << arg6.toVariant(); - if(!arg7.isUndefined()) { - arguments << arg7.toVariant(); - if(!arg8.isUndefined()) { - arguments << arg8.toVariant(); - if(!arg9.isUndefined()) { - arguments << arg9.toVariant(); - if(!arg10.isUndefined()) { - arguments << arg10.toVariant(); - if(!arg11.isUndefined()) { - arguments << arg11.toVariant(); - if(!arg12.isUndefined()) { - arguments << arg12.toVariant(); - if(!arg13.isUndefined()) { - arguments << arg13.toVariant(); - if(!arg14.isUndefined()) { - arguments << arg14.toVariant(); - if(!arg15.isUndefined()) { - arguments << arg15.toVariant(); - if(!arg16.isUndefined()) { - arguments << arg16.toVariant(); }}}}}}}}}}}}}}}} - return qmlApply(caller, function, arguments); } - -QVariant Lisp::apply(const QJSValue& caller_or_function, - const QJSValue& function_or_arguments, - const QJSValue& arguments_or_undefined) { - QObject* caller = 0; - QString function; - QVariantList arguments; - if(caller_or_function.isQObject()) { - caller = caller_or_function.toQObject(); - function = function_or_arguments.toString(); - arguments = arguments_or_undefined.toVariant().value(); } - else if(caller_or_function.isString()) { - function = caller_or_function.toString(); - arguments = function_or_arguments.toVariant().value(); } - return qmlApply(caller, function, arguments); } - -QT_END_NAMESPACE diff --git a/examples/M-modules/quick/item-model/lib/qml_lisp.pro b/examples/M-modules/quick/item-model/lib/qml_lisp.pro deleted file mode 100644 index 6e8dd06..0000000 --- a/examples/M-modules/quick/item-model/lib/qml_lisp.pro +++ /dev/null @@ -1,17 +0,0 @@ -QT += qml quick -TEMPLATE = lib -CONFIG += plugin release -INCLUDEPATH += ../../../../../src -LIBS += -L../../../../.. -leql5 -DESTDIR = ./ -TARGET = qml_lisp -OBJECTS_DIR = ./tmp/ -MOC_DIR = ./tmp/ - -win32 { - include(../../../../../src/windows.pri) -} - -HEADERS += qml_lisp.h -SOURCES += qml_lisp.cpp - diff --git a/examples/M-modules/quick/item-model/properties.lisp b/examples/M-modules/quick/item-model/properties.lisp index 5816280..7bfc237 100644 --- a/examples/M-modules/quick/item-model/properties.lisp +++ b/examples/M-modules/quick/item-model/properties.lisp @@ -6,7 +6,7 @@ (defun show-properties-dialog (&optional item) "Lists all instance properties of a QML item (either a QQuickItem or an 'objectName'). If no item is passed, QML:*CALLER* will be used." (unless (find-package :properties) - (load (in-home "gui/properties"))) + (load (in-home "lib/properties"))) (funcall (%sym :show :properties) (or (if (stringp item) (qml:find-quick-item item) diff --git a/examples/M-modules/quick/item-model/qml-lisp.lisp b/examples/M-modules/quick/item-model/qml-lisp.lisp index b94c8f4..1fc2c05 100644 --- a/examples/M-modules/quick/item-model/qml-lisp.lisp +++ b/examples/M-modules/quick/item-model/qml-lisp.lisp @@ -3,7 +3,6 @@ ;;; * allows to get/set any QML property from Lisp (needs 'objectName' to be set) ;;; * allows to evaluate JS code from Lisp (needs 'objectName' to be set) ;;; -;;; (requires a C++ plugin, see "lib/") (defpackage :qml-lisp (:use :common-lisp :eql) @@ -26,9 +25,8 @@ (in-package :qml-lisp) -(defvar *qml-lisp* (qload-c++ "lib/qml_lisp")) -(defvar *caller* nil) (defvar *quick-view* nil) +(defvar *caller* nil) (defun string-to-symbol (name) (let ((upper (string-upcase name)) diff --git a/examples/M-modules/quick/painted-item/lib/qml_lisp.cpp b/examples/M-modules/quick/painted-item/lib/qml_lisp.cpp deleted file mode 100644 index aeb8702..0000000 --- a/examples/M-modules/quick/painted-item/lib/qml_lisp.cpp +++ /dev/null @@ -1,108 +0,0 @@ -#include "qml_lisp.h" - -QT_BEGIN_NAMESPACE - -static Lisp* lisp = 0; - -static QObject* lisp_provider(QQmlEngine*, QJSEngine*) { return lisp; } - -QObject* ini() { - if(!lisp) { - lisp = new Lisp; - qmlRegisterSingletonType("EQL5", 1, 0, "Lisp", lisp_provider); - qmlRegisterType("EQL5", 1, 0, "PaintedItem"); } - return lisp; } - -static QQmlContext* rootContext() { - QVariant var = eql_fun("qml:root-context", QMetaType::VoidStar); - return Q_PTR(QQmlContext*, var); } - -static QVariant qmlApply(QObject* caller, const QString& function, const QVariantList& arguments) { - QVariant var = - eql_fun("qml:qml-apply", QVariant::String, - Q_ARG(QObject*, caller), - Q_ARG(QString, function), - Q_ARG(QVariantList, arguments)); - QString str(var.toString()); - if(str.startsWith("#<>")) { // prepared in Lisp for JS eval - QQmlExpression exp(rootContext(), caller, str.mid(3)); - return exp.evaluate(); } - return var; } - -QVariant Lisp::call(const QJSValue& caller_or_function, const QJSValue& function_or_arg0, - const QJSValue& arg1, - const QJSValue& arg2, - const QJSValue& arg3, - const QJSValue& arg4, - const QJSValue& arg5, - const QJSValue& arg6, - const QJSValue& arg7, - const QJSValue& arg8, - const QJSValue& arg9, - const QJSValue& arg10, - const QJSValue& arg11, - const QJSValue& arg12, - const QJSValue& arg13, - const QJSValue& arg14, - const QJSValue& arg15, - const QJSValue& arg16) { - QObject* caller = 0; - QString function; - QVariantList arguments; - if(caller_or_function.isQObject()) { - caller = caller_or_function.toQObject(); - function = function_or_arg0.toString(); } - else if(caller_or_function.isString()) { - function = caller_or_function.toString(); - if(!function_or_arg0.isUndefined()) { - arguments << function_or_arg0.toVariant(); }} - if(!arg1.isUndefined()) { - arguments << arg1.toVariant(); - if(!arg2.isUndefined()) { - arguments << arg2.toVariant(); - if(!arg3.isUndefined()) { - arguments << arg3.toVariant(); - if(!arg4.isUndefined()) { - arguments << arg4.toVariant(); - if(!arg5.isUndefined()) { - arguments << arg5.toVariant(); - if(!arg6.isUndefined()) { - arguments << arg6.toVariant(); - if(!arg7.isUndefined()) { - arguments << arg7.toVariant(); - if(!arg8.isUndefined()) { - arguments << arg8.toVariant(); - if(!arg9.isUndefined()) { - arguments << arg9.toVariant(); - if(!arg10.isUndefined()) { - arguments << arg10.toVariant(); - if(!arg11.isUndefined()) { - arguments << arg11.toVariant(); - if(!arg12.isUndefined()) { - arguments << arg12.toVariant(); - if(!arg13.isUndefined()) { - arguments << arg13.toVariant(); - if(!arg14.isUndefined()) { - arguments << arg14.toVariant(); - if(!arg15.isUndefined()) { - arguments << arg15.toVariant(); - if(!arg16.isUndefined()) { - arguments << arg16.toVariant(); }}}}}}}}}}}}}}}} - return qmlApply(caller, function, arguments); } - -QVariant Lisp::apply(const QJSValue& caller_or_function, - const QJSValue& function_or_arguments, - const QJSValue& arguments_or_undefined) { - QObject* caller = 0; - QString function; - QVariantList arguments; - if(caller_or_function.isQObject()) { - caller = caller_or_function.toQObject(); - function = function_or_arguments.toString(); - arguments = arguments_or_undefined.toVariant().value(); } - else if(caller_or_function.isString()) { - function = caller_or_function.toString(); - arguments = function_or_arguments.toVariant().value(); } - return qmlApply(caller, function, arguments); } - -QT_END_NAMESPACE diff --git a/examples/M-modules/quick/painted-item/lib/qml_lisp.h b/examples/M-modules/quick/painted-item/lib/qml_lisp.h deleted file mode 100644 index c8531b6..0000000 --- a/examples/M-modules/quick/painted-item/lib/qml_lisp.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef LIB_H -#define LIB_H - -#include -#include -#include - -#ifdef Q_CC_MSVC -#define LIB_EXPORT __declspec(dllexport) -#else -#define LIB_EXPORT -#endif - -QT_BEGIN_NAMESPACE - -extern "C" { LIB_EXPORT QObject* ini(); } - -class Lisp : public QObject { - Q_OBJECT - -public: - Q_INVOKABLE QVariant call(const QJSValue&, - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue()); - - Q_INVOKABLE QVariant apply(const QJSValue&, - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue()); -}; - -class EQLPaintedItem : public QQuickPaintedItem { - Q_OBJECT - -public: - EQLPaintedItem(QQuickItem* parent = 0) : QQuickPaintedItem(parent) {} - - void paint(QPainter* painter) { - eql_fun("qml:paint", - Q_ARG(QQuickPaintedItem*, this), - Q_ARG(QPainter*, painter)); } -}; - -QT_END_NAMESPACE - -#endif diff --git a/examples/M-modules/quick/painted-item/lib/qml_lisp.pro b/examples/M-modules/quick/painted-item/lib/qml_lisp.pro deleted file mode 100644 index 6e8dd06..0000000 --- a/examples/M-modules/quick/painted-item/lib/qml_lisp.pro +++ /dev/null @@ -1,17 +0,0 @@ -QT += qml quick -TEMPLATE = lib -CONFIG += plugin release -INCLUDEPATH += ../../../../../src -LIBS += -L../../../../.. -leql5 -DESTDIR = ./ -TARGET = qml_lisp -OBJECTS_DIR = ./tmp/ -MOC_DIR = ./tmp/ - -win32 { - include(../../../../../src/windows.pri) -} - -HEADERS += qml_lisp.h -SOURCES += qml_lisp.cpp - diff --git a/examples/M-modules/quick/painted-item/properties.lisp b/examples/M-modules/quick/painted-item/properties.lisp index 5816280..7bfc237 100644 --- a/examples/M-modules/quick/painted-item/properties.lisp +++ b/examples/M-modules/quick/painted-item/properties.lisp @@ -6,7 +6,7 @@ (defun show-properties-dialog (&optional item) "Lists all instance properties of a QML item (either a QQuickItem or an 'objectName'). If no item is passed, QML:*CALLER* will be used." (unless (find-package :properties) - (load (in-home "gui/properties"))) + (load (in-home "lib/properties"))) (funcall (%sym :show :properties) (or (if (stringp item) (qml:find-quick-item item) diff --git a/examples/M-modules/quick/painted-item/qml-lisp.lisp b/examples/M-modules/quick/painted-item/qml-lisp.lisp index b94c8f4..1fc2c05 100644 --- a/examples/M-modules/quick/painted-item/qml-lisp.lisp +++ b/examples/M-modules/quick/painted-item/qml-lisp.lisp @@ -3,7 +3,6 @@ ;;; * allows to get/set any QML property from Lisp (needs 'objectName' to be set) ;;; * allows to evaluate JS code from Lisp (needs 'objectName' to be set) ;;; -;;; (requires a C++ plugin, see "lib/") (defpackage :qml-lisp (:use :common-lisp :eql) @@ -26,9 +25,8 @@ (in-package :qml-lisp) -(defvar *qml-lisp* (qload-c++ "lib/qml_lisp")) -(defvar *caller* nil) (defvar *quick-view* nil) +(defvar *caller* nil) (defun string-to-symbol (name) (let ((upper (string-upcase name)) diff --git a/examples/M-modules/quick/palindrome-1/properties.lisp b/examples/M-modules/quick/palindrome-1/properties.lisp index 6fb2eef..b276d05 100644 --- a/examples/M-modules/quick/palindrome-1/properties.lisp +++ b/examples/M-modules/quick/palindrome-1/properties.lisp @@ -60,7 +60,7 @@ (defun show-properties-dialog (&optional item) "Lists all instance properties of a QML item (either a QQuickItem or an 'objectName')." (unless (find-package :properties) - (load (in-home "gui/properties"))) + (load (in-home "lib/properties"))) (funcall (%sym :show :properties) (if (stringp item) (find-quick-item item) diff --git a/examples/M-modules/quick/palindrome-2/lib/libqml_lisp.so b/examples/M-modules/quick/palindrome-2/lib/libqml_lisp.so deleted file mode 100755 index ad22f30c3589abcccf8eecc63be42af65403ebf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95312 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 OlIiLDuV|;w|Nj6nXSPQG diff --git a/examples/M-modules/quick/palindrome-2/lib/qml_lisp.cpp b/examples/M-modules/quick/palindrome-2/lib/qml_lisp.cpp deleted file mode 100644 index aeb8702..0000000 --- a/examples/M-modules/quick/palindrome-2/lib/qml_lisp.cpp +++ /dev/null @@ -1,108 +0,0 @@ -#include "qml_lisp.h" - -QT_BEGIN_NAMESPACE - -static Lisp* lisp = 0; - -static QObject* lisp_provider(QQmlEngine*, QJSEngine*) { return lisp; } - -QObject* ini() { - if(!lisp) { - lisp = new Lisp; - qmlRegisterSingletonType("EQL5", 1, 0, "Lisp", lisp_provider); - qmlRegisterType("EQL5", 1, 0, "PaintedItem"); } - return lisp; } - -static QQmlContext* rootContext() { - QVariant var = eql_fun("qml:root-context", QMetaType::VoidStar); - return Q_PTR(QQmlContext*, var); } - -static QVariant qmlApply(QObject* caller, const QString& function, const QVariantList& arguments) { - QVariant var = - eql_fun("qml:qml-apply", QVariant::String, - Q_ARG(QObject*, caller), - Q_ARG(QString, function), - Q_ARG(QVariantList, arguments)); - QString str(var.toString()); - if(str.startsWith("#<>")) { // prepared in Lisp for JS eval - QQmlExpression exp(rootContext(), caller, str.mid(3)); - return exp.evaluate(); } - return var; } - -QVariant Lisp::call(const QJSValue& caller_or_function, const QJSValue& function_or_arg0, - const QJSValue& arg1, - const QJSValue& arg2, - const QJSValue& arg3, - const QJSValue& arg4, - const QJSValue& arg5, - const QJSValue& arg6, - const QJSValue& arg7, - const QJSValue& arg8, - const QJSValue& arg9, - const QJSValue& arg10, - const QJSValue& arg11, - const QJSValue& arg12, - const QJSValue& arg13, - const QJSValue& arg14, - const QJSValue& arg15, - const QJSValue& arg16) { - QObject* caller = 0; - QString function; - QVariantList arguments; - if(caller_or_function.isQObject()) { - caller = caller_or_function.toQObject(); - function = function_or_arg0.toString(); } - else if(caller_or_function.isString()) { - function = caller_or_function.toString(); - if(!function_or_arg0.isUndefined()) { - arguments << function_or_arg0.toVariant(); }} - if(!arg1.isUndefined()) { - arguments << arg1.toVariant(); - if(!arg2.isUndefined()) { - arguments << arg2.toVariant(); - if(!arg3.isUndefined()) { - arguments << arg3.toVariant(); - if(!arg4.isUndefined()) { - arguments << arg4.toVariant(); - if(!arg5.isUndefined()) { - arguments << arg5.toVariant(); - if(!arg6.isUndefined()) { - arguments << arg6.toVariant(); - if(!arg7.isUndefined()) { - arguments << arg7.toVariant(); - if(!arg8.isUndefined()) { - arguments << arg8.toVariant(); - if(!arg9.isUndefined()) { - arguments << arg9.toVariant(); - if(!arg10.isUndefined()) { - arguments << arg10.toVariant(); - if(!arg11.isUndefined()) { - arguments << arg11.toVariant(); - if(!arg12.isUndefined()) { - arguments << arg12.toVariant(); - if(!arg13.isUndefined()) { - arguments << arg13.toVariant(); - if(!arg14.isUndefined()) { - arguments << arg14.toVariant(); - if(!arg15.isUndefined()) { - arguments << arg15.toVariant(); - if(!arg16.isUndefined()) { - arguments << arg16.toVariant(); }}}}}}}}}}}}}}}} - return qmlApply(caller, function, arguments); } - -QVariant Lisp::apply(const QJSValue& caller_or_function, - const QJSValue& function_or_arguments, - const QJSValue& arguments_or_undefined) { - QObject* caller = 0; - QString function; - QVariantList arguments; - if(caller_or_function.isQObject()) { - caller = caller_or_function.toQObject(); - function = function_or_arguments.toString(); - arguments = arguments_or_undefined.toVariant().value(); } - else if(caller_or_function.isString()) { - function = caller_or_function.toString(); - arguments = function_or_arguments.toVariant().value(); } - return qmlApply(caller, function, arguments); } - -QT_END_NAMESPACE diff --git a/examples/M-modules/quick/palindrome-2/lib/qml_lisp.h b/examples/M-modules/quick/palindrome-2/lib/qml_lisp.h deleted file mode 100644 index c8531b6..0000000 --- a/examples/M-modules/quick/palindrome-2/lib/qml_lisp.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef LIB_H -#define LIB_H - -#include -#include -#include - -#ifdef Q_CC_MSVC -#define LIB_EXPORT __declspec(dllexport) -#else -#define LIB_EXPORT -#endif - -QT_BEGIN_NAMESPACE - -extern "C" { LIB_EXPORT QObject* ini(); } - -class Lisp : public QObject { - Q_OBJECT - -public: - Q_INVOKABLE QVariant call(const QJSValue&, - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue()); - - Q_INVOKABLE QVariant apply(const QJSValue&, - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue()); -}; - -class EQLPaintedItem : public QQuickPaintedItem { - Q_OBJECT - -public: - EQLPaintedItem(QQuickItem* parent = 0) : QQuickPaintedItem(parent) {} - - void paint(QPainter* painter) { - eql_fun("qml:paint", - Q_ARG(QQuickPaintedItem*, this), - Q_ARG(QPainter*, painter)); } -}; - -QT_END_NAMESPACE - -#endif diff --git a/examples/M-modules/quick/palindrome-2/lib/qml_lisp.pro b/examples/M-modules/quick/palindrome-2/lib/qml_lisp.pro deleted file mode 100644 index 6e8dd06..0000000 --- a/examples/M-modules/quick/palindrome-2/lib/qml_lisp.pro +++ /dev/null @@ -1,17 +0,0 @@ -QT += qml quick -TEMPLATE = lib -CONFIG += plugin release -INCLUDEPATH += ../../../../../src -LIBS += -L../../../../.. -leql5 -DESTDIR = ./ -TARGET = qml_lisp -OBJECTS_DIR = ./tmp/ -MOC_DIR = ./tmp/ - -win32 { - include(../../../../../src/windows.pri) -} - -HEADERS += qml_lisp.h -SOURCES += qml_lisp.cpp - diff --git a/examples/M-modules/quick/palindrome-2/lib/tmp/moc_qml_lisp.cpp b/examples/M-modules/quick/palindrome-2/lib/tmp/moc_qml_lisp.cpp deleted file mode 100644 index d15c622..0000000 --- a/examples/M-modules/quick/palindrome-2/lib/tmp/moc_qml_lisp.cpp +++ /dev/null @@ -1,568 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'qml_lisp.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.5.1) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "../qml_lisp.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'qml_lisp.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.5.1. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -struct qt_meta_stringdata_Lisp_t { - QByteArrayData data[5]; - char stringdata0[26]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_Lisp_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_Lisp_t qt_meta_stringdata_Lisp = { - { -QT_MOC_LITERAL(0, 0, 4), // "Lisp" -QT_MOC_LITERAL(1, 5, 4), // "call" -QT_MOC_LITERAL(2, 10, 0), // "" -QT_MOC_LITERAL(3, 11, 8), // "QJSValue" -QT_MOC_LITERAL(4, 20, 5) // "apply" - - }, - "Lisp\0call\0\0QJSValue\0apply" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_Lisp[] = { - - // content: - 7, // revision - 0, // classname - 0, 0, // classinfo - 21, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - // methods: name, argc, parameters, tag, flags - 1, 18, 119, 2, 0x02 /* Public */, - 1, 17, 156, 2, 0x22 /* Public | MethodCloned */, - 1, 16, 191, 2, 0x22 /* Public | MethodCloned */, - 1, 15, 224, 2, 0x22 /* Public | MethodCloned */, - 1, 14, 255, 2, 0x22 /* Public | MethodCloned */, - 1, 13, 284, 2, 0x22 /* Public | MethodCloned */, - 1, 12, 311, 2, 0x22 /* Public | MethodCloned */, - 1, 11, 336, 2, 0x22 /* Public | MethodCloned */, - 1, 10, 359, 2, 0x22 /* Public | MethodCloned */, - 1, 9, 380, 2, 0x22 /* Public | MethodCloned */, - 1, 8, 399, 2, 0x22 /* Public | MethodCloned */, - 1, 7, 416, 2, 0x22 /* Public | MethodCloned */, - 1, 6, 431, 2, 0x22 /* Public | MethodCloned */, - 1, 5, 444, 2, 0x22 /* Public | MethodCloned */, - 1, 4, 455, 2, 0x22 /* Public | MethodCloned */, - 1, 3, 464, 2, 0x22 /* Public | MethodCloned */, - 1, 2, 471, 2, 0x22 /* Public | MethodCloned */, - 1, 1, 476, 2, 0x22 /* Public | MethodCloned */, - 4, 3, 479, 2, 0x02 /* Public */, - 4, 2, 486, 2, 0x22 /* Public | MethodCloned */, - 4, 1, 491, 2, 0x22 /* Public | MethodCloned */, - - // methods: parameters - QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, - QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2, - QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, - QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, - QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, - QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, - QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, - QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 2, 2, - QMetaType::QVariant, 0x80000000 | 3, 2, - QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, - QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 2, 2, - QMetaType::QVariant, 0x80000000 | 3, 2, - - 0 // eod -}; - -void Lisp::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - Lisp *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8])),(*reinterpret_cast< const QJSValue(*)>(_a[9])),(*reinterpret_cast< const QJSValue(*)>(_a[10])),(*reinterpret_cast< const QJSValue(*)>(_a[11])),(*reinterpret_cast< const QJSValue(*)>(_a[12])),(*reinterpret_cast< const QJSValue(*)>(_a[13])),(*reinterpret_cast< const QJSValue(*)>(_a[14])),(*reinterpret_cast< const QJSValue(*)>(_a[15])),(*reinterpret_cast< const QJSValue(*)>(_a[16])),(*reinterpret_cast< const QJSValue(*)>(_a[17])),(*reinterpret_cast< const QJSValue(*)>(_a[18]))); - if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break; - case 1: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8])),(*reinterpret_cast< const QJSValue(*)>(_a[9])),(*reinterpret_cast< const QJSValue(*)>(_a[10])),(*reinterpret_cast< const QJSValue(*)>(_a[11])),(*reinterpret_cast< const QJSValue(*)>(_a[12])),(*reinterpret_cast< const QJSValue(*)>(_a[13])),(*reinterpret_cast< const QJSValue(*)>(_a[14])),(*reinterpret_cast< const QJSValue(*)>(_a[15])),(*reinterpret_cast< const QJSValue(*)>(_a[16])),(*reinterpret_cast< const QJSValue(*)>(_a[17]))); - if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break; - case 2: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8])),(*reinterpret_cast< const QJSValue(*)>(_a[9])),(*reinterpret_cast< const QJSValue(*)>(_a[10])),(*reinterpret_cast< const QJSValue(*)>(_a[11])),(*reinterpret_cast< const QJSValue(*)>(_a[12])),(*reinterpret_cast< const QJSValue(*)>(_a[13])),(*reinterpret_cast< const QJSValue(*)>(_a[14])),(*reinterpret_cast< const QJSValue(*)>(_a[15])),(*reinterpret_cast< const QJSValue(*)>(_a[16]))); - if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break; - case 3: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8])),(*reinterpret_cast< const QJSValue(*)>(_a[9])),(*reinterpret_cast< const QJSValue(*)>(_a[10])),(*reinterpret_cast< const QJSValue(*)>(_a[11])),(*reinterpret_cast< const QJSValue(*)>(_a[12])),(*reinterpret_cast< const QJSValue(*)>(_a[13])),(*reinterpret_cast< const QJSValue(*)>(_a[14])),(*reinterpret_cast< const QJSValue(*)>(_a[15]))); - if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break; - case 4: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8])),(*reinterpret_cast< const QJSValue(*)>(_a[9])),(*reinterpret_cast< const QJSValue(*)>(_a[10])),(*reinterpret_cast< const QJSValue(*)>(_a[11])),(*reinterpret_cast< const QJSValue(*)>(_a[12])),(*reinterpret_cast< const QJSValue(*)>(_a[13])),(*reinterpret_cast< const QJSValue(*)>(_a[14]))); - if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break; - case 5: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8])),(*reinterpret_cast< const QJSValue(*)>(_a[9])),(*reinterpret_cast< const QJSValue(*)>(_a[10])),(*reinterpret_cast< const QJSValue(*)>(_a[11])),(*reinterpret_cast< const QJSValue(*)>(_a[12])),(*reinterpret_cast< const QJSValue(*)>(_a[13]))); - if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break; - case 6: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8])),(*reinterpret_cast< const QJSValue(*)>(_a[9])),(*reinterpret_cast< const QJSValue(*)>(_a[10])),(*reinterpret_cast< const QJSValue(*)>(_a[11])),(*reinterpret_cast< const QJSValue(*)>(_a[12]))); - if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break; - case 7: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8])),(*reinterpret_cast< const QJSValue(*)>(_a[9])),(*reinterpret_cast< const QJSValue(*)>(_a[10])),(*reinterpret_cast< const QJSValue(*)>(_a[11]))); - if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break; - case 8: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8])),(*reinterpret_cast< const QJSValue(*)>(_a[9])),(*reinterpret_cast< const QJSValue(*)>(_a[10]))); - if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break; - case 9: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8])),(*reinterpret_cast< const QJSValue(*)>(_a[9]))); - if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break; - case 10: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8]))); - if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break; - case 11: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7]))); - if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break; - case 12: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6]))); - if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break; - case 13: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5]))); - if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break; - case 14: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4]))); - if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break; - case 15: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3]))); - if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break; - case 16: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2]))); - if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break; - case 17: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1]))); - if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break; - case 18: { QVariant _r = _t->apply((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3]))); - if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break; - case 19: { QVariant _r = _t->apply((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2]))); - if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break; - case 20: { QVariant _r = _t->apply((*reinterpret_cast< const QJSValue(*)>(_a[1]))); - if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break; - default: ; - } - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - switch (_id) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 0: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 17: - case 16: - case 15: - case 14: - case 13: - case 12: - case 11: - case 10: - case 9: - case 8: - case 7: - case 6: - case 5: - case 4: - case 3: - case 2: - case 1: - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< QJSValue >(); break; - } - break; - case 1: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 16: - case 15: - case 14: - case 13: - case 12: - case 11: - case 10: - case 9: - case 8: - case 7: - case 6: - case 5: - case 4: - case 3: - case 2: - case 1: - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< QJSValue >(); break; - } - break; - case 2: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 15: - case 14: - case 13: - case 12: - case 11: - case 10: - case 9: - case 8: - case 7: - case 6: - case 5: - case 4: - case 3: - case 2: - case 1: - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< QJSValue >(); break; - } - break; - case 3: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 14: - case 13: - case 12: - case 11: - case 10: - case 9: - case 8: - case 7: - case 6: - case 5: - case 4: - case 3: - case 2: - case 1: - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< QJSValue >(); break; - } - break; - case 4: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 13: - case 12: - case 11: - case 10: - case 9: - case 8: - case 7: - case 6: - case 5: - case 4: - case 3: - case 2: - case 1: - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< QJSValue >(); break; - } - break; - case 5: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 12: - case 11: - case 10: - case 9: - case 8: - case 7: - case 6: - case 5: - case 4: - case 3: - case 2: - case 1: - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< QJSValue >(); break; - } - break; - case 6: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 11: - case 10: - case 9: - case 8: - case 7: - case 6: - case 5: - case 4: - case 3: - case 2: - case 1: - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< QJSValue >(); break; - } - break; - case 7: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 10: - case 9: - case 8: - case 7: - case 6: - case 5: - case 4: - case 3: - case 2: - case 1: - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< QJSValue >(); break; - } - break; - case 8: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 9: - case 8: - case 7: - case 6: - case 5: - case 4: - case 3: - case 2: - case 1: - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< QJSValue >(); break; - } - break; - case 9: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 8: - case 7: - case 6: - case 5: - case 4: - case 3: - case 2: - case 1: - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< QJSValue >(); break; - } - break; - case 10: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 7: - case 6: - case 5: - case 4: - case 3: - case 2: - case 1: - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< QJSValue >(); break; - } - break; - case 11: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 6: - case 5: - case 4: - case 3: - case 2: - case 1: - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< QJSValue >(); break; - } - break; - case 12: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 5: - case 4: - case 3: - case 2: - case 1: - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< QJSValue >(); break; - } - break; - case 13: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 4: - case 3: - case 2: - case 1: - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< QJSValue >(); break; - } - break; - case 14: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 3: - case 2: - case 1: - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< QJSValue >(); break; - } - break; - case 15: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 2: - case 1: - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< QJSValue >(); break; - } - break; - case 16: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 1: - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< QJSValue >(); break; - } - break; - case 17: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< QJSValue >(); break; - } - break; - case 18: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 2: - case 1: - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< QJSValue >(); break; - } - break; - case 19: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 1: - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< QJSValue >(); break; - } - break; - case 20: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< QJSValue >(); break; - } - break; - } - } -} - -const QMetaObject Lisp::staticMetaObject = { - { &QObject::staticMetaObject, qt_meta_stringdata_Lisp.data, - qt_meta_data_Lisp, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} -}; - - -const QMetaObject *Lisp::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *Lisp::qt_metacast(const char *_clname) -{ - if (!_clname) return Q_NULLPTR; - if (!strcmp(_clname, qt_meta_stringdata_Lisp.stringdata0)) - return static_cast(const_cast< Lisp*>(this)); - return QObject::qt_metacast(_clname); -} - -int Lisp::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QObject::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 21) - qt_static_metacall(this, _c, _id, _a); - _id -= 21; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 21) - qt_static_metacall(this, _c, _id, _a); - _id -= 21; - } - return _id; -} -struct qt_meta_stringdata_EQLPaintedItem_t { - QByteArrayData data[1]; - char stringdata0[15]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_EQLPaintedItem_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_EQLPaintedItem_t qt_meta_stringdata_EQLPaintedItem = { - { -QT_MOC_LITERAL(0, 0, 14) // "EQLPaintedItem" - - }, - "EQLPaintedItem" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_EQLPaintedItem[] = { - - // content: - 7, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void EQLPaintedItem::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -const QMetaObject EQLPaintedItem::staticMetaObject = { - { &QQuickPaintedItem::staticMetaObject, qt_meta_stringdata_EQLPaintedItem.data, - qt_meta_data_EQLPaintedItem, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} -}; - - -const QMetaObject *EQLPaintedItem::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *EQLPaintedItem::qt_metacast(const char *_clname) -{ - if (!_clname) return Q_NULLPTR; - if (!strcmp(_clname, qt_meta_stringdata_EQLPaintedItem.stringdata0)) - return static_cast(const_cast< EQLPaintedItem*>(this)); - return QQuickPaintedItem::qt_metacast(_clname); -} - -int EQLPaintedItem::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QQuickPaintedItem::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - return _id; -} -QT_END_MOC_NAMESPACE diff --git a/examples/M-modules/quick/palindrome-2/lib/tmp/moc_qml_lisp.o b/examples/M-modules/quick/palindrome-2/lib/tmp/moc_qml_lisp.o deleted file mode 100644 index 22d2873d5fece22ee07649218d2d854081dc463b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66168 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 nT(sm(QtVu{)P&)o-B?Z}0iqU+@1vL2Qs8 diff --git a/examples/M-modules/quick/palindrome-2/lib/tmp/qml_lisp.o b/examples/M-modules/quick/palindrome-2/lib/tmp/qml_lisp.o deleted file mode 100644 index 7f8091a5d75c433aa7d649952d7c2432411f7058..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81496 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 diff --git a/examples/M-modules/quick/palindrome-2/properties.lisp b/examples/M-modules/quick/palindrome-2/properties.lisp index 5816280..7bfc237 100644 --- a/examples/M-modules/quick/palindrome-2/properties.lisp +++ b/examples/M-modules/quick/palindrome-2/properties.lisp @@ -6,7 +6,7 @@ (defun show-properties-dialog (&optional item) "Lists all instance properties of a QML item (either a QQuickItem or an 'objectName'). If no item is passed, QML:*CALLER* will be used." (unless (find-package :properties) - (load (in-home "gui/properties"))) + (load (in-home "lib/properties"))) (funcall (%sym :show :properties) (or (if (stringp item) (qml:find-quick-item item) diff --git a/examples/M-modules/quick/palindrome-2/qml-lisp.lisp b/examples/M-modules/quick/palindrome-2/qml-lisp.lisp index ceb4ea8..1fc2c05 100644 --- a/examples/M-modules/quick/palindrome-2/qml-lisp.lisp +++ b/examples/M-modules/quick/palindrome-2/qml-lisp.lisp @@ -3,7 +3,6 @@ ;;; * allows to get/set any QML property from Lisp (needs 'objectName' to be set) ;;; * allows to evaluate JS code from Lisp (needs 'objectName' to be set) ;;; -;;; (requires a C++ plugin, see "lib/") (defpackage :qml-lisp (:use :common-lisp :eql) @@ -26,9 +25,8 @@ (in-package :qml-lisp) -;;(defvar *qml-lisp* (qload-c++ "lib/qml_lisp")) ; not needed for this example -(defvar *caller* nil) (defvar *quick-view* nil) +(defvar *caller* nil) (defun string-to-symbol (name) (let ((upper (string-upcase name)) diff --git a/examples/M-modules/quick/qml-lisp/lib/qml_lisp.cpp b/examples/M-modules/quick/qml-lisp/lib/qml_lisp.cpp deleted file mode 100644 index aeb8702..0000000 --- a/examples/M-modules/quick/qml-lisp/lib/qml_lisp.cpp +++ /dev/null @@ -1,108 +0,0 @@ -#include "qml_lisp.h" - -QT_BEGIN_NAMESPACE - -static Lisp* lisp = 0; - -static QObject* lisp_provider(QQmlEngine*, QJSEngine*) { return lisp; } - -QObject* ini() { - if(!lisp) { - lisp = new Lisp; - qmlRegisterSingletonType("EQL5", 1, 0, "Lisp", lisp_provider); - qmlRegisterType("EQL5", 1, 0, "PaintedItem"); } - return lisp; } - -static QQmlContext* rootContext() { - QVariant var = eql_fun("qml:root-context", QMetaType::VoidStar); - return Q_PTR(QQmlContext*, var); } - -static QVariant qmlApply(QObject* caller, const QString& function, const QVariantList& arguments) { - QVariant var = - eql_fun("qml:qml-apply", QVariant::String, - Q_ARG(QObject*, caller), - Q_ARG(QString, function), - Q_ARG(QVariantList, arguments)); - QString str(var.toString()); - if(str.startsWith("#<>")) { // prepared in Lisp for JS eval - QQmlExpression exp(rootContext(), caller, str.mid(3)); - return exp.evaluate(); } - return var; } - -QVariant Lisp::call(const QJSValue& caller_or_function, const QJSValue& function_or_arg0, - const QJSValue& arg1, - const QJSValue& arg2, - const QJSValue& arg3, - const QJSValue& arg4, - const QJSValue& arg5, - const QJSValue& arg6, - const QJSValue& arg7, - const QJSValue& arg8, - const QJSValue& arg9, - const QJSValue& arg10, - const QJSValue& arg11, - const QJSValue& arg12, - const QJSValue& arg13, - const QJSValue& arg14, - const QJSValue& arg15, - const QJSValue& arg16) { - QObject* caller = 0; - QString function; - QVariantList arguments; - if(caller_or_function.isQObject()) { - caller = caller_or_function.toQObject(); - function = function_or_arg0.toString(); } - else if(caller_or_function.isString()) { - function = caller_or_function.toString(); - if(!function_or_arg0.isUndefined()) { - arguments << function_or_arg0.toVariant(); }} - if(!arg1.isUndefined()) { - arguments << arg1.toVariant(); - if(!arg2.isUndefined()) { - arguments << arg2.toVariant(); - if(!arg3.isUndefined()) { - arguments << arg3.toVariant(); - if(!arg4.isUndefined()) { - arguments << arg4.toVariant(); - if(!arg5.isUndefined()) { - arguments << arg5.toVariant(); - if(!arg6.isUndefined()) { - arguments << arg6.toVariant(); - if(!arg7.isUndefined()) { - arguments << arg7.toVariant(); - if(!arg8.isUndefined()) { - arguments << arg8.toVariant(); - if(!arg9.isUndefined()) { - arguments << arg9.toVariant(); - if(!arg10.isUndefined()) { - arguments << arg10.toVariant(); - if(!arg11.isUndefined()) { - arguments << arg11.toVariant(); - if(!arg12.isUndefined()) { - arguments << arg12.toVariant(); - if(!arg13.isUndefined()) { - arguments << arg13.toVariant(); - if(!arg14.isUndefined()) { - arguments << arg14.toVariant(); - if(!arg15.isUndefined()) { - arguments << arg15.toVariant(); - if(!arg16.isUndefined()) { - arguments << arg16.toVariant(); }}}}}}}}}}}}}}}} - return qmlApply(caller, function, arguments); } - -QVariant Lisp::apply(const QJSValue& caller_or_function, - const QJSValue& function_or_arguments, - const QJSValue& arguments_or_undefined) { - QObject* caller = 0; - QString function; - QVariantList arguments; - if(caller_or_function.isQObject()) { - caller = caller_or_function.toQObject(); - function = function_or_arguments.toString(); - arguments = arguments_or_undefined.toVariant().value(); } - else if(caller_or_function.isString()) { - function = caller_or_function.toString(); - arguments = function_or_arguments.toVariant().value(); } - return qmlApply(caller, function, arguments); } - -QT_END_NAMESPACE diff --git a/examples/M-modules/quick/qml-lisp/lib/qml_lisp.h b/examples/M-modules/quick/qml-lisp/lib/qml_lisp.h deleted file mode 100644 index c8531b6..0000000 --- a/examples/M-modules/quick/qml-lisp/lib/qml_lisp.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef LIB_H -#define LIB_H - -#include -#include -#include - -#ifdef Q_CC_MSVC -#define LIB_EXPORT __declspec(dllexport) -#else -#define LIB_EXPORT -#endif - -QT_BEGIN_NAMESPACE - -extern "C" { LIB_EXPORT QObject* ini(); } - -class Lisp : public QObject { - Q_OBJECT - -public: - Q_INVOKABLE QVariant call(const QJSValue&, - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue()); - - Q_INVOKABLE QVariant apply(const QJSValue&, - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue()); -}; - -class EQLPaintedItem : public QQuickPaintedItem { - Q_OBJECT - -public: - EQLPaintedItem(QQuickItem* parent = 0) : QQuickPaintedItem(parent) {} - - void paint(QPainter* painter) { - eql_fun("qml:paint", - Q_ARG(QQuickPaintedItem*, this), - Q_ARG(QPainter*, painter)); } -}; - -QT_END_NAMESPACE - -#endif diff --git a/examples/M-modules/quick/qml-lisp/lib/qml_lisp.pro b/examples/M-modules/quick/qml-lisp/lib/qml_lisp.pro deleted file mode 100644 index 6e8dd06..0000000 --- a/examples/M-modules/quick/qml-lisp/lib/qml_lisp.pro +++ /dev/null @@ -1,17 +0,0 @@ -QT += qml quick -TEMPLATE = lib -CONFIG += plugin release -INCLUDEPATH += ../../../../../src -LIBS += -L../../../../.. -leql5 -DESTDIR = ./ -TARGET = qml_lisp -OBJECTS_DIR = ./tmp/ -MOC_DIR = ./tmp/ - -win32 { - include(../../../../../src/windows.pri) -} - -HEADERS += qml_lisp.h -SOURCES += qml_lisp.cpp - diff --git a/examples/M-modules/quick/qml-lisp/properties.lisp b/examples/M-modules/quick/qml-lisp/properties.lisp index 5816280..7bfc237 100644 --- a/examples/M-modules/quick/qml-lisp/properties.lisp +++ b/examples/M-modules/quick/qml-lisp/properties.lisp @@ -6,7 +6,7 @@ (defun show-properties-dialog (&optional item) "Lists all instance properties of a QML item (either a QQuickItem or an 'objectName'). If no item is passed, QML:*CALLER* will be used." (unless (find-package :properties) - (load (in-home "gui/properties"))) + (load (in-home "lib/properties"))) (funcall (%sym :show :properties) (or (if (stringp item) (qml:find-quick-item item) diff --git a/examples/M-modules/quick/qml-lisp/qml-lisp.lisp b/examples/M-modules/quick/qml-lisp/qml-lisp.lisp index b94c8f4..1fc2c05 100644 --- a/examples/M-modules/quick/qml-lisp/qml-lisp.lisp +++ b/examples/M-modules/quick/qml-lisp/qml-lisp.lisp @@ -3,7 +3,6 @@ ;;; * allows to get/set any QML property from Lisp (needs 'objectName' to be set) ;;; * allows to evaluate JS code from Lisp (needs 'objectName' to be set) ;;; -;;; (requires a C++ plugin, see "lib/") (defpackage :qml-lisp (:use :common-lisp :eql) @@ -26,9 +25,8 @@ (in-package :qml-lisp) -(defvar *qml-lisp* (qload-c++ "lib/qml_lisp")) -(defvar *caller* nil) (defvar *quick-view* nil) +(defvar *caller* nil) (defun string-to-symbol (name) (let ((upper (string-upcase name)) diff --git a/examples/M-modules/quick/qml-lisp/qml/example.qml b/examples/M-modules/quick/qml-lisp/qml/example.qml index 87a3796..2878cc2 100644 --- a/examples/M-modules/quick/qml-lisp/qml/example.qml +++ b/examples/M-modules/quick/qml-lisp/qml/example.qml @@ -14,7 +14,7 @@ Item { // use JS arrays for lists (can be nested); // // * the only limit to Lisp.call() is the number of arguments (max. 16); - // this is just an implementation detail; feel free to extend it (see "../lib/"); + // this is just an implementation detail; feel free to extend it (see sources); // // * return values can be nested Lisp lists or vectors, which will be converted to // nested JS arrays: they will be prepared in Lisp and passed to JS eval; diff --git a/examples/M-modules/quick/sokoban/lib/qml_lisp.cpp b/examples/M-modules/quick/sokoban/lib/qml_lisp.cpp deleted file mode 100644 index aeb8702..0000000 --- a/examples/M-modules/quick/sokoban/lib/qml_lisp.cpp +++ /dev/null @@ -1,108 +0,0 @@ -#include "qml_lisp.h" - -QT_BEGIN_NAMESPACE - -static Lisp* lisp = 0; - -static QObject* lisp_provider(QQmlEngine*, QJSEngine*) { return lisp; } - -QObject* ini() { - if(!lisp) { - lisp = new Lisp; - qmlRegisterSingletonType("EQL5", 1, 0, "Lisp", lisp_provider); - qmlRegisterType("EQL5", 1, 0, "PaintedItem"); } - return lisp; } - -static QQmlContext* rootContext() { - QVariant var = eql_fun("qml:root-context", QMetaType::VoidStar); - return Q_PTR(QQmlContext*, var); } - -static QVariant qmlApply(QObject* caller, const QString& function, const QVariantList& arguments) { - QVariant var = - eql_fun("qml:qml-apply", QVariant::String, - Q_ARG(QObject*, caller), - Q_ARG(QString, function), - Q_ARG(QVariantList, arguments)); - QString str(var.toString()); - if(str.startsWith("#<>")) { // prepared in Lisp for JS eval - QQmlExpression exp(rootContext(), caller, str.mid(3)); - return exp.evaluate(); } - return var; } - -QVariant Lisp::call(const QJSValue& caller_or_function, const QJSValue& function_or_arg0, - const QJSValue& arg1, - const QJSValue& arg2, - const QJSValue& arg3, - const QJSValue& arg4, - const QJSValue& arg5, - const QJSValue& arg6, - const QJSValue& arg7, - const QJSValue& arg8, - const QJSValue& arg9, - const QJSValue& arg10, - const QJSValue& arg11, - const QJSValue& arg12, - const QJSValue& arg13, - const QJSValue& arg14, - const QJSValue& arg15, - const QJSValue& arg16) { - QObject* caller = 0; - QString function; - QVariantList arguments; - if(caller_or_function.isQObject()) { - caller = caller_or_function.toQObject(); - function = function_or_arg0.toString(); } - else if(caller_or_function.isString()) { - function = caller_or_function.toString(); - if(!function_or_arg0.isUndefined()) { - arguments << function_or_arg0.toVariant(); }} - if(!arg1.isUndefined()) { - arguments << arg1.toVariant(); - if(!arg2.isUndefined()) { - arguments << arg2.toVariant(); - if(!arg3.isUndefined()) { - arguments << arg3.toVariant(); - if(!arg4.isUndefined()) { - arguments << arg4.toVariant(); - if(!arg5.isUndefined()) { - arguments << arg5.toVariant(); - if(!arg6.isUndefined()) { - arguments << arg6.toVariant(); - if(!arg7.isUndefined()) { - arguments << arg7.toVariant(); - if(!arg8.isUndefined()) { - arguments << arg8.toVariant(); - if(!arg9.isUndefined()) { - arguments << arg9.toVariant(); - if(!arg10.isUndefined()) { - arguments << arg10.toVariant(); - if(!arg11.isUndefined()) { - arguments << arg11.toVariant(); - if(!arg12.isUndefined()) { - arguments << arg12.toVariant(); - if(!arg13.isUndefined()) { - arguments << arg13.toVariant(); - if(!arg14.isUndefined()) { - arguments << arg14.toVariant(); - if(!arg15.isUndefined()) { - arguments << arg15.toVariant(); - if(!arg16.isUndefined()) { - arguments << arg16.toVariant(); }}}}}}}}}}}}}}}} - return qmlApply(caller, function, arguments); } - -QVariant Lisp::apply(const QJSValue& caller_or_function, - const QJSValue& function_or_arguments, - const QJSValue& arguments_or_undefined) { - QObject* caller = 0; - QString function; - QVariantList arguments; - if(caller_or_function.isQObject()) { - caller = caller_or_function.toQObject(); - function = function_or_arguments.toString(); - arguments = arguments_or_undefined.toVariant().value(); } - else if(caller_or_function.isString()) { - function = caller_or_function.toString(); - arguments = function_or_arguments.toVariant().value(); } - return qmlApply(caller, function, arguments); } - -QT_END_NAMESPACE diff --git a/examples/M-modules/quick/sokoban/lib/qml_lisp.h b/examples/M-modules/quick/sokoban/lib/qml_lisp.h deleted file mode 100644 index c8531b6..0000000 --- a/examples/M-modules/quick/sokoban/lib/qml_lisp.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef LIB_H -#define LIB_H - -#include -#include -#include - -#ifdef Q_CC_MSVC -#define LIB_EXPORT __declspec(dllexport) -#else -#define LIB_EXPORT -#endif - -QT_BEGIN_NAMESPACE - -extern "C" { LIB_EXPORT QObject* ini(); } - -class Lisp : public QObject { - Q_OBJECT - -public: - Q_INVOKABLE QVariant call(const QJSValue&, - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue()); - - Q_INVOKABLE QVariant apply(const QJSValue&, - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue()); -}; - -class EQLPaintedItem : public QQuickPaintedItem { - Q_OBJECT - -public: - EQLPaintedItem(QQuickItem* parent = 0) : QQuickPaintedItem(parent) {} - - void paint(QPainter* painter) { - eql_fun("qml:paint", - Q_ARG(QQuickPaintedItem*, this), - Q_ARG(QPainter*, painter)); } -}; - -QT_END_NAMESPACE - -#endif diff --git a/examples/M-modules/quick/sokoban/lib/qml_lisp.pro b/examples/M-modules/quick/sokoban/lib/qml_lisp.pro deleted file mode 100644 index 6e8dd06..0000000 --- a/examples/M-modules/quick/sokoban/lib/qml_lisp.pro +++ /dev/null @@ -1,17 +0,0 @@ -QT += qml quick -TEMPLATE = lib -CONFIG += plugin release -INCLUDEPATH += ../../../../../src -LIBS += -L../../../../.. -leql5 -DESTDIR = ./ -TARGET = qml_lisp -OBJECTS_DIR = ./tmp/ -MOC_DIR = ./tmp/ - -win32 { - include(../../../../../src/windows.pri) -} - -HEADERS += qml_lisp.h -SOURCES += qml_lisp.cpp - diff --git a/examples/M-modules/quick/sokoban/properties.lisp b/examples/M-modules/quick/sokoban/properties.lisp index 5816280..7bfc237 100644 --- a/examples/M-modules/quick/sokoban/properties.lisp +++ b/examples/M-modules/quick/sokoban/properties.lisp @@ -6,7 +6,7 @@ (defun show-properties-dialog (&optional item) "Lists all instance properties of a QML item (either a QQuickItem or an 'objectName'). If no item is passed, QML:*CALLER* will be used." (unless (find-package :properties) - (load (in-home "gui/properties"))) + (load (in-home "lib/properties"))) (funcall (%sym :show :properties) (or (if (stringp item) (qml:find-quick-item item) diff --git a/examples/M-modules/quick/sokoban/qml-lisp.lisp b/examples/M-modules/quick/sokoban/qml-lisp.lisp index b94c8f4..1fc2c05 100644 --- a/examples/M-modules/quick/sokoban/qml-lisp.lisp +++ b/examples/M-modules/quick/sokoban/qml-lisp.lisp @@ -3,7 +3,6 @@ ;;; * allows to get/set any QML property from Lisp (needs 'objectName' to be set) ;;; * allows to evaluate JS code from Lisp (needs 'objectName' to be set) ;;; -;;; (requires a C++ plugin, see "lib/") (defpackage :qml-lisp (:use :common-lisp :eql) @@ -26,9 +25,8 @@ (in-package :qml-lisp) -(defvar *qml-lisp* (qload-c++ "lib/qml_lisp")) -(defvar *caller* nil) (defvar *quick-view* nil) +(defvar *caller* nil) (defun string-to-symbol (name) (let ((upper (string-upcase name)) diff --git a/examples/M-modules/quick/table-view/lib/qml_lisp.cpp b/examples/M-modules/quick/table-view/lib/qml_lisp.cpp deleted file mode 100644 index aeb8702..0000000 --- a/examples/M-modules/quick/table-view/lib/qml_lisp.cpp +++ /dev/null @@ -1,108 +0,0 @@ -#include "qml_lisp.h" - -QT_BEGIN_NAMESPACE - -static Lisp* lisp = 0; - -static QObject* lisp_provider(QQmlEngine*, QJSEngine*) { return lisp; } - -QObject* ini() { - if(!lisp) { - lisp = new Lisp; - qmlRegisterSingletonType("EQL5", 1, 0, "Lisp", lisp_provider); - qmlRegisterType("EQL5", 1, 0, "PaintedItem"); } - return lisp; } - -static QQmlContext* rootContext() { - QVariant var = eql_fun("qml:root-context", QMetaType::VoidStar); - return Q_PTR(QQmlContext*, var); } - -static QVariant qmlApply(QObject* caller, const QString& function, const QVariantList& arguments) { - QVariant var = - eql_fun("qml:qml-apply", QVariant::String, - Q_ARG(QObject*, caller), - Q_ARG(QString, function), - Q_ARG(QVariantList, arguments)); - QString str(var.toString()); - if(str.startsWith("#<>")) { // prepared in Lisp for JS eval - QQmlExpression exp(rootContext(), caller, str.mid(3)); - return exp.evaluate(); } - return var; } - -QVariant Lisp::call(const QJSValue& caller_or_function, const QJSValue& function_or_arg0, - const QJSValue& arg1, - const QJSValue& arg2, - const QJSValue& arg3, - const QJSValue& arg4, - const QJSValue& arg5, - const QJSValue& arg6, - const QJSValue& arg7, - const QJSValue& arg8, - const QJSValue& arg9, - const QJSValue& arg10, - const QJSValue& arg11, - const QJSValue& arg12, - const QJSValue& arg13, - const QJSValue& arg14, - const QJSValue& arg15, - const QJSValue& arg16) { - QObject* caller = 0; - QString function; - QVariantList arguments; - if(caller_or_function.isQObject()) { - caller = caller_or_function.toQObject(); - function = function_or_arg0.toString(); } - else if(caller_or_function.isString()) { - function = caller_or_function.toString(); - if(!function_or_arg0.isUndefined()) { - arguments << function_or_arg0.toVariant(); }} - if(!arg1.isUndefined()) { - arguments << arg1.toVariant(); - if(!arg2.isUndefined()) { - arguments << arg2.toVariant(); - if(!arg3.isUndefined()) { - arguments << arg3.toVariant(); - if(!arg4.isUndefined()) { - arguments << arg4.toVariant(); - if(!arg5.isUndefined()) { - arguments << arg5.toVariant(); - if(!arg6.isUndefined()) { - arguments << arg6.toVariant(); - if(!arg7.isUndefined()) { - arguments << arg7.toVariant(); - if(!arg8.isUndefined()) { - arguments << arg8.toVariant(); - if(!arg9.isUndefined()) { - arguments << arg9.toVariant(); - if(!arg10.isUndefined()) { - arguments << arg10.toVariant(); - if(!arg11.isUndefined()) { - arguments << arg11.toVariant(); - if(!arg12.isUndefined()) { - arguments << arg12.toVariant(); - if(!arg13.isUndefined()) { - arguments << arg13.toVariant(); - if(!arg14.isUndefined()) { - arguments << arg14.toVariant(); - if(!arg15.isUndefined()) { - arguments << arg15.toVariant(); - if(!arg16.isUndefined()) { - arguments << arg16.toVariant(); }}}}}}}}}}}}}}}} - return qmlApply(caller, function, arguments); } - -QVariant Lisp::apply(const QJSValue& caller_or_function, - const QJSValue& function_or_arguments, - const QJSValue& arguments_or_undefined) { - QObject* caller = 0; - QString function; - QVariantList arguments; - if(caller_or_function.isQObject()) { - caller = caller_or_function.toQObject(); - function = function_or_arguments.toString(); - arguments = arguments_or_undefined.toVariant().value(); } - else if(caller_or_function.isString()) { - function = caller_or_function.toString(); - arguments = function_or_arguments.toVariant().value(); } - return qmlApply(caller, function, arguments); } - -QT_END_NAMESPACE diff --git a/examples/M-modules/quick/table-view/lib/qml_lisp.h b/examples/M-modules/quick/table-view/lib/qml_lisp.h deleted file mode 100644 index c8531b6..0000000 --- a/examples/M-modules/quick/table-view/lib/qml_lisp.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef LIB_H -#define LIB_H - -#include -#include -#include - -#ifdef Q_CC_MSVC -#define LIB_EXPORT __declspec(dllexport) -#else -#define LIB_EXPORT -#endif - -QT_BEGIN_NAMESPACE - -extern "C" { LIB_EXPORT QObject* ini(); } - -class Lisp : public QObject { - Q_OBJECT - -public: - Q_INVOKABLE QVariant call(const QJSValue&, - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue()); - - Q_INVOKABLE QVariant apply(const QJSValue&, - const QJSValue& = QJSValue(), - const QJSValue& = QJSValue()); -}; - -class EQLPaintedItem : public QQuickPaintedItem { - Q_OBJECT - -public: - EQLPaintedItem(QQuickItem* parent = 0) : QQuickPaintedItem(parent) {} - - void paint(QPainter* painter) { - eql_fun("qml:paint", - Q_ARG(QQuickPaintedItem*, this), - Q_ARG(QPainter*, painter)); } -}; - -QT_END_NAMESPACE - -#endif diff --git a/examples/M-modules/quick/table-view/lib/qml_lisp.pro b/examples/M-modules/quick/table-view/lib/qml_lisp.pro deleted file mode 100644 index 6e8dd06..0000000 --- a/examples/M-modules/quick/table-view/lib/qml_lisp.pro +++ /dev/null @@ -1,17 +0,0 @@ -QT += qml quick -TEMPLATE = lib -CONFIG += plugin release -INCLUDEPATH += ../../../../../src -LIBS += -L../../../../.. -leql5 -DESTDIR = ./ -TARGET = qml_lisp -OBJECTS_DIR = ./tmp/ -MOC_DIR = ./tmp/ - -win32 { - include(../../../../../src/windows.pri) -} - -HEADERS += qml_lisp.h -SOURCES += qml_lisp.cpp - diff --git a/examples/M-modules/quick/table-view/properties.lisp b/examples/M-modules/quick/table-view/properties.lisp index 5816280..7bfc237 100644 --- a/examples/M-modules/quick/table-view/properties.lisp +++ b/examples/M-modules/quick/table-view/properties.lisp @@ -6,7 +6,7 @@ (defun show-properties-dialog (&optional item) "Lists all instance properties of a QML item (either a QQuickItem or an 'objectName'). If no item is passed, QML:*CALLER* will be used." (unless (find-package :properties) - (load (in-home "gui/properties"))) + (load (in-home "lib/properties"))) (funcall (%sym :show :properties) (or (if (stringp item) (qml:find-quick-item item) diff --git a/examples/M-modules/quick/table-view/qml-lisp.lisp b/examples/M-modules/quick/table-view/qml-lisp.lisp index b94c8f4..1fc2c05 100644 --- a/examples/M-modules/quick/table-view/qml-lisp.lisp +++ b/examples/M-modules/quick/table-view/qml-lisp.lisp @@ -3,7 +3,6 @@ ;;; * allows to get/set any QML property from Lisp (needs 'objectName' to be set) ;;; * allows to evaluate JS code from Lisp (needs 'objectName' to be set) ;;; -;;; (requires a C++ plugin, see "lib/") (defpackage :qml-lisp (:use :common-lisp :eql) @@ -26,9 +25,8 @@ (in-package :qml-lisp) -(defvar *qml-lisp* (qload-c++ "lib/qml_lisp")) -(defvar *caller* nil) (defvar *quick-view* nil) +(defvar *caller* nil) (defun string-to-symbol (name) (let ((upper (string-upcase name)) diff --git a/examples/M-modules/web-kit-engine/lib/webkit_bridge.cpp b/examples/M-modules/web-kit-engine/lib/webkit_bridge.cpp index 1792e94..e69de29 100644 --- a/examples/M-modules/web-kit-engine/lib/webkit_bridge.cpp +++ b/examples/M-modules/web-kit-engine/lib/webkit_bridge.cpp @@ -1 +0,0 @@ -//exclude "*.*" diff --git a/examples/M-modules/web-kit-engine/lib/webkit_bridge.h b/examples/M-modules/web-kit-engine/lib/webkit_bridge.h index 7ac701a..07a785b 100644 --- a/examples/M-modules/web-kit-engine/lib/webkit_bridge.h +++ b/examples/M-modules/web-kit-engine/lib/webkit_bridge.h @@ -3,7 +3,7 @@ #include #include -#include +#include #ifdef Q_CC_MSVC #define LIB_EXPORT __declspec(dllexport) diff --git a/examples/M-modules/web-kit-engine/lib/webkit_bridge.pro b/examples/M-modules/web-kit-engine/lib/webkit_bridge.pro index bd4b574..ee5a6de 100644 --- a/examples/M-modules/web-kit-engine/lib/webkit_bridge.pro +++ b/examples/M-modules/web-kit-engine/lib/webkit_bridge.pro @@ -1,8 +1,8 @@ QT += webkitwidgets TEMPLATE = lib CONFIG += plugin release -INCLUDEPATH += ../../../../src -LIBS += -L../../../.. -leql5 +INCLUDEPATH += /usr/local/include +LIBS += -L/usr/local/lib -leql5 DESTDIR = ./ TARGET = webkit_bridge OBJECTS_DIR = ./tmp/ @@ -16,5 +16,6 @@ win32 { HEADERS += _invokables.h \ webkit_bridge.h + SOURCES += webkit_bridge.cpp diff --git a/examples/M-modules/webkit/Examples-Browser/lib/webkit_bridge.h b/examples/M-modules/webkit/Examples-Browser/lib/webkit_bridge.h index 1ff5fa0..b1aa19e 100644 --- a/examples/M-modules/webkit/Examples-Browser/lib/webkit_bridge.h +++ b/examples/M-modules/webkit/Examples-Browser/lib/webkit_bridge.h @@ -3,7 +3,7 @@ #include #include -#include +#include #ifdef Q_CC_MSVC #define LIB_EXPORT __declspec(dllexport) diff --git a/examples/M-modules/webkit/Examples-Browser/lib/webkit_bridge.pro b/examples/M-modules/webkit/Examples-Browser/lib/webkit_bridge.pro index 9159be8..3187b69 100644 --- a/examples/M-modules/webkit/Examples-Browser/lib/webkit_bridge.pro +++ b/examples/M-modules/webkit/Examples-Browser/lib/webkit_bridge.pro @@ -1,8 +1,8 @@ QT += webkitwidgets TEMPLATE = lib CONFIG += plugin release -INCLUDEPATH += ../../../../../src -LIBS += -L../../../../.. -leql5 +INCLUDEPATH += /usr/local/include +LIBS += -L/usr/local/lib -leql5 DESTDIR = ./ TARGET = webkit_bridge OBJECTS_DIR = ./tmp/ @@ -16,5 +16,6 @@ win32 { HEADERS += _invokables.h \ webkit_bridge.h + SOURCES += webkit_bridge.cpp diff --git a/examples/M-modules/webkit/Tic-Tac-Toe/lib/webkit_bridge.h b/examples/M-modules/webkit/Tic-Tac-Toe/lib/webkit_bridge.h index 7ac701a..07a785b 100644 --- a/examples/M-modules/webkit/Tic-Tac-Toe/lib/webkit_bridge.h +++ b/examples/M-modules/webkit/Tic-Tac-Toe/lib/webkit_bridge.h @@ -3,7 +3,7 @@ #include #include -#include +#include #ifdef Q_CC_MSVC #define LIB_EXPORT __declspec(dllexport) diff --git a/examples/M-modules/webkit/Tic-Tac-Toe/lib/webkit_bridge.pro b/examples/M-modules/webkit/Tic-Tac-Toe/lib/webkit_bridge.pro index 9159be8..3187b69 100644 --- a/examples/M-modules/webkit/Tic-Tac-Toe/lib/webkit_bridge.pro +++ b/examples/M-modules/webkit/Tic-Tac-Toe/lib/webkit_bridge.pro @@ -1,8 +1,8 @@ QT += webkitwidgets TEMPLATE = lib CONFIG += plugin release -INCLUDEPATH += ../../../../../src -LIBS += -L../../../../.. -leql5 +INCLUDEPATH += /usr/local/include +LIBS += -L/usr/local/lib -leql5 DESTDIR = ./ TARGET = webkit_bridge OBJECTS_DIR = ./tmp/ @@ -16,5 +16,6 @@ win32 { HEADERS += _invokables.h \ webkit_bridge.h + SOURCES += webkit_bridge.cpp diff --git a/examples/M-modules/webkit/lib/webkit_bridge.h b/examples/M-modules/webkit/lib/webkit_bridge.h index 7ac701a..07a785b 100644 --- a/examples/M-modules/webkit/lib/webkit_bridge.h +++ b/examples/M-modules/webkit/lib/webkit_bridge.h @@ -3,7 +3,7 @@ #include #include -#include +#include #ifdef Q_CC_MSVC #define LIB_EXPORT __declspec(dllexport) diff --git a/examples/M-modules/webkit/lib/webkit_bridge.pro b/examples/M-modules/webkit/lib/webkit_bridge.pro index bd4b574..ee5a6de 100644 --- a/examples/M-modules/webkit/lib/webkit_bridge.pro +++ b/examples/M-modules/webkit/lib/webkit_bridge.pro @@ -1,8 +1,8 @@ QT += webkitwidgets TEMPLATE = lib CONFIG += plugin release -INCLUDEPATH += ../../../../src -LIBS += -L../../../.. -leql5 +INCLUDEPATH += /usr/local/include +LIBS += -L/usr/local/lib -leql5 DESTDIR = ./ TARGET = webkit_bridge OBJECTS_DIR = ./tmp/ @@ -16,5 +16,6 @@ win32 { HEADERS += _invokables.h \ webkit_bridge.h + SOURCES += webkit_bridge.cpp diff --git a/examples/X-extras/move-blocks/cpp/lib.cpp b/examples/X-extras/move-blocks/cpp/lib.cpp index 2210f6c..fdd4f39 100644 --- a/examples/X-extras/move-blocks/cpp/lib.cpp +++ b/examples/X-extras/move-blocks/cpp/lib.cpp @@ -1,5 +1,5 @@ #include "lib.h" -#include "eql_fun.h" +#include QT_BEGIN_NAMESPACE diff --git a/examples/X-extras/move-blocks/cpp/lib.pro b/examples/X-extras/move-blocks/cpp/lib.pro index 4d75d85..cb4bad9 100644 --- a/examples/X-extras/move-blocks/cpp/lib.pro +++ b/examples/X-extras/move-blocks/cpp/lib.pro @@ -1,7 +1,7 @@ TEMPLATE = lib CONFIG += plugin release -INCLUDEPATH += ../../../../src -LIBS += -L../../../.. -leql5 +INCLUDEPATH += /usr/local/include +LIBS += -L/usr/local/lib -leql5 DESTDIR = ./ TARGET = easing_curve OBJECTS_DIR = ./tmp/ @@ -12,4 +12,5 @@ win32 { } HEADERS += lib.h + SOURCES += lib.cpp diff --git a/examples/X-extras/palindrome/exe/main.cpp b/examples/X-extras/palindrome/exe/main.cpp index 52f1121..ac01030 100644 --- a/examples/X-extras/palindrome/exe/main.cpp +++ b/examples/X-extras/palindrome/exe/main.cpp @@ -1,7 +1,8 @@ #undef SLOT #include -#include "eql.h" +#include +#include #include "main.h" extern "C" void ini_app(cl_object); diff --git a/examples/X-extras/palindrome/exe/main.h b/examples/X-extras/palindrome/exe/main.h index 66621c0..5330f86 100644 --- a/examples/X-extras/palindrome/exe/main.h +++ b/examples/X-extras/palindrome/exe/main.h @@ -2,7 +2,6 @@ #define MAIN_H #include -#include "eql_fun.h" QT_BEGIN_NAMESPACE diff --git a/examples/X-extras/palindrome/exe/main.pro b/examples/X-extras/palindrome/exe/main.pro index 90b4cd7..d98ed6c 100644 --- a/examples/X-extras/palindrome/exe/main.pro +++ b/examples/X-extras/palindrome/exe/main.pro @@ -1,16 +1,17 @@ QT += widgets -TEMPLATE = app +TEMPLATE = app CONFIG += no_keywords release -INCLUDEPATH += ../../../../src -LIBS += -lecl -L. -lstatic -L../../../.. -leql5 -TARGET = palindrome -DESTDIR = ./ -OBJECTS_DIR = ./tmp/ -MOC_DIR = ./tmp/ +INCLUDEPATH += /usr/local/include +LIBS += -lecl -L. -lstatic -L/usr/local/include -leql5 +TARGET = palindrome +DESTDIR = ./ +OBJECTS_DIR = ./tmp/ +MOC_DIR = ./tmp/ win32 { include(../../../../src/windows.pri) } HEADERS += main.h + SOURCES += main.cpp diff --git a/examples/X-extras/qimage/cpp/lib.pro b/examples/X-extras/qimage/cpp/lib.pro index 27abbfe..f12076d 100644 --- a/examples/X-extras/qimage/cpp/lib.pro +++ b/examples/X-extras/qimage/cpp/lib.pro @@ -1,7 +1,7 @@ TEMPLATE = lib CONFIG += plugin release -INCLUDEPATH += ../../../../src -LIBS += -L../../../.. -leql5 +INCLUDEPATH += /usr/local/include +LIBS += -L/usr/local/lib -leql5 DESTDIR = ./ TARGET = qimage OBJECTS_DIR = ./tmp/ @@ -12,4 +12,5 @@ win32 { } HEADERS += lib.h + SOURCES += lib.cpp diff --git a/helper/generate.lisp b/helper/generate.lisp index bc4afac..a5941e8 100644 --- a/helper/generate.lisp +++ b/helper/generate.lisp @@ -648,7 +648,7 @@ (if gui "" (format nil "~%#include \"../_main_~(~A~)_methods.h\"" type)) (if gui (format nil "~%#include \"../extras.h\"~ - ~%#include \"../eql_global.h\"") + ~%#include \"../eql5/eql_global.h\"") (format nil "~%~A" (module-include module)))))) (let* ((n 0) (methods (if (eql :q type) *q-methods* *n-methods*)) @@ -796,8 +796,8 @@ ~%#include \"_main_n_classes.h\"~ ~%#include \"_main_q_methods.h\"~ ~%#include \"_main_n_methods.h\"~ - ~%#include \"../dyn_object.h\"~ - ~%#include \"../eql.h\"~ + ~%#include \"../eql5/dyn_object.h\"~ + ~%#include \"../eql5/eql.h\"~ ~%~ ~%int LObjects::T_QAudioDeviceInfo = -1;~ ~%int LObjects::T_QList_QAudioDeviceInfo = -1;~ diff --git a/src/lisp/ecl-readline.lisp b/lib/ecl-readline.lisp similarity index 100% rename from src/lisp/ecl-readline.lisp rename to lib/ecl-readline.lisp diff --git a/gui/gui.lisp b/lib/gui.lisp similarity index 99% rename from gui/gui.lisp rename to lib/gui.lisp index a2eb71e..9096f01 100644 --- a/gui/gui.lisp +++ b/lib/gui.lisp @@ -16,7 +16,7 @@ (in-package :gui) -(defconstant +history-file+ (in-home "gui/.command-history")) +(defconstant +history-file+ (in-home "lib/.command-history")) (defconstant +max-history+ 50) (defparameter * nil) @@ -24,7 +24,7 @@ (defparameter *** nil) (defparameter *q* nil) -(defvar *gui* (qload-ui (in-home "gui/gui.ui"))) +(defvar *gui* (qload-ui (in-home "lib/gui.ui"))) (defvar-ui *gui* *display* @@ -408,7 +408,7 @@ (defun show-properties-dialog () (unless (find-package :properties) - (load (in-home "gui/properties"))) + (load (in-home "lib/properties"))) (funcall (find-symbol "SHOW" :properties) *q*)) (gui) diff --git a/gui/gui.ui b/lib/gui.ui similarity index 100% rename from gui/gui.ui rename to lib/gui.ui diff --git a/src/lisp/invokables.lisp b/lib/invokables.lisp similarity index 100% rename from src/lisp/invokables.lisp rename to lib/invokables.lisp diff --git a/gui/properties.lisp b/lib/properties.lisp similarity index 98% rename from gui/properties.lisp rename to lib/properties.lisp index 76d9501..340c8c5 100644 --- a/gui/properties.lisp +++ b/lib/properties.lisp @@ -10,7 +10,7 @@ (in-package :properties) -(defvar *main* (qload-ui (in-home "gui/properties"))) +(defvar *main* (qload-ui (in-home "lib/properties"))) (defvar-ui *main* *meta-class-name* diff --git a/gui/properties.ui b/lib/properties.ui similarity index 100% rename from gui/properties.ui rename to lib/properties.ui diff --git a/src/lisp/qselect.lisp b/lib/qselect.lisp similarity index 100% rename from src/lisp/qselect.lisp rename to lib/qselect.lisp diff --git a/src/lisp/quic.lisp b/lib/quic.lisp similarity index 100% rename from src/lisp/quic.lisp rename to lib/quic.lisp diff --git a/src/lisp/restart-dialog.lisp b/lib/restart-dialog.lisp similarity index 100% rename from src/lisp/restart-dialog.lisp rename to lib/restart-dialog.lisp diff --git a/slime/thread-safe.lisp b/lib/thread-safe.lisp similarity index 100% rename from slime/thread-safe.lisp rename to lib/thread-safe.lisp diff --git a/my_app/main.cpp b/my_app/main.cpp index 25936d9..eeb40f6 100644 --- a/my_app/main.cpp +++ b/my_app/main.cpp @@ -1,11 +1,11 @@ #undef SLOT #include +#include #include #include #include #include -#include "eql.h" extern "C" void ini_app(cl_object); diff --git a/my_app/my_app.pro b/my_app/my_app.pro index 0a531d8..a445422 100644 --- a/my_app/my_app.pro +++ b/my_app/my_app.pro @@ -1,12 +1,12 @@ QT += widgets printsupport uitools -TEMPLATE = app +TEMPLATE = app CONFIG += no_keywords release -INCLUDEPATH += ../src -LIBS += -lecl -L. -lmy_lib -L.. -leql5 -TARGET = my_app -DESTDIR = ./ -OBJECTS_DIR = ./tmp/ -MOC_DIR = ./tmp/ +INCLUDEPATH += /usr/local/include +LIBS += -lecl -L. -lmy_lib -L/usr/local/include -leql5 +TARGET = my_app +DESTDIR = ./ +OBJECTS_DIR = ./tmp/ +MOC_DIR = ./tmp/ win32 { include(../src/windows.pri) diff --git a/slime/repl-hook.lisp b/slime/repl-hook.lisp index 0108455..d7465ee 100644 --- a/slime/repl-hook.lisp +++ b/slime/repl-hook.lisp @@ -2,7 +2,7 @@ ;;; This is a less convenient Slime mode using a REPL eval hook, ;;; with the advantage of running all EQL functions natively. ;;; -;;; (See "thread-safe.lisp" for the default Slime mode.) +;;; (See "../lib/thread-safe.lisp" for the default Slime mode.) (in-package :eql) diff --git a/src/dyn_object.cpp b/src/dyn_object.cpp index 89cd34c..4d3faa4 100644 --- a/src/dyn_object.cpp +++ b/src/dyn_object.cpp @@ -1,6 +1,6 @@ // copyright (c) Polos Ruetz -#include "dyn_object.h" +#include "eql5/dyn_object.h" #include "ecl_fun.h" #include "gen/_lobjects.h" #include diff --git a/src/ecl_fun.cpp b/src/ecl_fun.cpp index 2a16415..01528a1 100644 --- a/src/ecl_fun.cpp +++ b/src/ecl_fun.cpp @@ -1,8 +1,8 @@ // copyright (c) Polos Ruetz #include "ecl_fun.h" -#include "eql.h" -#include "dyn_object.h" +#include "eql5/eql.h" +#include "eql5/dyn_object.h" #include "gen/_lobjects.h" #include "ui_loader.h" #include "single_shot.h" @@ -2433,14 +2433,11 @@ cl_object qrequire2(cl_object l_name, cl_object l_quiet) { /// qrequire /// (qrequire :network) ecl_process_env()->nvalues = 1; QString name = symbolName(l_name); - QString prefix, postfix; -#ifdef Q_OS_DARWIN - prefix = "lib"; postfix = ".1.dylib"; -#endif -#ifdef Q_OS_LINUX - prefix = "lib"; postfix = ".so.1"; -#endif - QLibrary lib(prefix + "eql5_" + name + postfix); // global library + QString fileName = "eql5_" + name; + QLibrary lib(fileName); // global library + if(!lib.load()) { + fileName.prepend("/usr/local/lib/"); // "local" might not be in library search path + lib.setFileName(fileName); } typedef void (*Ini)(); Ini ini = (Ini)lib.resolve("ini"); if(ini) { diff --git a/src/ecl_fun.h b/src/ecl_fun.h index d18c4b3..87c07a2 100644 --- a/src/ecl_fun.h +++ b/src/ecl_fun.h @@ -6,7 +6,7 @@ #undef SLOT #include -#include "eql_global.h" +#include "eql5/eql_global.h" #include #include #include @@ -304,7 +304,7 @@ struct EQL_EXPORT QtObject { }; // for Qt_EQL -struct eql_pointer { +struct EQL_EXPORT eql_pointer { void* pointer; int id; diff --git a/src/eql.cpp b/src/eql.cpp index da5bcf7..d4ba7a3 100644 --- a/src/eql.cpp +++ b/src/eql.cpp @@ -1,13 +1,13 @@ // copyright (c) Polos Ruetz -#include "eql.h" +#include "eql5/eql.h" #include "ecl_fun.h" #include "gen/_lobjects.h" #include #include #include -const char EQL::version[] = "17.4.2"; // Apr 2017 +const char EQL::version[] = "17.4.3"; // Apr 2017 extern "C" void ini_EQL(cl_object); @@ -48,7 +48,6 @@ void EQL::exec(const QStringList& args) { bool exec_with_simple_restart = false; QStringList arguments(args); eval("(in-package :eql-user)"); - eval(QString("(eql::set-home \"%1\")").arg(home()).toLatin1().constData()); QStringList forms; // .eclrc if(arguments.contains("-norc")) { @@ -79,8 +78,8 @@ void EQL::exec(const QStringList& args) { arguments.removeAll("-qtpl"); ecl_setq(ecl_process_env(), s_qtpl, Ct); QApplication::setQuitOnLastWindowClosed(false); - forms << "(when (directory (in-home \"src/lisp/ecl-readline.fas*\"))" - " (load (in-home \"src/lisp/ecl-readline\")))" + forms << "(when (directory (in-home \"lib/ecl-readline.fas*\"))" + " (load (x:check-recompile (in-home \"lib/ecl-readline\"))))" << "(qsingle-shot 500 'eql::start-read-thread)"; exec_with_simple_restart = true; } // -qgui @@ -132,7 +131,6 @@ void EQL::exec(const QStringList& args) { void EQL::exec(lisp_ini ini, const QByteArray& expression, const QByteArray& package) { // see my_app example - eval(QString("(eql::set-home \"%1\")").arg(home()).toLatin1().constData()); read_VV(OBJNULL, ini); eval(QString("(in-package :%1)").arg(QString(package)).toLatin1().constData()); eval(expression.constData()); } @@ -144,8 +142,7 @@ void EQL::exec(QWidget* widget, const QString& lispFile, const QString& slimeHoo bool exec_with_simple_restart = false; QStringList forms; eval("(in-package :eql)"); - forms << QString("(set-home \"%1\")").arg(home()) - << QString("(defvar *qt-main* (qt-object %1 0 (qid \"%2\")))") + forms << QString("(defvar *qt-main* (qt-object %1 0 (qid \"%2\")))") .arg((quintptr)widget) .arg(QString(LObjects::vanillaQtSuperClassName(widget->metaObject()))) << QString("(export '*qt-main*)") diff --git a/src/dyn_object.h b/src/eql5/dyn_object.h similarity index 100% rename from src/dyn_object.h rename to src/eql5/dyn_object.h diff --git a/src/eql.h b/src/eql5/eql.h similarity index 95% rename from src/eql.h rename to src/eql5/eql.h index 7eefc5d..4a68fee 100644 --- a/src/eql.h +++ b/src/eql5/eql.h @@ -6,12 +6,12 @@ #undef SLOT #include +#include +#include #include #include #include #include -#include "dyn_object.h" -#include "eql_global.h" QT_BEGIN_NAMESPACE diff --git a/src/eql_fun.h b/src/eql5/eql_fun.h similarity index 100% rename from src/eql_fun.h rename to src/eql5/eql_fun.h diff --git a/src/eql_global.h b/src/eql5/eql_global.h similarity index 100% rename from src/eql_global.h rename to src/eql5/eql_global.h diff --git a/src/eql_exe.pro b/src/eql_exe.pro index 5182534..a262870 100644 --- a/src/eql_exe.pro +++ b/src/eql_exe.pro @@ -1,20 +1,20 @@ -QT += widgets printsupport uitools -TEMPLATE = app -CONFIG += no_keywords release -INCLUDEPATH += ../src /usr/local/include -LIBS += -lecl -leql5 -L.. -L/usr/local/lib -TARGET = eql5 -DESTDIR = ../ -OBJECTS_DIR = ./tmp/ -MOC_DIR = ./tmp/ +QT += widgets printsupport uitools +TEMPLATE = app +CONFIG += no_keywords release +INCLUDEPATH += ../src /usr/local/include +LIBS += -lecl -leql5 -L.. -L/usr/local/lib +TARGET = eql5 +DESTDIR = ../ +OBJECTS_DIR = ./tmp/ +MOC_DIR = ./tmp/ + +QMAKE_RPATHDIR = /usr/local/lib +target.path = /usr/local/bin +INSTALLS += target win32 { include(windows.pri) -} - -win32 { CONFIG += console } SOURCES += main.cpp - diff --git a/src/eql_lib.pro b/src/eql_lib.pro index 861ff1e..d311a79 100644 --- a/src/eql_lib.pro +++ b/src/eql_lib.pro @@ -1,13 +1,18 @@ -QT += widgets printsupport uitools -TEMPLATE = lib -CONFIG += dll no_keywords release -DEFINES += EQL_LIBRARY -INCLUDEPATH += /usr/local/include -LIBS += -lecl -lini -L. -L/usr/local/lib -TARGET = eql5 -DESTDIR = ../ -OBJECTS_DIR = ./tmp/ -MOC_DIR = ./tmp/ +QT += widgets printsupport uitools +TEMPLATE = lib +CONFIG += dll no_keywords release +DEFINES += EQL_LIBRARY +INCLUDEPATH += /usr/local/include +LIBS += -lecl -L. -lini_eql5 +TARGET = eql5 +DESTDIR = ../ +OBJECTS_DIR = ./tmp/ +MOC_DIR = ./tmp/ + +include.files = eql5/* +include.path = /usr/local/include/eql5 +target.path = /usr/local/lib +INSTALLS = include target win32 { include(windows.pri) @@ -18,15 +23,15 @@ HEADERS += gen/_lobjects.h \ gen/_main_n_classes.h \ gen/_main_q_methods.h \ gen/_main_n_methods.h \ - eql_fun.h \ + eql5/eql.h \ + eql5/eql_fun.h \ + eql5/eql_global.h \ + eql5/dyn_object.h \ qt_eql.h \ - dyn_object.h \ ui_loader.h \ single_shot.h \ - eql_global.h \ ecl_fun.h \ - extras.h \ - eql.h + extras.h SOURCES += gen/_lobjects.cpp \ qt_eql.cpp \ diff --git a/src/gen/_lobjects.cpp b/src/gen/_lobjects.cpp index b4e9ca5..5d3ed07 100644 --- a/src/gen/_lobjects.cpp +++ b/src/gen/_lobjects.cpp @@ -5,8 +5,8 @@ #include "_main_n_classes.h" #include "_main_q_methods.h" #include "_main_n_methods.h" -#include "../dyn_object.h" -#include "../eql.h" +#include "../eql5/dyn_object.h" +#include "../eql5/eql.h" int LObjects::T_QAudioDeviceInfo = -1; int LObjects::T_QList_QAudioDeviceInfo = -1; diff --git a/src/gen/_lobjects.h b/src/gen/_lobjects.h index f6c451f..06c88ba 100644 --- a/src/gen/_lobjects.h +++ b/src/gen/_lobjects.h @@ -4,7 +4,7 @@ #undef SLOT #include -#include "../eql_global.h" +#include "../eql5/eql_global.h" #include "../ecl_fun.h" #include #include diff --git a/src/gen/_main_n_methods.h b/src/gen/_main_n_methods.h index e662d93..adaede6 100644 --- a/src/gen/_main_n_methods.h +++ b/src/gen/_main_n_methods.h @@ -7,7 +7,7 @@ #include #include #include "../extras.h" -#include "../eql_global.h" +#include "../eql5/eql_global.h" QT_BEGIN_NAMESPACE diff --git a/src/gen/_main_q_methods.h b/src/gen/_main_q_methods.h index 26107e9..868273e 100644 --- a/src/gen/_main_q_methods.h +++ b/src/gen/_main_q_methods.h @@ -7,7 +7,7 @@ #include #include #include "../extras.h" -#include "../eql_global.h" +#include "../eql5/eql_global.h" QT_BEGIN_NAMESPACE diff --git a/src/gen/help/_ini2.h b/src/gen/help/_ini2.h index 07203f5..dea1d52 100644 --- a/src/gen/help/_ini2.h +++ b/src/gen/help/_ini2.h @@ -3,7 +3,7 @@ #include "_ini.h" #include "../_lobjects.h" -#include "../../eql.h" +#include #include QT_BEGIN_NAMESPACE diff --git a/src/gen/multimedia/_ini2.h b/src/gen/multimedia/_ini2.h index 71ae2a2..178d7b8 100644 --- a/src/gen/multimedia/_ini2.h +++ b/src/gen/multimedia/_ini2.h @@ -3,7 +3,7 @@ #include "_ini.h" #include "../_lobjects.h" -#include "../../eql.h" +#include #include QT_BEGIN_NAMESPACE diff --git a/src/gen/network/_ini2.h b/src/gen/network/_ini2.h index 4d97402..660e552 100644 --- a/src/gen/network/_ini2.h +++ b/src/gen/network/_ini2.h @@ -3,7 +3,7 @@ #include "_ini.h" #include "../_lobjects.h" -#include "../../eql.h" +#include #include QT_BEGIN_NAMESPACE diff --git a/src/gen/quick/_ini2.h b/src/gen/quick/_ini2.h index 7500634..29ad928 100644 --- a/src/gen/quick/_ini2.h +++ b/src/gen/quick/_ini2.h @@ -2,8 +2,9 @@ #define INI2_H #include "_ini.h" +#include "qml_lisp.h" #include "../_lobjects.h" -#include "../../eql.h" +#include #include QT_BEGIN_NAMESPACE @@ -25,7 +26,8 @@ void ini2() { META_TYPE_(LObjects::T_QQmlProperty, QQmlProperty) META_TYPE_(LObjects::T_QQmlScriptString, QQmlScriptString) META_TYPE_(LObjects::T_QList_QQmlError, QList) - META_TYPE_(LObjects::T_QList_QQuickItem, QList) } + META_TYPE_(LObjects::T_QList_QQuickItem, QList) + iniQml(); } void* toMetaArg(int n, cl_object l_arg, bool* found) { void* p = 0; diff --git a/examples/M-modules/quick/Tic-Tac-Toe/lib/qml_lisp.cpp b/src/gen/quick/qml_lisp.cpp similarity index 99% rename from examples/M-modules/quick/Tic-Tac-Toe/lib/qml_lisp.cpp rename to src/gen/quick/qml_lisp.cpp index aeb8702..68a2e37 100644 --- a/examples/M-modules/quick/Tic-Tac-Toe/lib/qml_lisp.cpp +++ b/src/gen/quick/qml_lisp.cpp @@ -6,7 +6,7 @@ static Lisp* lisp = 0; static QObject* lisp_provider(QQmlEngine*, QJSEngine*) { return lisp; } -QObject* ini() { +QObject* iniQml() { if(!lisp) { lisp = new Lisp; qmlRegisterSingletonType("EQL5", 1, 0, "Lisp", lisp_provider); diff --git a/examples/M-modules/quick/item-model/lib/qml_lisp.h b/src/gen/quick/qml_lisp.h similarity index 85% rename from examples/M-modules/quick/item-model/lib/qml_lisp.h rename to src/gen/quick/qml_lisp.h index c8531b6..14b8c0e 100644 --- a/examples/M-modules/quick/item-model/lib/qml_lisp.h +++ b/src/gen/quick/qml_lisp.h @@ -1,19 +1,18 @@ -#ifndef LIB_H -#define LIB_H +#ifndef QML_LISP_H +#define QML_LISP_H +#include "../../ecl_fun.h" +#include "../../qt_eql.h" #include #include -#include - -#ifdef Q_CC_MSVC -#define LIB_EXPORT __declspec(dllexport) -#else -#define LIB_EXPORT -#endif QT_BEGIN_NAMESPACE -extern "C" { LIB_EXPORT QObject* ini(); } +#define Q_PTR(type, var) (eql_check_type(var.value().id, #type) \ + ? (type)var.value().pointer \ + : 0) + +QObject* iniQml(); class Lisp : public QObject { Q_OBJECT diff --git a/src/gen/sql/_ini2.h b/src/gen/sql/_ini2.h index 9bf9a82..e1f55f5 100644 --- a/src/gen/sql/_ini2.h +++ b/src/gen/sql/_ini2.h @@ -3,7 +3,7 @@ #include "_ini.h" #include "../_lobjects.h" -#include "../../eql.h" +#include #include QT_BEGIN_NAMESPACE diff --git a/src/gen/webengine/_ini2.h b/src/gen/webengine/_ini2.h index 5209997..98728b2 100644 --- a/src/gen/webengine/_ini2.h +++ b/src/gen/webengine/_ini2.h @@ -3,7 +3,7 @@ #include "_ini.h" #include "../_lobjects.h" -#include "../../eql.h" +#include #include QT_BEGIN_NAMESPACE diff --git a/src/gen/webkit/_ini2.h b/src/gen/webkit/_ini2.h index abd203c..8c94465 100644 --- a/src/gen/webkit/_ini2.h +++ b/src/gen/webkit/_ini2.h @@ -3,7 +3,7 @@ #include "_ini.h" #include "../_lobjects.h" -#include "../../eql.h" +#include #include QT_BEGIN_NAMESPACE diff --git a/src/link-wrappers.lisp b/src/link-wrappers.lisp index fa0084b..ec99553 100644 --- a/src/link-wrappers.lisp +++ b/src/link-wrappers.lisp @@ -13,11 +13,8 @@ "special-extensions") *all-wrappers*)) -(c:build-static-library "ini" +(c:build-static-library "ini_eql5" :lisp-files (mapcar (lambda (file) (format nil "lisp/~A.~A" file #+msvc "obj" #-msvc "o")) *lisp-files*) :init-name "ini_EQL") - -#+darwin -(rename-file "libini.a" "libini.dylib") diff --git a/src/link.lisp b/src/link.lisp index 17b05b8..f33e430 100644 --- a/src/link.lisp +++ b/src/link.lisp @@ -9,11 +9,8 @@ "enums1" "enums2" "enums3" "enums4" "enums5" "special-extensions")) -(c:build-static-library "ini" +(c:build-static-library "ini_eql5" :lisp-files (mapcar (lambda (file) (format nil "lisp/~A.~A" file #+msvc "obj" #-msvc "o")) *lisp-files*) :init-name "ini_EQL") - -#+darwin -(rename-file "libini.a" "libini.dylib") diff --git a/src/lisp/ini.lisp b/src/lisp/ini.lisp index 6f4cc55..e9434ea 100644 --- a/src/lisp/ini.lisp +++ b/src/lisp/ini.lisp @@ -158,11 +158,12 @@ (defun %windows-version () (qfun "QSysInfo" "windowsVersion")) -(let (home) +(let ((eql5-home #.(let ((path (namestring *default-pathname-defaults*))) ; hard-code EQL5 directory + (subseq path 0 (- (length path) 4))))) ; cut "src/" (defun set-home (path) - (setf home path)) + (setf eql5-home path)) (defun in-home (&rest files) - (apply 'concatenate 'string home files))) + (apply 'concatenate 'string eql5-home files))) (defun qsignal (name) "args: (name) @@ -319,7 +320,7 @@ (find-symbol "*SLIME-REPL-EVAL-HOOKS*" :swank)) (load (or *slime-hook-file* (in-home "slime/repl-hook"))) ; Slime mode "REPL hook" (qsingle-shot 500 'load-slime-auxiliary-file)) ; we need to wait for Emacs "slime-connect" - (load (x:check-recompile (in-home "slime/thread-safe"))))) ; Slime mode "thread safe" (default) + (load (x:check-recompile (in-home "lib/thread-safe"))))) ; Slime mode "thread safe" (default) #+threads (defun %read-thread () @@ -361,7 +362,7 @@ ;; command line option "-qtpl" only, see "restart-dialog.lisp" (unless loaded (setf loaded t) - (load (in-home "src/lisp/restart-dialog"))) + (load (in-home "lib/restart-dialog"))) (funcall (find-symbol "EXEC-WITH-SIMPLE-RESTART" :restart-dialog))))) (defmacro qeval (&rest forms) @@ -439,7 +440,7 @@ (qfun gui "raise")))) (unless found (in-package :eql-user) - (load (in-home "gui/gui")))) + (load (in-home "lib/gui")))) (when ev (loop (qprocess-events) @@ -606,7 +607,7 @@ (qsel (lambda (widget) (qmsg widget)))" (unless loaded (setf loaded t) - (load (in-home "src/lisp/qselect"))) + (load (in-home "lib/qselect"))) (%qselect on-selected))) (let (loaded) @@ -615,7 +616,7 @@ Takes C++ code from a file generated by the uic user interface compiler, and generates the corresponding EQL code.
See also command line option -quic." (unless loaded (setf loaded t) - (load (in-home "src/lisp/quic"))) + (load (in-home "lib/quic"))) (funcall (intern "RUN" :quic) ui.h ui.lisp ui-package properties))) (defun qrequire (module &optional quiet) diff --git a/src/main.cpp b/src/main.cpp index 6d9d6e2..0351387 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3,7 +3,7 @@ #include #include #include -#include "eql.h" +#include int catch_all_qexec() { int ret = 0; diff --git a/src/make-eql-lib-wrappers.lisp b/src/make-eql-lib-wrappers.lisp index 6d64c32..61a3e2b 100644 --- a/src/make-eql-lib-wrappers.lisp +++ b/src/make-eql-lib-wrappers.lisp @@ -19,14 +19,10 @@ (dolist (file *all-wrappers*) (compile-file (format nil "lisp/~A.lisp" file) :system-p t)) -(c:build-static-library "ini" +(c:build-static-library "ini_eql5" :lisp-files (mapcar (lambda (file) (format nil "lisp/~A.~A" file #+msvc "obj" #-msvc "o")) *lisp-files*) :init-name "ini_EQL") -#+darwin -(rename-file "libini.a" "libini.dylib") - (eql:qq) - diff --git a/src/make-eql-lib.lisp b/src/make-eql-lib.lisp index 9bf2b99..2c0b786 100644 --- a/src/make-eql-lib.lisp +++ b/src/make-eql-lib.lisp @@ -18,11 +18,8 @@ (delete-file (format nil "~A.~A" file #+msvc "obj" #-msvc "o"))) (compile-file file :system-p t))) -(c:build-static-library "ini" +(c:build-static-library "ini_eql5" :lisp-files (mapcar (lambda (file) (format nil "lisp/~A.~A" file #+msvc "obj" #-msvc "o")) *lisp-files*) :init-name "ini_EQL") - -#+darwin -(rename-file "libini.a" "libini.dylib") diff --git a/src/module_help.pro b/src/module_help.pro index 2b8aa22..979d26b 100644 --- a/src/module_help.pro +++ b/src/module_help.pro @@ -8,6 +8,9 @@ DESTDIR = ../ OBJECTS_DIR = ./tmp/help/ MOC_DIR = ./tmp/help/ +target.path = /usr/local/lib +INSTALLS = target + win32 { include(windows.pri) } diff --git a/src/module_multimedia.pro b/src/module_multimedia.pro index f4d10ee..9a0a636 100644 --- a/src/module_multimedia.pro +++ b/src/module_multimedia.pro @@ -8,6 +8,9 @@ DESTDIR = ../ OBJECTS_DIR = ./tmp/multimedia/ MOC_DIR = ./tmp/multimedia/ +target.path = /usr/local/lib +INSTALLS = target + win32 { include(windows.pri) } diff --git a/src/module_network.pro b/src/module_network.pro index 038bf90..73d8637 100644 --- a/src/module_network.pro +++ b/src/module_network.pro @@ -8,6 +8,9 @@ DESTDIR = ../ OBJECTS_DIR = ./tmp/network/ MOC_DIR = ./tmp/network/ +target.path = /usr/local/lib +INSTALLS = target + win32 { include(windows.pri) } diff --git a/src/module_quick.pro b/src/module_quick.pro index 195a143..db63ff9 100644 --- a/src/module_quick.pro +++ b/src/module_quick.pro @@ -8,6 +8,9 @@ DESTDIR = ../ OBJECTS_DIR = ./tmp/quick/ MOC_DIR = ./tmp/quick/ +target.path = /usr/local/lib +INSTALLS = target + win32 { include(windows.pri) } @@ -17,6 +20,8 @@ HEADERS += gen/quick/_ini.h \ gen/quick/_q_classes.h \ gen/quick/_n_classes.h \ gen/quick/_q_methods.h \ - gen/quick/_n_methods.h + gen/quick/_n_methods.h \ + gen/quick/qml_lisp.h -SOURCES += gen/quick/_ini.cpp +SOURCES += gen/quick/_ini.cpp \ + gen/quick/qml_lisp.cpp diff --git a/src/module_sql.pro b/src/module_sql.pro index 11e449e..8fce33f 100644 --- a/src/module_sql.pro +++ b/src/module_sql.pro @@ -8,6 +8,9 @@ DESTDIR = ../ OBJECTS_DIR = ./tmp/sql/ MOC_DIR = ./tmp/sql/ +target.path = /usr/local/lib +INSTALLS = target + win32 { include(windows.pri) } diff --git a/src/module_svg.pro b/src/module_svg.pro index cbbab5f..82ed2ad 100644 --- a/src/module_svg.pro +++ b/src/module_svg.pro @@ -8,6 +8,9 @@ DESTDIR = ../ OBJECTS_DIR = ./tmp/svg/ MOC_DIR = ./tmp/svg/ +target.path = /usr/local/lib +INSTALLS = target + win32 { include(windows.pri) } diff --git a/src/module_webengine.pro b/src/module_webengine.pro index 073398c..9396043 100644 --- a/src/module_webengine.pro +++ b/src/module_webengine.pro @@ -8,6 +8,9 @@ DESTDIR = ../ OBJECTS_DIR = ./tmp/webengine/ MOC_DIR = ./tmp/webengine/ +target.path = /usr/local/lib +INSTALLS = target + macx:QT += network win32 { diff --git a/src/module_webkit.pro b/src/module_webkit.pro index b9fadf8..c19dd3f 100644 --- a/src/module_webkit.pro +++ b/src/module_webkit.pro @@ -8,6 +8,9 @@ DESTDIR = ../ OBJECTS_DIR = ./tmp/webkit/ MOC_DIR = ./tmp/webkit/ +target.path = /usr/local/lib +INSTALLS = target + macx:QT += network win32 { diff --git a/src/qt_eql.cpp b/src/qt_eql.cpp index f5a849d..56fa926 100644 --- a/src/qt_eql.cpp +++ b/src/qt_eql.cpp @@ -7,7 +7,7 @@ #include #include "qt_eql.h" #include "ecl_fun.h" -#include "eql.h" +#include "eql5/eql.h" #include "gen/_lobjects.h" QT_BEGIN_NAMESPACE diff --git a/src/qt_eql.h b/src/qt_eql.h index c0a7cbe..478bcdc 100644 --- a/src/qt_eql.h +++ b/src/qt_eql.h @@ -6,7 +6,7 @@ #include #include -#include "eql_global.h" +#include "eql5/eql_global.h" QT_BEGIN_NAMESPACE diff --git a/src/rebuild b/src/rebuild index 64ec0d0..8e32212 100755 --- a/src/rebuild +++ b/src/rebuild @@ -2,32 +2,41 @@ rm -fr tmp rm *.a rm lisp/*.o -cd lisp -ecl -compile ecl-readline.lisp -cd .. - ecl -shell make-eql-lib.lisp && qmake eql_lib.pro && make && +sudo make install && qmake eql_exe.pro && make && +sudo make install && eql5 make-eql-lib-wrappers.lisp && touch tmp/eql.o && qmake eql_lib.pro && make && +sudo make install && qmake module_help.pro && make && +sudo make install && qmake module_multimedia.pro && make && +sudo make install && qmake module_network.pro && make && +sudo make install && qmake module_quick.pro && make && +sudo make install && qmake module_sql.pro && make && +sudo make install && qmake module_svg.pro && make && -qmake module_webkit.pro && -make +sudo make install && +# qmake module_webkit.pro && +# make +# sudo make install && +qmake module_webengine.pro && +make && +sudo make install echo OK