Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > e3d62627d1d1aab7ab1be2dd7f65a872 > files > 321

ecl-10.4.1-1.fc14.x86_64.rpm

<html><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968"><title>The ECL manual</title><link rel="stylesheet" href="ecl.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="The ECL manual"><link rel="next" href="pr01.html" title="Preface"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The <span class="application">ECL</span> manual</th></tr><tr><td width="20%" align="left">&#160;</td><th width="60%" align="center">&#160;</th><td width="20%" align="right">&#160;<a accesskey="n" href="pr01.html">Next</a></td></tr></table><hr></div><div lang="en" class="book" title="The ECL manual"><div class="titlepage"><div><div><h1 class="title"><a name="id596218"></a>The <span class="application">ECL</span> manual</h1></div><div><div class="author"><h3 class="author"><span class="firstname">Juan Jose</span> <span class="surname">Garcia-Ripoll</span></h3></div></div></div><hr></div><div class="toc"><dl><dt><span class="preface"><a href="pr01.html">Preface</a></span></dt><dd><dl><dt><span class="section"><a href="pr01.html#preface.words">1. About this book</a></span></dt><dt><span class="section"><a href="pr01s02.html">2. What is <span class="application">ECL</span>?</a></span></dt><dt><span class="section"><a href="pr01s03.html">3. History</a></span></dt><dt><span class="section"><a href="pr01s04.html">4. Copyright of ECL</a></span></dt><dt><span class="section"><a href="pr01s05.html">5. Copyright of this manual</a></span></dt><dt><span class="section"><a href="pr01s06.html">6. Installation</a></span></dt><dd><dl><dt><span class="section"><a href="pr01s06.html#preface.platforms">6.1. Supported platforms</a></span></dt><dt><span class="section"><a href="pr01s06.html#preface.autoconf">6.2. Autoconf based configuration</a></span></dt><dt><span class="section"><a href="pr01s06.html#preface.osdep">6.3. Platform specific instructions</a></span></dt><dd><dl><dt><span class="section"><a href="pr01s06.html#preface.msvc">6.3.1. Windows with Visual C++ compiler</a></span></dt><dt><span class="section"><a href="pr01s06.html#preface.mingw">6.3.2. Windows with Mingw/Cygwin</a></span></dt><dt><span class="section"><a href="pr01s06.html#preface.netbsd">6.3.3. NetBSD</a></span></dt><dt><span class="section"><a href="pr01s06.html#preface.bsd">6.3.4. OpenBSD and FreeBSD</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="pt01.html">I. Standards</a></span></dt><dd><dl><dt><span class="chapter"><a href="ch01.html">1. Overview</a></span></dt><dt><span class="chapter"><a href="ch02.html">2. Evaluation and compilation</a></span></dt><dd><dl><dt><span class="section"><a href="ch02.html#ansi.declarations">2.1. Declarations</a></span></dt><dd><dl><dt><span class="section"><a href="ch02.html#ansi.declarations.optimize">2.1.1. <code class="function">OPTIMIZE</code></a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch03.html">3. Data and control flow</a></span></dt><dd><dl><dt><span class="section"><a href="ch03.html#ansi.minimal-compilation">3.1. Minimal compilation</a></span></dt><dt><span class="section"><a href="ch03s02.html">3.2. Functions</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch04.html">4. Symbols</a></span></dt><dt><span class="chapter"><a href="ch05.html">5. Packages</a></span></dt><dt><span class="chapter"><a href="ch06.html">6. Numbers</a></span></dt><dd><dl><dt><span class="section"><a href="ch06.html#sec.ansi.number-types">6.1. Numeric types</a></span></dt><dt><span class="section"><a href="ch06s02.html">6.2. Random-States</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch07.html">7. Characters</a></span></dt><dd><dl><dt><span class="section"><a href="ch07.html#ansi.character-types">7.1. Character types</a></span></dt><dt><span class="section"><a href="ch07s02.html">7.2. Character names</a></span></dt><dt><span class="section"><a href="ch07s03.html">7.3. Line Divisions</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch08.html">8. Arrays</a></span></dt><dd><dl><dt><span class="section"><a href="ch08.html#sec.ansi.array-limits">8.1. Array limits</a></span></dt><dt><span class="section"><a href="ch08s02.html">8.2. Specializations</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch09.html">9. Strings</a></span></dt><dt><span class="chapter"><a href="ch10.html">10. Hash tables</a></span></dt><dt><span class="chapter"><a href="ch11.html">11. Pathnames</a></span></dt><dd><dl><dt><span class="section"><a href="ch11.html#sec.ansi.pathnames.syntax">11.1. Syntax</a></span></dt><dt><span class="section"><a href="ch11s02.html">11.2. Wild pathnames and matching</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch12.html">12. Files</a></span></dt><dd><dl><dt><span class="section"><a href="ch12.html#sec.ansi.resolving">12.1. Mapping pathnames to files</a></span></dt><dt><span class="section"><a href="ch12s02.html">12.2. Dictionary</a></span></dt><dd><dl><dt><span class="section"><a href="ch12s02.html#sec.ansi.files.directory">12.2.1. <code class="function">DIRECTORY</code></a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch13.html">13. Streams</a></span></dt><dd><dl><dt><span class="section"><a href="ch13.html#sec.ansi.streams.types">13.1. Stream types</a></span></dt><dt><span class="section"><a href="ch13s02.html">13.2. Input/Output model</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch14.html">14. Printer</a></span></dt><dt><span class="chapter"><a href="ch15.html">15. Environment</a></span></dt><dd><dl><dt><span class="section"><a href="ch15.html#ansi.environment.dict">15.1. Dictionary</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="re01.html"><code class="function">disassemble</code></a></span><span class="refpurpose"> &#8212; Display the assembly code of a function</span></dt><dt><span class="refentrytitle"><a href="re02.html"><code class="function">trace</code></a></span><span class="refpurpose"> &#8212; Follow execution of functions</span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="pt02.html">II. Extensions and libraries</a></span></dt><dd><dl><dt><span class="chapter"><a href="ch16.html">1. System building</a></span></dt><dd><dl><dt><span class="section"><a href="ch16.html#ext.asdf.intro">1.1. Introduction</a></span></dt><dt><span class="section"><a href="ch16s02.html">1.2. System definition files</a></span></dt><dt><span class="section"><a href="ch16s03.html">1.3. Practical examples</a></span></dt><dt><span class="section"><a href="ch16s04.html">1.4. ASDF Reference</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="re03.html"><code class="function">asdf:make-build</code></a></span><span class="refpurpose"> &#8212; Block-build an <span class="application">ASDF</span> system definition</span></dt><dt><span class="refentrytitle"><a href="re04.html"><code class="function">asdf:load-fasl-op</code></a></span><span class="refpurpose"> &#8212; Compile and load one ore more libraries using unified <acronym class="acronym">FASL</acronym></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch17.html">2. Operating System Interface</a></span></dt><dd><dl><dt><span class="section"><a href="ch17.html#ext.os.processes">2.1. Processes</a></span></dt><dt><span class="section"><a href="ch17s02.html">2.2. Command line arguments</a></span></dt><dt><span class="section"><a href="ch17s03.html">2.3. OS Reference</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="re05.html"><code class="varname">ext:*help-message*</code></a></span><span class="refpurpose"> &#8212; Command line help message</span></dt><dt><span class="refentrytitle"><a href="re06.html"><code class="varname">ext:*lisp-init-file-list*</code></a></span><span class="refpurpose"> &#8212; <span class="application">ECL</span> initialization files.</span></dt><dt><span class="refentrytitle"><a href="re07.html"><code class="varname">ext:+default-command-arg-rules+</code></a></span><span class="refpurpose"> &#8212; <span class="application">ECL</span> command line options</span></dt><dt><span class="refentrytitle"><a href="re08.html"><code class="function">ext:command-args</code></a></span><span class="refpurpose"> &#8212; List of command line arguments.</span></dt><dt><span class="refentrytitle"><a href="re09.html"><code class="function">ext:process-command-args</code></a></span><span class="refpurpose"> &#8212; Process command line arguments.</span></dt><dt><span class="refentrytitle"><a href="re10.html"><code class="function">ext:quit</code></a></span><span class="refpurpose"> &#8212; Exit <span class="application">ECL</span>.</span></dt><dt><span class="refentrytitle"><a href="re11.html"><code class="function">ext:run-program</code></a></span><span class="refpurpose"> &#8212; Start and communicate with a child process.</span></dt><dt><span class="refentrytitle"><a href="re12.html"><code class="function">ext:system</code></a></span><span class="refpurpose"> &#8212; Invoke a command using the shell.</span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch18.html">3. Foreign Function Interface</a></span></dt><dd><dl><dt><span class="section"><a href="ch18.html#ext.ffi.what">3.1. What is a FFI?</a></span></dt><dt><span class="section"><a href="ch18s02.html">3.2. Two kinds of FFI</a></span></dt><dt><span class="section"><a href="ch18s03.html">3.3. Foreign objects</a></span></dt><dt><span class="section"><a href="ch18s04.html">3.4. Higher level interfaces</a></span></dt><dd><dl><dt><span class="section"><a href="ch18s04.html#ext.ffi.uffi-example">3.4.1. UFFI example</a></span></dt><dt><span class="section"><a href="ch18s04.html#ext.ffi.cffi-example">3.4.2. CFFI example</a></span></dt><dt><span class="section"><a href="ch18s04.html#ext.ffi.ecl-example">3.4.3. Low level example</a></span></dt></dl></dd><dt><span class="section"><a href="ch18s05.html">3.5. FFI Reference</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="re13.html"><code class="function">ffi:clines</code></a></span><span class="refpurpose"> &#8212; Insert C declarations and definitions</span></dt><dt><span class="refentrytitle"><a href="re14.html"><code class="function">ffi:c-inline</code></a></span><span class="refpurpose"> &#8212; Inline C code in a lisp form.</span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch19.html">4. Multithreading</a></span></dt><dd><dl><dt><span class="section"><a href="ch19.html#ext.mp.threads">4.1. Tasks, threads or processes</a></span></dt><dt><span class="section"><a href="ch19s02.html">4.2. MP Reference</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="re15.html"><code class="function">mp:all-processes</code></a></span><span class="refpurpose"> &#8212; Return the list of active processes.</span></dt><dt><span class="refentrytitle"><a href="re16.html"><code class="function">mp:exit-process</code></a></span><span class="refpurpose"> &#8212; Exit the task from which it is invoked.</span></dt><dt><span class="refentrytitle"><a href="re17.html"><code class="function">mp:interrupt-process</code></a></span><span class="refpurpose"> &#8212; Interrupt a task.</span></dt><dt><span class="refentrytitle"><a href="re18.html"><code class="function">mp:get-lock</code></a></span><span class="refpurpose"> &#8212; Try to obtain a lock.</span></dt><dt><span class="refentrytitle"><a href="re19.html"><code class="function">mp:giveup-lock</code></a></span><span class="refpurpose"> &#8212; Release a lock we have obtained before.</span></dt><dt><span class="refentrytitle"><a href="re20.html"><code class="function">mp:make-lock</code></a></span><span class="refpurpose"> &#8212; Create a new lock.</span></dt><dt><span class="refentrytitle"><a href="re21.html"><code class="function">mp:make-process</code></a></span><span class="refpurpose"> &#8212; Create a new thread.</span></dt><dt><span class="refentrytitle"><a href="re22.html"><code class="function">mp:process-active-p</code></a></span><span class="refpurpose"> &#8212; Determine whether a task is running.</span></dt><dt><span class="refentrytitle"><a href="re23.html"><code class="function">mp:process-enable</code></a></span><span class="refpurpose"> &#8212; Start up a task which was not running.</span></dt><dt><span class="refentrytitle"><a href="re24.html"><code class="function">mp:process-kill</code></a></span><span class="refpurpose"> &#8212; Try to stop a running task.</span></dt><dt><span class="refentrytitle"><a href="re25.html"><code class="function">mp:process-name</code></a></span><span class="refpurpose"> &#8212; Return the name of a task.</span></dt><dt><span class="refentrytitle"><a href="re26.html"><code class="function">mp:process-preset</code></a></span><span class="refpurpose"> &#8212; Associate a function to a process.</span></dt><dt><span class="refentrytitle"><a href="re27.html"><code class="function">mp:process-run-function</code></a></span><span class="refpurpose"> &#8212; Create a task and execute a function in it.</span></dt><dt><span class="refentrytitle"><a href="re28.html"><code class="function">mp:with-lock</code></a></span><span class="refpurpose"> &#8212; Synchronize a piece of code between different tasks.</span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch20.html">5. Memory Management</a></span></dt><dd><dl><dt><span class="section"><a href="ch20.html#ext.memory.intro">5.1. Introduction</a></span></dt><dt><span class="section"><a href="ch20s02.html">5.2. Boehm-Weiser garbage collector</a></span></dt><dt><span class="section"><a href="ch20s03.html">5.3. Memory limits</a></span></dt><dt><span class="section"><a href="ch20s04.html">5.4. Memory Conditions</a></span></dt><dt><span class="section"><a href="ch20s05.html">5.5. Finalization</a></span></dt><dt><span class="section"><a href="ch20s06.html">5.6. Memory Management Reference</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="re29.html"><code class="classname">ext:stack-overflow</code></a></span><span class="refpurpose"> &#8212; Stack overflow condition.</span></dt><dt><span class="refentrytitle"><a href="re30.html"><code class="classname">ext:storage-exhausted</code></a></span><span class="refpurpose"> &#8212; Memory overflow condition.</span></dt><dt><span class="refentrytitle"><a href="re31.html"><code class="function">ext:get-finalizer</code></a></span><span class="refpurpose"> &#8212; Return finalizer associated to an object.</span></dt><dt><span class="refentrytitle"><a href="re32.html"><code class="function">ext:get-limit</code></a></span><span class="refpurpose"> &#8212; Query a memory or stack limit.</span></dt><dt><span class="refentrytitle"><a href="re33.html"><code class="function">ext:set-finalizer</code></a></span><span class="refpurpose"> &#8212; Associate a finalizer to an object.</span></dt><dt><span class="refentrytitle"><a href="re34.html"><code class="function">ext:set-limit</code></a></span><span class="refpurpose"> &#8212; Set a memory or stack limit.</span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch21.html">6. Meta-Object Protocol (MOP)</a></span></dt><dd><dl><dt><span class="section"><a href="ch21.html#ext.mop.intro">6.1. Introduction</a></span></dt><dt><span class="section"><a href="ch21s02.html">6.2. Classes</a></span></dt><dt><span class="section"><a href="ch21s03.html">6.3. Slots</a></span></dt><dt><span class="section"><a href="ch21s04.html">6.4. Generic functions and methods</a></span></dt><dt><span class="section"><a href="ch21s05.html">6.5. Sealed slots and classes</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch22.html">7. Signals and interrupts</a></span></dt><dd><dl><dt><span class="section"><a href="ch22.html#ext.signals.intro">7.1. Problems associated to signals</a></span></dt><dt><span class="section"><a href="ch22s02.html">7.2. Kinds of signals</a></span></dt><dd><dl><dt><span class="section"><a href="ch22s02.html#ext.signals.synchronous">7.2.1. Synchronous signals</a></span></dt><dt><span class="section"><a href="ch22s02.html#ext.signals.asynchronous">7.2.2. Asynchronous signals</a></span></dt></dl></dd><dt><span class="section"><a href="ch22s03.html">7.3. Signals and interrupts in <span class="application">ECL</span></a></span></dt><dd><dl><dt><span class="section"><a href="ch22s03.html#ext.signals.asynchronous-handler">7.3.1. Handling of asynchronous signals</a></span></dt><dt><span class="section"><a href="ch22s03.html#ext.signals.synchronous-handler">7.3.2. Handling of synchronous signals</a></span></dt></dl></dd><dt><span class="section"><a href="ch22s04.html">7.4. Considerations when embedding <span class="application">ECL</span></a></span></dt><dt><span class="section"><a href="ch22s05.html">7.5. Signals Reference</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="re35.html"><code class="function">ext:with-interrupts</code></a></span><span class="refpurpose"> &#8212; Execute code with interrupts optionally enabled.</span></dt><dt><span class="refentrytitle"><a href="re36.html"><code class="function">ext:without-interrupts</code></a></span><span class="refpurpose"> &#8212; Execute code without being interrupted.</span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch23.html">8. Embedding <span class="application">ECL</span></a></span></dt><dd><dl><dt><span class="section"><a href="ch23.html#ext.embed.intro">8.1. Introduction</a></span></dt><dt><span class="section"><a href="ch23s02.html">8.2. Embedding Reference</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="re37.html"><code class="function">CL_CATCH_ALL</code></a></span><span class="refpurpose"> &#8212; Create a protected region.</span></dt><dt><span class="refentrytitle"><a href="re38.html"><code class="function">CL_UNWIND_PROTECT</code></a></span><span class="refpurpose"> &#8212; Create a protected region.</span></dt><dt><span class="refentrytitle"><a href="re39.html"><code class="function">cl_boot</code></a></span><span class="refpurpose"> &#8212; Setup the lisp environment.</span></dt><dt><span class="refentrytitle"><a href="re40.html"><code class="function">cl_shutdown</code></a></span><span class="refpurpose"> &#8212; Close the lisp environment.</span></dt><dt><span class="refentrytitle"><a href="re41.html"><code class="function">ecl_set_option</code></a></span><span class="refpurpose"> &#8212; Set a boot option.</span></dt><dt><span class="refentrytitle"><a href="re42.html"><code class="function">ecl_get_option</code></a></span><span class="refpurpose"> &#8212; Read the value of a boot option.</span></dt><dt><span class="refentrytitle"><a href="re43.html"><code class="function">ecl_clear_interrupts</code></a></span><span class="refpurpose"> &#8212; Clear all pending signals and exceptions.</span></dt><dt><span class="refentrytitle"><a href="re44.html"><code class="function">ecl_disable_interrupts</code></a></span><span class="refpurpose"> &#8212; Postpone handling of signals and exceptions.</span></dt><dt><span class="refentrytitle"><a href="re45.html"><code class="function">ecl_enable_interrupts</code></a></span><span class="refpurpose"> &#8212; Activate handling of signals and exceptions.</span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="pt03.html">III. Internals</a></span></dt><dd><dl><dt><span class="chapter"><a href="ch24.html">1. Building programs</a></span></dt><dd><dl><dt><span class="section"><a href="ch24.html#Internals-What-can-ECL-do-">1.1. What can <span class="application">ECL</span> do?</a></span></dt><dt><span class="section"><a href="ch24s02.html">1.2. Compiling files</a></span></dt><dt><span class="section"><a href="ch24s03.html">1.3. Building standalone executables</a></span></dt><dt><span class="section"><a href="ch24s04.html">1.4. Building libraries</a></span></dt><dt><span class="section"><a href="ch24s05.html">1.5. File names</a></span></dt><dt><span class="section"><a href="ch24s06.html">1.6. Compiler examples</a></span></dt><dd><dl><dt><span class="section"><a href="ch24s06.html#id675955">1.6.1. The <code class="filename">hello.lisp</code> file</a></span></dt><dt><span class="section"><a href="ch24s06.html#id676016">1.6.2. Example of loadable object file</a></span></dt><dt><span class="section"><a href="ch24s06.html#id676095">1.6.3. Example of standalone program</a></span></dt><dt><span class="section"><a href="ch24s06.html#id676201">1.6.4. Combining files into a larger FASL</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch25.html">2. Manipulating Lisp objects</a></span></dt><dd><dl><dt><span class="section"><a href="ch25.html#Internals-Objects-representation">2.1. Objects representation</a></span></dt><dt><span class="section"><a href="ch25s02.html">2.2. Constructing objects</a></span></dt><dt><span class="section"><a href="ch25s03.html">2.3. Integers</a></span></dt><dt><span class="section"><a href="ch25s04.html">2.4. Characters</a></span></dt><dt><span class="section"><a href="ch25s05.html">2.5. Arrays</a></span></dt><dt><span class="section"><a href="ch25s06.html">2.6. Strings</a></span></dt><dt><span class="section"><a href="ch25s07.html">2.7. Bitvectors</a></span></dt><dt><span class="section"><a href="ch25s08.html">2.8. Streams</a></span></dt><dt><span class="section"><a href="ch25s09.html">2.9. Structures</a></span></dt><dt><span class="section"><a href="ch25s10.html">2.10. Instances</a></span></dt><dt><span class="section"><a href="ch25s11.html">2.11. Bytecodes</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch26.html">3. The interpreter</a></span></dt><dd><dl><dt><span class="section"><a href="ch26.html#Internals-ECL-stacks">3.1. <span class="application">ECL</span> stacks</a></span></dt><dt><span class="section"><a href="ch26s02.html">3.2. Procedure Call Conventions</a></span></dt><dt><span class="section"><a href="ch26s03.html">3.3. The lexical environment</a></span></dt><dt><span class="section"><a href="ch26s04.html">3.4. The interpreter stack</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch27.html">4. The compiler</a></span></dt><dd><dl><dt><span class="section"><a href="ch27.html#Internals-The-compiler-translates-to-C">4.1. The compiler translates to C</a></span></dt><dt><span class="section"><a href="ch27s02.html">4.2. The compiler mimics human C programmer</a></span></dt><dt><span class="section"><a href="ch27s03.html">4.3. Implementation of Compiled Closures</a></span></dt><dt><span class="section"><a href="ch27s04.html">4.4. Use of Declarations to Improve Efficiency</a></span></dt><dt><span class="section"><a href="ch27s05.html">4.5. Inspecting generated C code</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch28.html">5. Porting <span class="application">ECL</span></a></span></dt></dl></dd><dt><span class="part"><a href="pt04.html">IV. UFFI Reference</a></span></dt><dd><dl><dt><span class="reference"><a href="rn01.html">I. Primitive Types</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="rn01re46.html"><code class="function">def-constant</code></a></span><span class="refpurpose"> &#8212; Binds a symbol to a constant. 
    </span></dt><dt><span class="refentrytitle"><a href="rn01re47.html"><code class="function">def-foreign-type</code></a></span><span class="refpurpose"> &#8212; Defines a new foreign type. 
    </span></dt><dt><span class="refentrytitle"><a href="rn01re48.html"><code class="function">null-char-p</code></a></span><span class="refpurpose"> &#8212; Tests a character for <code class="constant">NULL</code> value.
    </span></dt></dl></dd><dt><span class="reference"><a href="rn02.html">II. Aggregate Types</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="rn02re49.html"><code class="function">def-enum</code></a></span><span class="refpurpose"> &#8212; Defines a <acronym class="acronym">C</acronym> enumeration.
    </span></dt><dt><span class="refentrytitle"><a href="rn02re50.html"><code class="function">def-struct</code></a></span><span class="refpurpose"> &#8212; Defines a <acronym class="acronym">C</acronym> structure.
    </span></dt><dt><span class="refentrytitle"><a href="rn02re51.html"><code class="function">get-slot-value</code></a></span><span class="refpurpose"> &#8212; Retrieves a value from a slot of a structure.
    </span></dt><dt><span class="refentrytitle"><a href="rn02re52.html"><code class="function">get-slot-pointer</code></a></span><span class="refpurpose"> &#8212; Retrieves a pointer from a slot of a structure.
    </span></dt><dt><span class="refentrytitle"><a href="rn02re53.html"><code class="function">def-array-pointer</code></a></span><span class="refpurpose"> &#8212; Defines a pointer to a array of type.
    </span></dt><dt><span class="refentrytitle"><a href="rn02re54.html"><code class="function">deref-array</code></a></span><span class="refpurpose"> &#8212; Deference an array.
    </span></dt><dt><span class="refentrytitle"><a href="rn02re55.html"><code class="function">def-union</code></a></span><span class="refpurpose"> &#8212; Defines a foreign union type.
    </span></dt></dl></dd><dt><span class="reference"><a href="rn03.html">III. Objects</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="rn03re56.html"><code class="function">allocate-foreign-object</code></a></span><span class="refpurpose"> &#8212; Allocates an instance of a foreign object.
    </span></dt><dt><span class="refentrytitle"><a href="rn03re57.html"><code class="function">free-foreign-object</code></a></span><span class="refpurpose"> &#8212; Frees memory that was allocated for a foreign boject.
    </span></dt><dt><span class="refentrytitle"><a href="rn03re58.html"><code class="function">with-foreign-object</code></a></span><span class="refpurpose"> &#8212; Wraps the allocation of a foreign object around a body of code.
    </span></dt><dt><span class="refentrytitle"><a href="rn03re59.html"><code class="function">size-of-foreign-type</code></a></span><span class="refpurpose"> &#8212; Returns the number of data bytes used by a foreign object type.
    </span></dt><dt><span class="refentrytitle"><a href="rn03re60.html"><code class="function">pointer-address</code></a></span><span class="refpurpose"> &#8212; Returns the address of a pointer.
    </span></dt><dt><span class="refentrytitle"><a href="rn03re61.html"><code class="function">deref-pointer</code></a></span><span class="refpurpose"> &#8212; Deferences a pointer.
    </span></dt><dt><span class="refentrytitle"><a href="rn03re62.html"><code class="function">ensure-char-character</code></a></span><span class="refpurpose"> &#8212; Ensures that a dereferenced <code class="constant">:char</code> pointer is
    a character.
    </span></dt><dt><span class="refentrytitle"><a href="rn03re63.html"><code class="function">ensure-char-integer</code></a></span><span class="refpurpose"> &#8212; Ensures that a dereferenced <code class="constant">:char</code> pointer is
    an integer.
    </span></dt><dt><span class="refentrytitle"><a href="rn03re64.html"><code class="function">make-null-pointer</code></a></span><span class="refpurpose"> &#8212; Create a <code class="constant">NULL</code> pointer.
    </span></dt><dt><span class="refentrytitle"><a href="rn03re65.html"><code class="function">null-pointer-p</code></a></span><span class="refpurpose"> &#8212; Tests a pointer for <code class="constant">NULL</code> value.
    </span></dt><dt><span class="refentrytitle"><a href="rn03re66.html"><code class="varname">+null-cstring-pointer+</code></a></span><span class="refpurpose"> &#8212; A constant <code class="constant">NULL</code> cstring pointer.
    </span></dt><dt><span class="refentrytitle"><a href="rn03re67.html"><code class="function">with-cast-pointer</code></a></span><span class="refpurpose"> &#8212; Wraps a body of code with a pointer cast to a new type.
    </span></dt><dt><span class="refentrytitle"><a href="rn03re68.html"><code class="function">def-foreign-var</code></a></span><span class="refpurpose"> &#8212; 
     Defines a symbol macro to access a variable in foreign code
    </span></dt></dl></dd><dt><span class="reference"><a href="rn04.html">IV. Strings</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="rn04re69.html"><code class="function">convert-from-cstring</code></a></span><span class="refpurpose"> &#8212; Converts a cstring to a Lisp string.</span></dt><dt><span class="refentrytitle"><a href="rn04re70.html"><code class="function">convert-to-cstring</code></a></span><span class="refpurpose"> &#8212; Converts a Lisp string to a cstring.</span></dt><dt><span class="refentrytitle"><a href="rn04re71.html"><code class="function">free-cstring</code></a></span><span class="refpurpose"> &#8212; Free memory used by cstring.
    </span></dt><dt><span class="refentrytitle"><a href="rn04re72.html"><code class="function">with-cstring</code></a></span><span class="refpurpose"> &#8212; Binds a newly created cstring.</span></dt><dt><span class="refentrytitle"><a href="rn04re73.html"><code class="function">convert-from-foreign-string</code></a></span><span class="refpurpose"> &#8212; Converts a foreign string into a Lisp string.</span></dt><dt><span class="refentrytitle"><a href="rn04re74.html"><code class="function">convert-to-foreign-string</code></a></span><span class="refpurpose"> &#8212; Converts a Lisp string to a foreign string.
    </span></dt><dt><span class="refentrytitle"><a href="rn04re75.html"><code class="function">allocate-foreign-string</code></a></span><span class="refpurpose"> &#8212; Allocates space for a foreign string.
    </span></dt></dl></dd><dt><span class="reference"><a href="rn05.html">V. Functions &amp; Libraries</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="rn05re76.html"><code class="function">def-function</code></a></span><span class="refpurpose"> &#8212; Declares a function. 
    </span></dt><dt><span class="refentrytitle"><a href="rn05re77.html"><code class="function">load-foreign-library</code></a></span><span class="refpurpose"> &#8212; Loads a foreign library. 
    </span></dt><dt><span class="refentrytitle"><a href="rn05re78.html"><code class="function">find-foreign-library</code></a></span><span class="refpurpose"> &#8212; Finds a foreign library file.
    </span></dt></dl></dd></dl></dd><dt><span class="bibliography"><a href="bi01.html">Bibliography</a></span></dt></dl></div><div class="list-of-figures"><p><b>List of Figures</b></p><dl><dt>1. <a href="pr01s03.html#fig.family-tree">ECL's family tree</a></dt><dt>3.1. <a href="ch18s02.html#fig.ffi">FFI components</a></dt></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>1. <a href="pr01s06.html#table.ports">Supported platforms</a></dt><dt>2.1. <a href="ch02.html#table.optimize.debug">Behavior for different leves of DEBUG</a></dt><dt>2.2. <a href="ch02.html#table.optimize.safety">Behavior for different leves of SAFETY</a></dt><dt>3.1. <a href="ch03s02.html#table.function.constants">Function related constants</a></dt><dt>5.1. <a href="ch05.html#table.all-packages">ECL packages</a></dt><dt>6.1. <a href="ch06.html#table.ansi.numbers">Numeric types in <span class="application">ECL</span></a></dt><dt>7.1. <a href="ch07s02.html#table.character-names">Examples of character names</a></dt><dt>9.1. <a href="ch09.html#table.ansi.strings">Common Lisp string types</a></dt><dt>11.1. <a href="ch11.html#id645347">Examples of physical namestrings</a></dt><dt>12.1. <a href="ch12s02.html#id645895">Examples of using <code class="function">DIRECTORY</code></a></dt><dt>14.1. <a href="ch14.html#table.printer">Implementation specific printed representation</a></dt><dt>1.1. <a href="ch16.html#table.make-build">Code distribution models</a></dt><dt>3.1. <a href="ch18s02.html#table.dffi">DFFI support</a></dt><dt>5.1. <a href="re34.html#table.memory.limits">Customizable memory limits</a></dt><dt>8.1. <a href="re41.html#table.boot_options">Boot options for embedded <span class="application">ECL</span></a></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left">&#160;</td><td width="20%" align="center">&#160;</td><td width="40%" align="right">&#160;<a accesskey="n" href="pr01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">&#160;</td><td width="20%" align="center">&#160;</td><td width="40%" align="right" valign="top">&#160;Preface</td></tr></table></div></body></html>