<html lang="en"> <head> <title>Package Lock Dictionary - SBCL 1.0.31 User Manual</title> <meta http-equiv="Content-Type" content="text/html"> <meta name="description" content="SBCL 1.0.31 User Manual"> <meta name="generator" content="makeinfo 4.13"> <link title="Top" rel="start" href="index.html#Top"> <link rel="up" href="Package-Locks.html#Package-Locks" title="Package Locks"> <link rel="prev" href="Package-Lock-Concepts.html#Package-Lock-Concepts" title="Package Lock Concepts"> <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> <!-- This manual is part of the SBCL software system. See the `README' file for more information. This manual is largely derived from the manual for the CMUCL system, which was produced at Carnegie Mellon University and later released into the public domain. This manual is in the public domain and is provided with absolutely no warranty. See the `COPYING' and `CREDITS' files for more information. --> <meta http-equiv="Content-Style-Type" content="text/css"> <style type="text/css"><!-- pre.display { font-family:inherit } pre.format { font-family:inherit } pre.smalldisplay { font-family:inherit; font-size:smaller } pre.smallformat { font-family:inherit; font-size:smaller } pre.smallexample { font-size:smaller } pre.smalllisp { font-size:smaller } span.sc { font-variant:small-caps } span.roman { font-family:serif; font-weight:normal; } span.sansserif { font-family:sans-serif; font-weight:normal; } --></style> </head> <body> <div class="node"> <a name="Package-Lock-Dictionary"></a> <p> Previous: <a rel="previous" accesskey="p" href="Package-Lock-Concepts.html#Package-Lock-Concepts">Package Lock Concepts</a>, Up: <a rel="up" accesskey="u" href="Package-Locks.html#Package-Locks">Package Locks</a> <hr> </div> <h3 class="section">11.2 Package Lock Dictionary</h3> <div class="defun"> — Declaration: <b>sb-ext:disable-package-locks</b><var><a name="index-sb_002dext_003adisable_002dpackage_002dlocks-405"></a></var><br> <blockquote> <p>Syntax: <code>(sb-ext:disable-package-locks symbol*)</code> <p>Disables package locks affecting the named symbols during compilation in the lexical scope of the declaration. Disabling locks on symbols whose home package is unlocked, or disabling an already disabled lock, has no effect. </p></blockquote></div> <div class="defun"> — Declaration: <b>sb-ext:enable-package-locks</b><var><a name="index-sb_002dext_003aenable_002dpackage_002dlocks-406"></a></var><br> <blockquote> <p>Syntax: <code>(sb-ext:enable-package-locks symbol*)</code> <p>Re-enables package locks affecting the named symbols during compilation in the lexical scope of the declaration. Enabling locks that were not first disabled with <code>sb-ext:disable-package-locks</code> declaration, or enabling locks that are already enabled has no effect. </p></blockquote></div> <p><a name="Condition-sb_002dext_003apackage_002dlock_002dviolation"></a> <div class="defun"> — Condition: <b>sb-ext:package-lock-violation</b><var><a name="index-sb_002dext_003apackage_002dlock_002dviolation-407"></a></var><br> <blockquote><p><a name="index-sb_002dext_003apackage_002dlock_002dviolation-408"></a>Class precedence list: <code>package-lock-violation, package-error, error, serious-condition, condition, t</code> <p>Subtype of <code>cl:package-error</code>. A subtype of this error is signalled when a package-lock is violated. </p></blockquote></div> <p><a name="Condition-sb_002dext_003apackage_002dlocked_002derror"></a> <div class="defun"> — Condition: <b>sb-ext:package-locked-error</b><var><a name="index-sb_002dext_003apackage_002dlocked_002derror-409"></a></var><br> <blockquote><p><a name="index-sb_002dext_003apackage_002dlocked_002derror-410"></a>Class precedence list: <code>package-locked-error, package-lock-violation, package-error, error, serious-condition, condition, t</code> <p>Subtype of <code>sb-ext:package-lock-violation</code>. An error of this type is signalled when an operation on a package violates a package lock. </p></blockquote></div> <p><a name="Condition-sb_002dext_003asymbol_002dpackage_002dlocked_002derror"></a> <div class="defun"> — Condition: <b>sb-ext:symbol-package-locked-error</b><var><a name="index-sb_002dext_003asymbol_002dpackage_002dlocked_002derror-411"></a></var><br> <blockquote><p><a name="index-sb_002dext_003asymbol_002dpackage_002dlocked_002derror-412"></a>Class precedence list: <code>symbol-package-locked-error, package-lock-violation, package-error, error, serious-condition, condition, t</code> <p>Subtype of <code>sb-ext:package-lock-violation</code>. An error of this type is signalled when an operation on a symbol violates a package lock. The symbol that caused the violation is accessed by the function <code>sb-ext:package-locked-error-symbol</code>. </p></blockquote></div> <div class="defun"> — Function: <b>sb-ext:package-locked-error-symbol</b><var> symbol-package-locked-error<a name="index-sb_002dext_003apackage_002dlocked_002derror_002dsymbol-413"></a></var><br> <blockquote> <p>Returns the symbol that caused the <code>symbol-package-locked-error</code> condition. </p></blockquote></div> <p><a name="Function-sb_002dext_003apackage_002dlocked_002dp"></a> <div class="defun"> — Function: <b>sb-ext:package-locked-p</b><var> package<a name="index-sb_002dext_003apackage_002dlocked_002dp-414"></a></var><br> <blockquote><p><a name="index-sb_002dext_003apackage_002dlocked_002dp-415"></a>Returns <code>t</code> when <code>package</code> is locked, <code>nil</code> otherwise. Signals an error if <code>package</code> doesn't designate a valid package. </p></blockquote></div> <p><a name="Function-sb_002dext_003alock_002dpackage"></a> <div class="defun"> — Function: <b>sb-ext:lock-package</b><var> package<a name="index-sb_002dext_003alock_002dpackage-416"></a></var><br> <blockquote><p><a name="index-sb_002dext_003alock_002dpackage-417"></a>Locks <code>package</code> and returns <code>t</code>. Has no effect if <code>package</code> was already locked. Signals an error if <code>package</code> is not a valid package designator </p></blockquote></div> <p><a name="Function-sb_002dext_003aunlock_002dpackage"></a> <div class="defun"> — Function: <b>sb-ext:unlock-package</b><var> package<a name="index-sb_002dext_003aunlock_002dpackage-418"></a></var><br> <blockquote><p><a name="index-sb_002dext_003aunlock_002dpackage-419"></a>Unlocks <code>package</code> and returns <code>t</code>. Has no effect if <code>package</code> was already unlocked. Signals an error if <code>package</code> is not a valid package designator. </p></blockquote></div> <p><a name="Function-sb_002dext_003apackage_002dimplemented_002dby_002dlist"></a> <div class="defun"> — Function: <b>sb-ext:package-implemented-by-list</b><var> package<a name="index-sb_002dext_003apackage_002dimplemented_002dby_002dlist-420"></a></var><br> <blockquote><p><a name="index-sb_002dext_003apackage_002dimplemented_002dby_002dlist-421"></a>Returns a list containing the implementation packages of <code>package</code>. Signals an error if <code>package</code> is not a valid package designator. </p></blockquote></div> <p><a name="Function-sb_002dext_003apackage_002dimplements_002dlist"></a> <div class="defun"> — Function: <b>sb-ext:package-implements-list</b><var> package<a name="index-sb_002dext_003apackage_002dimplements_002dlist-422"></a></var><br> <blockquote><p><a name="index-sb_002dext_003apackage_002dimplements_002dlist-423"></a>Returns the packages that <code>package</code> is an implementation package of. Signals an error if <code>package</code> is not a valid package designator. </p></blockquote></div> <p><a name="Function-sb_002dext_003aadd_002dimplementation_002dpackage"></a> <div class="defun"> — Function: <b>sb-ext:add-implementation-package</b><var> packages-to-add &optional package<a name="index-sb_002dext_003aadd_002dimplementation_002dpackage-424"></a></var><br> <blockquote><p><a name="index-sb_002dext_003aadd_002dimplementation_002dpackage-425"></a>Adds <code>packages-to-add</code> as implementation packages of <code>package</code>. Signals an error if <code>package</code> or any of the <code>packages-to-add</code> is not a valid package designator. </p></blockquote></div> <p><a name="Function-sb_002dext_003aremove_002dimplementation_002dpackage"></a> <div class="defun"> — Function: <b>sb-ext:remove-implementation-package</b><var> packages-to-remove &optional package<a name="index-sb_002dext_003aremove_002dimplementation_002dpackage-426"></a></var><br> <blockquote><p><a name="index-sb_002dext_003aremove_002dimplementation_002dpackage-427"></a>Removes <code>packages-to-remove</code> from the implementation packages of <code>package</code>. Signals an error if <code>package</code> or any of the <code>packages-to-remove</code> is not a valid package designator. </p></blockquote></div> <p><a name="Macro-sb_002dext_003awithout_002dpackage_002dlocks"></a> <div class="defun"> — Macro: <b>sb-ext:without-package-locks</b><var> &body body<a name="index-sb_002dext_003awithout_002dpackage_002dlocks-428"></a></var><br> <blockquote><p><a name="index-sb_002dext_003awithout_002dpackage_002dlocks-429"></a>Ignores all runtime package lock violations during the execution of body. Body can begin with declarations. </p></blockquote></div> <p><a name="Macro-sb_002dext_003awith_002dunlocked_002dpackages"></a> <div class="defun"> — Macro: <b>sb-ext:with-unlocked-packages</b> (<var>&rest packages</var>)<var> &body forms<a name="index-sb_002dext_003awith_002dunlocked_002dpackages-430"></a></var><br> <blockquote><p><a name="index-sb_002dext_003awith_002dunlocked_002dpackages-431"></a>Unlocks <code>packages</code> for the dynamic scope of the body. Signals an error if any of <code>packages</code> is not a valid package designator. </p></blockquote></div> <div class="defun"> — Macro: <b>defpackage</b><var> name </var>[[<var>option</var>]]<var>* ⇒ package<a name="index-defpackage-432"></a></var><br> <blockquote> <p>Options are extended to include the following: <ul> <li><code>:lock</code> <var>boolean</var> <p>If the argument to <code>:lock</code> is <code>t</code>, the package is initially locked. If <code>:lock</code> is not provided it defaults to <code>nil</code>. <li><code>:implement</code> <var>package-designator</var>* <p>The package is added as an implementation package to the packages named. If <code>:implement</code> is not provided, it defaults to the package itself. </ul> <p>Example: <pre class="lisp"> (defpackage "FOO" (:export "BAR") (:lock t) (:implement)) (defpackage "FOO-INT" (:use "FOO") (:implement "FOO" "FOO-INT")) ;;; is equivalent to (defpackage "FOO") (:export "BAR")) (lock-package "FOO") (remove-implementation-package "FOO" "FOO") (defpackage "FOO-INT" (:use "BAR")) (add-implementation-package "FOO-INT" "FOO") </pre> </blockquote></div> </body></html>