3
(defstruct (fasd (:type vector))
12
evald_forms ; list of forms eval'd. (load-time-eval)
16
'( d_nil ;/* dnil: nil */
17
d_eval_skip ; /* deval o1: evaluate o1 after reading it */
18
d_delimiter ;/* occurs after d_listd_general and d_new_indexed_items */
19
d_enter_vector ; /* d_enter_vector o1 o2 .. on d_delimiter make a cf_data with
20
; this length. Used internally by gcl. Just make
21
; an array in other lisps */
22
d_cons ; /* d_cons o1 o2: (o1 . o2) */
24
d_list ;/* list* delimited by d_delimiter d_list,o1,o2, ... ,d_dot,on
26
;or d_list,o1,o2, ... ,on,d_delimiter for (o1 o2 ... on)
28
d_list1 ;/* nil terminated length 1 d_list1o1 */
29
d_list2 ; /* nil terminated length 2 */
36
d_short_symbol_and_package
51
d_sharp_equals ; /* define a sharp */
62
d_indexed_item3 ; /* d_indexed_item3 followed by 3bytes to give index */
63
d_indexed_item2 ; /* d_indexed_item2 followed by 2bytes to give index */
65
d_indexed_item0 ; /* This must occur last ! */
68
(defmacro put-op (op str)
69
`(write-byte ,(or (position op *fasd-ops*)
70
(error "illegal op")) ,str))
72
(defmacro put2 (n str)
73
`(progn (write-bytei ,n 0 ,str)
74
(write-bytei ,n 1 ,str)))
76
(defmacro write-bytei (n i str)
77
`(write-byte (the fixnum (ash (the fixnum ,n) >> ,(* i 8))) ,str))