Unfinished work on figures Data Types and Condition Types.
[clqr.git] / clqr-types-and-classes.mp
blob5c9cc92d10f24fe224b5be41757a442b5d8a063f
1 % Copyright (C) 2010 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 or any later version published by the Free Software
6 % Foundation; with no Invariant Sections, no Front-Cover Texts and
7 % no Back-Cover Texts. For details see file COPYING.
9 prologues := 3;
10 input boxes
11 verbatimtex
12 \documentclass[8pt,pagesize,twoside,footexclude,headexclude]{scrartcl}
13 \input{clqr.packages}
14 \input{clqr.macros}
15 \begin{document}
16 etex
18 beginfig(1);
19   
20   boxit.t(btex \T etex);
21   t.nw = (0, 0);
22   drawboxed(t);
24   boxjoin(a.sw + (0, -3) = b.nw);
25   boxit.atom(btex \kwd*{ATOM} etex);
26   boxit.package(btex \kwd*{PACKAGE} etex);
27   boxit.readtable(btex \kwd*{READTABLE} etex);
28   t.se + (12, 0) = atom.nw;
29   drawboxed(atom,package,readtable);
30   
31   boxjoin(a.sw + (0, -3) = b.nw);
32   boxit.hash_table(btex \kwd*{HASH-TABLE} etex);
33   boxit.structure_object(btex \kwd*{STRUCTURE-OBJECT} etex);
34   boxit.random_state(btex \kwd*{RANDOM-STATE} etex);
35   boxit.restart(btex \kwd*{RESTART} etex);
36   boxit.standard_object(btex \kwd*{STANDARD-OBJECT} etex);
37   boxit.class(btex \kwd*{CLASS} etex);
38   boxit.built_in_class(btex \kwd*{BUILT-IN-CLASS} etex);
39   boxit.standard_class(btex \kwd*{STANDARD-CLASS} etex);
40   boxit.structure_class(btex \kwd*{STRUCTURE-CLASS} etex);
41   readtable.sw + (0,-12) = hash_table.nw;
42   drawboxed(hash_table,structure_object,random_state,restart,standard_object,class,built_in_class,standard_class,structure_class);
43   
44   boxjoin();
45   boxit.method(btex \kwd*{METHOD} etex);
46   structure_class.sw+(0, -5) = method.nw;
47   drawboxed(method)
48   
49   boxjoin(a.se + (0, -3) = b.ne);
50   boxit.standard_method(btex \kwd*{STANDARD-METHOD} etex);
51   boxit.method_combination(btex \kwd*{METHOD-COMBINATION} etex);
52   method.sw + (-9,-5) = standard_method.nw;
53   drawboxed(standard_method,method_combination);
54   
55   boxjoin();
56   boxit.character(btex \kwd*{CHARACTER} etex);
57   atom.ne + (293, -5) = character.nw;
58   drawboxed(character);
59   
60   boxjoin(a.se + (0, -3) = b.ne);
61   boxit.function(btex \kwd*{FUNCTION} \OP{\VAR{arg-types} \Op{\VAR{value-types}}} etex);
62   boxit.compiled_function(btex \kwd*{COMPILED-FUNCTION} etex);
63   boxit.generic_function(btex \kwd*{GENERIC-FUNCTION} etex);
64   boxit.standard_generic_function(btex \kwd*{STANDARD-GENERIC-FUNCTION} etex);
65   atom.ne + (214, -60) = function.nw;
66   drawboxed(function,compiled_function,generic_function,standard_generic_function);
67   
68   boxjoin(a.ne + (10, 0) = b.nw);
69   boxit.pathname(btex \kwd*{PATHNAME} etex);
70   boxit.logical_pathname(btex \kwd*{LOGICAL-PATHNAME} etex);
71   logical_pathname.ne = (558,0);
72   drawboxed(pathname,logical_pathname);
74   boxjoin()
75   boxit.stream(btex \kwd*{STREAM} etex);
76   logical_pathname.sw + (0, -3) = stream.ne;
77   drawboxed(stream);
80   boxjoin(a.se + (0, -3) = b.ne);
81   boxit.float(btex \kwd*{FLOAT} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
82   boxit.short_float(btex \kwd*{SHORT-FLOAT} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
83   boxit.single_float(btex \kwd*{SINGLE-FLOAT} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
84   boxit.double_float(btex \kwd*{DOUBLE-FLOAT} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
85   boxit.long_float(btex \kwd*{LONG-FLOAT} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
87   boxjoin(a.sw + (0, -3) = b.nw);
88   boxit.number(btex \kwd*{NUMBER} etex);
89   boxit.complex(btex \kwd*{COMPLEX} \Op{\VAR{type}\DF{\kwd{\A}}} etex);
90   boxit.real(btex \kwd*{REAL} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
91   
92   long_float.se = (542, -242);
93   real.s + (0,-3) = float.n;
94   
95   drawboxed(float,short_float,single_float,double_float,long_float);
96   drawboxed(number,complex,real);
98   boxjoin(a.sw + (0, -3) = b.nw);
99   boxit.rational(btex \kwd*{RATIONAL} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
100   boxit.integer(btex \kwd*{INTEGER} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
101   boxit.ratio(btex \kwd*{RATIO} etex);
102   standard_generic_function.se+(-7,-11) = rational.ne;
103   drawboxed(rational,integer,ratio);
105   boxjoin(a.e + (3, 0) = b.w);
106   boxit.signed_byte(btex \kwd*{SIGNED-BYTE} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
107   boxit.fixnum(btex \kwd*{FIXNUM} etex);
108   boxit.bignum(btex \kwd*{BIGNUM} etex);
109   ratio.sw+(-10,-3) = signed_byte.nw;
110   drawboxed(signed_byte,fixnum,bignum);
112   boxjoin(a.se + (0,-3) = b.ne);
113   boxit.unsigned_byte(btex \kwd*{UNSIGNED-BYTE} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
114   boxit.bit(btex \kwd*{BIT} etex);
115   signed_byte.se+(30,-3) = unsigned_byte.n;
116   drawboxed(unsigned_byte,bit);
117   
118   boxjoin(a.e + (10,0) = b.w);
119   boxit.sequence(btex \kwd*{SEQUENCE} etex);
120   boxit.list(btex \kwd*{LIST} etex);
121   boxit.cons(btex \kwd*{CONS} \OP{\VAR{car-type}\DF{\kwd{\A}} \Op{\VAR{cdr-type}\DF{\kwd{\A}}}} etex);
122   sequence.nw = (97,-32);
123   drawboxed(sequence,list,cons);
125   boxjoin(a.sw + (-5, -3) = b.nw);
126   boxit.symbol(btex \kwd*{SYMBOL} etex);
127   boxit.null(btex \kwd*{NULL} etex);
128   list.se + (5, -3) = symbol.ne;
129   drawboxed(symbol,null);
130   
131   boxjoin(a.sw + (0, -3) = b.nw);
132   boxit.array(btex \kwd*{ARRAY} \OP{\VAR{type}\DF{\kwd{\A}} \Op{\VAR{rank}\DF{\kwd{\A}}\XOR(\OPn{\VAR{dimension}})}} etex);
133   boxit.simple_array(btex \kwd*{SIMPLE-ARRAY} \OP{\VAR{type}\DF{\kwd{\A}} \Op{\VAR{rank}\DF{\kwd{\A}}\XOR(\OPn{\VAR{dimension}})}} etex);
134   boxit.vector(btex \kwd*{VECTOR} \OP{\VAR{type}\DF{\kwd{\A}} \Op{\VAR{size}\DF{\kwd{\A}}}} etex);
135   boxit.string_(btex \kwd*{STRING} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
136   boxit.simple_string(btex \kwd*{SIMPLE-STRING} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
137   boxit.base_string(btex \kwd*{BASE-STRING} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
138   boxit.simple_base_string(btex \kwd*{SIMPLE-BASE-STRING} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
139   boxit.simple_vector(btex \kwd*{SIMPLE-VECTOR} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
140   boxit.bit_vector(btex \kwd*{BIT-VECTOR} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
141   null.sw + (-25, -10) = array.nw;
142   drawboxed(array,vector,simple_array,string_,simple_string,base_string,simple_base_string,simple_vector,bit_vector);
143   
144   boxjoin();
145   boxit.simple_bit_vector(btex \kwd*{SIMPLE-BIT-VECTOR} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
146   bit_vector.se + (15, -3) = simple_bit_vector.sw;
147   drawboxed(simple_bit_vector);
148   
149   boxjoin(a.se + (0, -3) = b.ne);
150   boxit.file_stream(btex \kwd*{FILE-STREAM} etex);
151   boxit.two_way_stream(btex \kwd*{TWO-WAY-STREAM} etex);
152   boxit.synonym_stream(btex \kwd*{SYNONYM-STREAM} etex);
153   boxit.string_stream(btex \kwd*{STRING-STREAM} etex);
154   boxit.concatenated_stream(btex \kwd*{CONCATENATED-STREAM} etex);
155   boxit.broadcast_stream(btex \kwd*{BROADCAST-STREAM} etex);
156   boxit.echo_stream(btex \kwd*{ECHO-STREAM} etex);
157   logical_pathname.se + (0, -5) = file_stream.ne;
158   drawboxed(file_stream,two_way_stream,synonym_stream,string_stream,concatenated_stream,broadcast_stream,echo_stream);
159   
160   boxjoin(a.sw + (-13, 3) = b.ne);
161   boxit.keyword(btex \kwd*{KEYWORD} etex);
162   boxit.boolean_(btex \kwd*{BOOLEAN} etex);
163   symbol.se + (27,0) = boolean_.nw;
164   drawboxed(keyword,boolean_);
166   boxjoin(a.se + (0, -3) = b.ne);
167   boxit.extended_char(btex \kwd*{EXTENDED-CHAR} etex);
168   boxit.base_char(btex \kwd*{BASE-CHAR} etex);
169   character.e + (10,-10) = extended_char.w;
170   drawboxed(extended_char,base_char);
171   
172   boxjoin();
173   boxit.standard_char(btex \kwd*{STANDARD-CHAR} etex);
174   base_char.sw + (0,-3) = standard_char.nw;
175   drawboxed(standard_char);
176   
177   drawarrow t.e{right} .. {right}t.e+(40,0) .. sequence.n{down};
178   drawarrow t.e{right} .. {right}t.e+(150,0) .. cons.ne+(2,3) .. function.n{down};
179   drawarrow t.e{right} .. {right}t.e+(150,0) .. cons.ne+(2,9) .. standard_char.sw+(-3,-3) .. number.n{down};
180   drawarrow t.e{right} .. {right}t.e+(150,0) .. character.w+(-60,8) .. character.w{right};
181   drawarrow t.e{right} .. {right}t.e+(300,0) .. stream.w{right};
182   drawarrow t.e{right} .. {right}t.e+(300,0) .. pathname.w{right};
184   drawarrow t.s{down} ... atom.w{right};
185   drawarrow t.s{down} ... package.w{right};
186   drawarrow t.s{down} ... readtable.w{right};
187   
188   drawarrow t.s{down} ... readtable.sw+(6,-6){right} .. symbol.w{right};
189   drawarrow t.s{down} ... readtable.sw+(6,-6){right} .. array.nw+(10,0){down};
190   
191   drawarrow t.s{down} ... hash_table.w{right};
192   drawarrow t.s{down} ... structure_object.w{right};
193   drawarrow t.s{down} ... random_state.w{right};
194   drawarrow t.s{down} ... restart.w{right};
195   drawarrow t.s{down} ... standard_object.w{right};
196   drawarrow t.s{down} ... standard_class.w+(-15,-15) .. method.w{right};
198   drawarrow standard_object.s+(3,0){down} .. class.e{left};
199   drawarrow class.w{left} ... built_in_class.w+(-9,0) ... standard_class.w{right};
200   drawarrow class.w{left} ... class.sw+(-6,0) ... built_in_class.w{right};
201   drawarrow class.w{left} ... standard_class.sw+(-9,0) ... structure_class.w{right};
202   drawarrow t.s{down} .. method_combination.nw+(5,0){down};
203   
204   drawarrow standard_object.s+(3,0){down} .. built_in_class.ne+(2,2)  ... standard_class.e+(7,0) ... structure_class.se+(2,-2) .. method.e{down} .. standard_method.ne+(5,2) .. standard_method.e{left} dashed evenly;
206   drawarrow vector.w{left} ... vector.sw+(-6,0) ... string_.w+(0,3){right};
207   drawarrow string_.w+(0,-3){left} ... simple_string.w+(-8,0) ... base_string.w{right};
208   drawarrow vector.w{left} ... base_string.w+(-12,0) ... bit_vector.w{right};
209   drawarrow sequence.e{right} .. list.w{right};
210   drawarrow list.e .. cons.w;
212   drawarrow symbol.e{right} .. keyword.w{right};
213   drawarrow symbol.e{right} .. boolean_.w{right};
215   drawarrow list.e{right} .. symbol.se+(1,-2) .. symbol.se+(-3,0){left} .. null.e{left} dashed evenly;
217   
218   drawarrow sequence.s{down} .. null.s+(0,-6){right} .. boolean_.s+(10,-5) .. array.ne+(2,1) .. array.e{down} .. simple_array.ne+(0,6){right} .. simple_array.se+(0,-18) .. vector.e + (0, 3) {left} dashed evenly;
219   drawarrow sequence.s{down} .. null.s+(0,-6){right} .. boolean_.s+(10,-5) .. array.ne+(2,1) .. array.e{down} .. simple_array.ne+(0,6){right} .. simple_array.ne+(2,1){down} .. simple_array.e{down} .. simple_array.se+(2,-1){down}.. vector.ne+(30,0) .. vector.ne+(10,0) .. vector.e + (0, -3){down}  .. vector.se + (2,-1){down} .. simple_base_string.se+(5,0) .. simple_vector.e{left} dashed evenly;
220   drawarrow sequence.s{down} .. null.s+(0,-6){right} .. boolean_.s+(10,-5) .. array.ne+(2,1) .. array.e{down} .. simple_array.ne+(0,6){right} .. simple_array.ne+(2,1){down} .. simple_array.e{down} .. simple_array.se+(2,-1){down}.. vector.ne+(30,0) .. vector.ne+(10,0) .. vector.e + (0, -3){down}  .. vector.se + (2,-1){down} .. simple_base_string.se+(10,0) .. simple_vector.se+(0, -3) .. bit_vector.e{down} ... simple_bit_vector.w{right} dashed evenly;
221   drawarrow sequence.s{down} .. null.s+(0,-6){right} .. boolean_.s+(10,-5) .. array.ne+(2,1) .. array.e{down} .. simple_array.ne+(0,6){right} .. simple_array.ne+(2,1){down} .. simple_array.e{down} .. simple_array.se+(2,-1){down}.. vector.ne+(30,0) .. vector.ne+(10,0) .. vector.e + (0, -3){down}  .. vector.se + (2,-1){down} .. string_.e{down} .. simple_string.ne+(2,1){down}  .. simple_string.e{down}  .. simple_string.se+(2,1){down} .. base_string.e+(0,3){down} .. simple_base_string.ne+(-10,0){down} dashed evenly;
223   drawarrow array.w{left} ... array.sw+(-7,-3).. simple_array.w{right};
225   drawarrow character.s{down} ... base_char.w{right};
226   drawarrow character.s{down} .. extended_char.w{right};
227   drawarrow base_char.e{right} .. standard_char.ne+(-7,0){down};
229   drawarrow function.s+(-20,0){down} .. compiled_function.w{right};
230   drawarrow function.s+(-20,0){down} .. generic_function.w+(0,3){right};
231   drawarrow generic_function.w+(0,-3){left} .. standard_generic_function.nw+(20,0){down};
233   drawarrow number.w{left} ... number.sw+(-6,0) ... complex.w{right};
234   drawarrow number.w{left} ... complex.w+(-10,0) ... real.w+(0,3){right};
236   drawarrow real.w+(0,-3){left} .. rational.e{left};
237   drawarrow real.w+(0,-3){left} .. float.w{right};
239   drawarrow float.e{right} ... short_float.ne+(6,-3) ... short_float.e{left};
240   drawarrow float.e{right} ... short_float.e+(10,0) ... single_float.e{left};
241   drawarrow float.e{right} ... short_float.se+(13,-3) ... double_float.e{left};
242   drawarrow float.e{right} ... single_float.e+(16,0) ... long_float.e{left};
244   drawarrow rational.w{left} ... rational.sw+(-7,0) ... integer.w{right};
245   drawarrow rational.w{left} ... integer.w+(-10,0) ... ratio.w{right};
247   drawarrow integer.s+(12,0){down} .. signed_byte.ne+(-5,0){down};
248   drawarrow integer.s+(12,0){down} .. fixnum.n{down};
249   drawarrow integer.s+(12,0){down} .. bignum.nw+(5,0){down};
251   drawarrow signed_byte.s{down} ... unsigned_byte.w{right};
252   drawarrow unsigned_byte.s{down} ... bit.w{right};
254   drawarrow stream.s{down} .. two_way_stream.nw+(-2,2) .. file_stream.w{right};
255   drawarrow stream.s{down} .. two_way_stream.w{right};
256   drawarrow stream.s{down} ... synonym_stream.w{right};
257   drawarrow stream.s{down} ... string_stream.w{right};
258   drawarrow stream.s{down} .. stream.s+(0,-12){down} .. concatenated_stream.nw+(10,0){down};
259   drawarrow stream.s{down} .. broadcast_stream.w{right};
260   drawarrow stream.s{down} .. concatenated_stream.sw+(-6,-5) .. echo_stream.w{right};
262   drawarrow pathname.e{right} .. logical_pathname.w{right};
263   
264 endfig;
266 verbatimtex
267 \end{document}
268 etex