ASDF & dispatch callback restarts
Thu Jun 4 00:31:34 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* ASDF & dispatch callback restarts
diff -rN -u old-doc/introduction.xml new-doc/introduction.xml
--- old-doc/introduction.xml 2014-10-30 06:55:15.000000000 +0100
+++ new-doc/introduction.xml 2014-10-30 06:55:15.000000000 +0100
@@ -55,9 +55,19 @@
<listitem><para>a C++ compiler (GCC)</para></listitem>
</itemizedlist>
<para>
-On the Lisp side you need <ulink url="http://mudballs.com">mudballs</ulink>
+On the Lisp side you need <ulink url="http://mudballs.com">Mudballs</ulink>
and <ulink url="http://tobias.rautenkranz.ch/lisp/sysdef.cmake">sysdef.cmake</ulink>.
</para>
+<para>
+If you prefer to use <ulink url="http://common-lisp.net/project/asdf/">ASDF</ulink> instead of Mudballs, you need these systems:
+<itemizedlist>
+<listitem><para><ulink url="http://common-lisp.net/project/alexandria/">alexandria</ulink></para></listitem>
+<listitem><para><ulink url="http://common-lisp.net/project/bordeaux-threads/">bordeaux-threads</ulink></para></listitem>
+<listitem><para><ulink url="http://common-lisp.net/project/cffi/">cffi</ulink></para></listitem>
+<listitem><para><ulink url="http://common-lisp.net/project/closer/closer-mop.html">closer-mop</ulink></para></listitem>
+<listitem><para><ulink url="http://www.cliki.net/trivial-garbage">trivial-garbage</ulink></para></listitem>
+</itemizedlist>
+</para>
</section>
<section><title>Supported Platforms</title>
@@ -90,6 +100,9 @@
</section>
<section><title>Installation</title>
<para>
+ For loading the systems you can use Mudballs or ASDF. But first get the sources:
+</para>
+<para>
You need to checkout the darcs repositories:
<programlisting>
cd <userinput>SOME_DIR</userinput>
@@ -97,6 +110,9 @@
darcs get "http://tobias.rautenkranz.ch/lisp/cl-smoke/$r"
done
</programlisting>
+ </para>
+ <section><title>Mudballs</title>
+ <para>
Then add the directory <userinput>SOME_DIR</userinput> to the mudballs search paths by adding
<programlisting>
(push (wildcard-searcher "<userinput>SOME_DIR</userinput>/*/*.mbd")
@@ -109,6 +125,30 @@
Loading the packages with <code>mb:load</code> compiles the C wrapper libraries as needed.
</para>
</note>
+ </section>
+
+ <section><title>ASDF</title>
+ <para>
+ The <code>.asd</code> files are
+ <ulink url="http://tobias.rautenkranz.ch/darcsweb/darcsweb.cgi?r=mudballs-to-asdf;a=summary">generated</ulink>
+ from the mudballs files.
+ <ulink url="http://tobias.rautenkranz.ch/lisp/cl-smoke/cl-smoke-asd.tar.bz2">Get the <code>.asd</code> files</ulink> and
+ place them in the corresponding source directories. Then symlink the <code>.asd</code> files in a ASDF search path.
+ You can for examples run: <code>ln -s <userinput>SOME_DIR/*/*.asd</userinput> <userinput>ASDF_PATH</userinput></code>
+ </para>
+ <para>
+ Now build and install the <package>:smoke</package> and <package>:qt</package> C wrapper libraries with:
+ <informalexample>
+ <programlisting>
+ cmake ./ &amp;&amp; make &amp;&amp; sudo make install
+ </programlisting>
+ </informalexample>
+ in the <filename>smoke/</filename> and <filename>qt/</filename> directories.
+ </para>
+ <note><para>
+ Some examples get the paths for files to load from their Mudballs system (ui and i18n) and thus will not work.
+ </para></note>
+ </section>
</section>
</section>
</chapter>
diff -rN -u old-doc/qt.xml new-doc/qt.xml
--- old-doc/qt.xml 2014-10-30 06:55:15.000000000 +0100
+++ new-doc/qt.xml 2014-10-30 06:55:15.000000000 +0100
@@ -42,6 +42,11 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../qt.examples/src/hello-world.lisp" parse="text" />
</programlisting>
</example>
+<para>
+Subclasses of <classname>qt:paint-device</classname> (e.g. <classname>qt:widget</classname>) can only be used when
+a <classname>qt:application</classname> instance exists. When there are, for example, <classname>qt:widget</classname> instances
+at the end of <macro>qt:with-app</macro>, they are deleted by the <classname>qt:application</classname> destructor.
+</para>
</section>
<section><title>Signal-Slot</title>
diff -rN -u old-doc/smoke.xml new-doc/smoke.xml
--- old-doc/smoke.xml 2014-10-30 06:55:15.000000000 +0100
+++ new-doc/smoke.xml 2014-10-30 06:55:15.000000000 +0100
@@ -116,6 +116,18 @@
Make sure you have the right number of arguments when adding a method; otherwise it will
not be called.
</para></note>
+<section><title>Condition</title>
+<para>
+Unwinding of the C++ stack is not supported. This means that you must not invoke a restart that skips any foreign function.
+You will most likely encounter this problem when an error is signaled in a virtual method you have overwritten
+<footnote>
+<para>
+For example an event handler that is called from the C++ library.
+</para>
+</footnote>. For this case restarts are provide that allow to return a value for the failed method,
+call the default C++ implementation instead (something like <code>#'call-next-method</code>) or retry.
+</para>
+</section>
</section>
<section><title>Operators</title>
<para>