Thu Jun 4 00:31:34 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* ASDF & dispatch callback restarts
hunk ./introduction.xml 58
-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>
hunk ./introduction.xml 61
+<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>
hunk ./introduction.xml 103
+ For loading the systems you can use Mudballs or ASDF. But first get the sources:
+</para>
+<para>
hunk ./introduction.xml 113
+ </para>
+ <section><title>Mudballs</title>
+ <para>
hunk ./introduction.xml 128
+ </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 ./ && make && 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>
hunk ./qt.xml 45
+<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>
hunk ./smoke.xml 119
+<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>