minor changes
[clqr.git] / clqr-structures.tex
blob0394d1157ce26889f3d9c8dcaf4733c49490b7d1
1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 \section{Structures}
3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5 \begin{LIST}{1cm}
7 \IT{(\FU*{SLOT-BOUNDP} \VAR{instance} \VAR{slot})}
8 \retval{\T} if \VAR{slot} in \VAR{instance} is bound.
10 \IT{(\FU*{SLOT-EXISTS-P} \VAR{foo} \VAR{bar})}
11 \retval{\T} if \VAR{foo} has a slot \VAR{bar}.
13 \IT{(\SF*{DEFSTRUCT}
14 \GOO{\VAR{name}\XOR
15 (\VAR{name}
16 \orGOO{%
17 \xorGOO{%
18 \kwd{:conc-name}\\
19 (\kwd{:conc-name} \Op{\VAR{slot-prefix}\DF{\VAR{name}\LIT{-}}})}{\}}\\
20 \xorGOO{%
21 \kwd{:constructor}\\
22 (\kwd{:constructor} \Op{\VAR{make-name}\DF{\LIT{make-}\VAR{name}}
23 \Op{({\OPn{\VAR{arg}}})}})}{\}^{\!\!*}}\\
24 \xorGOO{%
25 \kwd{:copier}\\
26 (\kwd{:copier}
27 \Op{\VAR{copy-name}\DF{\LIT{copy-}\VAR{name}}})}{\}}\\
28 (\kwd{:include} \VAR{ struct}
29 \xorGOO{%
30 \VAR{slot}\\
31 (\VAR{slot} \Op{\VAR{init}
32 \orGOO{
33 \kwd{:type} \VAR{ type}\\
34 \kwd{:read-only} \VAR{ bool}
35 }{\}}
36 })\\
37 }{\}^{\!\!*}}
38 )\\
39 (\kwd{:type} \VAR{ type}) \Op{(\kwd{:initial-offset}
40 \VAR{ n})}\\
41 \kwd{:named}\\
42 \xorGOO{%
43 \kwd{:predicate}\\
44 (\kwd{:predicate } \Op{\VAR{p-name}\DF{\VAR{name}\LIT{-p}}})}{\}}\\
45 \xorGOO{
46 (\kwd{:print-object } \Op{\VAR{printer}})\\
47 (\kwd{:print-function } \Op{\VAR{printer}})
48 }{\}}%
49 }{\}}%
52 \Op{\VAR{documentation}}
53 \xorGOO{
54 \VAR{slot-name}\\
55 \VAR{slot-name} \Op{\VAR{init}
56 \orGOO{
57 \kwd{:type} \VAR{ type}\\
58 \kwd{:read-only} \VAR{ bool}
59 }{\}}}
60 }{\}^{\!\!*}}
62 Define structure \retval{\VAR{name}} together with functions
63 \LIT{make-}\VAR{name}, \LIT{copy-}\VAR{name}, and
64 \LIT{p-}\VAR{name}; and accessors \VAR{slot-prefix-slot-name}.
67 \IT{(\SF*{WITH-ACCESSORS} (\OPn{(\VAR{var} \VAR{accessor})})
68 \VAR{instance} \OPn{(\kwd{declare} \OPn{\VAR{decl}})}
69 \OPn{\VAR{form}})}
70 Evaluate \VAR{form}s with variables \VAR{var} locally bound to
71 \VAR{accessor}s of \VAR{instance}.
72 Return \retval{values of \VAR{form}s}.
74 \IT{(\FU*{COPY-STRUCTURE} \VAR{struct})}
75 Return \retval{copy of structure} with shared slot values.
77 \IT{(\FU*{SLOT-MAKUNBOUND} \VAR{instance} \VAR{slot})}
78 Make \VAR{slot} \retval{\VAR{instance}} unbound.
80 \IT{(\GFU*{SLOT-MISSING} \VAR{class} \VAR{object} \VAR{slot}
81 \Goo{\kwd{setf} \kwd{slot-boundp} \kwd{slot-makunbound}} \Op{\VAR{value}})}
82 Called in case of attempted access to missing \VAR{slot}. Default
83 method signals an error.
85 \IT{(\GFU*{SLOT-UNBOUND} \VAR{class} \VAR{instance} \VAR{slot}))}
86 Called by \kwd{slot-value} in case of unbound \VAR{slot}. Default
87 method signals \kwd{unbound-slot}.
89 \end{LIST}