[rdnzl-cvs] CVS RDNZL/doc

eweitz eweitz at common-lisp.net
Wed Feb 1 01:00:57 UTC 2006


Update of /project/rdnzl/cvsroot/RDNZL/doc
In directory common-lisp:/tmp/cvs-serv4420/doc

Modified Files:
	index.html 
Log Message:
0.9.0 release


--- /project/rdnzl/cvsroot/RDNZL/doc/index.html	2006/01/13 07:06:34	1.4
+++ /project/rdnzl/cvsroot/RDNZL/doc/index.html	2006/02/01 01:00:57	1.5
@@ -1,1082 +1,1081 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html> 
-
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-  <title>RDNZL - A .NET layer for Common Lisp</title>
-  <style type="text/css">
-  pre { padding:5px; background-color:#e0e0e0 }
-  a { text-decoration: none; }
-  a.noborder { border:0px }
-  a.noborder:hover { border:0px }
-  a.none { border:1px solid white; }
-  a.none:hover { border:1px solid white; }
-  a { border:1px solid white; }
-  a:hover   { border: 1px solid black; } 
-  </style>
-</head>
-
-<body bgcolor=white>
-
-<h2>RDNZL - A .NET layer for Common Lisp</h2>
-
-<blockquote>
-<br> <br><h3><a name=abstract class=none>Abstract</a></h3>
-
-<a href="http://globalia.net/donlope/fz/songs/RDNZL.html">RDNZL</a> (pronounced "Redunzl") enables Common Lisp applications to interact with <a href="http://en.wikipedia.org/wiki/Microsoft_.NET">.NET</a>
-libraries.  It's more or less a foreign function interface for .NET
-languages like <a href="http://en.wikipedia.org/wiki/C_Sharp_programming_language">C#</a> built atop the C foreign function interface.
-
-<p>
-
-RDNZL comes with a <a
-href="http://www.opensource.org/licenses/bsd-license.php">BSD-style
-license</a> so you can basically do with it whatever you want.
-
-<p>
-<font color=red>Download shortcut:</font> <a href="http://weitz.de/files/RDNZL.tar.gz">http://weitz.de/files/RDNZL.tar.gz</a>.
-
-</blockquote>
-
-<center>
-<a class=none title="Apropos Example" href="#apropos"><img src="apropos.png" border=0 width=624 height=411></a>
-</center>
-
-<br> <br><h3><a class=none name="contents">Contents</a></h3>
-<ol>
-  <li><a href="#examples">Examples</a>
-  <li><a href="#download">Download and installation</a>
-  <li><a href="#mail">Support and mailing lists</a>
-  <li><a href="#implementations">Supported Lisp implementations</a>
-  <li><a href="#dictionary">The RDNZL dictionary</a>
-  <ol>
-    <li><a href="#objects">Representation and creation of .NET objects</a>
-    <ol>
-      <li><a href="#container-p"><code>container-p</code></a>
-      <li><a href="#box"><code>box</code></a>
-      <li><a href="#unbox"><code>unbox</code></a>
-      <li><a href="#new"><code>new</code></a>
-      <li><a href="#cast"><code>cast</code></a>
-      <li><a href="#make-null-object"><code>make-null-object</code></a>
-    </ol>
-    <li><a href="#methods">Accessing .NET methods, properties, and fields</a>
-    <ol>
-      <li><a href="#invoke"><code>invoke</code></a>
-      <li><a href="#property"><code>property</code></a>
-      <li><a href="#field"><code>field</code></a>
-      <li><a href="#ref"><code>ref</code></a>
-    </ol>
-    <li><a href="#arrays">Arrays and enumerations</a>
-    <ol>
-      <li><a href="#aref*"><code>aref*</code></a>
-      <li><a href="#do-rdnzl-array"><code>do-rdnzl-array</code></a>
-      <li><a href="#list-to-rdnzl-array"><code>list-to-rdnzl-array</code></a>
-      <li><a href="#rdnzl-array-to-list"><code>rdnzl-array-to-list</code></a>
-      <li><a href="#integer-to-enum"><code>integer-to-enum</code></a>
-      <li><a href="#enum-to-integer"><code>enum-to-integer</code></a>
-      <li><a href="#or-enums"><code>or-enums</code></a>
-    </ol>
-    <li><a href="#exceptions">Handling of .NET exceptions</a>
-    <ol>
-      <li><a href="#rdnzl-error"><code>rdnzl-error</code></a>
-      <li><a href="#rdnzl-error-exception"><code>rdnzl-error-exception</code></a>
-      <li><a href="#rdnzl-handler-case"><code>rdnzl-handler-case</code></a>
-    </ol>
-    <li><a href="#types">Type names and assemblies</a>
-    <ol>
-      <li><a href="#import-type"><code>import-type</code></a>
-      <li><a href="#load-assembly"><code>load-assembly</code></a>
-      <li><a href="#import-assembly"><code>import-assembly</code></a>
-      <li><a href="#import-types"><code>import-types</code></a>
-      <li><a href="#use-namespace"><code>use-namespace</code></a>
-      <li><a href="#unuse-namespace"><code>unuse-namespace</code></a>
-      <li><a href="#unuse-all-namespaces"><code>unuse-all-namespaces</code></a>
-    </ol>
-    <li><a href="#reader">Special reader syntax</a>
-    <ol>
-      <li><a href="#enable-rdnzl-syntax"><code>enable-rdnzl-syntax</code></a>
-      <li><a href="#disable-rdnzl-syntax"><code>disable-rdnzl-syntax</code></a>
-    </ol>
-    <li><a href="#direct">Direct calls</a>
-    <ol>
-      <li><a href="#define-rdnzl-call"><code>define-rdnzl-call</code></a>
-    </ol>
-    <li><a href="#delivery">Saving images and application delivery</a>
-    <ol>
-      <li><a href="#shutdown-rdnzl"><code>shutdown-rdnzl</code></a>
-      <li><a href="#init-rdnzl"><code>init-rdnzl</code></a>
-    </ol>
-  </ol>
-  <li><a href="#details">Implementation details and things to watch out for</a>
-  <li><a href="#ack">Acknowledgements</a>
-</ol>
-
-<br> <br><h3><a class=none name="examples">Examples</a></h3>
-
-Here's a short example session (using <a href="#implementations">AllegroCL</a>):
-
-<pre>
-<img alt="The Message Box" title="The Message Box" align=right border=0 vspace=10 hspace=10 width=185 height=100 src="box.png">CL-USER(1): <a class=noborder href="#download">(load "/home/lisp/RDNZL/load.lisp")</a>
-<font color=orange>; Loading C:\home\lisp\RDNZL\load.lisp
-;   Fast loading C:\home\lisp\RDNZL\packages.fasl
-;   Fast loading C:\home\lisp\RDNZL\specials.fasl
-;   Fast loading C:\home\lisp\RDNZL\util.fasl
-;   Fast loading C:\home\lisp\RDNZL\port-acl.fasl
-;     Fast loading from bundle code\IORDEFS.fasl.
-;       Fast loading from bundle code\EFMACS.fasl.
-;   Fast loading C:\home\lisp\RDNZL\ffi.fasl
-;     Foreign loading RDNZL.dll.
-;   Fast loading C:\home\lisp\RDNZL\container.fasl
-;   Fast loading C:\home\lisp\RDNZL\reader.fasl
-;   Fast loading C:\home\lisp\RDNZL\arrays.fasl
-;   Fast loading C:\home\lisp\RDNZL\adapter.fasl
-;   Fast loading C:\home\lisp\RDNZL\import.fasl</font>
-T
-CL-USER(2): (use-package :rdnzl)
-T
-CL-USER(3): (<a class=noborder href="#enable-rdnzl-syntax">enable-rdnzl-syntax</a>)
-CL-USER(4): (<a class=noborder href="#import-types">import-types</a> "System.Windows.Forms"
-                          "MessageBox" "MessageBoxButtons" "DialogResult")
-NIL
-CL-USER(5): (<a class=noborder href="#use-namespace">use-namespace</a> "System.Windows.Forms")
-CL-USER(6): (defun message-box (text &optional (caption "RDNZL"))
-              <font color=orange>;; check if the "OK" button was pressed</font>
-              [Equals [MessageBox.Show text caption
-                                       <font color=orange>;; we want the message box to have "OK" and "Cancel" buttons</font>
-                                       [$MessageBoxButtons.OKCancel]]
-                      [$DialogResult.OK]])
-MESSAGE-BOX
-CL-USER(7): (message-box "Hello World!") <font color=orange>;; user presses "OK" button</font>
-T
-CL-USER(8): (message-box "Hello World!") <font color=orange>;; user presses "Cancel" button</font>
-NIL
-</pre>
-
-(Note: All examples shown here are included in the <code>examples</code> folder of the distribution.)
-<p>
-For a more interesting example which interacts with custom .NET code
-and demonstrates callbacks into Lisp consider the .NET library
-<code>AproposGUI.dll</code> (put it into your Lisp's application folder) created
-with this C# code:
-
-<pre>
-// compile this with:
-//   csc.exe /target:library AproposGui.cs
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Windows.Forms;
-
-namespace AproposGUI {
-  public class AproposControl : System.Windows.Forms.UserControl {
-    public System.Windows.Forms.TextBox textBox;
-    public System.Windows.Forms.TextBox listBox;
-    private System.Windows.Forms.Label label;
-    public System.Windows.Forms.Label title;
-    private delegate string callback(string input);
-
-    private System.ComponentModel.Container components = null;
-    
-    public AproposControl() {
-      InitializeComponent();
-    }
-
-    protected override void Dispose(bool disposing) {
-      if (disposing) {
-        if (components != null)
-          components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    private void InitializeComponent() {
-      this.textBox = new System.Windows.Forms.TextBox();
-      this.listBox = new System.Windows.Forms.TextBox();
-      this.label = new System.Windows.Forms.Label();
-      this.title = new System.Windows.Forms.Label();
-      this.SuspendLayout();
-
-      this.textBox.Location = new System.Drawing.Point(16, 344);
-      this.textBox.Name = "textBox";
-      this.textBox.Size = new System.Drawing.Size(584, 20);
-      this.textBox.TabIndex = 0;
-      this.textBox.Text = "";
-
-      this.listBox.Location = new System.Drawing.Point(16, 56);
-      this.listBox.Multiline = true;
-      this.listBox.Name = "listBox";
-      this.listBox.ReadOnly = true;
-      this.listBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
-      this.listBox.Size = new System.Drawing.Size(584, 248);
-      this.listBox.TabIndex = 1;
-      this.listBox.Text = "";
-
-      this.label.Location = new System.Drawing.Point(24, 312);
-      this.label.Name = "label";
-      this.label.Size = new System.Drawing.Size(576, 23);
-      this.label.TabIndex = 2;
-      this.label.Text = "Enter text below and press RETURN";
-      this.label.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
-
-      this.title.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
-      this.title.Location = new System.Drawing.Point(24, 16);
-      this.title.Name = "title";
-      this.title.Size = new System.Drawing.Size(568, 24);
-      this.title.TabIndex = 3;
-      this.title.Text = "RDNZL Apropos Demo";
-      this.title.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
-
-      this.Controls.Add(this.title);
-      this.Controls.Add(this.label);
-      this.Controls.Add(this.listBox);
-      this.Controls.Add(this.textBox);
-      this.Name = "MainControl";
-      this.Size = new System.Drawing.Size(616, 384);
-      this.ResumeLayout(false);
-    }
-  }
-}
-</pre>
-
-Now load <a class=none name="apropos"><code>examples/apropos.lisp</code></a> which looks like this:
-
-<pre>
-<img alt="Another Message Box" title="Another Message Box" align=right border=0 vspace=10 hspace=10 width=308 height=100 src="box2.png">(in-package :cl-user)
-
-(use-package :rdnzl)
-
-(<a class=noborder href="#enable-rdnzl-syntax">enable-rdnzl-syntax</a>)
-
-(<a class=noborder href="#import-types">import-types</a> "System.Windows.Forms"
-              "Application" "DockStyle" "Form" "MessageBox" "KeyPressEventHandler" "TextBox")
-
-(import-types "AproposGUI"
-              "AproposControl")
-
-(<a class=noborder href="#use-namespace">use-namespace</a> "System.Windows.Forms")
-(use-namespace "AproposGUI")
-
-(defun copy-to-clipboard (text-box)
-  (let ((selection-start [%SelectionStart text-box])
-        (selection-length [%SelectionLength text-box])
-        (text-length [%Length (box [%Text text-box])]))
-    (setf [%SelectionStart text-box] 0
-          [%SelectionLength text-box] text-length)
-    [Copy text-box]
-    (setf [%SelectionStart text-box] selection-start
-          [%SelectionLength text-box] selection-length)))
-
-(let (message-shown)
-  (defun fill-list-box (object event)
-    (when (char= [%KeyChar event] #\Return)
-      (cast object "TextBox")
-      (let* ((input-string [%Text object])
-             (input-length (length input-string)))
-        (when (plusp input-length)
-          (let ((apropos-text
-                  (with-output-to-string (*standard-output*)
-                    (apropos input-string)))
-                (list-box [$listBox (cast [%Parent object] "AproposControl")]))
-            (setf [%Text list-box] apropos-text)
-            (copy-to-clipboard list-box)
-            (unless message-shown
-              [MessageBox.Show "The output of APROPOS has been copied to the clipboard."
-                               "RDNZL"]
-              (setq message-shown t)))
-          (setf [%SelectionStart object] 0
-                [%SelectionLength object] input-length))))))
-
-(defun run-apropos-form ()
-  (let* ((control (new "AproposControl"))
-         (form (new "Form")))
-    (setf [%Dock control] [$DockStyle.Fill]
-          [%ClientSize form] [%ClientSize control]
-          [%Text form] "RDNZL Apropos Demo"
-          [%Text [$title control]]
-            (format nil "RDNZL Apropos Demo (~A)"
-                    (lisp-implementation-type)))
-    [+KeyPress [$textBox control]
-               (new "KeyPressEventHandler" #'fill-list-box)]
-    [Add [%Controls form] control]
-    [Application.Run form]))
-
-(<a class=noborder href="#disable-rdnzl-syntax">disable-rdnzl-syntax</a>)
-</pre>
-
-and evaluate <code>(RUN-APROPOS-FORM)</code>. If you want to try this
-several times, start the function in its own thread. In AllegroCL or LispWorks
-that'd be:
-
-<pre>
-(mp:process-run-function "apropos" #+:lispworks nil #'run-apropos-form)
-</pre>
-
-The last example shows how easy it is to access web pages using the
-.NET standard library:
-
-<pre>
-CL-USER(9): (<a class=noborder href="#import-types">import-types</a> "System" "Net.WebClient")
-NIL
-CL-USER(10): (defun download-url (url)
-               (let ((web-client (new "System.Net.WebClient")))
-                 [GetString (new "System.Text.ASCIIEncoding")
-                            [DownloadData web-client url]]))
-DOWNLOAD-URL
-CL-USER(11): (download-url "http://nanook.agharta.de/")
-"<HTML>
-<HEAD>
-<META HTTP-EQUIV=\"refresh\" CONTENT=\"5;URL=http://www.weitz.de/\">
-</HEAD>
-<BODY><center>
-<table border=3 bordercolor=green cellpadding=5 cellspacing=5><tr><td align=center>
-<pre>
-Linux nanook 2.6.7 #1 Thu Jul 22 01:01:58 CEST 2004 i686 GNU/Linux
-
- 01:23:23 up 100 days, 19:43,  0 users,  load average: 0.00, 0.00, 0.00
-
-</pre>
-        </td></tr></table></center>
-
-</BODY>
-</HTML>
-"
-</pre>
-
-A bit more evolved:
-
-<pre>
-CL-USER(12): (<a class=noborder href="#import-types">import-types</a> "System" "Net.WebException")
-NIL
-CL-USER(13): (<a class=noborder href="#use-namespace">use-namespace</a> "System.Net")
-CL-USER(14): (defun download-url (url)
-               (<a class=noborder href="#rdnzl-handler-case">rdnzl-handler-case</a>
-                  (let ((web-client (new "WebClient")))
-                    [GetString (new "System.Text.ASCIIEncoding")
-                               [DownloadData web-client url]])
-                 ("WebException" (e)
-                   (warn "Ooops, probably a typo: ~A" [%Message e])
-                   nil)))
-DOWNLOAD-URL
-CL-USER(15): (download-url "http://nanook.aharta.de/")
-Warning: Ooops, probably a typo:
-         The underlying connection was closed: The remote name could not be resolved.
-NIL
-</pre>
-
-This'll also work with https URLs.
-
-
-
-<br> <br><h3><a class=none name="download">Download and installation</a></h3>
-
-RDNZL together with this documentation can be downloaded from
-<a href="http://weitz.de/files/RDNZL.tar.gz">http://weitz.de/files/RDNZL.tar.gz</a>, the current version is 0.8.0.  It
-doesn't depend on any other Lisp libraries.  The C++ source for the
-shared library <code>RDNZL.dll</code> can be downloaded separately from
-<a href="http://weitz.de/files/RDNZL_cpp.tar.gz">http://weitz.de/files/RDNZL_cpp.tar.gz</a> but you don't need this archive
-to deploy RDNZL - <code>RDNZL.tar.gz</code> already contains <code>RDNZL.dll</code>.
-You can also access the current RDNZL source code (Lisp and C++) via <a href="http://common-lisp.net/cgi-bin/viewcvs.cgi/?cvsroot=rdnzl">CVS</a>.
-<p>
-Before you load RDNZL make sure you have the <a href="http://msdn.microsoft.com/netframework/downloads/framework1_1/">.NET framework</a> installed.
-Then move the file <code>RDNZL.dll</code> to a location where your Lisp's FFI will
-find it - the folder where your Lisp executable is located is
-generally a good place for that.
-<p>
-Now, to compile and load RDNZL just <a href="http://www.lispworks.com/documentation/HyperSpec/Body/f_load.htm"><code>LOAD</code></a> the file <code>load.lisp</code> - that's
-all.  (Or alternatively use <a href="http://www.cliki.net/asdf">ASDF</a> if you like - RDNZL comes with a
-system definition for ASDF.)
-<p>
-Oh, and - for the moment - <em>don't</em> use <a
-href="http://common-lisp.net/project/slime/">SLIME</a> together with
-LispWorks when loading RDNZL - see <a href="http://common-lisp.net/pipermail/slime-devel/2004-December/002877.html">this message</a> for an explanation.
-
-
-<br> <br><h3><a name="mail" class=none>Support and mailing lists</a></h3>

[1766 lines skipped]




More information about the Rdnzl-cvs mailing list