From mevenson at common-lisp.net Tue Nov 1 19:17:29 2011 From: mevenson at common-lisp.net (mevenson at common-lisp.net) Date: Tue, 01 Nov 2011 12:17:29 -0700 Subject: [armedbear-cvs] r13684 - trunk/abcl/doc/manual Message-ID: Author: mevenson Date: Tue Nov 1 12:17:28 2011 New Revision: 13684 Log: Manual changes corresponding to abcl-20111101a.pdf. Use the built-in bibiolography. Table of contents is now being (dunno why exactly). Use umlaut version of Erik's surname. Modified: trunk/abcl/doc/manual/abcl.tex Modified: trunk/abcl/doc/manual/abcl.tex ============================================================================== --- trunk/abcl/doc/manual/abcl.tex Fri Oct 28 01:19:59 2011 (r13683) +++ trunk/abcl/doc/manual/abcl.tex Tue Nov 1 12:17:28 2011 (r13684) @@ -5,8 +5,8 @@ \begin{document} \title{A Manual for Armed Bear Common Lisp} -\date{October 28, 2011} -\author{Mark~Evenson, Erik~Huelsmann, Alessio~Stalla, Ville~Voutilainen} +\date{November 1, 2011} +\author{Mark~Evenson, Erik~H\"{u}lsmann, Alessio~Stalla, Ville~Voutilainen} \maketitle @@ -817,7 +817,8 @@ JVM ``understands''. Support is built-in to the ``http'' and ``https'' implementations but additional protocol handlers may be installed at runtime by having JVM symbols present in the -sun.net.protocol.dynmamic pacakge. See [JAVA2006] for more details. +sun.net.protocol.dynmamic pacakge. See Java2007 \cite{Java2007} for more +details. ABCL has created specializations of the ANSI Pathname object to enable to use of URIs to address dynamically loaded resources for the @@ -845,7 +846,7 @@ \end{itemize} The implementation of URL-PATHNAME allows the ABCL user to laod dynamically -code from the network. For example, for Quicklisp. +code from the network. For example, for Quicklisp (\cite{Xach2011}): \begin{listing-lisp} CL-USER> (load "http://beta.quicklisp.org/quicklisp.lisp") @@ -862,7 +863,7 @@ \section{Extensible Sequences} -See \ref{RHODES2007} RHODES2007 for the design. +See Rhodes2007 \cite{RHODES2007} for the design. The SEQUENCE package fully implements Christopher Rhodes' proposal for extensible sequences. These user extensible sequences are used @@ -1073,7 +1074,7 @@ \section{asdf-install} The asdf-install contrib provides an implementation of ASDF-INSTALL. -Superseded by Quicklisp (qv.) +Superseded by Quicklisp (see Xach2011 \cite{Xach2011}). \chapter{History} @@ -1085,7 +1086,7 @@ From 2006 to 2008, Peter manned the development lists, incorporating patches as made sense. After a suitable search, Peter nominated Erik -Huelsmann to take over the project. +H\"{u}lsmann to take over the project. In 2008, the implementation was transferred to the current maintainers, who have strived to improve its usability as a @@ -1096,16 +1097,26 @@ abcl-1.0.0. -\section{References} -[Java2000]: A New Era for Java Protocol Handlers. -\url{http://java.sun.com/developer/onlineTraining/protocolhandlers/} +\begin{thebibliography}{9} -[Xach2011]: Quicklisp: A system for quickly constructing Common Lisp -libraries. \url{http://www.quicklisp.org/} - -[RHODES2007]: Christopher Rhodes +\bibitem{Java2000} + ``A New Era for Java Protocol Handlers.'' + \url{http://java.sun.com/developer/onlineTraining/protocolhandlers/} + +\bibitem{Xach2011} + Zach Beenep + ``Quicklisp: A system for quickly constructing Common Lisp'' + \url{http://www.quicklisp.org/} + +\bibitem{Rhodes2007} +Christopher Rhodes +``User-extensible Sequences in Common Lisp'' +ILC '07 Proceedings of the 2007 International Lisp Conference +% An early draft. XXX where is the real one? +\url{http://jcsu.jesus.cam.ac.uk/~csr21/spec.pdf} +\end{thebibliography} \end{document} From mevenson at common-lisp.net Tue Nov 1 20:57:16 2011 From: mevenson at common-lisp.net (mevenson at common-lisp.net) Date: Tue, 01 Nov 2011 13:57:16 -0700 Subject: [armedbear-cvs] r13685 - trunk/abcl/doc/manual Message-ID: Author: mevenson Date: Tue Nov 1 13:57:15 2011 New Revision: 13685 Log: Manual: Use \code for symbols, not \textsc. Modified: trunk/abcl/doc/manual/abcl.tex Modified: trunk/abcl/doc/manual/abcl.tex ============================================================================== --- trunk/abcl/doc/manual/abcl.tex Tue Nov 1 12:17:28 2011 (r13684) +++ trunk/abcl/doc/manual/abcl.tex Tue Nov 1 13:57:15 2011 (r13685) @@ -858,8 +858,8 @@ \subsubsection{Implementation} -\textsc{DEVICE} either a string denoting a drive letter under DOS or a cons -specifying a \textsc{URL-PATHNAME}. +\code{DEVICE} either a string denoting a drive letter under DOS or a cons +specifying a \code{URL-PATHNAME}. \section{Extensible Sequences} @@ -1012,15 +1012,15 @@ We define an API for \textsc{ABCL-ASDF} as consisting of the following ASDF classes: -\textsc{JAR-DIRECTORY}, \textsc{JAR-FILE}, and -\textsc{CLASS-FILE-DIRECTORY} for JVM artifacts that have a currently +\code{JAR-DIRECTORY}, \code{JAR-FILE}, and +\code{CLASS-FILE-DIRECTORY} for JVM artifacts that have a currently valid pathname representation. Both the MVN and IRI classes descend from ASDF-COMPONENT, but do not directly have a filesystem location. For use outside of ASDF system definitions, we currently define one -method, \textsc{ABCL-ASDF:RESOLVE-DEPENDENCIES} which locates, +method, \code{ABCL-ASDF:RESOLVE-DEPENDENCIES} which locates, downloads, caches, and then loads into the currently executing JVM process all recursive dependencies annotated in the Maven pom.xml graph. From mevenson at common-lisp.net Tue Nov 1 20:57:30 2011 From: mevenson at common-lisp.net (mevenson at common-lisp.net) Date: Tue, 01 Nov 2011 13:57:30 -0700 Subject: [armedbear-cvs] r13686 - trunk/abcl/doc/manual Message-ID: Author: mevenson Date: Tue Nov 1 13:57:30 2011 New Revision: 13686 Log: Starting to grovel resonable Tex from the docstrings (unfinished). Modified: trunk/abcl/doc/manual/grovel.lisp Modified: trunk/abcl/doc/manual/grovel.lisp ============================================================================== --- trunk/abcl/doc/manual/grovel.lisp Tue Nov 1 13:57:15 2011 (r13685) +++ trunk/abcl/doc/manual/grovel.lisp Tue Nov 1 13:57:30 2011 (r13686) @@ -2,29 +2,40 @@ (defun grovel-docstrings-as-tex (&optional (package (find-package :java))) (with-open-file (stream "java.tex" :direction :output) (loop :for symbol :being :each :external-symbol :of package - :collecting (symbol-as-tex symbol)))) + :doing (format stream "~&~A~%~%"(symbol-as-tex symbol))))) (asdf:load-system 'swank) ;; XXX Does this load the SWANK-BACKEND package as well -(defun arglist-as-string (symbol) - (loop :for arg :in (arglist symbol) - :collecting (format nil "~A" (symbol-name arg)))) +(defun arglist-as-tex (symbol) + (handler-case + (loop :for arg :in (arglist symbol) + :collecting + (format nil + (if (string= (subseq (symbol-name arg) 0 1) #\&) + "\\~A" + "~A") + (string-downcase (symbol-name arg)))) + (t (e) + (progn (warn "Failed to form arglist for ~A: ~A" symbol e) + (list ""))))) + (defvar *type-alist* '((:function . "Function") (:macro . "Macro") (:variable . "Variable") + (:class . "Class") (:generic-function . "Generic Function"))) (defun symbol-as-tex (symbol) "Return the TeX representation of a SYMBOL as Tex." - (let (type documentation arglist doc) + (let (type documentation arglist doc symbol-name package-name) (when (setf doc (swank-backend:describe-symbol-for-emacs symbol)) (cond ((find :function doc) (setf type :function documentation (second doc) - arglist (arglist-as-string symbol))) + arglist (format nil "~{~A~^ ~}" (arglist-as-tex symbol)))) ((find :variable doc) (setf type :variable documentation (second doc))) @@ -33,13 +44,26 @@ documentation (second doc))) ((find :generic-function doc) (setf type :generic-function - documentation (second doc)))) - (format nil "\\ref{~A:~A}~&--- ~A [\\textbf{~A}]: ~A" + documentation (second doc))) + ((find :class doc) + (setf type :class + documentation (second doc))) + (t + (warn "Unknown type of documentation for symbol ~A: ~A" + symbol doc))) + (setf symbol-name (string-downcase + symbol) + package-name (string-downcase + (package-name (find-package (symbol-package symbol))))) + (format nil "\\label{~A:~A}~&--- ~A: \\textbf{~A} [\\textbf{~A}] \\textit{~A}~%~%~A" (symbol-name symbol) - (package-name (symbol-package symbol)) + (package-name (find-package (symbol-package symbol))) (cdr (assoc type *type-alist*)) - (symbol-name symbol) - (package-name (symbol-package symbol)))))) + symbol-name + package-name + (if arglist arglist "") + (if documentation documentation ""))))) + From mevenson at common-lisp.net Tue Nov 1 20:57:43 2011 From: mevenson at common-lisp.net (mevenson at common-lisp.net) Date: Tue, 01 Nov 2011 13:57:43 -0700 Subject: [armedbear-cvs] r13687 - trunk/abcl/src/org/armedbear/lisp Message-ID: Author: mevenson Date: Tue Nov 1 13:57:42 2011 New Revision: 13687 Log: Correct JAVA:MAKE-IMMEDIATE-OBJECT docstring. Modified: trunk/abcl/src/org/armedbear/lisp/Java.java Modified: trunk/abcl/src/org/armedbear/lisp/Java.java ============================================================================== --- trunk/abcl/src/org/armedbear/lisp/Java.java Tue Nov 1 13:57:30 2011 (r13686) +++ trunk/abcl/src/org/armedbear/lisp/Java.java Tue Nov 1 13:57:42 2011 (r13687) @@ -1100,8 +1100,8 @@ + "\n" + "Deprecated. Please use JAVA:+NULL+, JAVA:+TRUE+, and JAVA:+FALSE+ for\n" + "constructing wrapped primitive types, JAVA:JOBJECT-LISP-VALUE for converting a\n" - + "JAVA:JAVA-OBJECT to a Lisp value, or JAVA:JNULL_REF_P to distinguish a wrapped\n" - + "null JAVA_OBJECT from nil.") + + "JAVA:JAVA-OBJECT to a Lisp value, or JAVA:JNULL-REF-P to distinguish a wrapped\n" + + "null JAVA-OBJECT from NIL.") private static final class pf_make_immediate_object extends Primitive { pf_make_immediate_object() From mevenson at common-lisp.net Wed Nov 2 13:11:53 2011 From: mevenson at common-lisp.net (mevenson at common-lisp.net) Date: Wed, 02 Nov 2011 06:11:53 -0700 Subject: [armedbear-cvs] r13688 - trunk/abcl/src/org/armedbear/lisp Message-ID: Author: mevenson Date: Wed Nov 2 06:11:50 2011 New Revision: 13688 Log: Remove erroneous fbound defintion for EXTENSIONS:PROCESS. The AUTOLOAD form currently only works for functions. Modified: trunk/abcl/src/org/armedbear/lisp/autoloads.lisp Modified: trunk/abcl/src/org/armedbear/lisp/autoloads.lisp ============================================================================== --- trunk/abcl/src/org/armedbear/lisp/autoloads.lisp Tue Nov 1 13:57:42 2011 (r13687) +++ trunk/abcl/src/org/armedbear/lisp/autoloads.lisp Wed Nov 2 06:11:50 2011 (r13688) @@ -305,8 +305,7 @@ (autoload 'run-shell-command) (export 'run-program) (autoload 'run-program) -(export 'process) -(autoload 'process "run-program") +(export 'process) ;; Not a function, but a DEFSTRUCT (export 'process-p) (autoload 'process-p "run-program") (export 'process-input) From mevenson at common-lisp.net Wed Nov 2 13:12:08 2011 From: mevenson at common-lisp.net (mevenson at common-lisp.net) Date: Wed, 02 Nov 2011 06:12:08 -0700 Subject: [armedbear-cvs] r13689 - trunk/abcl/doc/manual Message-ID: Author: mevenson Date: Wed Nov 2 06:12:07 2011 New Revision: 13689 Log: First semi-working version of groveling ABCL docstrings into LaTeX. Still needs to be more rigourous about escaping certain LaTeX characters such as #\% which I am currenly editing by hand. Modified: trunk/abcl/doc/manual/grovel.lisp Modified: trunk/abcl/doc/manual/grovel.lisp ============================================================================== --- trunk/abcl/doc/manual/grovel.lisp Wed Nov 2 06:11:50 2011 (r13688) +++ trunk/abcl/doc/manual/grovel.lisp Wed Nov 2 06:12:07 2011 (r13689) @@ -1,8 +1,10 @@ #-abcl We're only grovelling ABCL docstrings here. (defun grovel-docstrings-as-tex (&optional (package (find-package :java))) - (with-open-file (stream "java.tex" :direction :output) - (loop :for symbol :being :each :external-symbol :of package - :doing (format stream "~&~A~%~%"(symbol-as-tex symbol))))) + (let ((output-file (format nil "~A.tex" (string-downcase (package-name package))))) + (with-open-file (stream output-file :direction :output) + (format t "Writing output to ~A.~%" output-file) + (loop :for symbol :being :each :external-symbol :of package + :doing (format stream "~&~A~%~%" (symbol-as-tex symbol)))))) (asdf:load-system 'swank) ;; XXX Does this load the SWANK-BACKEND package as well @@ -11,21 +13,33 @@ (loop :for arg :in (arglist symbol) :collecting (format nil - (if (string= (subseq (symbol-name arg) 0 1) #\&) + ;;; XXX should really check the entire input for TeX escapes + (if (and (symbolp arg) + (or (string= (subseq (symbol-name arg) 0 1) #\&) + (string= (subseq (symbol-name arg) 0 1) #\%))) "\\~A" "~A") - (string-downcase (symbol-name arg)))) + (if (symbolp arg) + (string-downcase (symbol-name arg)) + (format nil "~(~A~)" arg)))) (t (e) (progn (warn "Failed to form arglist for ~A: ~A" symbol e) (list ""))))) (defvar *type-alist* - '((:function . "Function") - (:macro . "Macro") - (:variable . "Variable") - (:class . "Class") - (:generic-function . "Generic Function"))) + '((:function + . "Function") + (:macro + . "Macro") + (:variable + . "Variable") + (:class + . "Class") + (:special-operator + . "Special Operator") + (:generic-function + . "Generic Function"))) (defun symbol-as-tex (symbol) "Return the TeX representation of a SYMBOL as Tex." @@ -48,6 +62,9 @@ ((find :class doc) (setf type :class documentation (second doc))) + ((find :special-operator doc) + (setf type :special-operator + documentation (second doc))) (t (warn "Unknown type of documentation for symbol ~A: ~A" symbol doc))) @@ -55,9 +72,10 @@ symbol) package-name (string-downcase (package-name (find-package (symbol-package symbol))))) - (format nil "\\label{~A:~A}~&--- ~A: \\textbf{~A} [\\textbf{~A}] \\textit{~A}~%~%~A" - (symbol-name symbol) + (format nil "~&\\paragraph{}~&\\label{~A:~A}~&\\index{~A}~&--- ~A: \\textbf{~A} [\\textbf{~A}] \\textit{~A}~%~%\\begin{adjustwidth}{5em}{5em}~&~A~&\\end{adjustwidth}" (package-name (find-package (symbol-package symbol))) + (symbol-name symbol) + (symbol-name symbol) (cdr (assoc type *type-alist*)) symbol-name package-name From mevenson at common-lisp.net Wed Nov 2 13:12:24 2011 From: mevenson at common-lisp.net (mevenson at common-lisp.net) Date: Wed, 02 Nov 2011 06:12:24 -0700 Subject: [armedbear-cvs] r13690 - trunk/abcl/doc/manual Message-ID: Author: mevenson Date: Wed Nov 2 06:12:24 2011 New Revision: 13690 Log: Changes corresponding to abcl-20111102a.pdf. Now generating LaTeX from docstring via grovel.lisp. Added index. Modified: trunk/abcl/doc/manual/abcl.sty trunk/abcl/doc/manual/abcl.tex trunk/abcl/doc/manual/extensions.tex trunk/abcl/doc/manual/java.tex trunk/abcl/doc/manual/threads.tex Modified: trunk/abcl/doc/manual/abcl.sty ============================================================================== --- trunk/abcl/doc/manual/abcl.sty Wed Nov 2 06:12:07 2011 (r13689) +++ trunk/abcl/doc/manual/abcl.sty Wed Nov 2 06:12:24 2011 (r13690) @@ -34,4 +34,12 @@ \usepackage{verbatim} +%% For setting margins in docstrings +\usepackage{changepage} + +\usepackage{makeidx} + +\makeindex + \ProvidesPackage{abcl} + Modified: trunk/abcl/doc/manual/abcl.tex ============================================================================== --- trunk/abcl/doc/manual/abcl.tex Wed Nov 2 06:12:07 2011 (r13689) +++ trunk/abcl/doc/manual/abcl.tex Wed Nov 2 06:12:24 2011 (r13690) @@ -760,12 +760,10 @@ CL-USER> (add-to-classpath "/path/to/some.jar") \end{listing-lisp} -N.b \code{add-to-classpath} only affects the classloader used by ABCL +N.b \code{ADD-TO-CLASSPATH} only affects the classloader used by ABCL (the value of the special variable \code{JAVA:*CLASSLOADER*}. It has no effect on Java code outside ABCL. -\subsection{API} - % include autogen docs for the JAVA package. \include{java} @@ -776,8 +774,6 @@ excellent \code{java.util.concurrent} packages may be manipulated directly via the JSS contrib to great effect. -\subsection{API} - % include autogen docs for the THREADS package. \include{threads} @@ -789,10 +785,8 @@ running external programs, registering object finalizers, constructing reference weakly held by the garbage collector and others. -See \ref{Extensible Sequences} for a generic function interface to -the native JVM contract for \code{java.util.List}. - -\subsection{API} +See \ref{Rhodes2007} for a generic function interface to the native +JVM contract for \code{java.util.List}. % include autogen docs for the EXTENSIONS package. \include{extensions} @@ -1105,7 +1099,7 @@ \url{http://java.sun.com/developer/onlineTraining/protocolhandlers/} \bibitem{Xach2011} - Zach Beenep + Zach Beene ``Quicklisp: A system for quickly constructing Common Lisp'' \url{http://www.quicklisp.org/} @@ -1118,6 +1112,8 @@ \end{thebibliography} +\printindex + \end{document} % TODO Modified: trunk/abcl/doc/manual/extensions.tex ============================================================================== --- trunk/abcl/doc/manual/extensions.tex Wed Nov 2 06:12:07 2011 (r13689) +++ trunk/abcl/doc/manual/extensions.tex Wed Nov 2 06:12:24 2011 (r13690) @@ -1,250 +1,1118 @@ -\begin{verbatim} -%CADDR - Macro: (not documented) -%CADR - Macro: (not documented) -%CAR - Macro: (not documented) -%CDR - Macro: (not documented) -*AUTOLOAD-VERBOSE* - Variable: (not documented) -*BATCH-MODE* - Variable: (not documented) -*COMMAND-LINE-ARGUMENT-LIST* - Variable: (not documented) -*DEBUG-CONDITION* - Variable: (not documented) -*DEBUG-LEVEL* - Variable: (not documented) -*DISASSEMBLER* - Variable: (not documented) -*ED-FUNCTIONS* - Variable: (not documented) -*ENABLE-INLINE-EXPANSION* - Variable: (not documented) -*INSPECTOR-HOOK* - Variable: (not documented) -*LISP-HOME* - Variable: (not documented) -*LOAD-TRUENAME-FASL* - Variable: (not documented) -*PRINT-STRUCTURE* - Variable: (not documented) -*REQUIRE-STACK-FRAME* - Variable: (not documented) -*SAVED-BACKTRACE* - Variable: (not documented) -*SUPPRESS-COMPILER-WARNINGS* - Variable: (not documented) -*WARN-ON-REDEFINITION* - Variable: (not documented) -ADJOIN-EQL - Function: (not documented) -ARGLIST - Function: (not documented) -ASSQ - Function: (not documented) -ASSQL - Function: (not documented) -AUTOLOAD - Function: (not documented) -AUTOLOAD-MACRO - Function: (not documented) -AUTOLOADP - Function: (not documented) -AVER - Macro: (not documented) -CANCEL-FINALIZATION - Function: (not documented) -CHAR-TO-UTF8 - Function: (not documented) -CHARPOS - Function: (not documented) -CLASSP - Function: (not documented) -COLLECT - Macro: (not documented) -COMPILE-FILE-IF-NEEDED - Function: (not documented) -COMPILE-SYSTEM - Function: (not documented) -COMPILER-ERROR - Function: (not documented) - Class: (not documented) -COMPILER-UNSUPPORTED-FEATURE-ERROR - Class: (not documented) -DESCRIBE-COMPILER-POLICY - Function: (not documented) -DOUBLE-FLOAT-NEGATIVE-INFINITY - Variable: (not documented) -DOUBLE-FLOAT-POSITIVE-INFINITY - Variable: (not documented) -DUMP-JAVA-STACK - Function: (not documented) -EXIT - Function: (not documented) -FEATUREP - Function: (not documented) -FILE-DIRECTORY-P - Function: (not documented) -FINALIZE - Function: (not documented) -FIXNUMP - Function: (not documented) -GC - Function: (not documented) -GET-FLOATING-POINT-MODES - Function: (not documented) -GET-SOCKET-STREAM - Function: :ELEMENT-TYPE must be CHARACTER or (UNSIGNED-BYTE 8); the default is CHARACTER. -GETENV - Function: Return the value of the environment VARIABLE if it exists, otherwise return NIL. -GROVEL-JAVA-DEFINITIONS - Function: (not documented) -INIT-GUI - Function: (not documented) -INTERNAL-COMPILER-ERROR - Function: (not documented) - Class: (not documented) -INTERRUPT-LISP - Function: (not documented) -JAR-PATHNAME - Class: (not documented) -MACROEXPAND-ALL - Function: (not documented) -MAILBOX - Class: (not documented) -MAKE-DIALOG-PROMPT-STREAM - Function: (not documented) -MAKE-SERVER-SOCKET - Function: (not documented) -MAKE-SLIME-INPUT-STREAM - Function: (not documented) -MAKE-SLIME-OUTPUT-STREAM - Function: (not documented) -MAKE-SOCKET - Function: (not documented) -MAKE-TEMP-FILE - Function: (not documented) -MAKE-WEAK-REFERENCE - Function: (not documented) -MEMQ - Function: (not documented) -MEMQL - Function: (not documented) -MOST-NEGATIVE-JAVA-LONG - Variable: (not documented) -MOST-POSITIVE-JAVA-LONG - Variable: (not documented) -MUTEX - Class: (not documented) -NEQ - Function: (not documented) -NIL-VECTOR - Class: (not documented) -PATHNAME-JAR-P - Function: (not documented) -PATHNAME-URL-P - Function: Predicate for whether PATHNAME references a URL. -PRECOMPILE - Function: (not documented) -PROBE-DIRECTORY - Function: (not documented) -PROCESS - Function: (not documented) -PROCESS-ALIVE-P - Function: (not documented) -PROCESS-ERROR - Function: (not documented) -PROCESS-EXIT-CODE - Function: (not documented) -PROCESS-INPUT - Function: (not documented) -PROCESS-KILL - Function: (not documented) -PROCESS-OUTPUT - Function: (not documented) -PROCESS-P - Function: (not documented) -PROCESS-WAIT - Function: (not documented) -QUIT - Function: (not documented) -RESOLVE - Function: (not documented) -RUN-PROGRAM - Function: (not documented) -RUN-SHELL-COMMAND - Function: (not documented) -SERVER-SOCKET-CLOSE - Function: (not documented) -SET-FLOATING-POINT-MODES - Function: (not documented) -SHOW-RESTARTS - Function: (not documented) -SIMPLE-SEARCH - Function: (not documented) -SIMPLE-STRING-FILL - Function: (not documented) -SIMPLE-STRING-SEARCH - Function: (not documented) -SINGLE-FLOAT-NEGATIVE-INFINITY - Variable: (not documented) -SINGLE-FLOAT-POSITIVE-INFINITY - Variable: (not documented) -SLIME-INPUT-STREAM - Class: (not documented) -SLIME-OUTPUT-STREAM - Class: (not documented) -SOCKET-ACCEPT - Function: (not documented) -SOCKET-CLOSE - Function: (not documented) -SOCKET-LOCAL-ADDRESS - Function: Returns the local address of the given socket as a dotted quad string. -SOCKET-LOCAL-PORT - Function: Returns the local port number of the given socket. -SOCKET-PEER-ADDRESS - Function: Returns the peer address of the given socket as a dotted quad string. -SOCKET-PEER-PORT - Function: Returns the peer port number of the given socket. -SOURCE - Function: (not documented) -SOURCE-FILE-POSITION - Function: (not documented) -SOURCE-PATHNAME - Function: (not documented) -SPECIAL-VARIABLE-P - Function: (not documented) -STRING-FIND - Function: (not documented) -STRING-INPUT-STREAM-CURRENT - Function: (not documented) -STRING-POSITION - Function: (not documented) -STYLE-WARN - Function: (not documented) -TRULY-THE - Special Operator: (not documented) -UPTIME - Function: (not documented) -URI-DECODE - Function: (not documented) -URI-ENCODE - Function: (not documented) -URL-PATHNAME - Class: (not documented) -URL-PATHNAME-AUTHORITY - Function: (not documented) -URL-PATHNAME-FRAGMENT - Function: (not documented) -URL-PATHNAME-QUERY - Function: (not documented) -URL-PATHNAME-SCHEME - Function: (not documented) -WEAK-REFERENCE - Class: (not documented) -WEAK-REFERENCE-VALUE - Function: (not documented) -\end{verbatim} +\subsection{Exported Symbols from the EXTENSIONS package} + +\paragraph{} +\label{EXTENSIONS:COMPILE-FILE-IF-NEEDED} +\index{COMPILE-FILE-IF-NEEDED} +--- Function: \textbf{compile-file-if-needed} [\textbf{extensions}] \textit{input-file \&rest allargs \&key force-compile \&allow-other-keys} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:MOST-POSITIVE-JAVA-LONG} +\index{MOST-POSITIVE-JAVA-LONG} +--- Variable: \textbf{most-positive-java-long} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:DUMP-JAVA-STACK} +\index{DUMP-JAVA-STACK} +--- Function: \textbf{dump-java-stack} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:MEMQL} +\index{MEMQL} +--- Function: \textbf{memql} [\textbf{extensions}] \textit{item list} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:DOUBLE-FLOAT-NEGATIVE-INFINITY} +\index{DOUBLE-FLOAT-NEGATIVE-INFINITY} +--- Variable: \textbf{double-float-negative-infinity} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:GROVEL-JAVA-DEFINITIONS} +\index{GROVEL-JAVA-DEFINITIONS} +--- Function: \textbf{grovel-java-definitions} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:*AUTOLOAD-VERBOSE*} +\index{*AUTOLOAD-VERBOSE*} +--- Variable: \textbf{*autoload-verbose*} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:MAKE-SLIME-INPUT-STREAM} +\index{MAKE-SLIME-INPUT-STREAM} +--- Function: \textbf{make-slime-input-stream} [\textbf{extensions}] \textit{function output-stream} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:URL-PATHNAME-FRAGMENT} +\index{URL-PATHNAME-FRAGMENT} +--- Function: \textbf{url-pathname-fragment} [\textbf{extensions}] \textit{p} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:PROCESS-KILL} +\index{PROCESS-KILL} +--- Function: \textbf{process-kill} [\textbf{extensions}] \textit{process} + +\begin{adjustwidth}{5em}{5em} +Kills the process. +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:NIL-VECTOR} +\index{NIL-VECTOR} +--- Class: \textbf{nil-vector} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:SOURCE-PATHNAME} +\index{SOURCE-PATHNAME} +--- Function: \textbf{source-pathname} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:URI-DECODE} +\index{URI-DECODE} +--- Function: \textbf{uri-decode} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:SIMPLE-STRING-FILL} +\index{SIMPLE-STRING-FILL} +--- Function: \textbf{simple-string-fill} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:MEMQ} +\index{MEMQ} +--- Function: \textbf{memq} [\textbf{extensions}] \textit{item list} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:URL-PATHNAME-SCHEME} +\index{URL-PATHNAME-SCHEME} +--- Function: \textbf{url-pathname-scheme} [\textbf{extensions}] \textit{p} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:TRULY-THE} +\index{TRULY-THE} +--- Special Operator: \textbf{truly-the} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:SLIME-INPUT-STREAM} +\index{SLIME-INPUT-STREAM} +--- Class: \textbf{slime-input-stream} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:MAKE-SOCKET} +\index{MAKE-SOCKET} +--- Function: \textbf{make-socket} [\textbf{extensions}] \textit{host port} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:*ENABLE-INLINE-EXPANSION*} +\index{*ENABLE-INLINE-EXPANSION*} +--- Variable: \textbf{*enable-inline-expansion*} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:PROCESS-INPUT} +\index{PROCESS-INPUT} +--- Function: \textbf{process-input} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:MAILBOX} +\index{MAILBOX} +--- Class: \textbf{mailbox} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:STRING-POSITION} +\index{STRING-POSITION} +--- Function: \textbf{string-position} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:PRECOMPILE} +\index{PRECOMPILE} +--- Function: \textbf{precompile} [\textbf{extensions}] \textit{name \&optional definition} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:*SUPPRESS-COMPILER-WARNINGS*} +\index{*SUPPRESS-COMPILER-WARNINGS*} +--- Variable: \textbf{*suppress-compiler-warnings*} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:PROCESS} +\index{PROCESS} +--- Class: \textbf{process} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:SIMPLE-SEARCH} +\index{SIMPLE-SEARCH} +--- Function: \textbf{simple-search} [\textbf{extensions}] \textit{sequence1 sequence2} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:*LISP-HOME*} +\index{*LISP-HOME*} +--- Variable: \textbf{*lisp-home*} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:*COMMAND-LINE-ARGUMENT-LIST*} +\index{*COMMAND-LINE-ARGUMENT-LIST*} +--- Variable: \textbf{*command-line-argument-list*} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:FILE-DIRECTORY-P} +\index{FILE-DIRECTORY-P} +--- Function: \textbf{file-directory-p} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:MAKE-DIALOG-PROMPT-STREAM} +\index{MAKE-DIALOG-PROMPT-STREAM} +--- Function: \textbf{make-dialog-prompt-stream} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:CLASSP} +\index{CLASSP} +--- Function: \textbf{classp} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:*DISASSEMBLER*} +\index{*DISASSEMBLER*} +--- Variable: \textbf{*disassembler*} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:SET-FLOATING-POINT-MODES} +\index{SET-FLOATING-POINT-MODES} +--- Function: \textbf{set-floating-point-modes} [\textbf{extensions}] \textit{\&key traps} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:*DEBUG-CONDITION*} +\index{*DEBUG-CONDITION*} +--- Variable: \textbf{*debug-condition*} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:EXIT} +\index{EXIT} +--- Function: \textbf{exit} [\textbf{extensions}] \textit{\&key status} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:PROCESS-ERROR} +\index{PROCESS-ERROR} +--- Function: \textbf{process-error} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:SOCKET-LOCAL-PORT} +\index{SOCKET-LOCAL-PORT} +--- Function: \textbf{socket-local-port} [\textbf{extensions}] \textit{socket} + +\begin{adjustwidth}{5em}{5em} +Returns the local port number of the given socket. +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:PROCESS-ALIVE-P} +\index{PROCESS-ALIVE-P} +--- Function: \textbf{process-alive-p} [\textbf{extensions}] \textit{process} + +\begin{adjustwidth}{5em}{5em} +Return t if process is still alive, nil otherwise. +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:*INSPECTOR-HOOK*} +\index{*INSPECTOR-HOOK*} +--- Variable: \textbf{*inspector-hook*} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:*REQUIRE-STACK-FRAME*} +\index{*REQUIRE-STACK-FRAME*} +--- Variable: \textbf{*require-stack-frame*} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:PROBE-DIRECTORY} +\index{PROBE-DIRECTORY} +--- Function: \textbf{probe-directory} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:CHAR-TO-UTF8} +\index{CHAR-TO-UTF8} +--- Function: \textbf{char-to-utf8} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:AUTOLOAD} +\index{AUTOLOAD} +--- Function: \textbf{autoload} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:MUTEX} +\index{MUTEX} +--- Class: \textbf{mutex} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:URI-ENCODE} +\index{URI-ENCODE} +--- Function: \textbf{uri-encode} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:AUTOLOAD-MACRO} +\index{AUTOLOAD-MACRO} +--- Function: \textbf{autoload-macro} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:SOCKET-CLOSE} +\index{SOCKET-CLOSE} +--- Function: \textbf{socket-close} [\textbf{extensions}] \textit{socket} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:UPTIME} +\index{UPTIME} +--- Function: \textbf{uptime} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:*ED-FUNCTIONS*} +\index{*ED-FUNCTIONS*} +--- Variable: \textbf{*ed-functions*} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:COMPILE-SYSTEM} +\index{COMPILE-SYSTEM} +--- Function: \textbf{compile-system} [\textbf{extensions}] \textit{\&key quit (zip t) output-path} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:*LOAD-TRUENAME-FASL*} +\index{*LOAD-TRUENAME-FASL*} +--- Variable: \textbf{*load-truename-fasl*} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:SPECIAL-VARIABLE-P} +\index{SPECIAL-VARIABLE-P} +--- Function: \textbf{special-variable-p} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:SOCKET-ACCEPT} +\index{SOCKET-ACCEPT} +--- Function: \textbf{socket-accept} [\textbf{extensions}] \textit{socket} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:*WARN-ON-REDEFINITION*} +\index{*WARN-ON-REDEFINITION*} +--- Variable: \textbf{*warn-on-redefinition*} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:URL-PATHNAME-AUTHORITY} +\index{URL-PATHNAME-AUTHORITY} +--- Function: \textbf{url-pathname-authority} [\textbf{extensions}] \textit{p} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:AUTOLOADP} +\index{AUTOLOADP} +--- Function: \textbf{autoloadp} [\textbf{extensions}] \textit{symbol} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:MAKE-WEAK-REFERENCE} +\index{MAKE-WEAK-REFERENCE} +--- Function: \textbf{make-weak-reference} [\textbf{extensions}] \textit{obj} + +\begin{adjustwidth}{5em}{5em} +Creates a weak reference to 'obj'. +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:RESOLVE} +\index{RESOLVE} +--- Function: \textbf{resolve} [\textbf{extensions}] \textit{symbol} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:CANCEL-FINALIZATION} +\index{CANCEL-FINALIZATION} +--- Function: \textbf{cancel-finalization} [\textbf{extensions}] \textit{object} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:MAKE-SLIME-OUTPUT-STREAM} +\index{MAKE-SLIME-OUTPUT-STREAM} +--- Function: \textbf{make-slime-output-stream} [\textbf{extensions}] \textit{function} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:RUN-PROGRAM} +\index{RUN-PROGRAM} +--- Function: \textbf{run-program} [\textbf{extensions}] \textit{program args \&key environment (wait t)} + +\begin{adjustwidth}{5em}{5em} +Creates a new process running the the PROGRAM. +ARGS are a list of strings to be passed to the program as arguments. + +For no arguments, use nil which means that just the name of the +program is passed as arg 0. + +Returns a process structure containing the JAVA-OBJECT wrapped Process +object, and the PROCESS-INPUT, PROCESS-OUTPUT, and PROCESS-ERROR streams. + +c.f. http://download.oracle.com/javase/6/docs/api/java/lang/Process.html + +Notes about Unix environments (as in the :environment): + + * The ABCL implementation of run-program, like SBCL, Perl and many + other programs, copies the Unix environment by default. + + * Running Unix programs from a setuid process, or in any other + situation where the Unix environment is under the control of + someone else, is a mother lode of security problems. If you are + contemplating doing this, read about it first. (The Perl + community has a lot of good documentation about this and other + security issues in script-like programs.) + +The \&key arguments have the following meanings: + +:environment + An alist of STRINGs (name . value) describing the new + environment. The default is to copy the environment of the current + process. + +:wait + If non-NIL, which is the default, wait until the created process + finishes. If NIL, continue running Lisp until the program + finishes. +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:FIXNUMP} +\index{FIXNUMP} +--- Function: \textbf{fixnump} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:SINGLE-FLOAT-NEGATIVE-INFINITY} +\index{SINGLE-FLOAT-NEGATIVE-INFINITY} +--- Variable: \textbf{single-float-negative-infinity} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:QUIT} +\index{QUIT} +--- Function: \textbf{quit} [\textbf{extensions}] \textit{\&key status} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:INTERNAL-COMPILER-ERROR} +\index{INTERNAL-COMPILER-ERROR} +--- Function: \textbf{internal-compiler-error} [\textbf{extensions}] \textit{format-control \&rest format-arguments} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:JAR-PATHNAME} +\index{JAR-PATHNAME} +--- Class: \textbf{jar-pathname} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +NIL + +\paragraph{} +\label{EXTENSIONS:SIMPLE-STRING-SEARCH} +\index{SIMPLE-STRING-SEARCH} +--- Function: \textbf{simple-string-search} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:ASSQL} +\index{ASSQL} +--- Function: \textbf{assql} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:FINALIZE} +\index{FINALIZE} +--- Function: \textbf{finalize} [\textbf{extensions}] \textit{object function} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:RUN-SHELL-COMMAND} +\index{RUN-SHELL-COMMAND} +--- Function: \textbf{run-shell-command} [\textbf{extensions}] \textit{command \&key directory (output *standard-output*)} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:*SAVED-BACKTRACE*} +\index{*SAVED-BACKTRACE*} +--- Variable: \textbf{*saved-backtrace*} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:COLLECT} +\index{COLLECT} +--- Macro: \textbf{collect} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:ARGLIST} +\index{ARGLIST} +--- Function: \textbf{arglist} [\textbf{extensions}] \textit{extended-function-designator} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:ADJOIN-EQL} +\index{ADJOIN-EQL} +--- Function: \textbf{adjoin-eql} [\textbf{extensions}] \textit{item list} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:CHARPOS} +\index{CHARPOS} +--- Function: \textbf{charpos} [\textbf{extensions}] \textit{stream} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:MAKE-TEMP-FILE} +\index{MAKE-TEMP-FILE} +--- Function: \textbf{make-temp-file} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:DESCRIBE-COMPILER-POLICY} +\index{DESCRIBE-COMPILER-POLICY} +--- Function: \textbf{describe-compiler-policy} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:*PRINT-STRUCTURE*} +\index{*PRINT-STRUCTURE*} +--- Variable: \textbf{*print-structure*} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:SOCKET-PEER-ADDRESS} +\index{SOCKET-PEER-ADDRESS} +--- Function: \textbf{socket-peer-address} [\textbf{extensions}] \textit{socket} + +\begin{adjustwidth}{5em}{5em} +Returns the peer address of the given socket as a dotted quad string. +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:GC} +\index{GC} +--- Function: \textbf{gc} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:GETENV} +\index{GETENV} +--- Function: \textbf{getenv} [\textbf{extensions}] \textit{variable} + +\begin{adjustwidth}{5em}{5em} +Return the value of the environment VARIABLE if it exists, otherwise return NIL. +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:SERVER-SOCKET-CLOSE} +\index{SERVER-SOCKET-CLOSE} +--- Function: \textbf{server-socket-close} [\textbf{extensions}] \textit{socket} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:WEAK-REFERENCE} +\index{WEAK-REFERENCE} +--- Class: \textbf{weak-reference} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:GET-FLOATING-POINT-MODES} +\index{GET-FLOATING-POINT-MODES} +--- Function: \textbf{get-floating-point-modes} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:WEAK-REFERENCE-VALUE} +\index{WEAK-REFERENCE-VALUE} +--- Function: \textbf{weak-reference-value} [\textbf{extensions}] \textit{obj} + +\begin{adjustwidth}{5em}{5em} +Returns two values, the first being the value of the weak ref,the second T if the reference is valid, or NIL if it hasbeen cleared. +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:SINGLE-FLOAT-POSITIVE-INFINITY} +\index{SINGLE-FLOAT-POSITIVE-INFINITY} +--- Variable: \textbf{single-float-positive-infinity} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:FEATUREP} +\index{FEATUREP} +--- Function: \textbf{featurep} [\textbf{extensions}] \textit{form} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:PATHNAME-URL-P} +\index{PATHNAME-URL-P} +--- Function: \textbf{pathname-url-p} [\textbf{extensions}] \textit{pathname} + +\begin{adjustwidth}{5em}{5em} +Predicate for whether PATHNAME references a URL. +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:STRING-INPUT-STREAM-CURRENT} +\index{STRING-INPUT-STREAM-CURRENT} +--- Function: \textbf{string-input-stream-current} [\textbf{extensions}] \textit{stream} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:MAKE-SERVER-SOCKET} +\index{MAKE-SERVER-SOCKET} +--- Function: \textbf{make-server-socket} [\textbf{extensions}] \textit{port} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:INTERRUPT-LISP} +\index{INTERRUPT-LISP} +--- Function: \textbf{interrupt-lisp} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:AVER} +\index{AVER} +--- Macro: \textbf{aver} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:INIT-GUI} +\index{INIT-GUI} +--- Function: \textbf{init-gui} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +Dummy function used to autoload this file +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:URL-PATHNAME-QUERY} +\index{URL-PATHNAME-QUERY} +--- Function: \textbf{url-pathname-query} [\textbf{extensions}] \textit{p} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:PROCESS-EXIT-CODE} +\index{PROCESS-EXIT-CODE} +--- Function: \textbf{process-exit-code} [\textbf{extensions}] \textit{instance} + +\begin{adjustwidth}{5em}{5em} +The exit code of a process. +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:SOURCE-FILE-POSITION} +\index{SOURCE-FILE-POSITION} +--- Function: \textbf{source-file-position} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:SOCKET-PEER-PORT} +\index{SOCKET-PEER-PORT} +--- Function: \textbf{socket-peer-port} [\textbf{extensions}] \textit{socket} + +\begin{adjustwidth}{5em}{5em} +Returns the peer port number of the given socket. +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:ASSQ} +\index{ASSQ} +--- Function: \textbf{assq} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:SOURCE} +\index{SOURCE} +--- Function: \textbf{source} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:SOCKET-LOCAL-ADDRESS} +\index{SOCKET-LOCAL-ADDRESS} +--- Function: \textbf{socket-local-address} [\textbf{extensions}] \textit{socket} + +\begin{adjustwidth}{5em}{5em} +Returns the local address of the given socket as a dotted quad string. +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:NEQ} +\index{NEQ} +--- Function: \textbf{neq} [\textbf{extensions}] \textit{obj1 obj2} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:STRING-FIND} +\index{STRING-FIND} +--- Function: \textbf{string-find} [\textbf{extensions}] \textit{char string} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:PATHNAME-JAR-P} +\index{PATHNAME-JAR-P} +--- Function: \textbf{pathname-jar-p} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:PROCESS-WAIT} +\index{PROCESS-WAIT} +--- Function: \textbf{process-wait} [\textbf{extensions}] \textit{process} + +\begin{adjustwidth}{5em}{5em} +Wait for process to quit running for some reason. +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:SHOW-RESTARTS} +\index{SHOW-RESTARTS} +--- Function: \textbf{show-restarts} [\textbf{extensions}] \textit{restarts stream} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:*BATCH-MODE*} +\index{*BATCH-MODE*} +--- Variable: \textbf{*batch-mode*} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:PROCESS-P} +\index{PROCESS-P} +--- Function: \textbf{process-p} [\textbf{extensions}] \textit{object} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:*GUI-BACKEND*} +\index{*GUI-BACKEND*} +--- Variable: \textbf{*gui-backend*} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:DOUBLE-FLOAT-POSITIVE-INFINITY} +\index{DOUBLE-FLOAT-POSITIVE-INFINITY} +--- Variable: \textbf{double-float-positive-infinity} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:STYLE-WARN} +\index{STYLE-WARN} +--- Function: \textbf{style-warn} [\textbf{extensions}] \textit{format-control \&rest format-arguments} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:MOST-NEGATIVE-JAVA-LONG} +\index{MOST-NEGATIVE-JAVA-LONG} +--- Variable: \textbf{most-negative-java-long} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:SLIME-OUTPUT-STREAM} +\index{SLIME-OUTPUT-STREAM} +--- Class: \textbf{slime-output-stream} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:GET-SOCKET-STREAM} +\index{GET-SOCKET-STREAM} +--- Function: \textbf{get-socket-stream} [\textbf{extensions}] \textit{socket \&key (element-type (quote character)) (external-format default)} + +\begin{adjustwidth}{5em}{5em} +:ELEMENT-TYPE must be CHARACTER or (UNSIGNED-BYTE 8); the default is CHARACTER. +EXTERNAL-FORMAT must be of the same format as specified for OPEN. +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:PROCESS-OUTPUT} +\index{PROCESS-OUTPUT} +--- Function: \textbf{process-output} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:URL-PATHNAME} +\index{URL-PATHNAME} +--- Class: \textbf{url-pathname} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:COMPILER-UNSUPPORTED-FEATURE-ERROR} +\index{COMPILER-UNSUPPORTED-FEATURE-ERROR} +--- Class: \textbf{compiler-unsupported-feature-error} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:*DEBUG-LEVEL*} +\index{*DEBUG-LEVEL*} +--- Variable: \textbf{*debug-level*} [\textbf{extensions}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:COMPILER-ERROR} +\index{COMPILER-ERROR} +--- Function: \textbf{compiler-error} [\textbf{extensions}] \textit{format-control \&rest format-arguments} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{EXTENSIONS:MACROEXPAND-ALL} +\index{MACROEXPAND-ALL} +--- Function: \textbf{macroexpand-all} [\textbf{extensions}] \textit{form \&optional env} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + Modified: trunk/abcl/doc/manual/java.tex ============================================================================== --- trunk/abcl/doc/manual/java.tex Wed Nov 2 06:12:07 2011 (r13689) +++ trunk/abcl/doc/manual/java.tex Wed Nov 2 06:12:24 2011 (r13690) @@ -1,182 +1,768 @@ -\begin{verbatim} -%JGET-PROPERTY-VALUE - Function: Gets a JavaBeans property on JAVA-OBJECT. -%JSET-PROPERTY-VALUE - Function: Sets a JavaBean property on JAVA-OBJECT. -*JAVA-OBJECT-TO-STRING-LENGTH* - Variable: Length to truncate toString() PRINT-OBJECT output for an - otherwise unspecialized JAVA-OBJECT. Can be set to NIL to indicate - no limit. -+FALSE+ - Variable: The JVM primitive value for boolean false. -+NULL+ - Variable: The JVM null object reference. -+TRUE+ - Variable: The JVM primitive value for boolean true. -ADD-TO-CLASSPATH - Generic Function: (not documented) -CHAIN - Macro: (not documented) -DESCRIBE-JAVA-OBJECT - Function: (not documented) -DUMP-CLASSPATH - Function: (not documented) -ENSURE-JAVA-CLASS - Function: (not documented) -ENSURE-JAVA-OBJECT - Function: Ensures OBJ is wrapped in a JAVA-OBJECT, wrapping it if necessary. -GET-CURRENT-CLASSLOADER - Function: (not documented) -GET-DEFAULT-CLASSLOADER - Function: (not documented) -JARRAY-COMPONENT-TYPE - Function: Returns the component type of the array type ATYPE -JARRAY-LENGTH - Function: (not documented) -JARRAY-REF - Function: Dereferences the Java array JAVA-ARRAY using the given - INDICIES, coercing the result into a Lisp object, if possible. -JARRAY-REF-RAW - Function: Dereference the Java array JAVA-ARRAY using the given - INDICIES. Does not attempt to coerce the result into a Lisp object. -JARRAY-SET - Function: Stores NEW-VALUE at the given index in JAVA-ARRAY. -JAVA-CLASS - Class: (not documented) -JAVA-EXCEPTION - Class: (not documented) -JAVA-EXCEPTION-CAUSE - Function: (not documented) -JAVA-OBJECT - Class: (not documented) -JAVA-OBJECT-P - Function: Returns T if OBJECT is a JAVA-OBJECT. -JCALL - Function: Invokes the Java method METHOD-REF on INSTANCE with - arguments ARGS, coercing the result into a Lisp object, if possible. -JCALL-RAW - Function: Invokes the Java method METHOD-REF on INSTANCE with - arguments ARGS. Does not attempt to coerce the result into a Lisp - object. -JCLASS - Function: Returns a reference to the Java class designated by - NAME-OR-CLASS-REF. If the CLASS-LOADER parameter is passed, the class - is resolved with respect to the given ClassLoader. -JCLASS-ARRAY-P - Function: Returns T if CLASS is an array class -JCLASS-CONSTRUCTORS - Function: Returns a vector of constructors for CLASS -JCLASS-FIELD - Function: Returns the field named FIELD-NAME of CLASS -JCLASS-FIELDS - Function: Returns a vector of all (or just the declared/public, if - DECLARED/PUBLIC is true) fields of CLASS -JCLASS-INTERFACE-P - Function: Returns T if CLASS is an interface -JCLASS-INTERFACES - Function: Returns the vector of interfaces of CLASS -JCLASS-METHODS - Function: Return a vector of all (or just the declared/public, if - DECLARED/PUBLIC is true) methods of CLASS -JCLASS-NAME - Function: (not documented) -JCLASS-OF - Function: (not documented) -JCLASS-SUPERCLASS - Function: Returns the superclass of CLASS, or NIL if it hasn't got one -JCLASS-SUPERCLASS-P - Function: Returns T if CLASS-1 is a superclass or interface of CLASS-2 -JCOERCE - Function: Attempts to coerce OBJECT into a JavaObject of class - INTENDED-CLASS. Raises a TYPE-ERROR if no conversion is possible. -JCONSTRUCTOR - Function: Returns a reference to the Java constructor of CLASS-REF - with the given PARAMETER-CLASS-REFS. -JCONSTRUCTOR-PARAMS - Function: Returns a vector of parameter types (Java classes) for CONSTRUCTOR -JEQUAL - Function: Compares obj1 with obj2 using java.lang.Object.equals() -JFIELD - Function: Retrieves or modifies a field in a Java class or instance. -JFIELD-NAME - Function: Returns the name of FIELD as a Lisp string -JFIELD-RAW - Function: Retrieves or modifies a field in a Java class or instance. Does not -JFIELD-TYPE - Function: Returns the type (Java class) of FIELD -JINSTANCE-OF-P - Function: OBJ is an instance of CLASS (or one of its subclasses) -JINTERFACE-IMPLEMENTATION - Function: Creates and returns an implementation of a Java interface with -JMAKE-INVOCATION-HANDLER - Function: (not documented) -JMAKE-PROXY - Generic Function: (not documented) -JMEMBER-PROTECTED-P - Function: MEMBER is a protected member of its declaring class -JMEMBER-PUBLIC-P - Function: MEMBER is a public member of its declaring class -JMEMBER-STATIC-P - Function: MEMBER is a static member of its declaring class -JMETHOD - Function: Returns a reference to the Java method METHOD-NAME of - CLASS-REF with the given PARAMETER-CLASS-REFS. -JMETHOD-LET - Macro: (not documented) -JMETHOD-NAME - Function: Returns the name of METHOD as a Lisp string -JMETHOD-PARAMS - Function: Returns a vector of parameter types (Java classes) for METHOD -JMETHOD-RETURN-TYPE - Function: Returns the result type (Java class) of the METHOD -JNEW - Function: Invokes the Java constructor CONSTRUCTOR with the arguments ARGS. -JNEW-ARRAY - Function: Creates a new Java array of type ELEMENT-TYPE, with the given DIMENSIONS. -JNEW-ARRAY-FROM-ARRAY - Function: Returns a new Java array with base type ELEMENT-TYPE (a string or a class-ref) -JNEW-ARRAY-FROM-LIST - Function: (not documented) -JNEW-RUNTIME-CLASS - Function: (not documented) -JNULL-REF-P - Function: Returns a non-NIL value when the JAVA-OBJECT `object` is `null`, -JOBJECT-CLASS - Function: Returns the Java class that OBJ belongs to -JOBJECT-LISP-VALUE - Function: Attempts to coerce JAVA-OBJECT into a Lisp object. -JPROPERTY-VALUE - Function: (not documented) -JREDEFINE-METHOD - Function: (not documented) -JREGISTER-HANDLER - Function: (not documented) -JRESOLVE-METHOD - Function: Finds the most specific Java method METHOD-NAME on - INSTANCE applicable to arguments ARGS. Returns NIL if no suitable - method is found. The algorithm used for resolution is the same used - by JCALL when it is called with a string as the first parameter - (METHOD-REF). -JRUN-EXCEPTION-PROTECTED - Function: Invokes the function CLOSURE and returns the result. - Signals an error if stack or heap exhaustion occurs. -JRUNTIME-CLASS-EXISTS-P - Function: (not documented) -JSTATIC - Function: Invokes the static method METHOD on class CLASS with ARGS. -JSTATIC-RAW - Function: Invokes the static method METHOD on class CLASS with - ARGS. Does not attempt to coerce the arguments or result into a Lisp - object. -MAKE-CLASSLOADER - Function: (not documented) -MAKE-IMMEDIATE-OBJECT - Function: Attempts to coerce a given Lisp object into a java-object of the -REGISTER-JAVA-EXCEPTION - Function: Registers the Java Throwable named by the symbol - EXCEPTION-NAME as the condition designated by CONDITION-SYMBOL. - Returns T if successful, NIL if not. -UNREGISTER-JAVA-EXCEPTION - Function: Unregisters the Java Throwable EXCEPTION-NAME previously - registered by REGISTER-JAVA-EXCEPTION. -\end{verbatim} +\subsection{Exported Symbols from the JAVA package} +\paragraph{} +\label{JAVA:JAVA-EXCEPTION-CAUSE} +\index{JAVA-EXCEPTION-CAUSE} +--- Function: \textbf{java-exception-cause} [\textbf{java}] \textit{java-exception} + +\begin{adjustwidth}{5em}{5em} +Returns the cause of JAVA-EXCEPTION. (The cause is the Java Throwable + object that caused JAVA-EXCEPTION to be signalled.) +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JCLASS-SUPERCLASS-P} +\index{JCLASS-SUPERCLASS-P} +--- Function: \textbf{jclass-superclass-p} [\textbf{java}] \textit{class-1 class-2} + +\begin{adjustwidth}{5em}{5em} +Returns T if CLASS-1 is a superclass or interface of CLASS-2 +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JINTERFACE-IMPLEMENTATION} +\index{JINTERFACE-IMPLEMENTATION} +--- Function: \textbf{jinterface-implementation} [\textbf{java}] \textit{interface \&rest method-names-and-defs} + +\begin{adjustwidth}{5em}{5em} +Creates and returns an implementation of a Java interface with + methods calling Lisp closures as given in METHOD-NAMES-AND-DEFS. + + INTERFACE is either a Java interface or a string naming one. + + METHOD-NAMES-AND-DEFS is an alternating list of method names + (strings) and method definitions (closures). + + For missing methods, a dummy implementation is provided that + returns nothing or null depending on whether the return type is + void or not. This is for convenience only, and a warning is issued + for each undefined method. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:DUMP-CLASSPATH} +\index{DUMP-CLASSPATH} +--- Function: \textbf{dump-classpath} [\textbf{java}] \textit{\&optional classloader} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{JAVA:ENSURE-JAVA-OBJECT} +\index{ENSURE-JAVA-OBJECT} +--- Function: \textbf{ensure-java-object} [\textbf{java}] \textit{obj} + +\begin{adjustwidth}{5em}{5em} +Ensures OBJ is wrapped in a JAVA-OBJECT, wrapping it if necessary. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JMETHOD-RETURN-TYPE} +\index{JMETHOD-RETURN-TYPE} +--- Function: \textbf{jmethod-return-type} [\textbf{java}] \textit{method} + +\begin{adjustwidth}{5em}{5em} +Returns the result type (Java class) of the METHOD +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JFIELD-NAME} +\index{JFIELD-NAME} +--- Function: \textbf{jfield-name} [\textbf{java}] \textit{field} + +\begin{adjustwidth}{5em}{5em} +Returns the name of FIELD as a Lisp string +\end{adjustwidth} + +\paragraph{} +\label{JAVA:*JAVA-OBJECT-TO-STRING-LENGTH*} +\index{*JAVA-OBJECT-TO-STRING-LENGTH*} +--- Variable: \textbf{*java-object-to-string-length*} [\textbf{java}] \textit{} + +\begin{adjustwidth}{5em}{5em} +Length to truncate toString() PRINT-OBJECT output for an otherwise unspecialized JAVA-OBJECT. Can be set to NIL to indicate no limit. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JRUN-EXCEPTION-PROTECTED} +\index{JRUN-EXCEPTION-PROTECTED} +--- Function: \textbf{jrun-exception-protected} [\textbf{java}] \textit{closure} + +\begin{adjustwidth}{5em}{5em} +Invokes the function CLOSURE and returns the result. Signals an error if stack or heap exhaustion occurs. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JINSTANCE-OF-P} +\index{JINSTANCE-OF-P} +--- Function: \textbf{jinstance-of-p} [\textbf{java}] \textit{obj class} + +\begin{adjustwidth}{5em}{5em} +OBJ is an instance of CLASS (or one of its subclasses) +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JMETHOD-NAME} +\index{JMETHOD-NAME} +--- Function: \textbf{jmethod-name} [\textbf{java}] \textit{method} + +\begin{adjustwidth}{5em}{5em} +Returns the name of METHOD as a Lisp string +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JSTATIC-RAW} +\index{JSTATIC-RAW} +--- Function: \textbf{jstatic-raw} [\textbf{java}] \textit{method class \&rest args} + +\begin{adjustwidth}{5em}{5em} +Invokes the static method METHOD on class CLASS with ARGS. Does not attempt to coerce the arguments or result into a Lisp object. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JCLASS-OF} +\index{JCLASS-OF} +--- Function: \textbf{jclass-of} [\textbf{java}] \textit{object \&optional name} + +\begin{adjustwidth}{5em}{5em} +Returns the name of the Java class of OBJECT. If the NAME argument is + supplied, verifies that OBJECT is an instance of the named class. The name + of the class or nil is always returned as a second value. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:GET-CURRENT-CLASSLOADER} +\index{GET-CURRENT-CLASSLOADER} +--- Function: \textbf{get-current-classloader} [\textbf{java}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + + +\paragraph{} +\label{JAVA:JNEW-ARRAY-FROM-LIST} +\index{JNEW-ARRAY-FROM-LIST} +--- Function: \textbf{jnew-array-from-list} [\textbf{java}] \textit{element-type list} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JMETHOD} +\index{JMETHOD} +--- Function: \textbf{jmethod} [\textbf{java}] \textit{class-ref method-name \&rest parameter-class-refs} + +\begin{adjustwidth}{5em}{5em} +Returns a reference to the Java method METHOD-NAME of CLASS-REF with the given PARAMETER-CLASS-REFS. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:GET-DEFAULT-CLASSLOADER} +\index{GET-DEFAULT-CLASSLOADER} +--- Function: \textbf{get-default-classloader} [\textbf{java}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JCLASS-METHODS} +\index{JCLASS-METHODS} +--- Function: \textbf{jclass-methods} [\textbf{java}] \textit{class \&key declared public} + +\begin{adjustwidth}{5em}{5em} +Return a vector of all (or just the declared/public, if DECLARED/PUBLIC is true) methods of CLASS +\end{adjustwidth} + +\paragraph{} +\label{JAVA:REGISTER-JAVA-EXCEPTION} +\index{REGISTER-JAVA-EXCEPTION} +--- Function: \textbf{register-java-exception} [\textbf{java}] \textit{exception-name condition-symbol} + +\begin{adjustwidth}{5em}{5em} +Registers the Java Throwable named by the symbol EXCEPTION-NAME as the condition designated by CONDITION-SYMBOL. Returns T if successful, NIL if not. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JCLASS} +\index{JCLASS} +--- Function: \textbf{jclass} [\textbf{java}] \textit{name-or-class-ref \&optional class-loader} + +\begin{adjustwidth}{5em}{5em} +Returns a reference to the Java class designated by NAME-OR-CLASS-REF. If the CLASS-LOADER parameter is passed, the class is resolved with respect to the given ClassLoader. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JPROPERTY-VALUE} +\index{JPROPERTY-VALUE} +--- Function: \textbf{jproperty-value} [\textbf{java}] \textit{obj prop} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JFIELD-TYPE} +\index{JFIELD-TYPE} +--- Function: \textbf{jfield-type} [\textbf{java}] \textit{field} + +\begin{adjustwidth}{5em}{5em} +Returns the type (Java class) of FIELD +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JNEW-RUNTIME-CLASS} +\index{JNEW-RUNTIME-CLASS} +--- Function: \textbf{jnew-runtime-class} [\textbf{java}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JCLASS-CONSTRUCTORS} +\index{JCLASS-CONSTRUCTORS} +--- Function: \textbf{jclass-constructors} [\textbf{java}] \textit{class} + +\begin{adjustwidth}{5em}{5em} +Returns a vector of constructors for CLASS +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JSTATIC} +\index{JSTATIC} +--- Function: \textbf{jstatic} [\textbf{java}] \textit{method class \&rest args} + +\begin{adjustwidth}{5em}{5em} +Invokes the static method METHOD on class CLASS with ARGS. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JMETHOD-PARAMS} +\index{JMETHOD-PARAMS} +--- Function: \textbf{jmethod-params} [\textbf{java}] \textit{method} + +\begin{adjustwidth}{5em}{5em} +Returns a vector of parameter types (Java classes) for METHOD +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JREGISTER-HANDLER} +\index{JREGISTER-HANDLER} +--- Function: \textbf{jregister-handler} [\textbf{java}] \textit{object event handler \&key data count} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JCLASS-SUPERCLASS} +\index{JCLASS-SUPERCLASS} +--- Function: \textbf{jclass-superclass} [\textbf{java}] \textit{class} + +\begin{adjustwidth}{5em}{5em} +Returns the superclass of CLASS, or NIL if it hasn't got one +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JAVA-OBJECT-P} +\index{JAVA-OBJECT-P} +--- Function: \textbf{java-object-p} [\textbf{java}] \textit{object} + +\begin{adjustwidth}{5em}{5em} +Returns T if OBJECT is a JAVA-OBJECT. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:UNREGISTER-JAVA-EXCEPTION} +\index{UNREGISTER-JAVA-EXCEPTION} +--- Function: \textbf{unregister-java-exception} [\textbf{java}] \textit{exception-name} + +\begin{adjustwidth}{5em}{5em} +Unregisters the Java Throwable EXCEPTION-NAME previously registered by REGISTER-JAVA-EXCEPTION. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JNEW} +\index{JNEW} +--- Function: \textbf{jnew} [\textbf{java}] \textit{constructor \&rest args} + +\begin{adjustwidth}{5em}{5em} +Invokes the Java constructor CONSTRUCTOR with the arguments ARGS. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JRUNTIME-CLASS-EXISTS-P} +\index{JRUNTIME-CLASS-EXISTS-P} +--- Function: \textbf{jruntime-class-exists-p} [\textbf{java}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JARRAY-COMPONENT-TYPE} +\index{JARRAY-COMPONENT-TYPE} +--- Function: \textbf{jarray-component-type} [\textbf{java}] \textit{atype} + +\begin{adjustwidth}{5em}{5em} +Returns the component type of the array type ATYPE +\end{adjustwidth} + +\paragraph{} +\label{JAVA:ADD-TO-CLASSPATH} +\index{ADD-TO-CLASSPATH} +--- Generic Function: \textbf{add-to-classpath} [\textbf{java}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JOBJECT-LISP-VALUE} +\index{JOBJECT-LISP-VALUE} +--- Function: \textbf{jobject-lisp-value} [\textbf{java}] \textit{java-object} + +\begin{adjustwidth}{5em}{5em} +Attempts to coerce JAVA-OBJECT into a Lisp object. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JCLASS-NAME} +\index{JCLASS-NAME} +--- Function: \textbf{jclass-name} [\textbf{java}] \textit{class-ref \&optional name} + +\begin{adjustwidth}{5em}{5em} +When called with one argument, returns the name of the Java class + designated by CLASS-REF. When called with two arguments, tests + whether CLASS-REF matches NAME. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JMEMBER-PUBLIC-P} +\index{JMEMBER-PUBLIC-P} +--- Function: \textbf{jmember-public-p} [\textbf{java}] \textit{member} + +\begin{adjustwidth}{5em}{5em} +MEMBER is a public member of its declaring class +\end{adjustwidth} + +\paragraph{} +\label{JAVA:+NULL+} +\index{+NULL+} +--- Variable: \textbf{+null+} [\textbf{java}] \textit{} + +\begin{adjustwidth}{5em}{5em} +The JVM null object reference. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:ENSURE-JAVA-CLASS} +\index{ENSURE-JAVA-CLASS} +--- Function: \textbf{ensure-java-class} [\textbf{java}] \textit{jclass} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JAVA-CLASS} +\index{JAVA-CLASS} +--- Class: \textbf{java-class} [\textbf{java}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JMETHOD-LET} +\index{JMETHOD-LET} +--- Macro: \textbf{jmethod-let} [\textbf{java}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JCLASS-ARRAY-P} +\index{JCLASS-ARRAY-P} +--- Function: \textbf{jclass-array-p} [\textbf{java}] \textit{class} + +\begin{adjustwidth}{5em}{5em} +Returns T if CLASS is an array class +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JCALL} +\index{JCALL} +--- Function: \textbf{jcall} [\textbf{java}] \textit{method-ref instance \&rest args} + +\begin{adjustwidth}{5em}{5em} +Invokes the Java method METHOD-REF on INSTANCE with arguments ARGS, coercing the result into a Lisp object, if possible. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JARRAY-REF-RAW} +\index{JARRAY-REF-RAW} +--- Function: \textbf{jarray-ref-raw} [\textbf{java}] \textit{java-array \&rest indices} + +\begin{adjustwidth}{5em}{5em} +Dereference the Java array JAVA-ARRAY using the given INDICIES. Does not attempt to coerce the result into a Lisp object. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JEQUAL} +\index{JEQUAL} +--- Function: \textbf{jequal} [\textbf{java}] \textit{obj1 obj2} + +\begin{adjustwidth}{5em}{5em} +Compares obj1 with obj2 using java.lang.Object.equals() +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JNULL-REF-P} +\index{JNULL-REF-P} +--- Function: \textbf{jnull-ref-p} [\textbf{java}] \textit{object} + +\begin{adjustwidth}{5em}{5em} +Returns a non-NIL value when the JAVA-OBJECT `object` is `null`, +or signals a TYPE-ERROR condition if the object isn't of +the right type. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JNEW-ARRAY} +\index{JNEW-ARRAY} +--- Function: \textbf{jnew-array} [\textbf{java}] \textit{element-type \&rest dimensions} + +\begin{adjustwidth}{5em}{5em} +Creates a new Java array of type ELEMENT-TYPE, with the given DIMENSIONS. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:CHAIN} +\index{CHAIN} +--- Macro: \textbf{chain} [\textbf{java}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JFIELD} +\index{JFIELD} +--- Function: \textbf{jfield} [\textbf{java}] \textit{class-ref-or-field field-or-instance \&optional instance value} + +\begin{adjustwidth}{5em}{5em} +Retrieves or modifies a field in a Java class or instance. + +Supported argument patterns: + + Case 1: class-ref field-name: + Retrieves the value of a static field. + + Case 2: class-ref field-name instance-ref: + Retrieves the value of a class field of the instance. + + Case 3: class-ref field-name primitive-value: + Stores a primitive-value in a static field. + + Case 4: class-ref field-name instance-ref value: + Stores value in a class field of the instance. + + Case 5: class-ref field-name nil value: + Stores value in a static field (when value may be + confused with an instance-ref). + + Case 6: field-name instance: + Retrieves the value of a field of the instance. The + class is derived from the instance. + + Case 7: field-name instance value: + Stores value in a field of the instance. The class is + derived from the instance. + +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JAVA-OBJECT} +\index{JAVA-OBJECT} +--- Class: \textbf{java-object} [\textbf{java}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JCLASS-INTERFACES} +\index{JCLASS-INTERFACES} +--- Function: \textbf{jclass-interfaces} [\textbf{java}] \textit{class} + +\begin{adjustwidth}{5em}{5em} +Returns the vector of interfaces of CLASS +\end{adjustwidth} + +\paragraph{} +\label{JAVA:+TRUE+} +\index{+TRUE+} +--- Variable: \textbf{+true+} [\textbf{java}] \textit{} + +\begin{adjustwidth}{5em}{5em} +The JVM primitive value for boolean true. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JMAKE-INVOCATION-HANDLER} +\index{JMAKE-INVOCATION-HANDLER} +--- Function: \textbf{jmake-invocation-handler} [\textbf{java}] \textit{function} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JRESOLVE-METHOD} +\index{JRESOLVE-METHOD} +--- Function: \textbf{jresolve-method} [\textbf{java}] \textit{method-name instance \&rest args} + +\begin{adjustwidth}{5em}{5em} +Finds the most specific Java method METHOD-NAME on INSTANCE applicable to arguments ARGS. Returns NIL if no suitable method is found. The algorithm used for resolution is the same used by JCALL when it is called with a string as the first parameter (METHOD-REF). +\end{adjustwidth} + +\paragraph{} +\label{JAVA:MAKE-CLASSLOADER} +\index{MAKE-CLASSLOADER} +--- Function: \textbf{make-classloader} [\textbf{java}] \textit{\&optional parent} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JMEMBER-PROTECTED-P} +\index{JMEMBER-PROTECTED-P} +--- Function: \textbf{jmember-protected-p} [\textbf{java}] \textit{member} + +\begin{adjustwidth}{5em}{5em} +MEMBER is a protected member of its declaring class +\end{adjustwidth} + +\paragraph{} +\label{JAVA:MAKE-IMMEDIATE-OBJECT} +\index{MAKE-IMMEDIATE-OBJECT} +--- Function: \textbf{make-immediate-object} [\textbf{java}] \textit{object \&optional type} + +\begin{adjustwidth}{5em}{5em} +Attempts to coerce a given Lisp object into a java-object of the +given type. If type is not provided, works as jobject-lisp-value. +Currently, type may be :BOOLEAN, treating the object as a truth value, +or :REF, which returns Java null if NIL is provided. + +Deprecated. Please use JAVA:+NULL+, JAVA:+TRUE+, and JAVA:+FALSE+ for +constructing wrapped primitive types, JAVA:JOBJECT-LISP-VALUE for converting a +JAVA:JAVA-OBJECT to a Lisp value, or JAVA:JNULL-REF-P to distinguish a wrapped +null JAVA-OBJECT from NIL. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JNEW-ARRAY-FROM-ARRAY} +\index{JNEW-ARRAY-FROM-ARRAY} +--- Function: \textbf{jnew-array-from-array} [\textbf{java}] \textit{element-type array} + +\begin{adjustwidth}{5em}{5em} +Returns a new Java array with base type ELEMENT-TYPE (a string or a class-ref) + initialized from ARRAY +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JOBJECT-CLASS} +\index{JOBJECT-CLASS} +--- Function: \textbf{jobject-class} [\textbf{java}] \textit{obj} + +\begin{adjustwidth}{5em}{5em} +Returns the Java class that OBJ belongs to +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JREDEFINE-METHOD} +\index{JREDEFINE-METHOD} +--- Function: \textbf{jredefine-method} [\textbf{java}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JCLASS-FIELDS} +\index{JCLASS-FIELDS} +--- Function: \textbf{jclass-fields} [\textbf{java}] \textit{class \&key declared public} + +\begin{adjustwidth}{5em}{5em} +Returns a vector of all (or just the declared/public, if DECLARED/PUBLIC is true) fields of CLASS +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JAVA-EXCEPTION} +\index{JAVA-EXCEPTION} +--- Class: \textbf{java-exception} [\textbf{java}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{JAVA:DESCRIBE-JAVA-OBJECT} +\index{DESCRIBE-JAVA-OBJECT} +--- Function: \textbf{describe-java-object} [\textbf{java}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JFIELD-RAW} +\index{JFIELD-RAW} +--- Function: \textbf{jfield-raw} [\textbf{java}] \textit{class-ref-or-field field-or-instance \&optional instance value} + +\begin{adjustwidth}{5em}{5em} +Retrieves or modifies a field in a Java class or instance. Does not +attempt to coerce its value or the result into a Lisp object. + +Supported argument patterns: + + Case 1: class-ref field-name: + Retrieves the value of a static field. + + Case 2: class-ref field-name instance-ref: + Retrieves the value of a class field of the instance. + + Case 3: class-ref field-name primitive-value: + Stores a primitive-value in a static field. + + Case 4: class-ref field-name instance-ref value: + Stores value in a class field of the instance. + + Case 5: class-ref field-name nil value: + Stores value in a static field (when value may be + confused with an instance-ref). + + Case 6: field-name instance: + Retrieves the value of a field of the instance. The + class is derived from the instance. + + Case 7: field-name instance value: + Stores value in a field of the instance. The class is + derived from the instance. + +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JCONSTRUCTOR-PARAMS} +\index{JCONSTRUCTOR-PARAMS} +--- Function: \textbf{jconstructor-params} [\textbf{java}] \textit{constructor} + +\begin{adjustwidth}{5em}{5em} +Returns a vector of parameter types (Java classes) for CONSTRUCTOR +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JMEMBER-STATIC-P} +\index{JMEMBER-STATIC-P} +--- Function: \textbf{jmember-static-p} [\textbf{java}] \textit{member} + +\begin{adjustwidth}{5em}{5em} +MEMBER is a static member of its declaring class +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JCOERCE} +\index{JCOERCE} +--- Function: \textbf{jcoerce} [\textbf{java}] \textit{object intended-class} + +\begin{adjustwidth}{5em}{5em} +Attempts to coerce OBJECT into a JavaObject of class INTENDED-CLASS. Raises a TYPE-ERROR if no conversion is possible. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JCONSTRUCTOR} +\index{JCONSTRUCTOR} +--- Function: \textbf{jconstructor} [\textbf{java}] \textit{class-ref \&rest parameter-class-refs} + +\begin{adjustwidth}{5em}{5em} +Returns a reference to the Java constructor of CLASS-REF with the given PARAMETER-CLASS-REFS. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JARRAY-SET} +\index{JARRAY-SET} +--- Function: \textbf{jarray-set} [\textbf{java}] \textit{java-array new-value \&rest indices} + +\begin{adjustwidth}{5em}{5em} +Stores NEW-VALUE at the given index in JAVA-ARRAY. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JARRAY-LENGTH} +\index{JARRAY-LENGTH} +--- Function: \textbf{jarray-length} [\textbf{java}] \textit{java-array} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JARRAY-REF} +\index{JARRAY-REF} +--- Function: \textbf{jarray-ref} [\textbf{java}] \textit{java-array \&rest indices} + +\begin{adjustwidth}{5em}{5em} +Dereferences the Java array JAVA-ARRAY using the given INDICIES, coercing the result into a Lisp object, if possible. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JCLASS-FIELD} +\index{JCLASS-FIELD} +--- Function: \textbf{jclass-field} [\textbf{java}] \textit{class field-name} + +\begin{adjustwidth}{5em}{5em} +Returns the field named FIELD-NAME of CLASS +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JMAKE-PROXY} +\index{JMAKE-PROXY} +--- Generic Function: \textbf{jmake-proxy} [\textbf{java}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JCALL-RAW} +\index{JCALL-RAW} +--- Function: \textbf{jcall-raw} [\textbf{java}] \textit{method-ref instance \&rest args} + +\begin{adjustwidth}{5em}{5em} +Invokes the Java method METHOD-REF on INSTANCE with arguments ARGS. Does not attempt to coerce the result into a Lisp object. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:+FALSE+} +\index{+FALSE+} +--- Variable: \textbf{+false+} [\textbf{java}] \textit{} + +\begin{adjustwidth}{5em}{5em} +The JVM primitive value for boolean false. +\end{adjustwidth} + +\paragraph{} +\label{JAVA:JCLASS-INTERFACE-P} +\index{JCLASS-INTERFACE-P} +--- Function: \textbf{jclass-interface-p} [\textbf{java}] \textit{class} + +\begin{adjustwidth}{5em}{5em} +Returns T if CLASS is an interface +\end{adjustwidth} + Modified: trunk/abcl/doc/manual/threads.tex ============================================================================== --- trunk/abcl/doc/manual/threads.tex Wed Nov 2 06:12:07 2011 (r13689) +++ trunk/abcl/doc/manual/threads.tex Wed Nov 2 06:12:24 2011 (r13690) @@ -1,52 +1,235 @@ -\begin{verbatim} -THREADS:CURRENT-THREAD - Function: (not documented) -THREADS:DESTROY-THREAD - Function: (not documented) -THREADS:GET-MUTEX - Function: Acquires a lock on the `mutex'. -THREADS:INTERRUPT-THREAD - Function: Interrupts THREAD and forces it to apply FUNCTION to ARGS. -THREADS:MAILBOX-EMPTY-P - Function: Returns non-NIL if the mailbox can be read from, NIL otherwise. -THREADS:MAILBOX-PEEK - Function: Returns two values. The second returns non-NIL when the mailbox -THREADS:MAILBOX-READ - Function: Blocks on the mailbox until an item is available for reading. -THREADS:MAILBOX-SEND - Function: Sends an item into the mailbox, notifying 1 waiter -THREADS:MAKE-MAILBOX - Function: (not documented) -THREADS:MAKE-MUTEX - Function: (not documented) -THREADS:MAKE-THREAD - Function: (not documented) -THREADS:MAKE-THREAD-LOCK - Function: Returns an object to be used with the `with-thread-lock' macro. -THREADS:MAPCAR-THREADS - Function: (not documented) -THREADS:OBJECT-NOTIFY - Function: (not documented) -THREADS:OBJECT-NOTIFY-ALL - Function: (not documented) -THREADS:OBJECT-WAIT - Function: (not documented) -THREADS:RELEASE-MUTEX - Function: Releases a lock on the `mutex'. -THREADS:SYNCHRONIZED-ON - Function: (not documented) -THREADS:THREAD - Class: (not documented) -THREADS:THREAD-ALIVE-P - Function: Boolean predicate whether THREAD is alive. -THREADS:THREAD-JOIN - Function: Waits for thread to finish. -THREADS:THREAD-NAME - Function: (not documented) -THREADS:THREADP - Function: (not documented) -THREADS:WITH-MUTEX - Function: (not documented) -THREADS:WITH-THREAD-LOCK - Function: (not documented) -\end{verbatim} +\subsection{Exported Symbols from the THREADS package} + +\paragraph{} +\label{THREADS:MAILBOX-EMPTY-P} +\index{MAILBOX-EMPTY-P} +--- Function: \textbf{mailbox-empty-p} [\textbf{threads}] \textit{mailbox} + +\begin{adjustwidth}{5em}{5em} +Returns non-NIL if the mailbox can be read from, NIL otherwise. +\end{adjustwidth} + +\paragraph{} +\label{THREADS:THREADP} +\index{THREADP} +--- Function: \textbf{threadp} [\textbf{threads}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{THREADS:DESTROY-THREAD} +\index{DESTROY-THREAD} +--- Function: \textbf{destroy-thread} [\textbf{threads}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{THREADS:WITH-MUTEX} +\index{WITH-MUTEX} +--- Macro: \textbf{with-mutex} [\textbf{threads}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{THREADS:THREAD-JOIN} +\index{THREAD-JOIN} +--- Function: \textbf{thread-join} [\textbf{threads}] \textit{thread} + +\begin{adjustwidth}{5em}{5em} +Waits for thread to finish. +\end{adjustwidth} + +\paragraph{} +\label{THREADS:RELEASE-MUTEX} +\index{RELEASE-MUTEX} +--- Function: \textbf{release-mutex} [\textbf{threads}] \textit{mutex} + +\begin{adjustwidth}{5em}{5em} +Releases a lock on the `mutex'. +\end{adjustwidth} + +\paragraph{} +\label{THREADS:OBJECT-WAIT} +\index{OBJECT-WAIT} +--- Function: \textbf{object-wait} [\textbf{threads}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{THREADS:MAKE-THREAD} +\index{MAKE-THREAD} +--- Function: \textbf{make-thread} [\textbf{threads}] \textit{function \&key name} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{THREADS:MAKE-THREAD-LOCK} +\index{MAKE-THREAD-LOCK} +--- Function: \textbf{make-thread-lock} [\textbf{threads}] \textit{} + +\begin{adjustwidth}{5em}{5em} +Returns an object to be used with the `with-thread-lock' macro. +\end{adjustwidth} + +\paragraph{} +\label{THREADS:OBJECT-NOTIFY-ALL} +\index{OBJECT-NOTIFY-ALL} +--- Function: \textbf{object-notify-all} [\textbf{threads}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{THREADS:MAKE-MAILBOX} +\index{MAKE-MAILBOX} +--- Function: \textbf{make-mailbox} [\textbf{threads}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{THREADS:OBJECT-NOTIFY} +\index{OBJECT-NOTIFY} +--- Function: \textbf{object-notify} [\textbf{threads}] \textit{object} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{THREADS:GET-MUTEX} +\index{GET-MUTEX} +--- Function: \textbf{get-mutex} [\textbf{threads}] \textit{mutex} + +\begin{adjustwidth}{5em}{5em} +Acquires a lock on the `mutex'. +\end{adjustwidth} + +\paragraph{} +\label{THREADS:MAILBOX-PEEK} +\index{MAILBOX-PEEK} +--- Function: \textbf{mailbox-peek} [\textbf{threads}] \textit{mailbox} + +\begin{adjustwidth}{5em}{5em} +Returns two values. The second returns non-NIL when the mailbox +is empty. The first is the next item to be read from the mailbox +if the first is NIL. + +Note that due to multi-threading, the first value returned upon +peek, may be different from the one returned upon next read in the +calling thread. +\end{adjustwidth} + +\paragraph{} +\label{THREADS:THREAD-ALIVE-P} +\index{THREAD-ALIVE-P} +--- Function: \textbf{thread-alive-p} [\textbf{threads}] \textit{thread} + +\begin{adjustwidth}{5em}{5em} +Boolean predicate whether THREAD is alive. +\end{adjustwidth} + +\paragraph{} +\label{THREADS:MAILBOX-READ} +\index{MAILBOX-READ} +--- Function: \textbf{mailbox-read} [\textbf{threads}] \textit{mailbox} + +\begin{adjustwidth}{5em}{5em} +Blocks on the mailbox until an item is available for reading. +When an item is available, it is returned. +\end{adjustwidth} + +\paragraph{} +\label{THREADS:SYNCHRONIZED-ON} +\index{SYNCHRONIZED-ON} +--- NIL: \textbf{synchronized-on} [\textbf{threads}] \textit{} + +\begin{adjustwidth}{5em}{5em} +\end{adjustwidth} + +\paragraph{} +\label{THREADS:INTERRUPT-THREAD} +\index{INTERRUPT-THREAD} +--- Function: \textbf{interrupt-thread} [\textbf{threads}] \textit{thread function \&rest args} + +\begin{adjustwidth}{5em}{5em} +Interrupts THREAD and forces it to apply FUNCTION to ARGS. +When the function returns, the thread's original computation continues. If multiple interrupts are queued for a thread, they are all run, but the order is not guaranteed. +\end{adjustwidth} + +\paragraph{} +\label{THREADS:MAKE-MUTEX} +\index{MAKE-MUTEX} +--- Function: \textbf{make-mutex} [\textbf{threads}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{THREADS:THREAD} +\index{THREAD} +--- Class: \textbf{thread} [\textbf{threads}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{THREADS:WITH-THREAD-LOCK} +\index{WITH-THREAD-LOCK} +--- Macro: \textbf{with-thread-lock} [\textbf{threads}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{THREADS:MAILBOX-SEND} +\index{MAILBOX-SEND} +--- Function: \textbf{mailbox-send} [\textbf{threads}] \textit{mailbox item} + +\begin{adjustwidth}{5em}{5em} +Sends an item into the mailbox, notifying 1 waiter +to wake up for retrieval of that object. +\end{adjustwidth} + +\paragraph{} +\label{THREADS:THREAD-NAME} +\index{THREAD-NAME} +--- Function: \textbf{thread-name} [\textbf{threads}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{THREADS:CURRENT-THREAD} +\index{CURRENT-THREAD} +--- Function: \textbf{current-thread} [\textbf{threads}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + +\paragraph{} +\label{THREADS:MAPCAR-THREADS} +\index{MAPCAR-THREADS} +--- Function: \textbf{mapcar-threads} [\textbf{threads}] \textit{} + +\begin{adjustwidth}{5em}{5em} +NOT-DOCUMENTED +\end{adjustwidth} + From mevenson at common-lisp.net Thu Nov 3 16:04:20 2011 From: mevenson at common-lisp.net (mevenson at common-lisp.net) Date: Thu, 03 Nov 2011 09:04:20 -0700 Subject: [armedbear-cvs] r13691 - trunk/abcl/src/org/armedbear/lisp Message-ID: Author: mevenson Date: Thu Nov 3 09:04:19 2011 New Revision: 13691 Log: Upgrade to ASDF-2.018. Modified: trunk/abcl/src/org/armedbear/lisp/asdf.lisp Modified: trunk/abcl/src/org/armedbear/lisp/asdf.lisp ============================================================================== --- trunk/abcl/src/org/armedbear/lisp/asdf.lisp Wed Nov 2 06:12:24 2011 (r13690) +++ trunk/abcl/src/org/armedbear/lisp/asdf.lisp Thu Nov 3 09:04:19 2011 (r13691) @@ -1,5 +1,5 @@ ;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp -*- -;;; This is ASDF 2.017.22: Another System Definition Facility. +;;; This is ASDF 2.018: Another System Definition Facility. ;;; ;;; Feedback, bug reports, and patches are all welcome: ;;; please mail to . @@ -90,12 +90,9 @@ #-(or gcl genera) format #+(or gcl genera) (loop :for (unsupported . replacement) :in - `(("~3i~_" . "") - #+genera - ,@(("~@<" . "") - ("; ~@;" . "; ") - ("~@:>" . "") - ("~:>" . ""))) :do + (append + '(("~3i~_" . "")) + #+genera '(("~@<" . "") ("; ~@;" . "; ") ("~@:>" . "") ("~:>" . ""))) :do (loop :for found = (search unsupported format) :while found :do (setf format (concatenate 'simple-string @@ -110,7 +107,7 @@ ;; "2.345.6" would be a development version in the official upstream ;; "2.345.0.7" would be your seventh local modification of official release 2.345 ;; "2.345.6.7" would be your seventh local modification of development version 2.345.6 - (asdf-version "2.017.22") + (asdf-version "2.018") (existing-asdf (find-class 'component nil)) (existing-version *asdf-version*) (already-there (equal asdf-version existing-version))) @@ -351,6 +348,7 @@ ;; #:find-symbol* #:merge-pathnames* #:coerce-pathname + #:subpathname #:pathname-directory-pathname #:read-file-forms ;; #:remove-keys @@ -1417,7 +1415,7 @@ ;;;; Jesse Hager: The Windows Shortcut File Format. ;;;; http://www.wotsit.org/list.asp?fc=13 -#-clisp +#-(or clisp genera) ; CLISP doesn't need it, and READ-SEQUENCE annoys old Genera. (progn (defparameter *link-initial-dword* 76) (defparameter *link-guid* #(1 20 2 0 0 0 0 0 192 0 0 0 0 0 0 70)) @@ -1570,21 +1568,21 @@ (cond ((atom x) (and (member x features) t)) - ((eq 'not (car x)) + ((eq :not (car x)) (assert (null (cddr x))) (not (featurep (cadr x) features))) - ((eq 'or (car x)) + ((eq :or (car x)) (some #'(lambda (x) (featurep x features)) (cdr x))) - ((eq 'and (car x)) + ((eq :and (car x)) (every #'(lambda (x) (featurep x features)) (cdr x))) (t (error "Malformed feature specification ~S" x)))) (defun* os-unix-p () - (featurep '(or :unix :cygwin :darwin))) + (featurep '(:or :unix :cygwin :darwin))) (defun* os-windows-p () - (and (not (os-unix-p)) (featurep '(or :win32 :windows :mswindows :mingw32)))) + (and (not (os-unix-p)) (featurep '(:or :win32 :windows :mswindows :mingw32)))) (defun* probe-asd (name defaults) (block nil @@ -1594,7 +1592,7 @@ :version :newest :case :local :type "asd"))) (when (probe-file* file) (return file))) - #-clisp + #-(or clisp genera) ; clisp doesn't need it, plain genera doesn't have read-sequence(!) (when (os-windows-p) (let ((shortcut (make-pathname @@ -1871,6 +1869,17 @@ :type (source-file-type component (component-system component)) :defaults (component-parent-pathname component))) +(defun* subpathname (pathname subpath &key type) + (and pathname (merge-pathnames* (coerce-pathname subpath :type type) + (pathname-directory-pathname pathname)))) + +(defun* try-subpathname (pathname subpath &key type) + (let* ((sp (and pathname (probe-file* pathname) + (subpathname pathname subpath :type type))) + (ts (and sp (probe-file* sp)))) + (and ts (values sp ts)))) + + ;;;; ------------------------------------------------------------------------- ;;;; Operations @@ -2205,6 +2214,7 @@ (handler-case (update-flag (do-traverse operation kid #'internal-collect)) + #-genera (missing-dependency (condition) (when (eq (module-if-component-dep-fails c) :fail) @@ -2368,9 +2378,9 @@ (*compile-file-failure-behaviour* (operation-on-failure operation))) (multiple-value-bind (output warnings-p failure-p) (call-with-around-compile-hook - c (lambda () - (apply *compile-op-compile-file-function* source-file - :output-file output-file (compile-op-flags operation)))) + c #'(lambda () + (apply *compile-op-compile-file-function* source-file + :output-file output-file (compile-op-flags operation)))) (unless output (error 'compile-error :component c :operation operation)) (when failure-p @@ -2476,7 +2486,7 @@ (declare (ignorable o)) (let ((source (component-pathname c))) (setf (component-property c 'last-loaded-as-source) - (and (call-with-around-compile-hook c (lambda () (load source))) + (and (call-with-around-compile-hook c #'(lambda () (load source))) (get-universal-time))))) (defmethod perform ((operation load-source-op) (c static-file)) @@ -2658,7 +2668,7 @@ (defun* load-pathname () (resolve-symlinks* (or *load-pathname* *compile-file-pathname*))) -(defun* determine-system-pathname (pathname pathname-supplied-p) +(defun* determine-system-pathname (pathname) ;; The defsystem macro calls us to determine ;; the pathname of a system as follows: ;; 1. the one supplied, @@ -2666,9 +2676,7 @@ ;; 3. taken from the *default-pathname-defaults* via default-directory (let* ((file-pathname (load-pathname)) (directory-pathname (and file-pathname (pathname-directory-pathname file-pathname)))) - (or (and pathname-supplied-p - (merge-pathnames* (coerce-pathname pathname :type :directory) - directory-pathname)) + (or (and pathname (subpathname directory-pathname pathname :type :directory)) directory-pathname (default-directory)))) @@ -2849,7 +2857,7 @@ ret))) (defun* do-defsystem (name &rest options - &key (pathname nil pathname-arg-p) (class 'system) + &key pathname (class 'system) defsystem-depends-on &allow-other-keys) ;; The system must be registered before we parse the body, ;; otherwise we recur when trying to find an existing system @@ -2876,7 +2884,7 @@ (parse-component-form nil (list* :module name - :pathname (determine-system-pathname pathname pathname-arg-p) + :pathname (determine-system-pathname pathname) component-options))))) (defmacro defsystem (name &body options) @@ -3056,9 +3064,7 @@ :defaults p))) (defun* system-relative-pathname (system name &key type) - (merge-pathnames* - (coerce-pathname name :type type) - (system-source-directory system))) + (subpathname (system-source-directory system) name :type type)) ;;; --------------------------------------------------------------------------- @@ -3066,38 +3072,41 @@ ;;; ;;; produce a string to identify current implementation. ;;; Initially stolen from SLIME's SWANK, rewritten since. -;;; The (car '(...)) idiom avoids unreachable code warnings. +;;; We're back to runtime checking, for the sake of e.g. ABCL. -(defparameter *implementation-type* - (car '(#+abcl :abcl #+allegro :acl - #+clozure :ccl #+clisp :clisp #+cormanlisp :corman #+cmu :cmu - #+ecl :ecl #+gcl :gcl #+lispworks :lw #+mcl :mcl - #+sbcl :sbcl #+scl :scl #+symbolics :symbolic #+xcl :xcl))) - -(defparameter *operating-system* - (car '(#+cygwin :cygwin #+(or windows mswindows win32 mingw32) :win - #+(or linux linux-target) :linux ;; for GCL at least, must appear before :bsd. - #+(or macosx darwin darwin-target apple) :macosx ; also before :bsd - #+(or solaris sunos) :solaris - #+(or freebsd netbsd openbsd bsd) :bsd - #+unix :unix - #+genera :genera))) - -(defparameter *architecture* - (car '(#+(or amd64 x86-64 x86_64 x8664-target (and word-size=64 pc386)) :x64 - #+(or x86 i386 i486 i586 i686 pentium3 pentium4 pc386 iapx386 x8632-target) :x86 - #+hppa64 :hppa64 #+hppa :hppa - #+(or ppc64 ppc64-target) :ppc64 - #+(or ppc32 ppc32-target ppc powerpc) :ppc32 - #+sparc64 :sparc64 #+(or sparc32 sparc) :sparc32 - #+(or arm arm-target) :arm - #+(or java java-1.4 java-1.5 java-1.6 java-1.7) :java - #+mipsel :mispel #+mipseb :mipseb #+mips :mips - #+alpha :alpha #+imach :imach))) +(defun* first-feature (features) + (dolist (x features) + (multiple-value-bind (val feature) + (if (consp x) (values (first x) (cons :or (rest x))) (values x x)) + (when (featurep feature) (return val))))) + +(defun implementation-type () + (first-feature + '(:abcl (:acl :allegro) (:ccl :clozure) :clisp (:corman :cormanlisp) :cmu + :ecl :gcl (:lw :lispworks) :mcl :sbcl :scl :symbolics :xcl))) + +(defun operating-system () + (first-feature + '(:cygwin (:win :windows :mswindows :win32 :mingw32) ;; try cygwin first! + (:linux :linux :linux-target) ;; for GCL at least, must appear before :bsd + (:macosx :macosx :darwin :darwin-target :apple) ; also before :bsd + (:solaris :solaris :sunos) (:bsd :bsd :freebsd :netbsd :openbsd) :unix + :genera))) + +(defun architecture () + (first-feature + '((:x64 :amd64 :x86-64 :x86_64 :x8664-target (:and :word-size=64 :pc386)) + (:x86 :x86 :i386 :i486 :i586 :i686 :pentium3 :pentium4 :pc386 :iapx386 :x8632-target) + (:ppc64 :ppc64 :ppc64-target) (:ppc32 :ppc32 :ppc32-target :ppc :powerpc) + :hppa64 :hppa :sparc64 (:sparc32 :sparc32 :sparc) + :mipsel :mipseb :mips :alpha (:arm :arm :arm-target) :imach + ;; Java comes last: if someone uses C via CFFI or otherwise JNA or JNI, + ;; we may have to segregate the code still by architecture. + (:java :java :java-1.4 :java-1.5 :java-1.6 :java-1.7)))) -(defparameter *lisp-version-string* +(defun lisp-version-string () (let ((s (lisp-implementation-version))) - (car + (car ; as opposed to OR, this idiom prevents some unreachable code warning (list #+allegro (format nil "~A~A~@[~A~]" @@ -3116,6 +3125,9 @@ ccl::*openmcl-minor-version* (logand ccl::fasl-version #xFF)) #+cmu (substitute #\- #\/ s) + #+scl (format nil "~A~A" s + ;; ANSI upper case vs lower case. + (ecase ext:*case-mode* (:upper "") (:lower "l"))) #+ecl (format nil "~A~@[-~A~]" s (let ((vcs-id (ext:lisp-implementation-vcs-id))) (subseq vcs-id 0 (min (length vcs-id) 8)))) @@ -3126,17 +3138,14 @@ #+mcl (subseq s 8) ; strip the leading "Version " s)))) -(defun* implementation-type () - *implementation-type*) - (defun* implementation-identifier () (substitute-if #\_ #'(lambda (x) (find x " /:;&^\\|?<>(){}[]$#`'\"")) (format nil "~(~a~@{~@[-~a~]~}~)" - (or *implementation-type* (lisp-implementation-type)) - (or *lisp-version-string* (lisp-implementation-version)) - (or *operating-system* (software-type)) - (or *architecture* (machine-type))))) + (or (implementation-type) (lisp-implementation-type)) + (or (lisp-version-string) (lisp-implementation-version)) + (or (operating-system) (software-type)) + (or (architecture) (machine-type))))) ;;; --------------------------------------------------------------------------- @@ -3151,40 +3160,33 @@ #+mcl (current-user-homedir-pathname) #-mcl (user-homedir-pathname)))) -(defun* try-directory-subpath (x sub &key type) - (let* ((p (and x (ensure-directory-pathname x))) - (tp (and p (probe-file* p))) - (sp (and tp (merge-pathnames* (coerce-pathname sub :type type) p))) - (ts (and sp (probe-file* sp)))) - (and ts (values sp ts)))) (defun* user-configuration-directories () (let ((dirs - (flet ((try (x sub) (try-directory-subpath x sub))) - `(,(try (getenv "XDG_CONFIG_HOME") "common-lisp/") - ,@(loop :with dirs = (getenv "XDG_CONFIG_DIRS") - :for dir :in (split-string dirs :separator ":") - :collect (try dir "common-lisp/")) - ,@(when (os-windows-p) - `(,(try (or #+lispworks (sys:get-folder-path :local-appdata) - (getenv "LOCALAPPDATA")) - "common-lisp/config/") - ;; read-windows-registry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\AppData - ,(try (or #+lispworks (sys:get-folder-path :appdata) - (getenv "APPDATA")) - "common-lisp/config/"))) - ,(try (user-homedir) ".config/common-lisp/"))))) + `(,(try-subpathname (getenv "XDG_CONFIG_HOME") "common-lisp/") + ,@(loop :with dirs = (getenv "XDG_CONFIG_DIRS") + :for dir :in (split-string dirs :separator ":") + :collect (try-subpathname dir "common-lisp/")) + ,@(when (os-windows-p) + `(,(try-subpathname (or #+lispworks (sys:get-folder-path :local-appdata) + (getenv "LOCALAPPDATA")) + "common-lisp/config/") + ;; read-windows-registry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\AppData + ,(try-subpathname (or #+lispworks (sys:get-folder-path :appdata) + (getenv "APPDATA")) + "common-lisp/config/"))) + ,(try-subpathname (user-homedir) ".config/common-lisp/")))) (remove-duplicates (remove-if #'null dirs) :from-end t :test 'equal))) + (defun* system-configuration-directories () (cond ((os-unix-p) '(#p"/etc/common-lisp/")) ((os-windows-p) (aif - (flet ((try (x sub) (try-directory-subpath x sub))) - ;; read-windows-registry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Common AppData - (try (or #+lispworks (sys:get-folder-path :common-appdata) - (getenv "ALLUSERSAPPDATA") - (try (getenv "ALLUSERSPROFILE") "Application Data/")) - "common-lisp/config/")) + ;; read-windows-registry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Common AppData + (try-subpathname (or #+lispworks (sys:get-folder-path :common-appdata) + (getenv "ALLUSERSAPPDATA") + (subpathname (getenv "ALLUSERSPROFILE") "Application Data/")) + "common-lisp/config/") (list it))))) (defun* in-first-directory (dirs x) @@ -3699,7 +3701,7 @@ (defmethod output-files :around (operation component) "Translate output files, unless asked not to" - (declare (ignorable operation component)) + operation component ;; hush genera, not convinced by declare ignorable(!) (values (multiple-value-bind (files fixedp) (call-next-method) (if fixedp @@ -3783,9 +3785,7 @@ (&key (centralize-lisp-binaries nil) (default-toplevel-directory - ;; Use ".cache/common-lisp" instead ??? - (merge-pathnames* (make-pathname :directory '(:relative ".fasls")) - (user-homedir))) + (subpathname (user-homedir) ".fasls/")) ;; Use ".cache/common-lisp/" instead ??? (include-per-user-information nil) (map-all-source-files (or #+(or ecl clisp) t nil)) (source-to-target-mappings nil)) @@ -4017,16 +4017,16 @@ `(:source-registry #+sbcl (:tree ,(truenamize (getenv "SBCL_HOME"))) :inherit-configuration - #+cmu (:tree #p"modules:"))) + #+cmu (:tree #p"modules:") + #+scl (:tree #p"file://modules/"))) (defun* default-source-registry () - (flet ((try (x sub) (try-directory-subpath x sub))) - `(:source-registry - #+sbcl (:directory ,(try (user-homedir) ".sbcl/systems/")) - (:directory ,(default-directory)) + `(:source-registry + #+sbcl (:directory ,(try-subpathname (user-homedir) ".sbcl/systems/")) + (:directory ,(default-directory)) ,@(loop :for dir :in `(,@(when (os-unix-p) `(,(or (getenv "XDG_DATA_HOME") - (try (user-homedir) ".local/share/")) + (try-subpathname (user-homedir) ".local/share/")) ,@(split-string (or (getenv "XDG_DATA_DIRS") "/usr/local/share:/usr/share") :separator ":"))) @@ -4037,10 +4037,10 @@ (getenv "APPDATA")) ,(or #+lispworks (sys:get-folder-path :common-appdata) (getenv "ALLUSERSAPPDATA") - (try (getenv "ALLUSERSPROFILE") "Application Data/"))))) - :collect `(:directory ,(try dir "common-lisp/systems/")) - :collect `(:tree ,(try dir "common-lisp/source/"))) - :inherit-configuration))) + (try-subpathname (getenv "ALLUSERSPROFILE") "Application Data/"))))) + :collect `(:directory ,(try-subpathname dir "common-lisp/systems/")) + :collect `(:tree ,(try-subpathname dir "common-lisp/source/"))) + :inherit-configuration)) (defun* user-source-registry () (in-user-configuration-directory *source-registry-file*)) (defun* system-source-registry () @@ -4238,6 +4238,7 @@ (defun* module-provide-asdf (name) (handler-bind ((style-warning #'muffle-warning) + #-genera (missing-component (constantly nil)) (error #'(lambda (e) (format *error-output* (compatfmt "~@~%") From mevenson at common-lisp.net Thu Nov 3 16:10:08 2011 From: mevenson at common-lisp.net (mevenson at common-lisp.net) Date: Thu, 03 Nov 2011 09:10:08 -0700 Subject: [armedbear-cvs] r13692 - trunk/abcl/src/org/armedbear/lisp Message-ID: Author: mevenson Date: Thu Nov 3 09:10:07 2011 New Revision: 13692 Log: Enable ASDF to load from jar files again for #181. Unsure if we need to somehow change the semantics of how MERGE-PATHNAMES works in the presence of JAR-PATHNAMES. Currently, we have the following behavior: CL-USER> (merge-pathnames "/home/evenson/work/abcl/dist/abcl-contrib.jar" #p"jar:file:/foo/bar.jar!/fee/") #P"jar:file:/foo/bar.jar!/home/evenson/work/abcl/dist/abcl-contrib.jar" Should we "break" ANSI here, so that if we have a defaulted DEVICE, we also keep the defaulted DIRECTORY? Unfortunately, I think this will break some common cases of dealing with relative directories inside a JAR-PATHNAME. Need to consider this with email to both @armedbear-develop and @asdf-develop. Modified: trunk/abcl/src/org/armedbear/lisp/asdf.lisp Modified: trunk/abcl/src/org/armedbear/lisp/asdf.lisp ============================================================================== --- trunk/abcl/src/org/armedbear/lisp/asdf.lisp Thu Nov 3 09:04:19 2011 (r13691) +++ trunk/abcl/src/org/armedbear/lisp/asdf.lisp Thu Nov 3 09:10:07 2011 (r13692) @@ -1706,6 +1706,12 @@ (let ((*package* package) (*default-pathname-defaults* (pathname-directory-pathname pathname))) + ;;; XXX Under ABCL, if the PATHNAME is a JAR-PATHNAME the + ;;; MERGE-PATHNAMES are perhaps a bit wonky. + #+abcl + (when (ext:pathname-jar-p pathname) + (setf *default-pathname-defaults* + (make-pathname :device nil :defaults *default-pathname-defaults*))) (asdf-message (compatfmt "~&~@<; ~@;Loading system definition from ~A into ~A~@:>~%") pathname package) (load pathname))) From mevenson at common-lisp.net Sun Nov 6 12:43:21 2011 From: mevenson at common-lisp.net (mevenson at common-lisp.net) Date: Sun, 06 Nov 2011 04:43:21 -0800 Subject: [armedbear-cvs] r13693 - trunk/abcl Message-ID: Author: mevenson Date: Sun Nov 6 04:43:19 2011 New Revision: 13693 Log: Document how to enable the runtime assertions asserted by the ABCL system. Modified: trunk/abcl/abcl.properties.in Modified: trunk/abcl/abcl.properties.in ============================================================================== --- trunk/abcl/abcl.properties.in Thu Nov 3 09:10:07 2011 (r13692) +++ trunk/abcl/abcl.properties.in Sun Nov 6 04:43:19 2011 (r13693) @@ -1,7 +1,10 @@ # $Id$ +# XXX should be called 'build.properties' but this collides with its usage by the Eclipe IDE + # Template for settings the Ant based build process. + # Attempt to perform incremental compilation? #abcl.build.incremental=true @@ -33,5 +36,8 @@ # help things out. #java.options=-d64 -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=1g +# Enable assertions specified via the JVM contract +#java.options=-ea + # Additional site specific startup code to be merged in 'system.lisp' at build time #abcl.startup.file=${basedir}/startup.lisp From mevenson at common-lisp.net Tue Nov 8 13:21:39 2011 From: mevenson at common-lisp.net (mevenson at common-lisp.net) Date: Tue, 08 Nov 2011 05:21:39 -0800 Subject: [armedbear-cvs] r13694 - trunk/abcl/doc/manual Message-ID: Author: mevenson Date: Tue Nov 8 05:21:38 2011 New Revision: 13694 Log: Document how to render the User Manual as PDF. Added: trunk/abcl/doc/manual/README.markdown Added: trunk/abcl/doc/manual/README.markdown ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/abcl/doc/manual/README.markdown Tue Nov 8 05:21:38 2011 (r13694) @@ -0,0 +1,6 @@ +ABCL User Manual +================ + +With a suitable TexLive installed, to build simply issue: + + cmd$ pdflatex abcl.tex && makeindex abcl && pdflatex abcl.tex From astalla at common-lisp.net Tue Nov 8 23:24:06 2011 From: astalla at common-lisp.net (astalla at common-lisp.net) Date: Tue, 08 Nov 2011 15:24:06 -0800 Subject: [armedbear-cvs] r13695 - trunk/abcl/src/org/armedbear/lisp Message-ID: Author: astalla Date: Tue Nov 8 15:24:05 2011 New Revision: 13695 Log: Reimplementation of global symbol macros to avoid using the symbol's value slot. Global symbol macros are stored on the symbols' property lists instead. Tested with FSet which uses symbol macros quite heavily to implement and use global lexical variables. Modified: trunk/abcl/src/org/armedbear/lisp/Autoload.java trunk/abcl/src/org/armedbear/lisp/Binding.java trunk/abcl/src/org/armedbear/lisp/Environment.java trunk/abcl/src/org/armedbear/lisp/Lisp.java trunk/abcl/src/org/armedbear/lisp/Primitives.java trunk/abcl/src/org/armedbear/lisp/SpecialOperators.java trunk/abcl/src/org/armedbear/lisp/Symbol.java trunk/abcl/src/org/armedbear/lisp/define-symbol-macro.lisp Modified: trunk/abcl/src/org/armedbear/lisp/Autoload.java ============================================================================== --- trunk/abcl/src/org/armedbear/lisp/Autoload.java Tue Nov 8 05:21:38 2011 (r13694) +++ trunk/abcl/src/org/armedbear/lisp/Autoload.java Tue Nov 8 15:24:05 2011 (r13695) @@ -578,6 +578,7 @@ autoload(PACKAGE_SYS, "%set-method-function", "StandardMethod", true); autoload(PACKAGE_SYS, "%set-method-generic-function", "StandardMethod", true); autoload(PACKAGE_SYS, "%set-method-specializers", "StandardMethod", true); + autoload(PACKAGE_SYS, "%set-symbol-macro", "Primitives"); autoload(PACKAGE_SYS, "%simple-bit-vector-bit-and", "SimpleBitVector"); autoload(PACKAGE_SYS, "%simple-bit-vector-bit-andc1", "SimpleBitVector"); autoload(PACKAGE_SYS, "%simple-bit-vector-bit-andc2", "SimpleBitVector"); @@ -661,7 +662,7 @@ autoload(PACKAGE_SYS, "make-single-float", "FloatFunctions", true); autoload(PACKAGE_SYS, "make-slot-definition", "SlotDefinition", true); autoload(PACKAGE_SYS, "make-structure-class", "StructureClass"); - autoload(PACKAGE_SYS, "make-symbol-macro", "SymbolMacro"); + autoload(PACKAGE_SYS, "make-symbol-macro", "Primitives"); autoload(PACKAGE_SYS, "method-documentation", "StandardMethod", true); autoload(PACKAGE_SYS, "method-lambda-list", "StandardMethod", true); autoload(PACKAGE_SYS, "psxhash", "HashTableFunctions"); Modified: trunk/abcl/src/org/armedbear/lisp/Binding.java ============================================================================== --- trunk/abcl/src/org/armedbear/lisp/Binding.java Tue Nov 8 05:21:38 2011 (r13694) +++ trunk/abcl/src/org/armedbear/lisp/Binding.java Tue Nov 8 15:24:05 2011 (r13695) @@ -40,7 +40,7 @@ // Package accessibility. final class Binding { - /** The symbol in case of a variable, block or + /** The symbol in case of a variable, block, symbol-macro or * non-SETF function binding, the tag (symbol or * integer) in case of a tag binding or the cons * in case of a SETF function binding @@ -65,6 +65,9 @@ * * In case of a variable binding, it holds the value associated with the * variable, unless specialp is true. + * + * In case of a symbol macro binding, holds the SymbolMacro instance + * holding the macro's expansion. */ LispObject value; Modified: trunk/abcl/src/org/armedbear/lisp/Environment.java ============================================================================== --- trunk/abcl/src/org/armedbear/lisp/Environment.java Tue Nov 8 05:21:38 2011 (r13694) +++ trunk/abcl/src/org/armedbear/lisp/Environment.java Tue Nov 8 15:24:05 2011 (r13695) @@ -110,27 +110,30 @@ binding.value = value; } + public LispObject lookup(LispObject symbol, Binding binding) { + while (binding != null) { + if (binding.symbol == symbol) + return binding.value; + binding = binding.next; + } + return null; + } + public LispObject lookup(LispObject symbol) { - Binding binding = vars; - while (binding != null) - { - if (binding.symbol == symbol) - return binding.value; - binding = binding.next; - } - return null; + return lookup(symbol, vars); } - public Binding getBinding(LispObject symbol) - { - Binding binding = vars; - while (binding != null) - { - if (binding.symbol == symbol) - return binding; - binding = binding.next; - } + public Binding getBinding(LispObject symbol) { + return getBinding(symbol, vars); + } + + public Binding getBinding(LispObject symbol, Binding binding) { + while (binding != null) { + if (binding.symbol == symbol) + return binding; + binding = binding.next; + } return null; } Modified: trunk/abcl/src/org/armedbear/lisp/Lisp.java ============================================================================== --- trunk/abcl/src/org/armedbear/lisp/Lisp.java Tue Nov 8 05:21:38 2011 (r13694) +++ trunk/abcl/src/org/armedbear/lisp/Lisp.java Tue Nov 8 15:24:05 2011 (r13695) @@ -248,15 +248,13 @@ else if (form instanceof Symbol) { Symbol symbol = (Symbol) form; - LispObject obj = null; - if (symbol.isSpecialVariable()) - obj = thread.lookupSpecial(symbol); - else - obj = env.lookup(symbol); - if (obj == null) - obj = symbol.getSymbolValue(); - if (obj instanceof SymbolMacro) + LispObject obj = env.lookup(symbol); + if (obj == null) { + obj = symbol.getSymbolMacro(); + } + if (obj instanceof SymbolMacro) { return thread.setValues(((SymbolMacro)obj).getExpansion(), T); + } } // Not a macro. return thread.setValues(form, NIL); @@ -473,9 +471,13 @@ result = env.lookup(symbol); if (result == null) { - result = symbol.getSymbolValue(); - if (result == null) + result = symbol.getSymbolMacro(); + if (result == null) { + result = symbol.getSymbolValue(); + } + if(result == null) { return error(new UnboundVariable(obj)); + } } if (result instanceof SymbolMacro) return eval(((SymbolMacro)result).getExpansion(), env, thread); @@ -1633,9 +1635,9 @@ public static final Stream checkStream(LispObject obj) { - if (obj instanceof Stream) - return (Stream) obj; - return (Stream) // Not reached. + if (obj instanceof Stream) + return (Stream) obj; + return (Stream) // Not reached. type_error(obj, Symbol.STREAM); } @@ -2622,7 +2624,7 @@ static { // ### multiple-values-limit - Symbol.MULTIPLE_VALUES_LIMIT.initializeConstant(Fixnum.constants[20]); + Symbol.MULTIPLE_VALUES_LIMIT.initializeConstant(Fixnum.constants[32]); } static Modified: trunk/abcl/src/org/armedbear/lisp/Primitives.java ============================================================================== --- trunk/abcl/src/org/armedbear/lisp/Primitives.java Tue Nov 8 05:21:38 2011 (r13694) +++ trunk/abcl/src/org/armedbear/lisp/Primitives.java Tue Nov 8 15:24:05 2011 (r13695) @@ -676,9 +676,6 @@ public LispObject execute(LispObject arg) { final LispObject value; value = checkSymbol(arg).symbolValue(); - if (value instanceof SymbolMacro) - return error(new LispError(arg.princToString() + - " has no dynamic value.")); return value; } }; @@ -1951,6 +1948,20 @@ } }; + // ### %set-symbol-macro + private static final Primitive SET_SYMBOL_MACRO = new pf_set_symbol_macro(); + private static final class pf_set_symbol_macro extends Primitive { + pf_set_symbol_macro() { + super("%set-symbol-macro", PACKAGE_SYS, false, "symbol symbol-macro"); + } + + @Override + public LispObject execute(LispObject sym, LispObject symbolMacro) { + checkSymbol(sym).setSymbolMacro((SymbolMacro) symbolMacro); + return symbolMacro; + } + }; + // ### symbol-macro-p private static final Primitive SYMBOL_MACRO_P = new pf_symbol_macro_p(); private static final class pf_symbol_macro_p extends Primitive { Modified: trunk/abcl/src/org/armedbear/lisp/SpecialOperators.java ============================================================================== --- trunk/abcl/src/org/armedbear/lisp/SpecialOperators.java Tue Nov 8 05:21:38 2011 (r13694) +++ trunk/abcl/src/org/armedbear/lisp/SpecialOperators.java Tue Nov 8 15:24:05 2011 (r13695) @@ -204,7 +204,7 @@ symbol.princToString() + " with SYMBOL-MACROLET.")); } - bindArg(null, symbol, new SymbolMacro(obj.cadr()), ext, thread); + ext.bind(symbol, new SymbolMacro(obj.cadr())); } else { return error(new ProgramError( "Malformed symbol-expansion pair in SYMBOL-MACROLET: " + @@ -525,26 +525,11 @@ args = args.cdr(); if (symbol.isSpecialVariable() || env.isDeclaredSpecial(symbol)) { SpecialBinding binding = thread.getSpecialBinding(symbol); + value = eval(args.car(), env, thread); if (binding != null) { - if (binding.value instanceof SymbolMacro) { - LispObject expansion = - ((SymbolMacro)binding.value).getExpansion(); - LispObject form = list(Symbol.SETF, expansion, args.car()); - value = eval(form, env, thread); - } else { - value = eval(args.car(), env, thread); - binding.value = value; - } + binding.value = value; } else { - if (symbol.getSymbolValue() instanceof SymbolMacro) { - LispObject expansion = - ((SymbolMacro)symbol.getSymbolValue()).getExpansion(); - LispObject form = list(Symbol.SETF, expansion, args.car()); - value = eval(form, env, thread); - } else { - value = eval(args.car(), env, thread); - symbol.setSymbolValue(value); - } + symbol.setSymbolValue(value); } } else { // Not special. @@ -560,9 +545,9 @@ binding.value = value; } } else { - if (symbol.getSymbolValue() instanceof SymbolMacro) { + if (symbol.getSymbolMacro() != null) { LispObject expansion = - ((SymbolMacro)symbol.getSymbolValue()).getExpansion(); + symbol.getSymbolMacro().getExpansion(); LispObject form = list(Symbol.SETF, expansion, args.car()); value = eval(form, env, thread); } else { Modified: trunk/abcl/src/org/armedbear/lisp/Symbol.java ============================================================================== --- trunk/abcl/src/org/armedbear/lisp/Symbol.java Tue Nov 8 05:21:38 2011 (r13694) +++ trunk/abcl/src/org/armedbear/lisp/Symbol.java Tue Nov 8 15:24:05 2011 (r13695) @@ -299,6 +299,23 @@ this.value = value; } + public SymbolMacro getSymbolMacro() { + LispObject symbolMacro = get(this, SYMBOL_MACRO, null); + if(symbolMacro instanceof SymbolMacro) { + return (SymbolMacro) symbolMacro; + } else if(symbolMacro != null) { + error(new TypeError("The object " + symbolMacro + " is not a symbol macro")); + } + return null; + } + + public void setSymbolMacro(SymbolMacro symbolMacro) { + if(isSpecialVariable()) { + error(new ProgramError("Symbol " + princToString() + " names a special variable; can't install symbol macro.")); + } + put(this, SYMBOL_MACRO, symbolMacro); + } + /** Returns the value associated with this symbol in the current * thread context when it is treated as a special variable. * @@ -3036,6 +3053,8 @@ PACKAGE_SYS.addExternalSymbol("STD-SLOT-VALUE"); public static final Symbol SET_STD_SLOT_VALUE = PACKAGE_SYS.addExternalSymbol("SET-STD-SLOT-VALUE"); + public static final Symbol SYMBOL_MACRO = + PACKAGE_SYS.addExternalSymbol("SYMBOL-MACRO"); public static final Symbol SUBCLASSP = PACKAGE_SYS.addExternalSymbol("SUBCLASSP"); public static final Symbol GETHASH1 = Modified: trunk/abcl/src/org/armedbear/lisp/define-symbol-macro.lisp ============================================================================== --- trunk/abcl/src/org/armedbear/lisp/define-symbol-macro.lisp Tue Nov 8 05:21:38 2011 (r13694) +++ trunk/abcl/src/org/armedbear/lisp/define-symbol-macro.lisp Tue Nov 8 15:24:05 2011 (r13695) @@ -32,11 +32,11 @@ (in-package "SYSTEM") (defun %define-symbol-macro (symbol expansion) - (setf (symbol-value symbol) (make-symbol-macro expansion)) + (%set-symbol-macro symbol (make-symbol-macro expansion)) symbol) (defmacro define-symbol-macro (symbol expansion) - (when (special-variable-p symbol) + (when (special-variable-p symbol) ;;TODO astalla also check local declarations? (error 'program-error "~S has already been defined as a global variable." symbol)) `(eval-when (:compile-toplevel :load-toplevel :execute) (%define-symbol-macro ',symbol ',expansion))) From astalla at common-lisp.net Tue Nov 15 22:34:21 2011 From: astalla at common-lisp.net (astalla at common-lisp.net) Date: Tue, 15 Nov 2011 14:34:21 -0800 Subject: [armedbear-cvs] r13696 - trunk/abcl/src/org/armedbear/lisp Message-ID: Author: astalla Date: Tue Nov 15 14:34:19 2011 New Revision: 13696 Log: DEFMACRO now supports documentation strings as per the ANSI specification. Modified: trunk/abcl/src/org/armedbear/lisp/defmacro.lisp Modified: trunk/abcl/src/org/armedbear/lisp/defmacro.lisp ============================================================================== --- trunk/abcl/src/org/armedbear/lisp/defmacro.lisp Tue Nov 8 15:24:05 2011 (r13695) +++ trunk/abcl/src/org/armedbear/lisp/defmacro.lisp Tue Nov 15 14:34:19 2011 (r13696) @@ -37,7 +37,7 @@ (defmacro defmacro (name lambda-list &rest body) (let* ((whole (gensym "WHOLE-")) (env (gensym "ENVIRONMENT-"))) - (multiple-value-bind (body decls) + (multiple-value-bind (body decls documentation) (parse-defmacro lambda-list whole body name 'defmacro :environment env) (let ((expander `(lambda (,whole ,env) , at decls ,body))) `(progn @@ -47,4 +47,6 @@ `((put ',name 'macroexpand-macro macro)) `((fset ',name macro))) (%set-arglist macro ',lambda-list) + ,@(when documentation + `((%set-documentation ',name 'cl:function ,documentation))) ',name)))))) From mevenson at common-lisp.net Wed Nov 23 19:43:11 2011 From: mevenson at common-lisp.net (mevenson at common-lisp.net) Date: Wed, 23 Nov 2011 11:43:11 -0800 Subject: [armedbear-cvs] r13697 - trunk/abcl/nbproject Message-ID: Author: mevenson Date: Wed Nov 23 11:43:08 2011 New Revision: 13697 Log: Update Netbeans artifacts to output of netbeans-7.0.1. Modified: trunk/abcl/nbproject/build-impl.xml trunk/abcl/nbproject/genfiles.properties Modified: trunk/abcl/nbproject/build-impl.xml ============================================================================== --- trunk/abcl/nbproject/build-impl.xml Tue Nov 15 14:34:19 2011 (r13696) +++ trunk/abcl/nbproject/build-impl.xml Wed Nov 23 11:43:08 2011 (r13697) @@ -843,11 +843,12 @@ - + + Modified: trunk/abcl/nbproject/genfiles.properties ============================================================================== --- trunk/abcl/nbproject/genfiles.properties Tue Nov 15 14:34:19 2011 (r13696) +++ trunk/abcl/nbproject/genfiles.properties Wed Nov 23 11:43:08 2011 (r13697) @@ -4,8 +4,8 @@ # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. nbproject/build-impl.xml.data.CRC32=742204ce -nbproject/build-impl.xml.script.CRC32=1b34e6ea -nbproject/build-impl.xml.stylesheet.CRC32=0c01fd8e at 1.43.1.45 +nbproject/build-impl.xml.script.CRC32=36361450 +nbproject/build-impl.xml.stylesheet.CRC32=0ae3a408 at 1.44.1.45 nbproject/profiler-build-impl.xml.data.CRC32=71623fcd nbproject/profiler-build-impl.xml.script.CRC32=abda56ed nbproject/profiler-build-impl.xml.stylesheet.CRC32=42cb6bcf From mevenson at common-lisp.net Wed Nov 23 19:43:20 2011 From: mevenson at common-lisp.net (mevenson at common-lisp.net) Date: Wed, 23 Nov 2011 11:43:20 -0800 Subject: [armedbear-cvs] r13698 - trunk/abcl/test/lisp/abcl Message-ID: Author: mevenson Date: Wed Nov 23 11:43:18 2011 New Revision: 13698 Log: Test for ticket #181 for failure somewhere in MERGE-PATHNAMES. Probably related to underlying Pathname.truename() code from what I could see in the JVM debugger. Modified: trunk/abcl/test/lisp/abcl/jar-pathname.lisp Modified: trunk/abcl/test/lisp/abcl/jar-pathname.lisp ============================================================================== --- trunk/abcl/test/lisp/abcl/jar-pathname.lisp Wed Nov 23 11:43:08 2011 (r13697) +++ trunk/abcl/test/lisp/abcl/jar-pathname.lisp Wed Nov 23 11:43:18 2011 (r13698) @@ -481,8 +481,14 @@ "/foo/**/*.*") #p"/foo/d/e/f.lisp") - - - - - +;;; ticket #181 +;;; TODO Make reasons for failure more clear +(deftest jar-pathname.truename.1 + (let* ((abcl (slot-value (asdf:find-system 'abcl) 'asdf::absolute-pathname)) + (jar (pathname (format nil "jar:file:~A/dist/abcl-contrib.jar!/jss/jss.asd" (namestring abcl)))) + (jar-dir (make-pathname :defaults jar :name nil :type nil)) + (defaults *default-pathname-defaults*)) + (let ((*default-pathname-defaults* jar-dir)) + (not (probe-file (merge-pathnames jar))))) + nil) + \ No newline at end of file From mevenson at common-lisp.net Thu Nov 24 07:09:50 2011 From: mevenson at common-lisp.net (mevenson at common-lisp.net) Date: Wed, 23 Nov 2011 23:09:50 -0800 Subject: [armedbear-cvs] r13699 - trunk/abcl/doc/manual Message-ID: Author: mevenson Date: Wed Nov 23 23:09:48 2011 New Revision: 13699 Log: manual: the asdf-install system adds '~/.asdf-install-dir/systems/' to the ASDF registry. Modified: trunk/abcl/doc/manual/abcl.tex Modified: trunk/abcl/doc/manual/abcl.tex ============================================================================== --- trunk/abcl/doc/manual/abcl.tex Wed Nov 23 11:43:18 2011 (r13698) +++ trunk/abcl/doc/manual/abcl.tex Wed Nov 23 23:09:48 2011 (r13699) @@ -5,7 +5,7 @@ \begin{document} \title{A Manual for Armed Bear Common Lisp} -\date{November 1, 2011} +\date{November 24, 2011} \author{Mark~Evenson, Erik~H\"{u}lsmann, Alessio~Stalla, Ville~Voutilainen} \maketitle @@ -1070,6 +1070,13 @@ The asdf-install contrib provides an implementation of ASDF-INSTALL. Superseded by Quicklisp (see Xach2011 \cite{Xach2011}). +The \code{require} of the \code{asdf-install} symbol has the side +effect of pushing the directory ``~/.asdf-install-dir/systems/'' into +the value of the \textsc{ASDF} central registry in +\code{asdf:*central-registry*}, providing a convenient mechanism for +stashing \textsc{ABCL} specific system definitions for convenient +access. + \chapter{History} \textsc{ABCL} was originally the extension language for the J editor, which was From mevenson at common-lisp.net Tue Nov 29 12:25:12 2011 From: mevenson at common-lisp.net (mevenson at common-lisp.net) Date: Tue, 29 Nov 2011 04:25:12 -0800 Subject: [armedbear-cvs] r13700 - trunk/abcl/src/org/armedbear/lisp Message-ID: Author: mevenson Date: Tue Nov 29 04:25:08 2011 New Revision: 13700 Log: weblogic: ABCL loads under the Weblogic 10.3 application server. If the Pathname parsing try to parse a URI but get an empty authority, don't push the values to the HOST element. Addtionally warn if we parse a null authority via the Debug.trace() facility. Weblogic uses the "zip" scheme which more or less maps to ABCL's nesting of "file" within "jar". This patch doesn't systematically follow the logical consequences of that disinction, but it does allow ABCL to load its own fasls under weblogic-10.3. The right thing will be to establish some sort of ability to run the ABCL tests inside of various application server containers, but that will take a fair amount of resources. Modified: trunk/abcl/src/org/armedbear/lisp/Debug.java trunk/abcl/src/org/armedbear/lisp/Load.java trunk/abcl/src/org/armedbear/lisp/Pathname.java Modified: trunk/abcl/src/org/armedbear/lisp/Debug.java ============================================================================== --- trunk/abcl/src/org/armedbear/lisp/Debug.java Wed Nov 23 23:09:48 2011 (r13699) +++ trunk/abcl/src/org/armedbear/lisp/Debug.java Tue Nov 29 04:25:08 2011 (r13700) @@ -34,6 +34,8 @@ package org.armedbear.lisp; import static org.armedbear.lisp.Lisp.*; +import java.io.PrintWriter; +import java.io.StringWriter; public final class Debug { @@ -44,10 +46,34 @@ String msg = "ABCL Debug.assertTrue() assertion failed!"; System.err.println(msg); Error e = new Error(msg); - e.printStackTrace(); - throw e; + e.printStackTrace(System.err); + + StringBuffer buffer = new StringBuffer(); + final String CR = "\n"; + buffer.append(msg).append(CR); + StackTraceElement[] stack = e.getStackTrace(); + for (int i = 0; i < stack.length; i++) { + buffer.append(stack[i].toString()).append(CR); + } + throw new Error(buffer.toString()); } } + public static final void assertViolation(String msg) { + final String m = "Assert violation: " + msg; + Error e = new Error(m); + + System.err.println(m); + e.printStackTrace(System.err); + + StringBuffer buffer = new StringBuffer(); + final String CR = "\n"; + buffer.append(msg).append(CR); + StackTraceElement[] stack = e.getStackTrace(); + for (int i = 0; i < stack.length; i++) { + buffer.append(stack[i].toString()).append(CR); + } + throw new Error(buffer.toString()); + } // Does not throw an exception. public static void bug() Modified: trunk/abcl/src/org/armedbear/lisp/Load.java ============================================================================== --- trunk/abcl/src/org/armedbear/lisp/Load.java Wed Nov 23 23:09:48 2011 (r13699) +++ trunk/abcl/src/org/armedbear/lisp/Load.java Tue Nov 29 04:25:08 2011 (r13700) @@ -157,6 +157,9 @@ if (n.startsWith("jar:")) { n = "jar:" + n + "!/" + name + "." + COMPILE_FILE_INIT_FASL_TYPE; + } else if (n.startsWith("zip:")) { + n = "zip:" + n + "!/" + name + "." + + COMPILE_FILE_INIT_FASL_TYPE; } else { n = "jar:file:" + Pathname.uriEncode(n) + "!/" + name + "." + COMPILE_FILE_INIT_FASL_TYPE; @@ -177,9 +180,9 @@ } else { String errorMessage = "Loadable FASL not found for " - + "'" + pathname + "'" + + "'" + pathname.printObject() + "'" + " in " - + "'" + mergedPathname + "'"; + + "'" + mergedPathname.printObject() + "'"; if (ifDoesNotExist) { return error(new FileError(errorMessage, mergedPathname)); } else { Modified: trunk/abcl/src/org/armedbear/lisp/Pathname.java ============================================================================== --- trunk/abcl/src/org/armedbear/lisp/Pathname.java Wed Nov 23 23:09:48 2011 (r13699) +++ trunk/abcl/src/org/armedbear/lisp/Pathname.java Tue Nov 29 04:25:08 2011 (r13700) @@ -43,6 +43,7 @@ import java.net.URISyntaxException; import java.net.URL; import java.net.URLConnection; +import java.text.MessageFormat; import java.util.Enumeration; import java.util.StringTokenizer; import java.util.zip.ZipEntry; @@ -401,13 +402,22 @@ + " because: " + e)); } String authority = uri.getAuthority(); - Debug.assertTrue(authority != null); + if (authority == null) { + authority = url.getAuthority(); + if (authority == null) { + Debug.trace(MessageFormat.format("{0} has a null authority.", + url)); + } + } host = NIL; host = host.push(SCHEME); host = host.push(new SimpleString(scheme)); - host = host.push(AUTHORITY); - host = host.push(new SimpleString(authority)); + + if (authority != null) { + host = host.push(AUTHORITY); + host = host.push(new SimpleString(authority)); + } device = NIL;