Sat Apr 3 21:12:53 CEST 2010 Tobias Rautenkranz <tobias@rautenkranz.ch>
* KDE is split up in kde.ui and kde.core.
hunk ./introduction.xml 106
+ <note>
+ <para>
+ There are also the following repositories: qt.svg qt.dbus kde.core kde.ui kde.tests kde.examples
+ </para>
+ </note>
hunk ./kde.xml 6
-<caution>
hunk ./kde.xml 7
- The KDE bindings are not yet split up in <package>kde.core</package>
- etc. and thus are currently not functional.
+To use the KDE libraries use the <package>:cl-smoke.kde.ui</package>
+(Depends on <package>:cl-smoke.kde.core</package>).
hunk ./kde.xml 10
-</caution>
hunk ./kde.xml 11
-Besides the <package>:kde</package> package there
+Besides these packages there
hunk ./kde.xml 20
-(mb:load <package>:kde.examples</package>)
+(asdf:oos 'asdf:load-op <package>:cl-smoke.kde.examples</package>)
hunk ./qt.xml 64
+<para>
+Custom <methodname>cxx:paint-event</methodname> methods can use <macro>qt:with-painter</macro>
+to ensure that the <classname>qt:painter</classname> is deactivated at the end of the method.
+</para>
+
Sat Apr 3 21:12:32 CEST 2010 Tobias Rautenkranz <tobias@rautenkranz.ch>
* C++ member variable access
hunk ./smoke.xml 215
+<section id="members"><title>Member variables</title>
+<para>
+C++ member variables of an instance can be accessed by using <code>slot-value</code>; e.g.:
+<informalexample>
+<programlisting language="lisp">(slot-value (make-instance 'qt:object) :static-meta-object)</programlisting>
+</informalexample>
+or
+<informalexample>
+<programlisting language="lisp">(slot-value (find-class 'qt:object) :static-meta-object)</programlisting>
+</informalexample>
+Usually they can also be accessed using methods from the <package>:cxx</package> package.
+</para>
+</section>
+
Sun Jan 10 09:57:54 CET 2010 Tobias Rautenkranz <tobias@rautenkranz.ch>
* modular smoke.
hunk ./introduction.xml 27
- <listitem><para>10 seconds startup time<footnote>
+ <listitem><para>6 seconds startup time<footnote>
hunk ./introduction.xml 33
- Pentium M 1.7GHz. (Compilation ~20 seconds)</para></listitem>
+ Pentium M 1.7GHz. </para></listitem>
hunk ./introduction.xml 52
- bindings from svn; r1061660 or later
+ bindings from svn.
hunk ./introduction.xml 62
- <listitem><para>a make program (preferably Gnu Make)</para></listitem>
hunk ./introduction.xml 102
-for r in smoke qt qt.test qt.tests qt.examples qt.uitools qt.webkit qt.phonon; do
+for r in smoke qt.core qt.gui qt.network qt.test qt.tests qt.examples qt.uitools qt.webkit qt.phonon; do
hunk ./introduction.xml 108
- Build and install the <package>:smoke</package> and <package>:qt</package> C wrapper libraries with:
+ Build and install the <package>:smoke</package> and <package>:qt.core</package> C wrapper libraries with:
hunk ./introduction.xml 116
- should be able to load the systems.
+ should be able to load the systems. The system name has a
+ <code>:cl-smoke.</code> prefix. e.g.:
+ <informalexample>
+ <programlisting language="lisp">(asdf:oos 'asdf:load-op :cl-smoke.qt.examples) </programlisting>
+ </informalexample>
hunk ./kde.xml 6
+<caution>
+<para>
+ The KDE bindings are not yet split up in <package>kde.core</package>
+ etc. and thus are currently not functional.
+</para>
+</caution>
hunk ./qt.xml 7
-Besides the <package>:qt</package> there are these modules: with
+Besides the <package>:cl-smoke.qt.gui</package> there are these modules:
hunk ./qt.xml 10
- <package>:qt.uitools</package>
+ <package>:cl-smoke.qt.uitools</package>
hunk ./qt.xml 13
- <listitem><para><package>:qt.test</package>
+ <listitem><para><package>:cl-smoke.qt.test</package>
hunk ./qt.xml 16
- <listitem><para><package>:qt.webkit</package>
+ <listitem><para><package>:cl-smoke.qt.webkit</package>
hunk ./qt.xml 20
- <listitem><para><package>:qt.phonon</package>
+ <listitem><para><package>:cl-smoke.qt.phonon</package>
hunk ./qt.xml 24
+ <listitem><para><package>:cl-smoke.qt.network</package>
+ The network classes of Qt.
+ </para></listitem>
+ <listitem><para><package>:cl-smoke.qt.core</package>
+ the nogui Qt core.
+ </para></listitem>
hunk ./qt.xml 36
-Additionally there is the <package>:qt.tests</package> system, containing
-the unit tests and <package>:qt.examples</package> for various examples.
+Additionally there is the <package>:cl-smoke.qt.tests</package> system, containing
+the unit tests and <package>:cl-smoke.qt.examples</package> for various examples.
hunk ./qt.xml 165
-in the <filename class="directory">src/</filename> directory of <package>:qt.examples</package> on how to do this.
+in the <filename class="directory">src/</filename> directory of <package>:cl-smoke.qt.examples</package> on how to do this.
hunk ./qt.xml 173
-(mb:load <package>:qt.examples</package>)
+(asdf:oos 'asdf:load-op <package>:cl-smoke.qt.examples</package>)
hunk ./qt.xml 198
-<para>Qt Classes browser using <package>:qt.webkit</package> to display the
+<para>Qt Classes browser using <package>:cl-smoke.qt.webkit</package> to display the
Sun Dec 13 14:22:09 CET 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* remove mudballs
hunk ./chunk.xsl 6
-<xsl:import href="link-apidoc.xsl" />
+<xsl:import href="nonlink-apidoc.xsl" />
hunk ./introduction.xml 52
- bindings from svn; r1015073 or later
+ bindings from svn; r1061660 or later
hunk ./introduction.xml 66
-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:
hunk ./introduction.xml 100
- For loading the systems you can use Mudballs or ASDF. But first get the sources:
-</para>
-<para>
hunk ./introduction.xml 103
-for r in smoke qt qt.test qt.tests qt.examples qt.uitools qt.webkit qt.phonon kde kde.tests kde.examples repl; do
+for r in smoke qt qt.test qt.tests qt.examples qt.uitools qt.webkit qt.phonon; do
hunk ./introduction.xml 108
- <section><title>Mudballs</title>
hunk ./introduction.xml 109
- Then add the directory <userinput>SOME_DIR</userinput> to the mudballs search paths by adding
- <programlisting>
-(push (wildcard-searcher "<userinput>SOME_DIR</userinput>/*/*.mbd")
- *custom-search-modules*)
- </programlisting>
- to <filename>~/.mudballs</filename>.
-</para>
-<note>
-<para>
- 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 example 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:
+ Build and install the <package>:smoke</package> and <package>:qt</package> C wrapper libraries with:
hunk ./introduction.xml 115
- <note><para>
- Some examples get the paths for the files to load from their Mudballs system (ui and i18n) and thus will not work.
- </para></note>
- </section>
+ <para>
+ When you have symlinked the <filename>.asd</filename> system files, you
+ should be able to load the systems.
+ </para>
hunk ./manual.xsl 6
-<xsl:import href="link-apidoc.xsl"/>
+<xsl:import href="nonlink-apidoc.xsl"/>
addfile ./nonlink-apidoc.xsl
hunk ./nonlink-apidoc.xsl 1
+<?xml version='1.0'?> [_$_]
+<!--
+Copyright 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE. [_$_]
+!-->
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> [_$_]
+
+
+<xsl:template match="macro">
+ <xsl:call-template name="ulink">
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="genericfunction">
+ <xsl:call-template name="ulink">
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
hunk ./qt.xml 212
-For OpenGL an binding is needed (e.g.: [_$_]
+For OpenGL a binding is needed (e.g.: [_$_]
hunk ./qt.xml 229
-Because <ulink url="http://common-lisp.net/project/cl-opengl/">cl-opengl</ulink> is need to
-run the example, but is not in mudballs; the origami example is not included in the mudballs system.
-<ulink url="http://axiom-wiki.newsynthesis.org/FrontPage">Axiom</ulink> is needed for building.
+<ulink url="http://axiom-wiki.newsynthesis.org/FrontPage">Axiom</ulink> is needed to generate the lisp source to that
+calculates the vertices.
hunk ./qt.xml 237
-<section id="commonqt"><title>CommonQt</title>
-<para><ulink url="http://tobias.rautenkranz.ch/darcsweb/darcsweb.cgi?r=cl-smoke/commonqt">:cl-smoke.commonqt</ulink>
-is an experimental compatibility layer to run Lisp code using the
-<ulink url="http://common-lisp.net/project/commonqt/">CommonQt</ulink> API with cl-smoke.
-It is incomplete, but implementing the missing pieces should be straight forward.
-</para>
-<screenshot>
-<mediaobject>
-<imageobject>
- <imagedata fileref="commonqt-t14.png" format="PNG"/>
-</imageobject>
-<caption>
-<para>CommonQt tutorial 14
-<filename><ulink url="http://repo.or.cz/w/commonqt.git?a=blob;f=tutorial/t14.lisp;hb=HEAD">t14.lisp</ulink></filename>
-running with <code>:cl-smoke.commonqt</code>.
-</para>
-</caption>
-</mediaobject>
-</screenshot>
-</section>
-
Wed Sep 2 14:08:06 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* cl-smoke now supports user conversions for return values.
hunk ./smoke.xml 94
-<para>
-User defined conversions for return values are currently not supported (in <code>defmethods</code>).
-</para>
Sun Aug 30 16:26:13 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* Multiple inheritance doc & expand tabs in programmlisting.
hunk ./qt.xml 9
- <listitem><para>
- <package>:qt.uitools</package>
- <ulink url="http://doc.trolltech.com/4.5/qtuitools.html">
- QtUiTools</ulink></para></listitem>
- <listitem><para><package>:qt.test</package>
- <ulink url="http://doc.trolltech.com/4.5/qttest.html">
- QtTest</ulink></para></listitem>
- <listitem><para><package>:qt.webkit</package>
- <ulink url="http://doc.trolltech.com/4.5/qtwebkit.html">
- QtWebKit</ulink>
- </para></listitem>
- <listitem><para><package>:qt.phonon</package>
- <ulink url="http://doc.trolltech.com/4.5/phonon.html">
- Phonon</ulink>
- </para></listitem>
+ <listitem><para>
+ <package>:qt.uitools</package>
+ <ulink url="http://doc.trolltech.com/4.5/qtuitools.html">
+ QtUiTools</ulink></para></listitem>
+ <listitem><para><package>:qt.test</package>
+ <ulink url="http://doc.trolltech.com/4.5/qttest.html">
+ QtTest</ulink></para></listitem>
+ <listitem><para><package>:qt.webkit</package>
+ <ulink url="http://doc.trolltech.com/4.5/qtwebkit.html">
+ QtWebKit</ulink>
+ </para></listitem>
+ <listitem><para><package>:qt.phonon</package>
+ <ulink url="http://doc.trolltech.com/4.5/phonon.html">
+ Phonon</ulink>
+ </para></listitem>
hunk ./qt.xml 45
- <imagedata fileref="hello-world.png" format="PNG"/>
+ <imagedata fileref="hello-world.png" format="PNG"/>
hunk ./qt.xml 51
-</programlisting>[_^I_][_$_]
+</programlisting> [_$_]
hunk ./qt.xml 111
- (setf (<methodname>qt:property</methodname> object :object-name) "Foo")
- (assert (string= "Foo" (<methodname>qt:property</methodname> object "objectName"))))
+ (setf (<methodname>qt:property</methodname> object :object-name) "Foo")
+ (assert (string= "Foo" (<methodname>qt:property</methodname> object "objectName"))))
hunk ./qt.xml 135
- <imagedata fileref="i18n-hello-world.png" format="PNG"/>
+ <imagedata fileref="i18n-hello-world.png" format="PNG"/>
hunk ./qt.xml 143
-</programlisting>[_^I_][_$_]
+</programlisting> [_$_]
hunk ./qt.xml 150
-</programlisting>[_^I_][_$_]
+</programlisting> [_$_]
hunk ./qt.xml 181
- <imagedata fileref="repl.png" format="PNG"/>
+ <imagedata fileref="repl.png" format="PNG"/>
hunk ./qt.xml 187
-</programlisting>[_^I_][_$_]
+</programlisting> [_$_]
hunk ./qt.xml 199
- <imagedata fileref="class-browser.png" format="PNG"/>
+ <imagedata fileref="class-browser.png" format="PNG"/>
hunk ./qt.xml 205
-</programlisting>[_^I_][_$_]
+</programlisting> [_$_]
hunk ./qt.xml 247
- <imagedata fileref="commonqt-t14.png" format="PNG"/>
+ <imagedata fileref="commonqt-t14.png" format="PNG"/>
hunk ./smoke.xml 33
- (make-instance '<classname>qt:object</classname> :args (list parent)))
+ (make-instance '<classname>qt:object</classname> :args (list parent)))
hunk ./smoke.xml 40
- (make-instance '<classname>qt:object</classname> :arg0 parent))
+ (make-instance '<classname>qt:object</classname> :arg0 parent))
hunk ./smoke.xml 49
- ()
- (:metaclass <classname>cxx:class</classname>))
+ ()
+ (:metaclass <classname>cxx:class</classname>))
+
+(make-instance 'my-object)
+</programlisting>
+</informalexample>
+The first superclass must be a Smoke class. When you define a class that has several Smoke superclasses,
+they will be constructed with their default constructor. For the first Smoke superclass you can supply arguments
+with the <code>:args</code> and <code>:arg0</code> etc. keywords.
+<informalexample>
+<programlisting language="lisp">
+(defclass my-graphics-object (<classname>qt:object</classname> <classname>qt:graphics-item</classname>)
+ ()
+ (:metaclass <classname>cxx:class</classname>))
hunk ./smoke.xml 124
- ()
- (:metaclass <classname>cxx:class</classname>))
+ ()
+ (:metaclass <classname>cxx:class</classname>))
hunk ./smoke.xml 128
- (declare (ignore object event))
- (call-next-method))
+ (declare (ignore object event))
+ (call-next-method))
hunk ./smoke.xml 212
- C++ Class enums available as constants. E.g.:
- <code>QColor::Rgb</code> is <constant>qt:color.+rgb+</constant>.
- See <package>:cxx-support</package>.
+ C++ Class enums available as constants. E.g.:
+ <code>QColor::Rgb</code> is <constant>qt:color.+rgb+</constant>.
+ See <package>:cxx-support</package>.
hunk ./smoke.xml 230
- Ownership transfer for non QObject instances is mostly unimplemented.
+ Ownership transfer for non QObject instances is mostly unimplemented.
Thu Aug 27 13:47:08 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* Update for the new smokegenerator
hunk ./introduction.xml 36
- <listitem><para>No const-correctness</para></listitem>
hunk ./introduction.xml 52
- bindings 4.2 or later</para></listitem>
+ bindings from svn; r1015073 or later
+ <footnote><para>
+ The new smokegenerator is needed (developed by Arno Rehn for the GSOC 09).
+ </para></footnote>
+ </para></listitem>
hunk ./manual.xsl 14
-
Sun Aug 2 13:24:57 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* Remove wrong note about cxx:meta-object
hunk ./smoke.xml 218
-An instance may depend on an other one.
-It is a bad idea to do something like this:
-<programlisting language="lisp">
-(defvar *meta* (<genericfunction>cxx:meta-object</genericfunction> (make-instance 'qt:object)))
-</programlisting>
-<code>*meta*</code> references a <classname>qt:meta-class</classname>
-that can become invalid at any time, since the <classname>qt:object</classname> instance can
-be garbage collected, and then the <code>QMetaObject</code> instance is deleted along
-with the <code>QObject</code>.
-</para>
-</caution>
-<caution>
-<para>
Thu Jul 23 00:59:59 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* add phonon repository
hunk ./introduction.xml 108
-for r in smoke qt qt.test qt.tests qt.examples qt.uitools qt.webkit kde kde.tests kde.examples repl; do
+for r in smoke qt qt.test qt.tests qt.examples qt.uitools qt.webkit qt.phonon kde kde.tests kde.examples repl; do
Thu Jul 23 00:53:41 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* phonon & :arg0
hunk ./introduction.xml 29
- Using an image it is around 1 second.
+ Using a core image it is around 1 second.
hunk ./qt.xml 7
-Besides the <package>:qt</package> there are these packages: with
+Besides the <package>:qt</package> there are these modules: with
hunk ./qt.xml 20
+ <listitem><para><package>:qt.phonon</package>
+ <ulink url="http://doc.trolltech.com/4.5/phonon.html">
+ Phonon</ulink>
+ </para></listitem>
hunk ./qt.xml 25
-which provide bindings for their Qt module.
+which provide bindings for their Qt module. The class names of this modules are in
+the <package>:qt</package> package. (E.g. Phonon::VideoPlayer is <code>'qt:phonon.video-player</code>
+and QTest is <code>'qt:test</code>)
+</para>
+<para>
hunk ./qt.xml 106
+The predefined Qt properties can be accessed with symbols in the keyword package.
hunk ./qt.xml 111
- (setf (<methodname>qt:property</methodname> object 'object-name) "Foo")
+ (setf (<methodname>qt:property</methodname> object :object-name) "Foo")
hunk ./smoke.xml 36
+or use <code>:arg0</code>, <code>:arg1</code> and <code>:arg2</code>.
+<informalexample>
+<programlisting language="lisp">
+(let ((parent (make-instance '<classname>qt:object</classname>)))
+ (make-instance '<classname>qt:object</classname> :arg0 parent))
+</programlisting>
+</informalexample>
Mon Jul 6 23:51:20 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* OpenGL: origami
hunk ./chunk.xsl 5
-<xsl:import href="/usr/share/xml/docbook/stylesheet/nwalsh/xhtml/chunk.xsl"/>
-<xsl:import href="link-apidoc.xsl"/>
+<xsl:import href="/usr/share/xml/docbook/stylesheet/nwalsh/html/chunk.xsl" />
+<xsl:import href="link-apidoc.xsl" />
hunk ./chunk.xsl 8
-<xsl:import href="/usr/share/xml/docbook/stylesheet/nwalsh/xhtml/highlight.xsl"/>
-<xsl:param name="highlight.source" select="1"/>
+<xsl:import href="video.xsl" />
+<xsl:import href="/usr/share/xml/docbook/stylesheet/nwalsh/html/highlight.xsl" />
+
+<xsl:param name="highlight.source" select="1" />
hunk ./chunk.xsl 16
-<xsl:param name="use.id.as.filename" select="1"/>
+<xsl:param name="use.id.as.filename" select="1" />
hunk ./introduction.xml 17
-<section><title>Limitations</title>
+<section id="limitations"><title>Limitations</title>
hunk ./introduction.xml 48
-<section><title>Installation</title>
+<section id="installation"><title>Installation</title>
hunk ./kde.xml 12
-<section><title>Examples</title>
+<section id="kde_examples"><title>Examples</title>
hunk ./manual.xsl 5
-<xsl:import href="/usr/share/xml/docbook/stylesheet/nwalsh/xhtml/docbook.xsl"/>
+<xsl:import href="/usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl"/>
hunk ./manual.xsl 8
-<xsl:import href="/usr/share/xml/docbook/stylesheet/nwalsh/xhtml/highlight.xsl"/>
+<xsl:import href="/usr/share/xml/docbook/stylesheet/nwalsh/html/highlight.xsl"/>
+
+<xsl:import href="video.xsl" />
+
hunk ./manual.xsl 14
+
addfile ./origami.ogg
binary ./origami.ogg
addfile ./origami.png
binary ./origami.png
hunk ./qt.xml 26
-<section><title>qt:application</title>
+<section id="qapplication"><title>qt:application</title>
hunk ./qt.xml 66
-<section><title>Signal-Slot</title>
+<section id="signal_slot"><title>Signal-Slot</title>
hunk ./qt.xml 93
-<section><title>Properties</title>
+<section id="properties"><title>Properties</title>
hunk ./qt.xml 109
-<section><title>Variant</title>
+<section id="variant"><title>Variant</title>
hunk ./qt.xml 117
-<section><title>i18n</title>
+<section id="i18n"><title>i18n</title>
hunk ./qt.xml 154
-<section><title>Examples</title>
+<section id="qt_examples"><title>Examples</title>
hunk ./qt.xml 201
-<section><title>CommonQt</title>
+<section id="opengl"><title>OpenGL</title>
+<para>
+For OpenGL an binding is needed (e.g.: [_$_]
+<ulink url="http://common-lisp.net/project/cl-opengl/">cl-opengl</ulink>).
+</para>
+<example><title>Origami</title>
+<para>
+<ulink url="http://tobias.rautenkranz.ch/darcsweb/darcsweb.cgi?r=cl-smoke/qt.examples;a=tree;f=/src/origami">Origami</ulink>
+draws a pleated hyperbolic paraboloid using the method described in
+<ulink url="http://arxiv.org/abs/0906.4747">(Non)existence of Pleated Folds: How Paper Folds Between Creases</ulink>
+</para>
+<mediaobject>
+<videoobject>
+<videodata fileref='origami.ogg'/>
+</videoobject>
+</mediaobject>
+<para>
+<note>
+<para>
+Because <ulink url="http://common-lisp.net/project/cl-opengl/">cl-opengl</ulink> is need to
+run the example, but is not in mudballs; the origami example is not included in the mudballs system.
+<ulink url="http://axiom-wiki.newsynthesis.org/FrontPage">Axiom</ulink> is needed for building.
+</para>
+</note>
+</para>
+</example>
+</section>
+
+<section id="commonqt"><title>CommonQt</title>
hunk ./smoke.xml 4
-<chapter id="smoke"> [_$_]
+<chapter id="usage"> [_$_]
hunk ./smoke.xml 20
-<section><title>Class</title>
+<section id="classes"><title>Class</title>
hunk ./smoke.xml 49
-<section><title>Methods</title>
+<section id="methods"><title>Methods</title>
hunk ./smoke.xml 172
-<section><title>Static Methods</title>
+<section id="static_methods"><title>Static Methods</title>
hunk ./smoke.xml 191
-<section><title>Constants</title>
+<section id="constants"><title>Constants</title>
hunk ./smoke.xml 199
-<section><title>Garbage Collection</title>
+<section id="gc"><title>Garbage Collection</title>
addfile ./video.xsl
hunk ./video.xsl 1
+<?xml version='1.0'?> [_$_]
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> [_$_]
+
+<!-- this barely works -->
+<xsl:template match="videodata">
+ <video controls="true">
+ <xsl:attribute name="src">
+ <xsl:value-of select="@fileref" />
+ </xsl:attribute>
+ <img>
+ <xsl:attribute name="src">
+ <xsl:value-of select="concat(substring-before(@fileref, 'ogg'),'png')" />
+ </xsl:attribute>
+ </img>
+ <p>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:value-of select="@fileref" />
+ </xsl:attribute>
+ <xsl:text>Download Video</xsl:text>
+ </a>
+ </p>
+ </video>
+</xsl:template>
+
+</xsl:stylesheet>
Fri Jul 3 00:28:43 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* cl-smoke.commonqt & Clozure CL support
addfile ./commonqt-t14.png
binary ./commonqt-t14.png
hunk ./introduction.xml 84
- </itemizedlist>
-</section>
-<section><title>Partial</title>
- <itemizedlist>
hunk ./introduction.xml 85
- <ulink url="http://trac.clozure.com/openmcl">Clozure CL</ulink> support is currently broken.
+ <ulink url="http://trac.clozure.com/openmcl">Clozure CL</ulink> on Linux x86.
hunk ./introduction.xml 136
- You can for examples run: <code>ln -s <userinput>SOME_DIR/*/*.asd</userinput> <userinput>ASDF_PATH</userinput></code>
+ You can for example run: <code>ln -s <userinput>SOME_DIR/*/*.asd</userinput> <userinput>ASDF_PATH</userinput></code>
hunk ./introduction.xml 141
- <programlisting>
- cmake ./ && make && sudo make install
- </programlisting>
+ <programlisting>cmake ./ && make && sudo make install</programlisting>
hunk ./qt.xml 201
+<section><title>CommonQt</title>
+<para><ulink url="http://tobias.rautenkranz.ch/darcsweb/darcsweb.cgi?r=cl-smoke/commonqt">:cl-smoke.commonqt</ulink>
+is an experimental compatibility layer to run Lisp code using the
+<ulink url="http://common-lisp.net/project/commonqt/">CommonQt</ulink> API with cl-smoke.
+It is incomplete, but implementing the missing pieces should be straight forward.
+</para>
+<screenshot>
+<mediaobject>
+<imageobject>
+ <imagedata fileref="commonqt-t14.png" format="PNG"/>
+</imageobject>
+<caption>
+<para>CommonQt tutorial 14
+<filename><ulink url="http://repo.or.cz/w/commonqt.git?a=blob;f=tutorial/t14.lisp;hb=HEAD">t14.lisp</ulink></filename>
+running with <code>:cl-smoke.commonqt</code>.
+</para>
+</caption>
+</mediaobject>
+</screenshot>
+</section>
+
Sun Jun 21 11:29:52 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* Link Benchmark
hunk ./introduction.xml 38
+<section><title>Performance</title>
+<para>
+Method calling is near 3000 times slower than native C++. The overhead is mainly in the overload
+resolution and to/from foreign object translation. Some measurements by
+<code><ulink url="http://tobias.rautenkranz.ch/darcsweb/darcsweb.cgi?r=cl-smoke/benchmark;a=summary">:cl-smoke.benchmark</ulink></code>
+are in
+<filename><ulink url="../benchmark.pdf">benchmark.pdf</ulink></filename>.
+</para>
+</section>
hunk ./introduction.xml 89
- <ulink url="http://trac.clozure.com/openmcl">Clozure CL</ulink>
- <footnote><para>There are some test suite failures and [_$_]
- it is to slow to be usable.</para></footnote>on Linux x86.
+ <ulink url="http://trac.clozure.com/openmcl">Clozure CL</ulink> support is currently broken.
Wed Jun 10 14:17:14 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* better Lisp source highlighting
hunk ./lisp-hl.xml 4
+ <highlighter type="word">
+ <word>call-next-method</word>
+ <word>do-external-symbols</word>
+ <word>do</word>
+ <word>do*</word>
+ <word>eval-when</word>
+ <word>handler-bind</word>
+ <word>handler-case</word>
+ <word>in-package</word>
+ <word>let*</word>
+ <word>multiple-value-bind</word>
+ <word>restart-bind</word>
+ <word>restart-case</word>
+ <word>return-from</word>
+ <word>signal</word>
+ <word>unwind-protect</word>
+
+ <style>keyword</style>
+ <ignoreCase />
+ </highlighter>
hunk ./lisp-hl.xml 25
- <keyword>defun</keyword>
+ <keyword>assert</keyword>
+ <keyword>block</keyword>
+ <keyword>case</keyword>
+ <keyword>catch</keyword>
+ <keyword>ccase</keyword>
+ <keyword>cerror</keyword>
+ <keyword>check-type</keyword>
+ <keyword>declaim</keyword>
+ <keyword>declare</keyword>
+ <keyword>defclass</keyword>
+ <keyword>defconstant</keyword>
hunk ./lisp-hl.xml 37
+ <keyword>define-condition</keyword>
+ <keyword>defmacro</keyword>
hunk ./lisp-hl.xml 40
- <keyword>lambda</keyword>
-
- <keyword>if</keyword>
- <keyword>when</keyword>
- <keyword>unless</keyword>
-
- <keyword>let</keyword>
- <keyword>let*</keyword>
-
- <keyword>defvar</keyword>
- <keyword>defparameter</keyword>
hunk ./lisp-hl.xml 41
-
- <keyword>defclass</keyword>
+ <keyword>defparameter</keyword>
hunk ./lisp-hl.xml 43
-
- <keyword>declare</keyword>
- <keyword>declaim</keyword>
+ <keyword>deftype</keyword>
+ <keyword>defun</keyword>
+ <keyword>defvar</keyword>
+ <keyword>dolist</keyword>
+ <keyword>dotimes</keyword>
+ <keyword>ecase</keyword>
+ <keyword>error</keyword>
+ <keyword>flet</keyword>
+ <keyword>go</keyword>
+ <keyword>if</keyword>
+ <keyword>labels</keyword>
+ <keyword>lambda</keyword>
+ <keyword>let</keyword>
+ <keyword>loop</keyword>
hunk ./lisp-hl.xml 58
+ <keyword>prog1</keyword>
+ <keyword>prog2</keyword>
+ <keyword>progn</keyword>
+ <keyword>progv</keyword>
+ <keyword>return</keyword>
+ <keyword>tagbody</keyword>
+ <keyword>throw</keyword>
+ <keyword>typecase</keyword>
+ <keyword>unless</keyword>
+ <keyword>warn</keyword>
+ <keyword>when</keyword>
+
hunk ./lisp-hl.xml 72
- <highlighter type="word">
- <word>in-package</word>
+ <!-- with- -->
+ <highlighter type="regex">
+ <pattern>(?<=\()(\S+[:])?(with-\S+)</pattern>
hunk ./lisp-hl.xml 100
- <!-- defined symbols -->
+ <!-- lambda list keywords -->
+ <highlighter type="word">
+ <word>&allow-other-keys</word>
+ <word>&aux</word>
+ <word>&body</word>
+ <word>&environment</word>
+ <word>&key</word>
+ <word>&optional</word>
+ <word>&rest</word>
+ <word>&whole</word>
+
+ <style>attribute</style>
+ <ignoreCase />
+ </highlighter>
+
+ <!-- emacs style highlighted names -->
hunk ./lisp-hl.xml 120
+ <flags>CASE_INSENSITIVE</flags>
hunk ./lisp-hl.xml 127
+ <!-- defmacro -->
+ <highlighter type="regex">
+ <pattern>(?<=defmacro\s)(\S+)</pattern>
+ <style>directive</style>
+ </highlighter>
hunk ./lisp-hl.xml 152
+ <!-- defparameter -->
+ <highlighter type="regex">
+ <pattern>(?<=defconstant\s)(\S+)</pattern>
+ <style>directive</style>
+ </highlighter>
hunk ./lisp-hl.xml 162
-
- <!-- numbers [_$_]
- TODO does not work? -->
- <highlighter type="number">
- <point>.</point>
- <exponent>d</exponent> <!-- double-float -->
- <exponent>e</exponent> <!-- float -->
- <exponent>f</exponent> <!-- single-float -->
- <exponent>l</exponent> <!-- long-float -->
- <exponent>s</exponent> <!-- short-float -->
- <ignoreCase />
- </highlighter>
- <!-- numbers -->
- <highlighter type="hexnumber">
- <prefix>#x</prefix>
- <ignoreCase />
+ <!-- define-condition -->
+ <highlighter type="regex">
+ <pattern>(?<=define-condition\s)(\S+)</pattern>
+ <style>directive</style>
Fri Jun 5 16:17:33 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* Lisp syntax highlighting
hunk ./Makefile 3
-# xmllint xsltproc docbook
+# - xmllint
+# - saxon
+# - docbook
+# - xslthl
hunk ./Makefile 8
+# Debian: download the xslthl jar into the doc/ directory; install the remaining dependancies with apt.
+#
+
+SAXON_JAR := /usr/share/java/saxon.jar
+XSLTHL_JAR := $(firstword $(wildcard xslthl*.jar))
+CLASSPATH := "$(SAXON_JAR):$(XSLTHL_JAR)"
+SAXON := java -classpath $(CLASSPATH) \
+ -Dxslthl.config="file://$(realpath xslthl-config.xml)" \
+ com.icl.saxon.StyleSheet
hunk ./Makefile 22
-manual.html: $(DEPENDANCIES)
- xmllint --xinclude --postvalid manual.xml > /dev/null
- xsltproc --xinclude -o $@ manual.xsl manual.xml
+# validate & process xincludes
+manual.tmp: $(DEPENDANCIES)
+ xmllint --xinclude --postvalid manual.xml > manual.tmp
+
+
+manual.html: manual.tmp
+ $(SAXON) -o manual.html manual.tmp manual.xsl
hunk ./Makefile 30
-index.html: $(DEPENDANCIES)
-# xsltproc --xinclude --stringparam base.dir "manual/" chunk.xsl manual.xml
- xsltproc --xinclude chunk.xsl manual.xml
hunk ./Makefile 31
-[_^I_][_$_]
+index.html: manual.tmp
+ $(SAXON) manual.tmp chunk.xsl
hunk ./Makefile 36
- rm -f -- *.html
+ rm -f -- *.html *.tmp
hunk ./chunk.xsl 8
+<xsl:import href="/usr/share/xml/docbook/stylesheet/nwalsh/xhtml/highlight.xsl"/>
+<xsl:param name="highlight.source" select="1"/>
+
hunk ./kde.xml 15
-<programlisting>
+<programlisting language="lisp">
hunk ./kde.xml 19
-<programlisting>
+<programlisting language="lisp">
addfile ./lisp-hl.xml
hunk ./lisp-hl.xml 1
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Common Lisp highlighter for xslthl -->
+<highlighters>
+ <highlighter type="keywords">
+ <keyword>defun</keyword>
+ <keyword>defgeneric</keyword>
+ <keyword>defmethod</keyword>
+ <keyword>lambda</keyword>
+
+ <keyword>if</keyword>
+ <keyword>when</keyword>
+ <keyword>unless</keyword>
+
+ <keyword>let</keyword>
+ <keyword>let*</keyword>
+
+ <keyword>defvar</keyword>
+ <keyword>defparameter</keyword>
+ <keyword>defpackage</keyword>
+
+ <keyword>defclass</keyword>
+ <keyword>defstruct</keyword>
+
+ <keyword>declare</keyword>
+ <keyword>declaim</keyword>
+ <keyword>proclaim</keyword>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="word">
+ <word>in-package</word>
+ <style>keyword</style>
+ </highlighter>
+
+ <!-- comments -->
+ <highlighter type="multiline-comment">
+ <start>#|</start>
+ <end>|#</end>
+ <style>comment</style>
+ </highlighter>
+ <highlighter type="oneline-comment">
+ ;
+ </highlighter>
+
+ <!-- string -->
+ <highlighter type="string">
+ <string>"</string>
+ <spanNewLines/>
+ </highlighter>
+
+ <!-- keyword package -->
+ <highlighter type="regex">
+ <pattern>(?<=[ \(])(:[^\s\)]+)</pattern>
+ <style>attribute</style>
+ </highlighter>
+
+ <!-- defined symbols -->
+ <!-- defclass -->
+ <highlighter type="regex">
+ <pattern>(?<=defclass\s)(\S+)</pattern>
+ <style>directive</style>
+ </highlighter>
+ <!-- defun -->
+ <highlighter type="regex">
+ <pattern>(?<=defun\s)(\S+)</pattern>
+ <style>directive</style>
+ </highlighter>
+ <!-- defgeneric -->
+ <highlighter type="regex">
+ <pattern>(?<=defgeneric\s)(\S+)</pattern>
+ <style>directive</style>
+ </highlighter>
+ <!-- defmethod -->
+ <highlighter type="regex">
+ <pattern>(?<=defmethod\s)(\S+)</pattern>
+ <style>directive</style>
+ </highlighter>
+ <!-- defvar -->
+ <highlighter type="regex">
+ <pattern>(?<=defvar\s)(\S+)</pattern>
+ <style>directive</style>
+ </highlighter>
+ <!-- defparameter -->
+ <highlighter type="regex">
+ <pattern>(?<=defparameter\s)(\S+)</pattern>
+ <style>directive</style>
+ </highlighter>
+ <!-- defstruct -->
+ <highlighter type="regex">
+ <pattern>(?<=defstruct\s)(\S+)</pattern>
+ <style>directive</style>
+ </highlighter>
+
+ <!-- numbers [_$_]
+ TODO does not work? -->
+ <highlighter type="number">
+ <point>.</point>
+ <exponent>d</exponent> <!-- double-float -->
+ <exponent>e</exponent> <!-- float -->
+ <exponent>f</exponent> <!-- single-float -->
+ <exponent>l</exponent> <!-- long-float -->
+ <exponent>s</exponent> <!-- short-float -->
+ <ignoreCase />
+ </highlighter>
+ <!-- numbers -->
+ <highlighter type="hexnumber">
+ <prefix>#x</prefix>
+ <ignoreCase />
+ </highlighter>
+</highlighters>
hunk ./manual.xsl 8
+<xsl:import href="/usr/share/xml/docbook/stylesheet/nwalsh/xhtml/highlight.xsl"/>
+<xsl:param name="highlight.source" select="1"/>
+
hunk ./qt.xml 76
-<programlisting>
+<programlisting language="lisp">
hunk ./qt.xml 100
-<programlisting>
+<programlisting language="lisp">
hunk ./qt.xml 131
-<programlisting language="po">
+<programlisting language="lisp">
hunk ./qt.xml 157
-<programlisting>
+<programlisting language="lisp">
hunk ./smoke.xml 25
-<programlisting>
+<programlisting language="lisp">
hunk ./smoke.xml 31
-<programlisting>
+<programlisting language="lisp">
hunk ./smoke.xml 40
-<programlisting>
+<programlisting language="lisp">
hunk ./smoke.xml 56
-<programlisting>(frob my-instance 1)</programlisting>
+<programlisting language="lisp">(frob my-instance 1)</programlisting>
hunk ./smoke.xml 63
-<programlisting>
+<programlisting language="lisp">
hunk ./smoke.xml 69
-<programlisting>
+<programlisting language="lisp">
hunk ./smoke.xml 84
-<programlisting>
+<programlisting language="lisp">
hunk ./smoke.xml 90
-<programlisting>
+<programlisting language="lisp">
hunk ./smoke.xml 104
-<programlisting>(defclass the-object-does-nothing (<classname>qt:object</classname>)
+<programlisting language="lisp">(defclass the-object-does-nothing (<classname>qt:object</classname>)
hunk ./smoke.xml 177
-<programlisting>(<methodname>qt:byte-array.number</methodname> 37)</programlisting>
+<programlisting language="lisp">(<methodname>qt:byte-array.number</methodname> 37)</programlisting>
hunk ./smoke.xml 182
-<programlisting>(<genericfunction>cxx:number</genericfunction> (find-class '<classname>qt:byte-array</classname>) 37)</programlisting>
+<programlisting language="lisp">(<genericfunction>cxx:number</genericfunction> (find-class '<classname>qt:byte-array</classname>) 37)</programlisting>
hunk ./smoke.xml 186
-<programlisting>(<genericfunction>cxx:number</genericfunction> (make-instance '<classname>qt:byte-array</classname>) 37)</programlisting>
+<programlisting language="lisp">(<genericfunction>cxx:number</genericfunction> (make-instance '<classname>qt:byte-array</classname>) 37)</programlisting>
hunk ./smoke.xml 213
-<programlisting>
+<programlisting language="lisp">
addfile ./xslthl-config.xml
hunk ./xslthl-config.xml 1
+<?xml version="1.0" encoding="UTF-8"?>
+<xslthl-config>
+ <highlighter id="lisp" file="lisp-hl.xml" />
+ <namespace prefix="xslthl" uri="http://xslthl.sf.net" />
+</xslthl-config>
Thu Jun 4 23:20:49 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* interactive development
hunk ./introduction.xml 17
-<section><title>Status</title>
-<para>
-GUI creation should work and API will probably remain compatible.
-The next goal is to reorganize the argument conversion / overload resolution and to
-integrate more conversions between Lisp and C++ (<code>QList</code> etc.).
-</para>
-
hunk ./introduction.xml 19
- <listitem><para>Limited conversions. E.g. <code>QList<T></code> is missing.
- </para></listitem>
+ <listitem><para>Ownership transfer to / from C++ of non QObject objects is seldom known to cl-smoke.
+ E.g.: cl-smoke might delete an instance even though it is still needed by C++.
+ (One that is known is <ulink url="http://doc.qtsoftware.com/4.5-snapshot/qundostack.html#push">QUndoStack::push()</ulink>.)
+ </para></listitem>
+ <listitem><para>Limited conversions to and from C++. You will get an NO-APPLICABLE-CXX-METHOD error
+ when a Lisp to C++ conversion is missing and a pointer will be returned when there is no C++ to Lisp
+ conversion.
+ </para></listitem>
hunk ./introduction.xml 35
- <listitem><para>Does not recover well from errors
- <footnote><para>Thus you often need to restart the Lisp process
- during interactive development.</para></footnote>.</para></listitem>
+ <listitem><para>Could be faster</para></listitem>
hunk ./introduction.xml 39
-</section>
hunk ./introduction.xml 105
-for r in smoke qt qt.test qt.tests qt.examples qt.uitools qt.webkit kde kde.tests kde.examples; do
+for r in smoke qt qt.test qt.tests qt.examples qt.uitools qt.webkit kde kde.tests kde.examples repl; do
hunk ./introduction.xml 145
- Some examples get the paths for files to load from their Mudballs system (ui and i18n) and thus will not work.
+ Some examples get the paths for the files to load from their Mudballs system (ui and i18n) and thus will not work.
hunk ./kde.xml 18
-An the running the function of the example; e.g.:
+And then running the function of the example; e.g.:
hunk ./qt.xml 50
+<section><title>Interactive Development</title>
+<para>
+The <package>:cl-smoke.repl</package> allows you to start a <classname>qt:application</classname> event loop in the background for
+interactive development in SLIME.
+To start the event loop use <methodname>cl-smoke.repl:start-event-loop-in-background</methodname> (or [_$_]
+<methodname>cl-smoke.repl:start-event-loop-in-repl</methodname>).
+<footnote>
+<para>
+Currently <code>START-EVENT-LOOP-IN-BACKGROUND</code> is recommended.
+</para>
+</footnote>
+As long as you do not kill the thread or unwind over a foreign function, you should be fine.
+</para>
+</section>
hunk ./qt.xml 83
-to a <classname>qt:qslot</classname> at least one must have its arguments types specified.
+to a <classname>qt:qslot</classname> at least one must have its arguments types specified. Type specifier <code>T</code>
+allows to pass a Lisp object as is from a Lisp signal to a Lisp slot.
hunk ./qt.xml 150
-in the <filename class="directory">src</filename> directory of <package>:qt.examples</package> how to do this.
+in the <filename class="directory">src/</filename> directory of <package>:qt.examples</package> on how to do this.
hunk ./smoke.xml 13
+<informalexample>
hunk ./smoke.xml 17
+</informalexample>
hunk ./smoke.xml 51
-C++ methods are generic functions in the <code>:cxx</code> package.
+C++ methods are generic functions in the <package>:cxx</package> package.
hunk ./smoke.xml 121
+<caution><para>
+The arguments of the method might have dynamic extend; i.e.: they are only valid in the body of the method.
+</para></caution>
hunk ./smoke.xml 127
-You will most likely encounter this problem when an error is signaled in a virtual method you have overwritten
+You will most likely encounter this problem when an error is signaled in a virtual method you have overwritten.
hunk ./smoke.xml 204
-C++ classes are automatically deleted when their lisp object gets garbage collected;
+C++ classes are automatically deleted when their Lisp object gets garbage collected;
hunk ./smoke.xml 207
-reference is kept to prevent its garbage collection until the parent is deleted.
+reference is kept to prevent the garbage collection removing it until the parent is deleted.
hunk ./smoke.xml 222
+<caution>
+<para>
+ Ownership transfer for non QObject instances is mostly unimplemented.
+</para>
+</caution>
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>
Tue May 26 12:08:31 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* Return value conversions
hunk ./introduction.xml 39
+ <listitem><para>No const-correctness</para></listitem>
hunk ./smoke.xml 73
+<para>
+User defined conversions for return values are currently not supported (in <code>defmethods</code>).
+</para>
Sun May 24 17:11:38 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* Fixed hash-table multithreading
hunk ./introduction.xml 26
- <listitem><para>Bad multithreaded performance
- due to a lock for the global hash-tables.</para></listitem>
Tue May 19 16:44:30 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* Clozure CL save-application
hunk ./smoke.xml 203
+
hunk ./smoke.xml 206
-For near instant startup under SBCL you can save an image with
-<ulink url="http://www.sbcl.org/manual/Saving-a-Core-Image.html"><code>sb-ext:save-lisp-and-die</code></ulink>.
-Saving C++ instances is not supported.
+For near instant startup you can save an image. Since saving C++ instances is not supported,
+it is best to save the image immediately after loading the packages.
hunk ./smoke.xml 209
+
+<note><para>
+Initializing the Smoke bindings when the image is loaded is implementation dependent. It is implemented
+for SBCL and Clozure CL.
+</para></note>
+
+<section><title>SBCL</title>
+<para>To save an image in SBCL you can use:
+<ulink url="http://www.sbcl.org/manual/Saving-a-Core-Image.html"><code>sb-ext:save-lisp-and-die</code></ulink>
+</para>
+
hunk ./smoke.xml 231
+<section><title>Clozure CL</title>
+<para>
+To save an image in CCL
+<ulink url="http://ccl.clozure.com/manual/chapter4.7.html#Saving-Applications">
+<code>ccl:save-application</code></ulink> is usually used.
+</para>
+<caution>
+<para>
+To allow the image to find the C wrapper libraries, they have to be installed with:
+<informalexample>
+<programlisting>
+sudo make install
+</programlisting>
+</informalexample>
+run in the <filename>smoke/</filename> and <filename>qt/</filename> directory.
+</para>
+</caution>
+</section>
+
+</section>
+
Thu May 14 14:56:16 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* Save core image
hunk ./introduction.xml 24
-<section><title>Limitation</title>
+<section><title>Limitations</title>
hunk ./introduction.xml 30
- <listitem><para>10 seconds startup time (for <package>qt.examples</package>) on a
+ <listitem><para>10 seconds startup time<footnote>
+ <para>
+ Using an image it is around 1 second.
+ (see <xref linkend="core-image"/>)
+ </para></footnote>
+ (for <package>qt.examples</package>) on a
hunk ./introduction.xml 38
- <listitem><para>Saving a core image is not supported.</para></listitem>
hunk ./smoke.xml 203
+<section id="core-image"><title>Saving a Core Image</title>
+<para>
+For near instant startup under SBCL you can save an image with
+<ulink url="http://www.sbcl.org/manual/Saving-a-Core-Image.html"><code>sb-ext:save-lisp-and-die</code></ulink>.
+Saving C++ instances is not supported.
+</para>
+<section><title>Bundle</title>
+<para>
+To create a bundle containing an SBCL image and the required C wrappers libraries you can use
+<methodname>smoke:save-bundle</methodname>.
+The bundle is created using <ulink url="http://megastep.org/makeself/">makeself</ulink>.
+See [_$_]
+<ulink url="http://tobias.rautenkranz.ch/darcsweb/darcsweb.cgi?r=cl-smoke/qt.examples;a=headblob;f=/make-bundle.sh">make-bundle.sh</ulink> in <package>:qt.examples</package> for an example.
+</para>
+</section>
+</section>
Tue May 12 19:03:22 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* Note Clozure CL support
hunk ./introduction.xml 36
- during interactive developement.</para></footnote>.</para></listitem>
+ during interactive development.</para></footnote>.</para></listitem>
hunk ./introduction.xml 61
-<para>
- <ulink url="http://www.sbcl.org">SBCL</ulink> on Linux x86 in works;
+<section><title>Working</title>
+ <itemizedlist>
+ <listitem><para>
+ <ulink url="http://www.sbcl.org">SBCL</ulink> on Linux x86 (and x86_64)
+ </para></listitem>
+ </itemizedlist>
+</section>
+<section><title>Partial</title>
+ <itemizedlist>
+ <listitem> <para>
+ <ulink url="http://trac.clozure.com/openmcl">Clozure CL</ulink>
+ <footnote><para>There are some test suite failures and [_$_]
+ it is to slow to be usable.</para></footnote>on Linux x86.
+ </para></listitem>
+ </itemizedlist>
+</section>
+<section><title>Not Working</title>
+ <itemizedlist>
+ <listitem><para>
hunk ./introduction.xml 81
- and [_$_]
- <ulink url="http://clisp.cons.org/">CLISP</ulink> currently do not.
- It should be possible to get it to work (with SBCL) on
- other platforms. Contact me if you have any questions.
-</para>
+ </para></listitem>
+ <listitem><para>
+ <ulink url="http://clisp.cons.org/">CLISP</ulink>
+ </para></listitem>
+ </itemizedlist>
+</section>
hunk ./smoke.xml 59
-C++ style overload resolution with conversion sequences is suppored. For example this:
+C++ style overload resolution with conversion sequences is supported. For example this:
Mon May 11 22:23:03 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* Rename *.docbook -> *.xml
move ./introduction.docbook ./introduction.xml
move ./kde.docbook ./kde.xml
move ./manual.docbook ./manual.xml
move ./qt.docbook ./qt.xml
move ./smoke.docbook ./smoke.xml
hunk ./Makefile 8
-DEPENDANCIES := *docbook *.xsl ../qt.examples/src/*.lisp ../kde.examples/src/*.lisp *.dtd
+DEPENDANCIES := *.xml *.xsl ../qt.examples/src/*.lisp ../kde.examples/src/*.lisp *.dtd
hunk ./Makefile 11
- xmllint --xinclude --postvalid manual.docbook > /dev/null
- xsltproc --xinclude -o $@ manual.xsl manual.docbook
+ xmllint --xinclude --postvalid manual.xml > /dev/null
+ xsltproc --xinclude -o $@ manual.xsl manual.xml
hunk ./Makefile 15
-# xsltproc --xinclude --stringparam base.dir "manual/" chunk.xsl manual.docbook
- xsltproc --xinclude chunk.xsl manual.docbook
+# xsltproc --xinclude --stringparam base.dir "manual/" chunk.xsl manual.xml
+ xsltproc --xinclude chunk.xsl manual.xml
hunk ./manual.xml 40
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="introduction.docbook" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="smoke.docbook" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="qt.docbook" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="kde.docbook" />
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="introduction.xml" />
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="smoke.xml" />
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="qt.xml" />
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="kde.xml" />
Mon May 11 22:19:30 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* document setf & cleanup
hunk ./qt.docbook 91
-A <classname>qt:variant</classname> can be constructed with <genericfunction>qt:make-variant</genericfunction>
+A <classname>qt:variant</classname> can be constructed with <methodname>qt:make-variant</methodname>
hunk ./qt.docbook 93
-Its value is returned by <methodname>qt:from-variant</methodname>.
+Its value is returned by <genericfunction>qt:value</genericfunction>.
hunk ./smoke.docbook 59
-C++ style overload resolution with conversion sequences is under development,
-but already usable. For example this:
+C++ style overload resolution with conversion sequences is suppored. For example this:
hunk ./smoke.docbook 62
-(cxx:set-pen (make-instance '<classname>qt:painter</classname>)
- (make-instance '<classname>qt:color</classname> :args '("green")))
+(<genericfunction>cxx:set-pen</genericfunction> (make-instance '<classname>qt:painter</classname>) (make-instance '<classname>qt:color</classname> :args '("green")))
hunk ./smoke.docbook 68
-(cxx:set-pen (make-instance '<classname>qt:painter</classname>) "green")
+(<genericfunction>cxx:set-pen</genericfunction> (make-instance '<classname>qt:painter</classname>) "green")
hunk ./smoke.docbook 75
-<section><title>defmethod</title>
+<section><title>Setter Methods</title>
+<para>
+Instead of calling a setter method that takes no additional arguments,
+<informalexample>
+<programlisting>
+(<genericfunction>cxx:set-object-name</genericfunction> (make-instance '<classname>qt:object</classname>) "foo")
+</programlisting>
+</informalexample>
+you can use its <code>setf</code>able getter.
+<informalexample>
+<programlisting>
+(setf (<genericfunction>cxx:object-name</genericfunction> (make-instance '<classname>qt:object</classname>)) "foo")
+</programlisting>
+</informalexample>
+</para>
+</section>
+
+<section><title><code>defmethod</code></title>
hunk ./smoke.docbook 119
-Insted of using the various <code>cxx:operator</code> methods you can use their Lisp equivalent
+Instead of using the various <code>cxx:operator</code> methods you can use their Lisp equivalent
hunk ./smoke.docbook 162
-<programlisting>(cxx:number (find-class '<classname>qt:byte-array</classname>) 37)</programlisting>
+<programlisting>(<genericfunction>cxx:number</genericfunction> (find-class '<classname>qt:byte-array</classname>) 37)</programlisting>
+</informalexample>
+or:
+<informalexample>
+<programlisting>(<genericfunction>cxx:number</genericfunction> (make-instance '<classname>qt:byte-array</classname>) 37)</programlisting>
hunk ./smoke.docbook 168
-
Fri Apr 17 17:32:31 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* C++ overload resolution
hunk ./introduction.docbook 28
- <listitem><para>No C++ style argument conversion / overload resolution.</para></listitem>
- <listitem><para>No custom overloading methods by argument count.</para></listitem>
hunk ./smoke.docbook 27
-Suppy arguments as list to the <code>:args</code> keyword:
+Supply arguments as list to the <code>:args</code> keyword:
hunk ./smoke.docbook 57
+<section><title>Overload Resolution</title>
+<para>
+C++ style overload resolution with conversion sequences is under development,
+but already usable. For example this:
+<informalexample>
+<programlisting>
+(cxx:set-pen (make-instance '<classname>qt:painter</classname>)
+ (make-instance '<classname>qt:color</classname> :args '("green")))
+</programlisting>
+</informalexample>
+is equivalent to:
+<informalexample>
+<programlisting>
+(cxx:set-pen (make-instance '<classname>qt:painter</classname>) "green")
+</programlisting>
+</informalexample>
+In the second case a temporary <classname>qt:color</classname> instance is implicitly created.
+</para>
+</section>
+
Tue Apr 14 16:08:15 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* FDL license & small updates
addfile ./fdl-1.3.xml
hunk ./fdl-1.3.xml 1
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">[_^M_][_$_]
+<appendix id="fdl">[_^M_][_$_]
+ <title>GNU Free Documentation License</title>[_^M_][_$_]
+ <simpara>Version 1.3, 3 November 2008</simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ Copyright © 2000, 2001, 2002, 2007, 2008[_^M_][_$_]
+ <ulink url="http://www.fsf.org/">Free Software Foundation, Inc.</ulink>[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ Everyone is permitted to copy and distribute verbatim copies of this[_^M_][_$_]
+ license document, but changing it is not allowed.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <bridgehead id="section0" renderas="sect2">[_^M_][_$_]
+ 0. PREAMBLE[_^M_][_$_]
+ </bridgehead>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ The purpose of this License is to make a manual, textbook, or other[_^M_][_$_]
+ functional and useful document “free” in the sense of freedom:[_^M_][_$_]
+ to assure everyone the effective freedom to copy and redistribute it, with[_^M_][_$_]
+ or without modifying it, either commercially or[_^M_][_$_]
+ noncommercially. Secondarily, this License preserves for the author and[_^M_][_$_]
+ publisher a way to get credit for their work, while not being considered[_^M_][_$_]
+ responsible for modifications made by others.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ This License is a kind of “copyleft”, which means that[_^M_][_$_]
+ derivative works of the document must themselves be free in the same[_^M_][_$_]
+ sense. It complements the GNU General Public License, which is a copyleft[_^M_][_$_]
+ license designed for free software.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ We have designed this License in order to use it for manuals for free[_^M_][_$_]
+ software, because free software needs free documentation: a free program[_^M_][_$_]
+ should come with manuals providing the same freedoms that the software[_^M_][_$_]
+ does. But this License is not limited to software manuals; it can be used[_^M_][_$_]
+ for any textual work, regardless of subject matter or whether it is[_^M_][_$_]
+ published as a printed book. We recommend this License principally for[_^M_][_$_]
+ works whose purpose is instruction or reference.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <bridgehead id="section1" renderas="sect2">[_^M_][_$_]
+ 1. APPLICABILITY AND DEFINITIONS[_^M_][_$_]
+ </bridgehead>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ This License applies to any manual or other work, in any medium, that[_^M_][_$_]
+ contains a notice placed by the copyright holder saying it can be[_^M_][_$_]
+ distributed under the terms of this License. Such a notice grants a[_^M_][_$_]
+ world-wide, royalty-free license, unlimited in duration, to use that work[_^M_][_$_]
+ under the conditions stated herein. The “Document”, below,[_^M_][_$_]
+ refers to any such manual or work. Any member of the public is a licensee,[_^M_][_$_]
+ and is addressed as “you”. You accept the license if you copy,[_^M_][_$_]
+ modify or distribute the work in a way requiring permission under[_^M_][_$_]
+ copyright law.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ A “Modified Version” of the Document means any work containing[_^M_][_$_]
+ the Document or a portion of it, either copied verbatim, or with[_^M_][_$_]
+ modifications and/or translated into another language.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ A “Secondary Section” is a named appendix or a front-matter[_^M_][_$_]
+ section of the Document that deals exclusively with the relationship of[_^M_][_$_]
+ the publishers or authors of the Document to the Document’s overall[_^M_][_$_]
+ subject (or to related matters) and contains nothing that could fall[_^M_][_$_]
+ directly within that overall subject. (Thus, if the Document is in part a[_^M_][_$_]
+ textbook of mathematics, a Secondary Section may not explain any[_^M_][_$_]
+ mathematics.) The relationship could be a matter of historical connection[_^M_][_$_]
+ with the subject or with related matters, or of legal, commercial,[_^M_][_$_]
+ philosophical, ethical or political position regarding them.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ The “Invariant Sections” are certain Secondary Sections whose[_^M_][_$_]
+ titles are designated, as being those of Invariant Sections, in the notice[_^M_][_$_]
+ that says that the Document is released under this License. If a section[_^M_][_$_]
+ does not fit the above definition of Secondary then it is not allowed to[_^M_][_$_]
+ be designated as Invariant. The Document may contain zero Invariant[_^M_][_$_]
+ Sections. If the Document does not identify any Invariant Sections then[_^M_][_$_]
+ there are none.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ The “Cover Texts” are certain short passages of text that are[_^M_][_$_]
+ listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says[_^M_][_$_]
+ that the Document is released under this License. A Front-Cover Text may[_^M_][_$_]
+ be at most 5 words, and a Back-Cover Text may be at most 25 words.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ A “Transparent” copy of the Document means a machine-readable[_^M_][_$_]
+ copy, represented in a format whose specification is available to the[_^M_][_$_]
+ general public, that is suitable for revising the document[_^M_][_$_]
+ straightforwardly with generic text editors or (for images composed of[_^M_][_$_]
+ pixels) generic paint programs or (for drawings) some widely available[_^M_][_$_]
+ drawing editor, and that is suitable for input to text formatters or for[_^M_][_$_]
+ automatic translation to a variety of formats suitable for input to text[_^M_][_$_]
+ formatters. A copy made in an otherwise Transparent file format whose[_^M_][_$_]
+ markup, or absence of markup, has been arranged to thwart or discourage[_^M_][_$_]
+ subsequent modification by readers is not Transparent. An image format is[_^M_][_$_]
+ not Transparent if used for any substantial amount of text. A copy that is[_^M_][_$_]
+ not “Transparent” is called “Opaque”.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ Examples of suitable formats for Transparent copies include plain ASCII[_^M_][_$_]
+ without markup, Texinfo input format, LaTeX input format, SGML or XML[_^M_][_$_]
+ using a publicly available DTD, and standard-conforming simple HTML,[_^M_][_$_]
+ PostScript or PDF designed for human modification. Examples of transparent[_^M_][_$_]
+ image formats include PNG, XCF and JPG. Opaque formats include proprietary[_^M_][_$_]
+ formats that can be read and edited only by proprietary word processors,[_^M_][_$_]
+ SGML or XML for which the DTD and/or processing tools are not generally[_^M_][_$_]
+ available, and the machine-generated HTML, PostScript or PDF produced by[_^M_][_$_]
+ some word processors for output purposes only.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ The “Title Page” means, for a printed book, the title page[_^M_][_$_]
+ itself, plus such following pages as are needed to hold, legibly, the[_^M_][_$_]
+ material this License requires to appear in the title page. For works in[_^M_][_$_]
+ formats which do not have any title page as such, “Title Page”[_^M_][_$_]
+ means the text near the most prominent appearance of the work’s[_^M_][_$_]
+ title, preceding the beginning of the body of the text.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ The “publisher” means any person or entity that distributes[_^M_][_$_]
+ copies of the Document to the public.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ A section “Entitled XYZ” means a named subunit of the Document[_^M_][_$_]
+ whose title either is precisely XYZ or contains XYZ in parentheses[_^M_][_$_]
+ following text that translates XYZ in another language. (Here XYZ stands[_^M_][_$_]
+ for a specific section name mentioned below, such as[_^M_][_$_]
+ “Acknowledgements”, “Dedications”,[_^M_][_$_]
+ “Endorsements”, or “History”.) To “Preserve[_^M_][_$_]
+ the Title” of such a section when you modify the Document means that[_^M_][_$_]
+ it remains a section “Entitled XYZ” according to this[_^M_][_$_]
+ definition.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ The Document may include Warranty Disclaimers next to the notice which[_^M_][_$_]
+ states that this License applies to the Document. These Warranty[_^M_][_$_]
+ Disclaimers are considered to be included by reference in this License,[_^M_][_$_]
+ but only as regards disclaiming warranties: any other implication that[_^M_][_$_]
+ these Warranty Disclaimers may have is void and has no effect on the[_^M_][_$_]
+ meaning of this License.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <bridgehead id="section2" renderas="sect2">[_^M_][_$_]
+ 2. VERBATIM COPYING[_^M_][_$_]
+ </bridgehead>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ You may copy and distribute the Document in any medium, either[_^M_][_$_]
+ commercially or noncommercially, provided that this License, the copyright[_^M_][_$_]
+ notices, and the license notice saying this License applies to the[_^M_][_$_]
+ Document are reproduced in all copies, and that you add no other[_^M_][_$_]
+ conditions whatsoever to those of this License. You may not use technical[_^M_][_$_]
+ measures to obstruct or control the reading or further copying of the[_^M_][_$_]
+ copies you make or distribute. However, you may accept compensation in[_^M_][_$_]
+ exchange for copies. If you distribute a large enough number of copies you[_^M_][_$_]
+ must also follow the conditions in section 3.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ You may also lend copies, under the same conditions stated above, and you[_^M_][_$_]
+ may publicly display copies.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <bridgehead id="section3" renderas="sect2">[_^M_][_$_]
+ 3. COPYING IN QUANTITY[_^M_][_$_]
+ </bridgehead>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ If you publish printed copies (or copies in media that commonly have[_^M_][_$_]
+ printed covers) of the Document, numbering more than 100, and the[_^M_][_$_]
+ Document’s license notice requires Cover Texts, you must enclose[_^M_][_$_]
+ the copies in covers that carry, clearly and legibly, all these Cover[_^M_][_$_]
+ Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the[_^M_][_$_]
+ back cover. Both covers must also clearly and legibly identify you as the[_^M_][_$_]
+ publisher of these copies. The front cover must present the full title[_^M_][_$_]
+ with all words of the title equally prominent and visible. You may add[_^M_][_$_]
+ other material on the covers in addition. Copying with changes limited to[_^M_][_$_]
+ the covers, as long as they preserve the title of the Document and satisfy[_^M_][_$_]
+ these conditions, can be treated as verbatim copying in other respects.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ If the required texts for either cover are too voluminous to fit legibly,[_^M_][_$_]
+ you should put the first ones listed (as many as fit reasonably) on the[_^M_][_$_]
+ actual cover, and continue the rest onto adjacent pages.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ If you publish or distribute Opaque copies of the Document numbering more[_^M_][_$_]
+ than 100, you must either include a machine-readable Transparent copy[_^M_][_$_]
+ along with each Opaque copy, or state in or with each Opaque copy a[_^M_][_$_]
+ computer-network location from which the general network-using public has[_^M_][_$_]
+ access to download using public-standard network protocols a complete[_^M_][_$_]
+ Transparent copy of the Document, free of added material. If you use the[_^M_][_$_]
+ latter option, you must take reasonably prudent steps, when you begin[_^M_][_$_]
+ distribution of Opaque copies in quantity, to ensure that this Transparent[_^M_][_$_]
+ copy will remain thus accessible at the stated location until at least one[_^M_][_$_]
+ year after the last time you distribute an Opaque copy (directly or[_^M_][_$_]
+ through your agents or retailers) of that edition to the public.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ It is requested, but not required, that you contact the authors of the[_^M_][_$_]
+ Document well before redistributing any large number of copies, to give[_^M_][_$_]
+ them a chance to provide you with an updated version of the Document.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <bridgehead id="section4" renderas="sect2">[_^M_][_$_]
+ 4. MODIFICATIONS[_^M_][_$_]
+ </bridgehead>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ You may copy and distribute a Modified Version of the Document under the[_^M_][_$_]
+ conditions of sections 2 and 3 above, provided that you release the[_^M_][_$_]
+ Modified Version under precisely this License, with the Modified Version[_^M_][_$_]
+ filling the role of the Document, thus licensing distribution and[_^M_][_$_]
+ modification of the Modified Version to whoever possesses a copy of it. In[_^M_][_$_]
+ addition, you must do these things in the Modified Version:[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <orderedlist numeration="upperalpha">[_^M_][_$_]
+ <listitem>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ Use in the Title Page (and on the covers, if any) a title distinct[_^M_][_$_]
+ from that of the Document, and from those of previous versions (which[_^M_][_$_]
+ should, if there were any, be listed in the History section of the[_^M_][_$_]
+ Document). You may use the same title as a previous version if the[_^M_][_$_]
+ original publisher of that version gives permission.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ </listitem>[_^M_][_$_]
+ <listitem>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ List on the Title Page, as authors, one or more persons or entities[_^M_][_$_]
+ responsible for authorship of the modifications in the Modified[_^M_][_$_]
+ Version, together with at least five of the principal authors of the[_^M_][_$_]
+ Document (all of its principal authors, if it has fewer than five),[_^M_][_$_]
+ unless they release you from this requirement.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ </listitem>[_^M_][_$_]
+ <listitem>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ State on the Title page the name of the publisher of the Modified[_^M_][_$_]
+ Version, as the publisher.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ </listitem>[_^M_][_$_]
+ <listitem>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ Preserve all the copyright notices of the Document.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ </listitem>[_^M_][_$_]
+ <listitem>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ Add an appropriate copyright notice for your modifications adjacent to[_^M_][_$_]
+ the other copyright notices.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ </listitem>[_^M_][_$_]
+ <listitem>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ Include, immediately after the copyright notices, a license notice[_^M_][_$_]
+ giving the public permission to use the Modified Version under the[_^M_][_$_]
+ terms of this License, in the form shown in the Addendum below.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ </listitem>[_^M_][_$_]
+ <listitem>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ Preserve in that license notice the full lists of Invariant Sections[_^M_][_$_]
+ and required Cover Texts given in the Document’s license[_^M_][_$_]
+ notice.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ </listitem>[_^M_][_$_]
+ <listitem>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ Include an unaltered copy of this License.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ </listitem>[_^M_][_$_]
+ <listitem>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ Preserve the section Entitled “History”, Preserve its[_^M_][_$_]
+ Title, and add to it an item stating at least the title, year, new[_^M_][_$_]
+ authors, and publisher of the Modified Version as given on the Title[_^M_][_$_]
+ Page. If there is no section Entitled “History” in the[_^M_][_$_]
+ Document, create one stating the title, year, authors, and publisher[_^M_][_$_]
+ of the Document as given on its Title Page, then add an item[_^M_][_$_]
+ describing the Modified Version as stated in the previous sentence.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ </listitem>[_^M_][_$_]
+ <listitem>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ Preserve the network location, if any, given in the Document for[_^M_][_$_]
+ public access to a Transparent copy of the Document, and likewise the[_^M_][_$_]
+ network locations given in the Document for previous versions it was[_^M_][_$_]
+ based on. These may be placed in the “History”[_^M_][_$_]
+ section. You may omit a network location for a work that was published[_^M_][_$_]
+ at least four years before the Document itself, or if the original[_^M_][_$_]
+ publisher of the version it refers to gives permission.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ </listitem>[_^M_][_$_]
+ <listitem>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ For any section Entitled “Acknowledgements” or[_^M_][_$_]
+ “Dedications”, Preserve the Title of the section, and[_^M_][_$_]
+ preserve in the section all the substance and tone of each of the[_^M_][_$_]
+ contributor acknowledgements and/or dedications given therein.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ </listitem>[_^M_][_$_]
+ <listitem>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ Preserve all the Invariant Sections of the Document, unaltered in[_^M_][_$_]
+ their text and in their titles. Section numbers or the equivalent are[_^M_][_$_]
+ not considered part of the section titles.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ </listitem>[_^M_][_$_]
+ <listitem>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ Delete any section Entitled “Endorsements”. Such a section[_^M_][_$_]
+ may not be included in the Modified Version.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ </listitem>[_^M_][_$_]
+ <listitem>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ Do not retitle any existing section to be Entitled[_^M_][_$_]
+ “Endorsements” or to conflict in title with any Invariant[_^M_][_$_]
+ Section.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ </listitem>[_^M_][_$_]
+ <listitem>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ Preserve any Warranty Disclaimers.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ </listitem>[_^M_][_$_]
+ </orderedlist>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ If the Modified Version includes new front-matter sections or appendices[_^M_][_$_]
+ that qualify as Secondary Sections and contain no material copied from the[_^M_][_$_]
+ Document, you may at your option designate some or all of these sections[_^M_][_$_]
+ as invariant. To do this, add their titles to the list of Invariant[_^M_][_$_]
+ Sections in the Modified Version’s license notice. These titles[_^M_][_$_]
+ must be distinct from any other section titles.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ You may add a section Entitled “Endorsements”, provided it[_^M_][_$_]
+ contains nothing but endorsements of your Modified Version by various[_^M_][_$_]
+ parties — for example, statements of peer review or that the text[_^M_][_$_]
+ has been approved by an organization as the authoritative definition of a[_^M_][_$_]
+ standard.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ You may add a passage of up to five words as a Front-Cover Text, and a[_^M_][_$_]
+ passage of up to 25 words as a Back-Cover Text, to the end of the list of[_^M_][_$_]
+ Cover Texts in the Modified Version. Only one passage of Front-Cover Text[_^M_][_$_]
+ and one of Back-Cover Text may be added by (or through arrangements made[_^M_][_$_]
+ by) any one entity. If the Document already includes a cover text for the[_^M_][_$_]
+ same cover, previously added by you or by arrangement made by the same[_^M_][_$_]
+ entity you are acting on behalf of, you may not add another; but you may[_^M_][_$_]
+ replace the old one, on explicit permission from the previous publisher[_^M_][_$_]
+ that added the old one.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ The author(s) and publisher(s) of the Document do not by this License give[_^M_][_$_]
+ permission to use their names for publicity for or to assert or imply[_^M_][_$_]
+ endorsement of any Modified Version.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <bridgehead id="section5" renderas="sect2">[_^M_][_$_]
+ 5. COMBINING DOCUMENTS[_^M_][_$_]
+ </bridgehead>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ You may combine the Document with other documents released under this[_^M_][_$_]
+ License, under the terms defined in section 4 above for modified versions,[_^M_][_$_]
+ provided that you include in the combination all of the Invariant Sections[_^M_][_$_]
+ of all of the original documents, unmodified, and list them all as[_^M_][_$_]
+ Invariant Sections of your combined work in its license notice, and that[_^M_][_$_]
+ you preserve all their Warranty Disclaimers.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ The combined work need only contain one copy of this License, and multiple[_^M_][_$_]
+ identical Invariant Sections may be replaced with a single copy. If there[_^M_][_$_]
+ are multiple Invariant Sections with the same name but different contents,[_^M_][_$_]
+ make the title of each such section unique by adding at the end of it, in[_^M_][_$_]
+ parentheses, the name of the original author or publisher of that section[_^M_][_$_]
+ if known, or else a unique number. Make the same adjustment to the section[_^M_][_$_]
+ titles in the list of Invariant Sections in the license notice of the[_^M_][_$_]
+ combined work.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ In the combination, you must combine any sections Entitled[_^M_][_$_]
+ “History” in the various original documents, forming one[_^M_][_$_]
+ section Entitled “History”; likewise combine any sections[_^M_][_$_]
+ Entitled “Acknowledgements”, and any sections Entitled[_^M_][_$_]
+ “Dedications”. You must delete all sections Entitled[_^M_][_$_]
+ “Endorsements”.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <bridgehead id="section6" renderas="sect2">[_^M_][_$_]
+ 6. COLLECTIONS OF DOCUMENTS[_^M_][_$_]
+ </bridgehead>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ You may make a collection consisting of the Document and other documents[_^M_][_$_]
+ released under this License, and replace the individual copies of this[_^M_][_$_]
+ License in the various documents with a single copy that is included in[_^M_][_$_]
+ the collection, provided that you follow the rules of this License for[_^M_][_$_]
+ verbatim copying of each of the documents in all other respects.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ You may extract a single document from such a collection, and distribute[_^M_][_$_]
+ it individually under this License, provided you insert a copy of this[_^M_][_$_]
+ License into the extracted document, and follow this License in all other[_^M_][_$_]
+ respects regarding verbatim copying of that document.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <bridgehead id="section7" renderas="sect2">[_^M_][_$_]
+ 7. AGGREGATION WITH INDEPENDENT WORKS[_^M_][_$_]
+ </bridgehead>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ A compilation of the Document or its derivatives with other separate and[_^M_][_$_]
+ independent documents or works, in or on a volume of a storage or[_^M_][_$_]
+ distribution medium, is called an “aggregate” if the copyright[_^M_][_$_]
+ resulting from the compilation is not used to limit the legal rights of[_^M_][_$_]
+ the compilation’s users beyond what the individual works[_^M_][_$_]
+ permit. When the Document is included in an aggregate, this License does[_^M_][_$_]
+ not apply to the other works in the aggregate which are not themselves[_^M_][_$_]
+ derivative works of the Document.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ If the Cover Text requirement of section 3 is applicable to these copies[_^M_][_$_]
+ of the Document, then if the Document is less than one half of the entire[_^M_][_$_]
+ aggregate, the Document’s Cover Texts may be placed on covers that[_^M_][_$_]
+ bracket the Document within the aggregate, or the electronic equivalent of[_^M_][_$_]
+ covers if the Document is in electronic form. Otherwise they must appear[_^M_][_$_]
+ on printed covers that bracket the whole aggregate.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <bridgehead id="section8" renderas="sect2">[_^M_][_$_]
+ 8. TRANSLATION[_^M_][_$_]
+ </bridgehead>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ Translation is considered a kind of modification, so you may distribute[_^M_][_$_]
+ translations of the Document under the terms of section 4. Replacing[_^M_][_$_]
+ Invariant Sections with translations requires special permission from[_^M_][_$_]
+ their copyright holders, but you may include translations of some or all[_^M_][_$_]
+ Invariant Sections in addition to the original versions of these Invariant[_^M_][_$_]
+ Sections. You may include a translation of this License, and all the[_^M_][_$_]
+ license notices in the Document, and any Warranty Disclaimers, provided[_^M_][_$_]
+ that you also include the original English version of this License and the[_^M_][_$_]
+ original versions of those notices and disclaimers. In case of a[_^M_][_$_]
+ disagreement between the translation and the original version of this[_^M_][_$_]
+ License or a notice or disclaimer, the original version will prevail.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ If a section in the Document is Entitled “Acknowledgements”,[_^M_][_$_]
+ “Dedications”, or “History”, the requirement[_^M_][_$_]
+ (section 4) to Preserve its Title (section 1) will typically require[_^M_][_$_]
+ changing the actual title.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <bridgehead id="section9" renderas="sect2">[_^M_][_$_]
+ 9. TERMINATION[_^M_][_$_]
+ </bridgehead>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ You may not copy, modify, sublicense, or distribute the Document except as[_^M_][_$_]
+ expressly provided under this License. Any attempt otherwise to copy,[_^M_][_$_]
+ modify, sublicense, or distribute it is void, and will automatically[_^M_][_$_]
+ terminate your rights under this License.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ However, if you cease all violation of this License, then your license[_^M_][_$_]
+ from a particular copyright holder is reinstated (a) provisionally, unless[_^M_][_$_]
+ and until the copyright holder explicitly and finally terminates your[_^M_][_$_]
+ license, and (b) permanently, if the copyright holder fails to notify you[_^M_][_$_]
+ of the violation by some reasonable means prior to 60 days after the[_^M_][_$_]
+ cessation.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ Moreover, your license from a particular copyright holder is reinstated[_^M_][_$_]
+ permanently if the copyright holder notifies you of the violation by some[_^M_][_$_]
+ reasonable means, this is the first time you have received notice of[_^M_][_$_]
+ violation of this License (for any work) from that copyright holder, and[_^M_][_$_]
+ you cure the violation prior to 30 days after your receipt of the notice.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ Termination of your rights under this section does not terminate the[_^M_][_$_]
+ licenses of parties who have received copies or rights from you under this[_^M_][_$_]
+ License. If your rights have been terminated and not permanently[_^M_][_$_]
+ reinstated, receipt of a copy of some or all of the same material does not[_^M_][_$_]
+ give you any rights to use it.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <bridgehead id="section10" renderas="sect2">[_^M_][_$_]
+ 10. FUTURE REVISIONS OF THIS LICENSE[_^M_][_$_]
+ </bridgehead>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ The Free Software Foundation may publish new, revised versions of the GNU[_^M_][_$_]
+ Free Documentation License from time to time. Such new versions will be[_^M_][_$_]
+ similar in spirit to the present version, but may differ in detail to[_^M_][_$_]
+ address new problems or concerns. See[_^M_][_$_]
+ <ulink url="http://www.gnu.org/copyleft/">Copyleft</ulink>.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ Each version of the License is given a distinguishing version number. If[_^M_][_$_]
+ the Document specifies that a particular numbered version of this License[_^M_][_$_]
+ “or any later version” applies to it, you have the option of[_^M_][_$_]
+ following the terms and conditions either of that specified version or of[_^M_][_$_]
+ any later version that has been published (not as a draft) by the Free[_^M_][_$_]
+ Software Foundation. If the Document does not specify a version number of[_^M_][_$_]
+ this License, you may choose any version ever published (not as a draft)[_^M_][_$_]
+ by the Free Software Foundation. If the Document specifies that a proxy[_^M_][_$_]
+ can decide which future versions of this License can be used, that[_^M_][_$_]
+ proxy’s public statement of acceptance of a version permanently[_^M_][_$_]
+ authorizes you to choose that version for the Document.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <bridgehead id="section11" renderas="sect2">[_^M_][_$_]
+ 11. RELICENSING[_^M_][_$_]
+ </bridgehead>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ “Massive Multiauthor Collaboration Site” (or “MMC[_^M_][_$_]
+ Site”) means any World Wide Web server that publishes copyrightable[_^M_][_$_]
+ works and also provides prominent facilities for anybody to edit those[_^M_][_$_]
+ works. A public wiki that anybody can edit is an example of such a[_^M_][_$_]
+ server. A “Massive Multiauthor Collaboration” (or[_^M_][_$_]
+ “MMC”) contained in the site means any set of copyrightable[_^M_][_$_]
+ works thus published on the MMC site.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ “CC-BY-SA” means the Creative Commons Attribution-Share Alike[_^M_][_$_]
+ 3.0 license published by Creative Commons Corporation, a not-for-profit[_^M_][_$_]
+ corporation with a principal place of business in San Francisco,[_^M_][_$_]
+ California, as well as future copyleft versions of that license published[_^M_][_$_]
+ by that same organization.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ “Incorporate” means to publish or republish a Document, in[_^M_][_$_]
+ whole or in part, as part of another Document.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ An MMC is “eligible for relicensing” if it is licensed under[_^M_][_$_]
+ this License, and if all works that were first published under this[_^M_][_$_]
+ License somewhere other than this MMC, and subsequently incorporated in[_^M_][_$_]
+ whole or in part into the MMC, (1) had no cover texts or invariant[_^M_][_$_]
+ sections, and (2) were thus incorporated prior to November 1, 2008.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ The operator of an MMC Site may republish an MMC contained in the site[_^M_][_$_]
+ under CC-BY-SA on the same site at any time before August 1, 2009,[_^M_][_$_]
+ provided the MMC is eligible for relicensing.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <bridgehead id="addendum" renderas="sect2">[_^M_][_$_]
+ ADDENDUM: How to use this License for your documents[_^M_][_$_]
+ </bridgehead>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ To use this License in a document you have written, include a copy of the[_^M_][_$_]
+ License in the document and put the following copyright and license[_^M_][_$_]
+ notices just after the title page:[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <screen>Copyright © YEAR YOUR NAME[_^M_][_$_]
+[_^M_][_$_]
+Permission is granted to copy, distribute and/or modify this document under the[_^M_][_$_]
+terms of the GNU Free Documentation License, Version 1.3 or any later version[_^M_][_$_]
+published by the Free Software Foundation; with no Invariant Sections, no[_^M_][_$_]
+Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in[_^M_][_$_]
+the section entitled “GNU Free Documentation License”.</screen>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,[_^M_][_$_]
+ replace the “with… Texts.” line with this:[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <screen>with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts[_^M_][_$_]
+being LIST, and with the Back-Cover Texts being LIST.</screen>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ If you have Invariant Sections without Cover Texts, or some other[_^M_][_$_]
+ combination of the three, merge those two alternatives to suit the[_^M_][_$_]
+ situation.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+ <simpara>[_^M_][_$_]
+ If your document contains nontrivial examples of program code, we[_^M_][_$_]
+ recommend releasing these examples in parallel under your choice of free[_^M_][_$_]
+ software license, such as the GNU General Public License, to permit their[_^M_][_$_]
+ use in free software.[_^M_][_$_]
+ </simpara>[_^M_][_$_]
+</appendix>[_^M_][_$_]
hunk ./introduction.docbook 17
-<section><title>Limitations</title>
+<section><title>Status</title>
+<para>
+GUI creation should work and API will probably remain compatible.
+The next goal is to reorganize the argument conversion / overload resolution and to
+integrate more conversions between Lisp and C++ (<code>QList</code> etc.).
+</para>
+
+<section><title>Limitation</title>
hunk ./introduction.docbook 28
- <listitem><para>No C++ style argument conversion.</para></listitem>
+ <listitem><para>No C++ style argument conversion / overload resolution.</para></listitem>
hunk ./introduction.docbook 41
+</section>
hunk ./introduction.docbook 66
- <footnote><para>Compiles and loads, still some unit test failtures</para></footnote>
hunk ./introduction.docbook 88
+<note>
+<para>
+ Loading the packages with <code>mb:load</code> compiles the C wrapper libraries as needed.
+</para>
+</note>
hunk ./link-apidoc.xsl 2
+<!--
+Copyright 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE. [_$_]
+!-->
+
hunk ./manual.docbook 23
-<legalnotice><para>FDL</para></legalnotice>
+<legalnotice><para>
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled "GNU
+Free Documentation License".
+</para></legalnotice>
hunk ./manual.docbook 45
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="fdl-1.3.xml" />
+
hunk ./smoke.docbook 86
-(e.g.: <methodname>cxx:aref</methodname>, <methodname>cxx:incf</methodname>)
+<simplelist type='horiz' columns='4'>
+<member><code>cxx:></code></member> <!-- FIXME mb.document handling of no alphnum chars !-->
+<member><code>cxx:>=</code></member>
+</simplelist>
+<simplelist type='horiz' columns='4'>
+<member><code>cxx:=</code></member>
+<member><code>cxx:/=</code></member>
+</simplelist>
+<simplelist type='horiz' columns='4'>
+<member><code>cxx:<=</code></member>
+<member><code>cxx:<</code></member>
+</simplelist>
+<simplelist type='horiz' columns='4'>
+<member><code>cxx:+</code></member>
+<member><code>cxx:-</code></member>
+<member><code>cxx:*</code></member>
+<member><code>cxx:/</code></member>
+<member><code>cxx:1+</code></member>
+<member><code>cxx:1-</code></member>
+</simplelist>
+<simplelist type='horiz' columns='4'>
+<member><methodname>cxx:incf</methodname></member>
+<member><methodname>cxx:decf</methodname></member>
+</simplelist>
+<simplelist>
+<member><methodname>cxx:aref</methodname></member>
+</simplelist>