Fix bugs reported by Fengjing Xiao
[clqr.git] / clqr-structures.tex
blob2a7e502cb2b9157bcb0508b2e987fc1ad275a3c1
1 % Copyright (C) 2008, 2009, 2010, 2012, 2014, 2018 Bert Burgemeister
3 % Permission is granted to copy, distribute and/or modify this
4 % document under the terms of the GNU Free Documentation License,
5 % Version 1.2; with no Invariant Sections, no Front-Cover Texts and
6 % no Back-Cover Texts. For details see file COPYING.
9 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10 \section{Structures}
11 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13 \begin{LIST}{1cm}
15 \IT{(\MC*{DEFSTRUCT}
16 \xorGOO{\VAR{foo}\\
17 (\VAR{foo\hspace{.5ex}}
18 \orGOO{%
19 \xorGOO{%
20 \kwd{:conc-name}\\
21 (\kwd{:conc-name } \Op{\NEV{\VAR{slot-prefix}}\DF{\VAR{foo}\LIT{-}}})}{.}\\
22 \xorGOO{%
23 \kwd{:constructor}\\
24 (\kwd{:constructor }
25 \OP{\NEV{\VAR{maker}}\DF{\LIT{MAKE-}\VAR{foo}}\text{ }
26 \Op{({\OPn{\NEV{\VAR{ord-$\lambda$}}}})}})}{\}^{\!\!*}}\\
27 \xorGOO{%
28 \kwd{:copier}\\
29 (\kwd{:copier }
30 \Op{\NEV{\VAR{copier}}\DF{\LIT{COPY-}\VAR{foo}}})}{.}\\
31 (\kwd{:include\hspace{.5ex}} \NEV{\VAR{struct}}% disabled to save space %\text{ }
32 \xorGOO{%
33 \NEV{\VAR{slot}}\\
34 (\NEV{\VAR{slot}}\text{\hspace{.5ex}} \Op{\VAR{init}% disabled to save space %\text{ }
35 \orGOO{
36 \kwd{:type\hspace{.5ex}} \NEV{\VAR{sl-type}}\\
37 \kwd{:read-only } \NEV{\VAR{b}}}{\}}})\\
38 }{\}^{\!\!*}})\\
39 \xorGOO{
40 (\kwd{:type } \xorGOO{\kwd{list}\\
41 \kwd{vector}\\
42 (\kwd{vector }\NEV{\VAR{type}})}{\}})\text{ }
43 \Op{(\kwd{:initial-offset } \NEV{\VAR{n}})}\\
44 \xorGOO{
45 (\kwd{:print-object } \Op{\NEV{\VAR{o-printer}}})\\
46 (\kwd{:print-function } \Op{\NEV{\VAR{f-printer}}})
47 }{.}
48 }{.}\\
49 \kwd{:named}\\
50 \xorGOO{%
51 \kwd{:predicate}\\
52 (\kwd{:predicate } \Op{\NEV{\VAR{p-name}}\DF{\VAR{foo}\LIT{-P}}})}{.}
53 }{\}}%
55 }{\}}
56 \Op{\NEV{\VAR{doc}}}
57 \xorGOO{
58 \VAR{slot}\\
59 (\VAR{slot } \Op{\VAR{init}\text{ }
60 \orGOO{
61 \kwd{:type } \NEV{\VAR{slot-type}}\\
62 \kwd{:read-only } \NEV{\VAR{bool}}
63 }{\}}})
64 }{\}^{\!\!*}}%
67 Define structure \retval{\VAR{foo}} together with functions
68 \LIT{MAKE-}\VAR{foo}, \LIT{COPY-}\VAR{foo} and
69 \VAR{foo}\LIT{-P}; and \kwd{setf}able accessors
70 \VAR{foo}\LIT{-}\VAR{slot}. Instances are of class \VAR{foo} or, if
71 \kwd{defstruct} option \kwd{:type} is given, of the specified type.
72 They can be
73 created by (\LIT{MAKE-}\VAR{foo} \Goos{\kwd{:}\VAR{slot}
74 \VAR{value}}) or, if \VAR{ord-$\lambda$} (see
75 page \pageref{section:Functions}) is given, by (\VAR{maker}
76 \OPn{\VAR{arg}} \Goos{\kwd{:}\VAR{key} \VAR{value}}). In the latter
77 case, \VAR{arg}s and \kwd{:}\VAR{key}s correspond to the positional
78 and keyword parameters defined in \VAR{ord-$\lambda$} whose
79 \VAR{var}s in turn correspond to \VAR{slot}s.
80 \kwd{:print-object}/\kwd{:print-function} generate a
81 \GFU{print-object} method for an instance \VAR{bar} of \VAR{foo}
82 calling (\VAR{o-printer} \VAR{bar} \VAR{stream}) or (\VAR{f-printer}
83 \VAR{bar} \VAR{stream} \VAR{print-level}), respectively.
84 If \kwd{:type} without \kwd{:named} is given, no \VAR{foo}\LIT{-P}
85 is created.
88 \IT{(\FU*{COPY-STRUCTURE} \VAR{structure})}
90 Return \retval{copy of \VAR{structure}} with shared slot values.
93 \end{LIST}
97 %%% Local Variables:
98 %%% mode: latex
99 %%% TeX-master: "clqr"
100 %%% End: