From 796aacdbc39895ce4bca8a5a0166cec4a12ca321 Mon Sep 17 00:00:00 2001 From: polos Date: Mon, 20 Feb 2017 10:27:49 +0100 Subject: [PATCH] add QML example "palindrome-2" (dynamic version) --- .../M-modules/quick/palindrome-2/README.txt | 27 + .../quick/palindrome-2/definitions.lisp | 77 +++ .../quick/palindrome-2/generate-qml.lisp | 60 ++ .../M-modules/quick/palindrome-2/lib/Makefile | 379 ++++++++++++ .../quick/palindrome-2/lib/libqml_lisp.so | Bin 0 -> 95312 bytes .../quick/palindrome-2/lib/qml_lisp.cpp | 108 ++++ .../quick/palindrome-2/lib/qml_lisp.h | 60 ++ .../quick/palindrome-2/lib/qml_lisp.pro | 15 + .../palindrome-2/lib/tmp/moc_qml_lisp.cpp | 568 ++++++++++++++++++ .../quick/palindrome-2/lib/tmp/moc_qml_lisp.o | Bin 0 -> 66168 bytes .../quick/palindrome-2/lib/tmp/qml_lisp.o | Bin 0 -> 81496 bytes .../quick/palindrome-2/palindrome.lisp | 36 ++ .../quick/palindrome-2/properties.lisp | 14 + .../quick/palindrome-2/qml-lisp.lisp | 148 +++++ .../palindrome-2/qml/ext/PalindromeImage.qml | 7 + .../quick/palindrome-2/qml/img/A.png | Bin 0 -> 576 bytes .../quick/palindrome-2/qml/img/E.png | Bin 0 -> 271 bytes .../quick/palindrome-2/qml/img/N.png | Bin 0 -> 400 bytes .../quick/palindrome-2/qml/img/O.png | Bin 0 -> 717 bytes .../quick/palindrome-2/qml/img/P.png | Bin 0 -> 464 bytes .../quick/palindrome-2/qml/img/R.png | Bin 0 -> 551 bytes .../quick/palindrome-2/qml/img/S.png | Bin 0 -> 633 bytes .../quick/palindrome-2/qml/img/T.png | Bin 0 -> 233 bytes .../quick/palindrome-2/qml/palindrome.qml | 109 ++++ .../M-modules/quick/palindrome-2/utils.lisp | 32 + 25 files changed, 1640 insertions(+) create mode 100644 examples/M-modules/quick/palindrome-2/README.txt create mode 100644 examples/M-modules/quick/palindrome-2/definitions.lisp create mode 100644 examples/M-modules/quick/palindrome-2/generate-qml.lisp create mode 100644 examples/M-modules/quick/palindrome-2/lib/Makefile create mode 100755 examples/M-modules/quick/palindrome-2/lib/libqml_lisp.so create mode 100644 examples/M-modules/quick/palindrome-2/lib/qml_lisp.cpp create mode 100644 examples/M-modules/quick/palindrome-2/lib/qml_lisp.h create mode 100644 examples/M-modules/quick/palindrome-2/lib/qml_lisp.pro create mode 100644 examples/M-modules/quick/palindrome-2/lib/tmp/moc_qml_lisp.cpp create mode 100644 examples/M-modules/quick/palindrome-2/lib/tmp/moc_qml_lisp.o create mode 100644 examples/M-modules/quick/palindrome-2/lib/tmp/qml_lisp.o create mode 100644 examples/M-modules/quick/palindrome-2/palindrome.lisp create mode 100644 examples/M-modules/quick/palindrome-2/properties.lisp create mode 100644 examples/M-modules/quick/palindrome-2/qml-lisp.lisp create mode 100644 examples/M-modules/quick/palindrome-2/qml/ext/PalindromeImage.qml create mode 100644 examples/M-modules/quick/palindrome-2/qml/img/A.png create mode 100644 examples/M-modules/quick/palindrome-2/qml/img/E.png create mode 100644 examples/M-modules/quick/palindrome-2/qml/img/N.png create mode 100644 examples/M-modules/quick/palindrome-2/qml/img/O.png create mode 100644 examples/M-modules/quick/palindrome-2/qml/img/P.png create mode 100644 examples/M-modules/quick/palindrome-2/qml/img/R.png create mode 100644 examples/M-modules/quick/palindrome-2/qml/img/S.png create mode 100644 examples/M-modules/quick/palindrome-2/qml/img/T.png create mode 100644 examples/M-modules/quick/palindrome-2/qml/palindrome.qml create mode 100644 examples/M-modules/quick/palindrome-2/utils.lisp diff --git a/examples/M-modules/quick/palindrome-2/README.txt b/examples/M-modules/quick/palindrome-2/README.txt new file mode 100644 index 0000000..258ce9a --- /dev/null +++ b/examples/M-modules/quick/palindrome-2/README.txt @@ -0,0 +1,27 @@ +INFO +==== + +This is a QML port of "examples/X-extras/palindrome/". + +Instead of generating static QML (see "palinfrome-1"), it uses a QTimer from +Lisp to change the item positions, and a 'Behavior' in QML for the animations. + + +RUN +=== + +Run "palindrome.lisp" from this directory. + + +HELP +==== + +For inspecting the single items, run + + (show-properties-dialog) ; see "properties.lisp" + +and use button [Select] to select an item. + +You can use QML-GET and QML-SET on a selected item: + + (qml-set qsel:*q* "opacity" 2/3) diff --git a/examples/M-modules/quick/palindrome-2/definitions.lisp b/examples/M-modules/quick/palindrome-2/definitions.lisp new file mode 100644 index 0000000..21531e0 --- /dev/null +++ b/examples/M-modules/quick/palindrome-2/definitions.lisp @@ -0,0 +1,77 @@ +;;; palindrome definitions + +(defparameter *items* + '(("P" "gs") + ("A" "djpv") + ("T" "ckow") + ("E" "hlnr") + ("R" "aiqy") + ("N" "m") + ("O" "bftx") + ("S" "eu"))) + +(defparameter *state-1* + '("..............." + "..............." + "..............." + "..............." + "..............." + ".....abcde....." + ".....fghij....." + ".....klmno....." + ".....pqrst....." + ".....uvwxy....." + "..............." + "..............." + "..............." + "..............." + "...............")) + +(defparameter *state-2* + '(".......d......." + "..............." + ".......g......." + ".......j......." + ".......c......." + ".......h......." + ".......a......." + "p.svklqmbeoni.t" + ".......f......." + ".......u......." + ".......w......." + ".......r......." + ".......y......." + "..............." + ".......x.......")) + +(let (ex) + (defun rotated (&optional (state ex)) + (let* ((width (length (first state))) + (height (length state)) + (array (make-array (list width height)))) + (loop :for string :in state + :for y :upfrom 0 + :do (loop :for ch :across string + :for x :upfrom 0 + :do (setf (aref array x (- (1- width) y)) ; rotate + ch))) + (setf ex (loop :for y :below height + :collect (coerce (loop :for x :below width + :collect (aref array y x)) + 'string))))) + (defun ex-rotated () + ex)) + +(defparameter *states* + (list *state-1* ; 1 + *state-2* + *state-1* + (rotated *state-1*) ; 2 + *state-2* + (ex-rotated) + (rotated) ; 3 + *state-2* + (ex-rotated) + (rotated) ; 4 + *state-2* + (ex-rotated))) diff --git a/examples/M-modules/quick/palindrome-2/generate-qml.lisp b/examples/M-modules/quick/palindrome-2/generate-qml.lisp new file mode 100644 index 0000000..5e413e2 --- /dev/null +++ b/examples/M-modules/quick/palindrome-2/generate-qml.lisp @@ -0,0 +1,60 @@ +;;; generates a QML animation (see "definitions.lisp") + +(require :utils "utils") + +(defmacro with-qml-file ((file) &body body) + (let ((text (gensym))) + `(let ((,text (with-output-to-string (s) + ,@(mapcar (lambda (x) (if (stringp x) `(write-line ,x s) x)) + body)))) + (with-open-file (s ,file :direction :output :if-exists :supersede) + (format s "// THIS FILE IS GENERATED~%~%") + (write-string (indent ,text) s) + (qlater (lambda () (format t "~%QML file generated, see ~S~%~%" ,file))))))) + +(defmacro qml (first &body body) + (let ((open-close (and (upper-case-p (char first 0)) + (not (find #\{ first))))) + (if body + `(progn + ,(if open-close + `(format s "~%~A {~%" ,first) + (if (find #\{ first) + `(format s "~%~A~%" ,first) + `(write-line ,first s))) + ,@(mapcar (lambda (x) (if (stringp x) `(write-line ,x s) x)) + body) + ,(when open-close `(write-line "}" s))) + (if (find #\{ first) + `(format s "~%~A~%" ,first) + `(write-line ,first s))))) + +(defun indent (text) + (with-output-to-string (out) + (let ((in (make-string-input-stream text)) + (depth 0)) + (x:while-it (read-line in nil nil) + (let ((open (count #\{ x:it)) + (close (count #\} x:it))) + (write-string (make-string (* 4 (- depth (if (= (- open close) -1) 1 0)))) out) + (write-line (string-left-trim " " x:it) out) + (setf depth (+ depth open (- close)))))))) + +;; qml file + +(with-qml-file ("qml/palindrome.qml") + "import QtQuick 2.0" + "import 'ext/'" + (qml "Rectangle" + "width: 527; height: 527" + "color: 'black'" + (let ((num 0)) + (mapc (lambda (char xy) + (incf num) + (qml "PalindromeImage" + (format s "objectName: 'img~A'; source: 'img/~A.png'; x: ~D; y: ~D~%" + num + (image-of-char char) + (* 31 (first xy)) + (* 31 (second xy))))) + *chars* (first *move-to-positions*))))) diff --git a/examples/M-modules/quick/palindrome-2/lib/Makefile b/examples/M-modules/quick/palindrome-2/lib/Makefile new file mode 100644 index 0000000..e08809b --- /dev/null +++ b/examples/M-modules/quick/palindrome-2/lib/Makefile @@ -0,0 +1,379 @@ +############################################################################# +# Makefile for building: libqml_lisp.so +# Generated by qmake (3.0) (Qt 5.5.1) +# Project: qml_lisp.pro +# Template: lib +# Command: /usr/lib/x86_64-linux-gnu/qt5/bin/qmake -o Makefile qml_lisp.pro +############################################################################# + +MAKEFILE = Makefile + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +DEFINES = -DQT_NO_DEBUG -DQT_PLUGIN -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB +CFLAGS = -m64 -pipe -O2 -Wall -W -D_REENTRANT -fPIC $(DEFINES) +CXXFLAGS = -m64 -pipe -O2 -Wall -W -D_REENTRANT -fPIC $(DEFINES) +INCPATH = -I. -I../../../../../src -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtQuick -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtQml -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -Itmp -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 +QMAKE = /usr/lib/x86_64-linux-gnu/qt5/bin/qmake +DEL_FILE = rm -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p +COPY = cp -f +COPY_FILE = cp -f +COPY_DIR = cp -f -R +INSTALL_FILE = install -m 644 -p +INSTALL_PROGRAM = install -m 755 -p +INSTALL_DIR = cp -f -R +DEL_FILE = rm -f +SYMLINK = ln -f -s +DEL_DIR = rmdir +MOVE = mv -f +TAR = tar -cf +COMPRESS = gzip -9f +DISTNAME = qml_lisp1.0.0 +DISTDIR = /home/polos/eql5/examples/M-modules/quick/tmp/lib/tmp/qml_lisp1.0.0 +LINK = g++ +LFLAGS = -m64 -Wl,-O1 -shared +LIBS = $(SUBLIBS) -L/usr/X11R6/lib64 -L../../../../.. -leql5 -lQt5Quick -lQt5Gui -lQt5Qml -lQt5Network -lQt5Core -lGL -lpthread +AR = ar cqs +RANLIB = +SED = sed +STRIP = strip + +####### Output directory + +OBJECTS_DIR = tmp/ + +####### Files + +SOURCES = qml_lisp.cpp tmp/moc_qml_lisp.cpp +OBJECTS = tmp/qml_lisp.o \ + tmp/moc_qml_lisp.o +DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_device_lib_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64/qmake.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \ + /home/polos/eql5/src/windows.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \ + qml_lisp.pro qml_lisp.h qml_lisp.cpp +QMAKE_TARGET = qml_lisp +DESTDIR = #avoid trailing-slash linebreak +TARGET = libqml_lisp.so +TARGETD = libqml_lisp.so + + +first: all +####### Implicit rules + +.SUFFIXES: .o .c .cpp .cc .cxx .C + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.C.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<" + +####### Build rules + +$(TARGET): $(OBJECTS) $(SUBLIBS) $(OBJCOMP) + -$(DEL_FILE) $(TARGET) + $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS) $(OBJCOMP) + + + +Makefile: qml_lisp.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64/qmake.conf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_device_lib_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64/qmake.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \ + /home/polos/eql5/src/windows.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \ + qml_lisp.pro \ + /usr/lib/x86_64-linux-gnu/libQt5Quick.prl \ + /usr/lib/x86_64-linux-gnu/libQt5Gui.prl \ + /usr/lib/x86_64-linux-gnu/libQt5Qml.prl \ + /usr/lib/x86_64-linux-gnu/libQt5Network.prl \ + /usr/lib/x86_64-linux-gnu/libQt5Core.prl + $(QMAKE) -o Makefile qml_lisp.pro +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_device_lib_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64/qmake.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf: +/home/polos/eql5/src/windows.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf: +qml_lisp.pro: +/usr/lib/x86_64-linux-gnu/libQt5Quick.prl: +/usr/lib/x86_64-linux-gnu/libQt5Gui.prl: +/usr/lib/x86_64-linux-gnu/libQt5Qml.prl: +/usr/lib/x86_64-linux-gnu/libQt5Network.prl: +/usr/lib/x86_64-linux-gnu/libQt5Core.prl: +qmake: FORCE + @$(QMAKE) -o Makefile qml_lisp.pro + +qmake_all: FORCE + + +all: Makefile $(TARGET) + +dist: distdir FORCE + (cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR) + +distdir: FORCE + @test -d $(DISTDIR) || mkdir -p $(DISTDIR) + $(COPY_FILE) --parents $(DIST) $(DISTDIR)/ + $(COPY_FILE) --parents qml_lisp.h $(DISTDIR)/ + $(COPY_FILE) --parents qml_lisp.cpp $(DISTDIR)/ + + +clean: compiler_clean + -$(DEL_FILE) $(OBJECTS) + -$(DEL_FILE) *~ core *.core + + +distclean: clean + -$(DEL_FILE) $(TARGET) + -$(DEL_FILE) Makefile + + +####### Sub-libraries + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +check: first + +compiler_rcc_make_all: +compiler_rcc_clean: +compiler_moc_header_make_all: tmp/moc_qml_lisp.cpp +compiler_moc_header_clean: + -$(DEL_FILE) tmp/moc_qml_lisp.cpp +tmp/moc_qml_lisp.cpp: qml_lisp.h + /usr/lib/x86_64-linux-gnu/qt5/bin/moc $(DEFINES) -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I/home/polos/eql5/examples/M-modules/quick/tmp/lib -I/home/polos/eql5/src -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/5 -I/usr/include/x86_64-linux-gnu/c++/5 -I/usr/include/c++/5/backward -I/usr/lib/gcc/x86_64-linux-gnu/5/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qml_lisp.h -o tmp/moc_qml_lisp.cpp + +compiler_moc_source_make_all: +compiler_moc_source_clean: +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: compiler_moc_header_clean + +####### Compile + +tmp/qml_lisp.o: qml_lisp.cpp qml_lisp.h \ + ../../../../../src/eql_fun.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o tmp/qml_lisp.o qml_lisp.cpp + +tmp/moc_qml_lisp.o: tmp/moc_qml_lisp.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o tmp/moc_qml_lisp.o tmp/moc_qml_lisp.cpp + +####### Install + +install: FORCE + +uninstall: FORCE + +FORCE: + diff --git a/examples/M-modules/quick/palindrome-2/lib/libqml_lisp.so b/examples/M-modules/quick/palindrome-2/lib/libqml_lisp.so new file mode 100755 index 0000000000000000000000000000000000000000..ad22f30c3589abcccf8eecc63be42af65403ebf2 GIT binary patch literal 95312 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"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 new file mode 100644 index 0000000..64f3c5f --- /dev/null +++ b/examples/M-modules/quick/palindrome-2/lib/qml_lisp.h @@ -0,0 +1,60 @@ +#ifndef LIB_H +#define LIB_H + +#include +#include +#include + +#ifdef Q_OS_WIN +#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 new file mode 100644 index 0000000..76b0999 --- /dev/null +++ b/examples/M-modules/quick/palindrome-2/lib/qml_lisp.pro @@ -0,0 +1,15 @@ +QT += qml quick +TEMPLATE = lib +CONFIG += plugin release +INCLUDEPATH += ../../../../../src +LIBS += -L../../../../.. -leql5 +DESTDIR = ./ +TARGET = qml_lisp +OBJECTS_DIR = ./tmp/ +MOC_DIR = ./tmp/ + +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 new file mode 100644 index 0000000..d15c622 --- /dev/null +++ b/examples/M-modules/quick/palindrome-2/lib/tmp/moc_qml_lisp.cpp @@ -0,0 +1,568 @@ +/**************************************************************************** +** 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 new file mode 100644 index 0000000000000000000000000000000000000000..22d2873d5fece22ee07649218d2d854081dc463b GIT binary patch literal 66168 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 N8B{;WOb|v7KLFeuC") ; mark for passing to JS "eval()" + (print-js-readably object))) + +(defun qml-apply (caller function arguments) + "Every 'Lisp.call()' or 'Lisp.apply()' function call in QML will call this function. The variable *CALLER* will be bound to the calling QQuickItem, if passed with 'this' as first argument to 'Lisp.call()' / 'Lisp.apply()'." + (let* ((*caller* (if (qnull caller) *caller* (qt-object-? caller))) + (object (apply (string-to-symbol function) + arguments))) + (if (stringp object) + object + (print-to-js-string object)))) + +;;; utils + +(defun root-item () + (when *quick-view* + (qt-object-? (|rootObject| *quick-view*)))) + +(defun root-context () + (when *quick-view* + (|rootContext| *quick-view*))) + +(defun find-quick-item (object-name) + "Finds the first QQuickItem matching OBJECT-NAME." + (if (string= (|objectName| (root-item)) object-name) + (root-item) + (qt-object-? (qfind-child (root-item) object-name)))) + +(defun quick-item (item/name) + (cond ((stringp item/name) + (find-quick-item item/name)) + ((qt-object-p item/name) + item/name) + ((not item/name) + (root-item)))) + +(defun children (item/name) + "Like QML function 'children'." + (mapcar 'qt-object-? (|childItems| (quick-item item/name)))) + +(defun reload () + "Force reloading of QML file after changes made to it." + (|clearComponentCache| (|engine| *quick-view*)) + (|setSource| *quick-view* (|source| *quick-view*))) + +;;; get/set QQmlProperty + +(defun qml-get (item/name property-name) + "Gets QQmlProperty of either ITEM or first object matching NAME." + (qlet ((property "QQmlProperty(QObject*,QString)" + (quick-item item/name) + property-name)) + (if (|isValid| property) + (qlet ((variant (|read| property))) + (values (qvariant-value variant) + t)) + (eql::%error-msg "QML-GET" (list item/name property-name))))) + +(defun qml-set (item/name property-name value &optional update) + "Sets QQmlProperty of either ITEM, or first object matching NAME. Returns T on success. If UPDATE is not NIL and ITEM is a QQuickPaintedItem, |update| will be called on it." + (let ((item (quick-item item/name))) + (qlet ((property "QQmlProperty(QObject*,QString)" item property-name)) + (if (|isValid| property) + (qlet ((variant (qvariant-from-value value (|propertyTypeName| property)))) + (prog1 + (|write| property variant) + (when (and update (= (qt-object-id item) #.(qid "QQuickPaintedItem"))) + (|update| item)))) + (eql::%error-msg "QML-SET" (list item/name property-name value)))))) + +;;; JS + +(defun js (item/name js-format-string &rest arguments) + "Evaluates a JS string, with 'this' bound to either ITEM, or first object matching NAME. Arguments are passed through FORMAT." + (qlet ((qml-exp "QQmlExpression(QQmlContext*,QObject*,QString)" + (root-context) + (quick-item item/name) + (apply 'format nil js-format-string arguments)) + (variant (|evaluate| qml-exp))) + (qvariant-value variant))) + diff --git a/examples/M-modules/quick/palindrome-2/qml/ext/PalindromeImage.qml b/examples/M-modules/quick/palindrome-2/qml/ext/PalindromeImage.qml new file mode 100644 index 0000000..1e6d103 --- /dev/null +++ b/examples/M-modules/quick/palindrome-2/qml/ext/PalindromeImage.qml @@ -0,0 +1,7 @@ +import QtQuick 2.0 + +Image { + Behavior on x { NumberAnimation { duration: 3000; easing.type: Easing.InOutSine } } + Behavior on y { NumberAnimation { duration: 3000; easing.type: Easing.InOutSine } } +} + diff --git a/examples/M-modules/quick/palindrome-2/qml/img/A.png b/examples/M-modules/quick/palindrome-2/qml/img/A.png new file mode 100644 index 0000000000000000000000000000000000000000..8d80e7eae53891121fba9b9e5b1d78af55d44478 GIT binary patch literal 576 zcmeAS@N?(olHy`uVBq!ia0y~yV2}f04mJh`25W$49O7ju>T&HMG} zql%w@{Y>t2Pq`wZx}=ll6rVZ2el|BB+x~~Ye(5tf2v}+C+w({CX3jmE4~Lw3a`xZn z-hG#CL5wcvfPNwn~uO`CYny0bC*;TFE0o*gIpj|!Qv z`ZKvJY2D;I9=#*x9DDKcV{9k%#JoG)%ICBBE&rd8{=DVS#f$%DwcdHh*euVtnm=XQ i)qi_)o8#yIV=nMH{-fq-+ZzT31_n=8KbLh*2~7aR4hM_? literal 0 HcmV?d00001 diff --git a/examples/M-modules/quick/palindrome-2/qml/img/E.png b/examples/M-modules/quick/palindrome-2/qml/img/E.png new file mode 100644 index 0000000000000000000000000000000000000000..97d27ae97437b8ddc4fbace67a51a072955bc1aa GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0y~yV2}f04mJh`25WA_*&Cmm4;*3?oUg?wsVARil-S{Lgss?m>#8ee zj+u2=+SCmt_xo>3{Pz~2z_OddKi07LB``E>6>||OowY2Ie@`nP^K zyVf-ay~0=*AKace$ZGgE*m>h;a) z=P^RvRd>GI-rDw;YmS%f(n6WUo}UuW=PcIf^6U>i{&HQSgj)Qz;=bTt_tZZ8f64ap YsImE0vA?$%7#J8lUHx3vIVCg!0MsCBUH||9 literal 0 HcmV?d00001 diff --git a/examples/M-modules/quick/palindrome-2/qml/img/N.png b/examples/M-modules/quick/palindrome-2/qml/img/N.png new file mode 100644 index 0000000000000000000000000000000000000000..4ca9310fc2e20442099a0e729fdc11e54c85feb6 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0y~yV2}f04mJh`25W!jj&bGPQ@lJkK{g40m(<=`DKPd0YP;qyi zy6DwX!HJxDYAwz)<|YX)e9aO2{MNSpZ>_iJ?9bmH6e%0mb2abs%kR@Af6CtYY||6f zJMs0YR>nAWVZT+OcF&4;8XVaCxZq~i$>vspe>?BJ{9qw-s6~Ma8G2%-s~?}poUcCl&J-_u+4x*fiCM=St#swZoC>mMt#O^UKkez(9n-xE zr=338&bW??)l9_IZqHPYf{Ew#O@-_7oqzm)DjcE~a$92t=L!Y}1_n=8KbLh*2~7Y< CETs?t literal 0 HcmV?d00001 diff --git a/examples/M-modules/quick/palindrome-2/qml/img/O.png b/examples/M-modules/quick/palindrome-2/qml/img/O.png new file mode 100644 index 0000000000000000000000000000000000000000..fe9fe18daa6d49ad91e6132a29e6e92bae597b4d GIT binary patch literal 717 zcmeAS@N?(olHy`uVBq!ia0y~yV2}f04mJh`25Wp^BO%?FYH=+?lvU6o(Ma;lv!a;-yI;FjygpH# z#}}kgzkZ(npLf4^%AfyU`K}>Yi;KbKTA)#TV?U%3V$O@3(&ZD4ihj z$wuU=_sXWtH)C()9QIgV?6UcA(eCw0nJ?u`q`El5?mphP@3>J$?cd6to|xlz?#TN1 z@*aL(d_uuy{(&1eg0G6J_{nhXZM|F>en~A@SZN}=!OU4HwWm)PR@f}on99P?5O+SQ z*tlcYu3~rRt7`M+@tyv1H1CpX`JKdHnnp5?r{$F(PqMfmnlzUG#!9J5Zl zYcDgi-^{q!+IZOr0hbgb>q*Znj5WM04P?p%O=7p*zNOS2D7a_)c78{V{90#bZ<9rt zyb)pQFP#$iTN#{wm6E9|vQMzrOO^5HqjFDeR&PgY5s(>@0t>~7)VK9yqM@%zhAiQcWS6Yz{B*9`B!effBT=&ZtE}3 ZU7i=!)6d@tWnf@n@O1TaS?83{1OV`lMo<6% literal 0 HcmV?d00001 diff --git a/examples/M-modules/quick/palindrome-2/qml/img/P.png b/examples/M-modules/quick/palindrome-2/qml/img/P.png new file mode 100644 index 0000000000000000000000000000000000000000..6c6b4e624be86af090a24fec7c28f71cc416f242 GIT binary patch literal 464 zcmeAS@N?(olHy`uVBq!ia0y~yV2}f04mJh`25Why{o82b4d=#2`N;Kss^W>8p3 z)Dz+I4+s@)KB)fcYjwvX)?<(5864J@wTHcyY&0`~i zY!kWCgVWYniF9SZsoTFgI+=6F<;tr!Y~Ej6Yq(m|0t#W9?5D*U2`v-*A(uEz!Xv#y-$}_II5;xr*O=?>1fc-@l?Y>9xU` Soq7xm3=E#GelF{r5}E*|VahxJ literal 0 HcmV?d00001 diff --git a/examples/M-modules/quick/palindrome-2/qml/img/R.png b/examples/M-modules/quick/palindrome-2/qml/img/R.png new file mode 100644 index 0000000000000000000000000000000000000000..8467236a9b64d022885c3b98ae45aad4003e45d1 GIT binary patch literal 551 zcmeAS@N?(olHy`uVBq!ia0y~yV2}f04mJh`25WcQ+>-P__6G>3SuCJ5Z-rKS5o7S-|~XPZ5>>Z|mRf ze16<=diBl^K0*xI+S|ALbMmsZ1k4kvhY>>Q#Lo_!HN=m16Zj+r^->1!l(b^VS}G|6d_iJ-eW|*!*I~EDx2oRnsCqE?sKSd8GeP>}>)$U} zc{2a!mdK II;Vst0Phq5nE(I) literal 0 HcmV?d00001 diff --git a/examples/M-modules/quick/palindrome-2/qml/img/S.png b/examples/M-modules/quick/palindrome-2/qml/img/S.png new file mode 100644 index 0000000000000000000000000000000000000000..91bbfcba04dae920e51caaeab39867fe2389bbae GIT binary patch literal 633 zcmeAS@N?(olHy`uVBq!ia0y~yV2}f04mJh`25Wa^ZbzNF?1 z_I}QlJp8gsY;HFa4Gw)0xFO=&a#USoS4)r=zq3=*!vk9%UNcgEZDw}nTdf&S%K5kd z_tejm-?Qia|JsN4QyCt7Pd8HMeEUwUWz%GqXJMQ*zYcm?KFcsU^JGc;)Txq(9t!;a zZ6CN=`{HZ;B%|2FNju$3ze;*;R*7G}b?f&Xcg;Q3lHIF#+Po`l=5slz#xHkyWPSMX z_WxY08TtEFQ)LtiS3iG#f5YzGldqmVE4Jnudq`-er%F;zj*fx(^P@T2#Kre){c7oN zJ@@>@mr|Q{Eq!WL_B;8>lZh(nl{>Zk*_(sgZHk-&Chgw%(QBTZY^k9|Mr!5F^9LQH z!~(>2Y`yB`ethnpI0K8L7bftwJD>ltV|GZ^_8$oh(@%Gw{r2I)G`GcxHT&GZe2Yt{ zt#vet__kSsuYJb6I!A>E%3`(&YHC@D7;*5s+X_MwzEf$1RGhptC&aplho;2fAjY5MvXqju4MOLEDL+i zo!fnsdHp&zt|}2ORa@KhE7qHf^541tzwhYL?K-+YIa}=n`rSR23WbDZT*%^;=$-!Z p)vo@y{3$H0m%eXfvFrURt?+wGEw4@P6b1$c22WQ%mvv4FO#rNdAbbD- literal 0 HcmV?d00001 diff --git a/examples/M-modules/quick/palindrome-2/qml/img/T.png b/examples/M-modules/quick/palindrome-2/qml/img/T.png new file mode 100644 index 0000000000000000000000000000000000000000..206fef016c9b36f4bf7f36ecc3b80b3d116f0913 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0y~yV2}f04mJh`25Wr{ZeWT%q8 zzM9+4qf$mj5=lKhJq6ngc{ReFfcH9y85}Sb4q9e0J4HwX8-^I literal 0 HcmV?d00001 diff --git a/examples/M-modules/quick/palindrome-2/qml/palindrome.qml b/examples/M-modules/quick/palindrome-2/qml/palindrome.qml new file mode 100644 index 0000000..120fb71 --- /dev/null +++ b/examples/M-modules/quick/palindrome-2/qml/palindrome.qml @@ -0,0 +1,109 @@ +// THIS FILE IS GENERATED + +import QtQuick 2.0 +import 'ext/' + +Rectangle { + width: 527; height: 527 + color: 'black' + + PalindromeImage { + objectName: 'img1'; source: 'img/R.png'; x: 186; y: 186 + } + + PalindromeImage { + objectName: 'img2'; source: 'img/O.png'; x: 217; y: 186 + } + + PalindromeImage { + objectName: 'img3'; source: 'img/T.png'; x: 248; y: 186 + } + + PalindromeImage { + objectName: 'img4'; source: 'img/A.png'; x: 279; y: 186 + } + + PalindromeImage { + objectName: 'img5'; source: 'img/S.png'; x: 310; y: 186 + } + + PalindromeImage { + objectName: 'img6'; source: 'img/O.png'; x: 186; y: 217 + } + + PalindromeImage { + objectName: 'img7'; source: 'img/P.png'; x: 217; y: 217 + } + + PalindromeImage { + objectName: 'img8'; source: 'img/E.png'; x: 248; y: 217 + } + + PalindromeImage { + objectName: 'img9'; source: 'img/R.png'; x: 279; y: 217 + } + + PalindromeImage { + objectName: 'img10'; source: 'img/A.png'; x: 310; y: 217 + } + + PalindromeImage { + objectName: 'img11'; source: 'img/T.png'; x: 186; y: 248 + } + + PalindromeImage { + objectName: 'img12'; source: 'img/E.png'; x: 217; y: 248 + } + + PalindromeImage { + objectName: 'img13'; source: 'img/N.png'; x: 248; y: 248 + } + + PalindromeImage { + objectName: 'img14'; source: 'img/E.png'; x: 279; y: 248 + } + + PalindromeImage { + objectName: 'img15'; source: 'img/T.png'; x: 310; y: 248 + } + + PalindromeImage { + objectName: 'img16'; source: 'img/A.png'; x: 186; y: 279 + } + + PalindromeImage { + objectName: 'img17'; source: 'img/R.png'; x: 217; y: 279 + } + + PalindromeImage { + objectName: 'img18'; source: 'img/E.png'; x: 248; y: 279 + } + + PalindromeImage { + objectName: 'img19'; source: 'img/P.png'; x: 279; y: 279 + } + + PalindromeImage { + objectName: 'img20'; source: 'img/O.png'; x: 310; y: 279 + } + + PalindromeImage { + objectName: 'img21'; source: 'img/S.png'; x: 186; y: 310 + } + + PalindromeImage { + objectName: 'img22'; source: 'img/A.png'; x: 217; y: 310 + } + + PalindromeImage { + objectName: 'img23'; source: 'img/T.png'; x: 248; y: 310 + } + + PalindromeImage { + objectName: 'img24'; source: 'img/O.png'; x: 279; y: 310 + } + + PalindromeImage { + objectName: 'img25'; source: 'img/R.png'; x: 310; y: 310 + } +} diff --git a/examples/M-modules/quick/palindrome-2/utils.lisp b/examples/M-modules/quick/palindrome-2/utils.lisp new file mode 100644 index 0000000..80275c1 --- /dev/null +++ b/examples/M-modules/quick/palindrome-2/utils.lisp @@ -0,0 +1,32 @@ +;;; utils for palindrome + +(require :definitions "definitions") + +(defun item-count () + (loop :for item :in *items* + :sum (length (second item)))) + +(defvar *chars* (loop :for i :below (item-count) :collect (code-char (+ i #.(char-code #\a))))) + +(defun image-of-char (char) + (dolist (item *items*) + (x:when-it (find char (second item)) + (return-from image-of-char (first item))))) + +(defun compute-move-to-positions () + (flet ((item-pos (char list) + (let ((y 0)) + (dolist (state list) + (incf y) + (x:when-it (position char state) + (return-from item-pos (list (1+ x:it) y))))))) + (let (states) + (dolist (state *states*) + (let (positions) + (dolist (char *chars*) + (push (item-pos char state) + positions)) + (push (nreverse positions) states))) + (nreverse states)))) + +(defvar *move-to-positions* (compute-move-to-positions))