0000: 0a 0a 0a 43 41 4c 4c 42 41 43 4b 28 33 29 20 20 ...CALLBACK(3)
0010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0030: 20 20 20 20 20 20 20 20 20 43 41 4c 4c 42 41 43 CALLBAC
0040: 4b 28 33 29 0a 0a 0a 4e 08 4e 41 08 41 4d 08 4d K(3)...N.NA.AM.M
0050: 45 08 45 0a 20 20 20 20 20 20 20 63 61 6c 6c 62 E.E. callb
0060: 61 63 6b 20 2d 20 63 6c 6f 73 75 72 65 73 20 77 ack - closures w
0070: 69 74 68 20 76 61 72 69 61 62 6c 65 20 61 72 67 ith variable arg
0080: 75 6d 65 6e 74 73 20 61 73 20 66 69 72 73 74 2d uments as first-
0090: 63 6c 61 73 73 0a 20 20 20 20 20 20 20 43 20 66 class. C f
00a0: 75 6e 63 74 69 6f 6e 73 0a 0a 53 08 53 59 08 59 unctions..S.SY.Y
00b0: 4e 08 4e 4f 08 4f 50 08 50 53 08 53 49 08 49 53 N.NO.OP.PS.SI.IS
00c0: 08 53 0a 20 20 20 20 20 20 20 23 08 23 69 08 69 .S. #.#i.i
00d0: 6e 08 6e 63 08 63 6c 08 6c 75 08 75 64 08 64 65 n.nc.cl.lu.ud.de
00e0: 08 65 20 3c 08 3c 63 08 63 61 08 61 6c 08 6c 6c .e <.<c.ca.al.ll
00f0: 08 6c 62 08 62 61 08 61 63 08 63 6b 08 6b 2e 08 .lb.ba.ac.ck.k..
0100: 2e 68 08 68 3e 08 3e 0a 0a 20 20 20 20 20 20 20 .h.h>.>..
0110: 76 08 76 6f 08 6f 69 08 69 64 08 64 20 5f 08 66 v.vo.oi.id.d _.f
0120: 5f 08 75 5f 08 6e 5f 08 63 5f 08 74 5f 08 69 5f _.u_.n_.c_.t_.i_
0130: 08 6f 5f 08 6e 20 28 08 28 5f 08 64 5f 08 61 5f .o_.n (.(_.d_.a_
0140: 08 74 5f 08 61 2c 08 2c 20 5f 08 61 5f 08 6c 5f .t_.a,., _.a_.l_
0150: 08 69 5f 08 73 5f 08 74 29 08 29 0a 20 20 20 20 .i_.s_.t).).
0160: 20 20 20 20 20 76 08 76 6f 08 6f 69 08 69 64 08 v.vo.oi.id.
0170: 64 2a 08 2a 20 5f 08 64 5f 08 61 5f 08 74 5f 08 d*.* _.d_.a_.t_.
0180: 61 3b 08 3b 0a 20 20 20 20 20 20 20 20 20 76 08 a;.;. v.
0190: 76 61 08 61 5f 08 5f 61 08 61 6c 08 6c 69 08 69 va.a_._a.al.li.i
01a0: 73 08 73 74 08 74 20 5f 08 61 5f 08 6c 5f 08 69 s.st.t _.a_.l_.i
01b0: 5f 08 73 5f 08 74 3b 08 3b 0a 20 20 20 20 20 20 _.s_.t;.;.
01c0: 20 7b 08 7b 0a 20 20 20 20 20 20 20 20 20 76 08 {.{. v.
01d0: 76 61 08 61 5f 08 5f 73 08 73 74 08 74 61 08 61 va.a_._s.st.ta.a
01e0: 72 08 72 74 08 74 5f 08 5f 5f 08 74 5f 08 79 5f r.rt.t_.__.t_.y_
01f0: 08 70 5f 08 65 28 08 28 5f 08 61 5f 08 6c 5f 08 .p_.e(.(_.a_.l_.
0200: 69 5f 08 73 5f 08 74 5b 08 5b 2c 08 2c 20 5f 08 i_.s_.t[.[,., _.
0210: 72 5f 08 65 5f 08 74 5f 08 75 5f 08 72 5f 08 6e r_.e_.t_.u_.r_.n
0220: 5f 08 5f 5f 08 74 5f 08 79 5f 08 70 5f 08 65 5d _.__.t_.y_.p_.e]
0230: 08 5d 29 08 29 3b 08 3b 0a 20 20 20 20 20 20 20 .]).);.;.
0240: 20 20 5f 08 61 5f 08 72 5f 08 67 20 3d 08 3d 20 _.a_.r_.g =.=
0250: 76 08 76 61 08 61 5f 08 5f 61 08 61 72 08 72 67 v.va.a_._a.ar.rg
0260: 08 67 5f 08 5f 5f 08 74 5f 08 79 5f 08 70 5f 08 .g_.__.t_.y_.p_.
0270: 65 28 08 28 5f 08 61 5f 08 6c 5f 08 69 5f 08 73 e(.(_.a_.l_.i_.s
0280: 5f 08 74 5b 08 5b 2c 08 2c 20 5f 08 61 5f 08 72 _.t[.[,., _.a_.r
0290: 5f 08 67 5f 08 5f 5f 08 74 5f 08 79 5f 08 70 5f _.g_.__.t_.y_.p_
02a0: 08 65 5d 08 5d 29 08 29 3b 08 3b 0a 20 20 20 20 .e].]).);.;.
02b0: 20 20 20 20 20 76 08 76 61 08 61 5f 08 5f 72 08 v.va.a_._r.
02c0: 72 65 08 65 74 08 74 75 08 75 72 08 72 6e 08 6e re.et.tu.ur.rn.n
02d0: 5f 08 5f 5f 08 74 5f 08 79 5f 08 70 5f 08 65 28 _.__.t_.y_.p_.e(
02e0: 08 28 5f 08 61 5f 08 6c 5f 08 69 5f 08 73 5f 08 .(_.a_.l_.i_.s_.
02f0: 74 5b 08 5b 5b 08 5b 2c 08 2c 20 5f 08 72 5f 08 t[.[[.[,., _.r_.
0300: 65 5f 08 74 5f 08 75 5f 08 72 5f 08 6e 5f 08 5f e_.t_.u_.r_.n_._
0310: 5f 08 74 5f 08 79 5f 08 70 5f 08 65 5d 08 5d 2c _.t_.y_.p_.e].],
0320: 08 2c 20 5f 08 72 5f 08 65 5f 08 74 5f 08 75 5f ., _.r_.e_.t_.u_
0330: 08 72 5f 08 6e 5f 08 5f 5f 08 76 5f 08 61 5f 08 .r_.n_.__.v_.a_.
0340: 6c 5f 08 75 5f 08 65 5d 08 5d 29 08 29 3b 08 3b l_.u_.e].]).);.;
0350: 0a 20 20 20 20 20 20 20 7d 08 7d 0a 0a 20 20 20 . }.}..
0360: 20 20 20 20 5f 08 63 5f 08 61 5f 08 6c 5f 08 6c _.c_.a_.l_.l
0370: 5f 08 62 5f 08 61 5f 08 63 5f 08 6b 20 3d 08 3d _.b_.a_.c_.k =.=
0380: 20 61 08 61 6c 08 6c 6c 08 6c 6f 08 6f 63 08 63 a.al.ll.lo.oc.c
0390: 5f 08 5f 63 08 63 61 08 61 6c 08 6c 6c 08 6c 62 _._c.ca.al.ll.lb
03a0: 08 62 61 08 61 63 08 63 6b 08 6b 28 08 28 5f 08 .ba.ac.ck.k(.(_.
03b0: 26 5f 08 66 5f 08 75 5f 08 6e 5f 08 63 5f 08 74 &_.f_.u_.n_.c_.t
03c0: 5f 08 69 5f 08 6f 5f 08 6e 2c 08 2c 20 5f 08 64 _.i_.o_.n,., _.d
03d0: 5f 08 61 5f 08 74 5f 08 61 29 08 29 3b 08 3b 0a _.a_.t_.a).);.;.
03e0: 0a 20 20 20 20 20 20 20 66 08 66 72 08 72 65 08 . f.fr.re.
03f0: 65 65 08 65 5f 08 5f 63 08 63 61 08 61 6c 08 6c ee.e_._c.ca.al.l
0400: 6c 08 6c 62 08 62 61 08 61 63 08 63 6b 08 6b 28 l.lb.ba.ac.ck.k(
0410: 08 28 5f 08 63 5f 08 61 5f 08 6c 5f 08 6c 5f 08 .(_.c_.a_.l_.l_.
0420: 62 5f 08 61 5f 08 63 5f 08 6b 29 08 29 3b 08 3b b_.a_.c_.k).);.;
0430: 0a 0a 20 20 20 20 20 20 20 69 08 69 73 08 73 5f .. i.is.s_
0440: 08 5f 63 08 63 61 08 61 6c 08 6c 6c 08 6c 62 08 ._c.ca.al.ll.lb.
0450: 62 61 08 61 63 08 63 6b 08 6b 28 08 28 5f 08 63 ba.ac.ck.k(.(_.c
0460: 5f 08 61 5f 08 6c 5f 08 6c 5f 08 62 5f 08 61 5f _.a_.l_.l_.b_.a_
0470: 08 63 5f 08 6b 29 08 29 0a 20 20 20 20 20 20 20 .c_.k).).
0480: 63 08 63 61 08 61 6c 08 6c 6c 08 6c 62 08 62 61 c.ca.al.ll.lb.ba
0490: 08 61 63 08 63 6b 08 6b 5f 08 5f 61 08 61 64 08 .ac.ck.k_._a.ad.
04a0: 64 64 08 64 72 08 72 65 08 65 73 08 73 73 08 73 dd.dr.re.es.ss.s
04b0: 28 08 28 5f 08 63 5f 08 61 5f 08 6c 5f 08 6c 5f (.(_.c_.a_.l_.l_
04c0: 08 62 5f 08 61 5f 08 63 5f 08 6b 29 08 29 0a 20 .b_.a_.c_.k).).
04d0: 20 20 20 20 20 20 63 08 63 61 08 61 6c 08 6c 6c c.ca.al.ll
04e0: 08 6c 62 08 62 61 08 61 63 08 63 6b 08 6b 5f 08 .lb.ba.ac.ck.k_.
04f0: 5f 64 08 64 61 08 61 74 08 74 61 08 61 28 08 28 _d.da.at.ta.a(.(
0500: 5f 08 63 5f 08 61 5f 08 6c 5f 08 6c 5f 08 62 5f _.c_.a_.l_.l_.b_
0510: 08 61 5f 08 63 5f 08 6b 29 08 29 0a 0a 44 08 44 .a_.c_.k).)..D.D
0520: 45 08 45 53 08 53 43 08 43 52 08 52 49 08 49 50 E.ES.SC.CR.RI.IP
0530: 08 50 54 08 54 49 08 49 4f 08 4f 4e 08 4e 0a 20 .PT.TI.IO.ON.N.
0540: 20 20 20 20 20 20 54 68 65 73 65 20 66 75 6e 63 These func
0550: 74 69 6f 6e 73 20 69 6d 70 6c 65 6d 65 6e 74 20 tions implement
0560: 5f 08 63 5f 08 6c 5f 08 6f 5f 08 73 5f 08 75 5f _.c_.l_.o_.s_.u_
0570: 08 72 5f 08 65 5f 08 73 20 77 69 74 68 20 76 61 .r_.e_.s with va
0580: 72 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 73 riable arguments
0590: 0a 20 20 20 20 20 20 20 61 73 20 66 69 72 73 74 . as first
05a0: 2d 63 6c 61 73 73 20 43 20 66 75 6e 63 74 69 6f -class C functio
05b0: 6e 73 2e 0a 0a 20 20 20 20 20 20 20 43 6c 6f 73 ns... Clos
05c0: 75 72 65 73 20 20 61 73 20 20 5f 08 66 5f 08 69 ures as _.f_.i
05d0: 5f 08 72 5f 08 73 5f 08 74 5f 08 2d 5f 08 63 5f _.r_.s_.t_.-_.c_
05e0: 08 6c 5f 08 61 5f 08 73 5f 08 73 20 20 5f 08 43 .l_.a_.s_.s _.C
05f0: 20 5f 08 66 5f 08 75 5f 08 6e 5f 08 63 5f 08 74 _.f_.u_.n_.c_.t
0600: 5f 08 69 5f 08 6f 5f 08 6e 5f 08 73 20 6d 65 61 _.i_.o_.n_.s mea
0610: 6e 73 20 74 68 61 74 20 74 68 65 79 20 66 69 74 ns that they fit
0620: 0a 20 20 20 20 20 20 20 69 6e 74 6f 20 61 20 66 . into a f
0630: 75 6e 63 74 69 6f 6e 20 70 6f 69 6e 74 65 72 20 unction pointer
0640: 61 6e 64 20 63 61 6e 20 62 65 20 63 61 6c 6c 65 and can be calle
0650: 64 20 65 78 61 63 74 6c 79 20 6c 69 6b 65 20 61 d exactly like a
0660: 6e 79 0a 20 20 20 20 20 20 20 6f 74 68 65 72 20 ny. other
0670: 20 43 20 66 75 6e 63 74 69 6f 6e 2e 20 4d 6f 72 C function. Mor
0680: 65 6f 76 65 72 2c 20 74 68 65 79 20 63 61 6e 20 eover, they can
0690: 62 65 20 63 61 6c 6c 65 64 20 77 69 74 68 20 76 be called with v
06a0: 61 72 69 2d 0a 20 20 20 20 20 20 20 61 62 6c 65 ari-. able
06b0: 20 61 72 67 75 6d 65 6e 74 73 20 61 6e 64 20 63 arguments and c
06c0: 61 6e 20 72 65 74 75 72 6e 20 76 61 72 69 61 62 an return variab
06d0: 6c 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 73 le return values
06e0: 2e 0a 0a 20 20 20 20 20 20 20 5f 08 63 5f 08 61 ... _.c_.a
06f0: 5f 08 6c 5f 08 6c 5f 08 62 5f 08 61 5f 08 63 5f _.l_.l_.b_.a_.c_
0700: 08 6b 20 3d 08 3d 20 20 61 08 61 6c 08 6c 6c 08 .k =.= a.al.ll.
0710: 6c 6f 08 6f 63 08 63 5f 08 5f 63 08 63 61 08 61 lo.oc.c_._c.ca.a
0720: 6c 08 6c 6c 08 6c 62 08 62 61 08 61 63 08 63 6b l.ll.lb.ba.ac.ck
0730: 08 6b 28 08 28 5f 08 26 5f 08 66 5f 08 75 5f 08 .k(.(_.&_.f_.u_.
0740: 6e 5f 08 63 5f 08 74 5f 08 69 5f 08 6f 5f 08 6e n_.c_.t_.i_.o_.n
0750: 2c 08 2c 20 20 5f 08 64 5f 08 61 5f 08 74 5f 08 ,., _.d_.a_.t_.
0760: 61 29 08 29 20 20 61 6c 6c 6f 63 61 74 65 73 20 a).) allocates
0770: 20 61 0a 20 20 20 20 20 20 20 63 61 6c 6c 62 61 a. callba
0780: 63 6b 2e 20 20 57 68 65 6e 20 20 5f 08 63 5f 08 ck. When _.c_.
0790: 61 5f 08 6c 5f 08 6c 5f 08 62 5f 08 61 5f 08 63 a_.l_.l_.b_.a_.c
07a0: 5f 08 6b 20 67 65 74 73 20 63 61 6c 6c 65 64 2c _.k gets called,
07b0: 20 69 74 20 61 72 72 61 6e 67 65 73 20 74 6f 20 it arranges to
07c0: 63 61 6c 6c 0a 20 20 20 20 20 20 20 5f 08 66 5f call. _.f_
07d0: 08 75 5f 08 6e 5f 08 63 5f 08 74 5f 08 69 5f 08 .u_.n_.c_.t_.i_.
07e0: 6f 5f 08 6e 2c 20 70 61 73 73 69 6e 67 20 5f 08 o_.n, passing _.
07f0: 64 5f 08 61 5f 08 74 5f 08 61 20 61 73 20 66 69 d_.a_.t_.a as fi
0800: 72 73 74 20 61 72 67 75 6d 65 6e 74 20 20 61 6e rst argument an
0810: 64 2c 20 20 61 73 20 20 73 65 63 6f 6e 64 0a 20 d, as second.
0820: 20 20 20 20 20 20 61 72 67 75 6d 65 6e 74 2c 20 argument,
0830: 74 68 65 20 65 6e 74 69 72 65 20 73 65 71 75 65 the entire seque
0840: 6e 63 65 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 nce of arguments
0850: 20 70 61 73 73 65 64 20 74 6f 20 5f 08 63 5f 08 passed to _.c_.
0860: 61 5f 08 6c 5f 08 6c 5f 08 2d 0a 20 20 20 20 20 a_.l_.l_.-.
0870: 20 20 5f 08 62 5f 08 61 5f 08 63 5f 08 6b 2e 0a _.b_.a_.c_.k..
0880: 0a 20 20 20 20 20 20 20 46 75 6e 63 74 69 6f 6e . Function
0890: 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 calling convent
08a0: 69 6f 6e 73 20 64 69 66 66 65 72 20 63 6f 6e 73 ions differ cons
08b0: 69 64 65 72 61 62 6c 79 20 20 6f 6e 20 20 64 69 iderably on di
08c0: 66 2d 0a 20 20 20 20 20 20 20 66 65 72 65 6e 74 f-. ferent
08d0: 20 20 6d 61 63 68 69 6e 65 73 2c 20 74 68 65 72 machines, ther
08e0: 65 66 6f 72 65 20 74 68 65 20 61 72 67 75 6d 65 efore the argume
08f0: 6e 74 73 20 61 72 65 20 61 63 63 65 73 73 65 64 nts are accessed
0900: 20 61 6e 64 0a 20 20 20 20 20 20 20 74 68 65 20 and. the
0910: 72 65 73 75 6c 74 20 76 61 6c 75 65 20 69 73 20 result value is
0920: 73 74 6f 72 65 64 20 74 68 72 6f 75 67 68 20 74 stored through t
0930: 68 65 20 73 61 6d 65 20 6d 61 63 72 6f 73 20 61 he same macros a
0940: 73 20 75 73 65 64 0a 20 20 20 20 20 20 20 62 79 s used. by
0950: 20 74 68 65 20 5f 08 76 5f 08 61 5f 08 63 5f 08 the _.v_.a_.c_.
0960: 61 5f 08 6c 5f 08 6c 20 70 61 63 6b 61 67 65 2c a_.l_.l package,
0970: 20 73 65 65 20 62 65 6c 6f 77 2e 0a 0a 20 20 20 see below...
0980: 20 20 20 20 54 68 65 20 20 63 61 6c 6c 62 61 63 The callbac
0990: 6b 73 20 61 72 65 20 66 75 6e 63 74 69 6f 6e 73 ks are functions
09a0: 20 77 69 74 68 20 69 6e 64 65 66 69 6e 69 74 65 with indefinite
09b0: 20 65 78 74 65 6e 74 3a 20 5f 08 63 5f 08 61 5f extent: _.c_.a_
09c0: 08 6c 5f 08 6c 5f 08 2d 0a 20 20 20 20 20 20 20 .l_.l_.-.
09d0: 5f 08 62 5f 08 61 5f 08 63 5f 08 6b 20 69 73 20 _.b_.a_.c_.k is
09e0: 6f 6e 6c 79 20 64 65 61 6c 6c 6f 63 61 74 65 64 only deallocated
09f0: 20 77 68 65 6e 20 20 66 08 66 72 08 72 65 08 65 when f.fr.re.e
0a00: 65 08 65 5f 08 5f 63 08 63 61 08 61 6c 08 6c 6c e.e_._c.ca.al.ll
0a10: 08 6c 62 08 62 61 08 61 63 08 63 6b 08 6b 28 08 .lb.ba.ac.ck.k(.
0a20: 28 5f 08 63 5f 08 61 5f 08 6c 5f 08 6c 5f 08 62 (_.c_.a_.l_.l_.b
0a30: 5f 08 61 5f 08 63 5f 08 6b 29 08 29 20 20 69 73 _.a_.c_.k).) is
0a40: 0a 20 20 20 20 20 20 20 63 61 6c 6c 65 64 2e 0a . called..
0a50: 0a 20 20 20 20 20 20 20 69 08 69 73 08 73 5f 08 . i.is.s_.
0a60: 5f 63 08 63 61 08 61 6c 08 6c 6c 08 6c 62 08 62 _c.ca.al.ll.lb.b
0a70: 61 08 61 63 08 63 6b 08 6b 28 08 28 5f 08 63 5f a.ac.ck.k(.(_.c_
0a80: 08 61 5f 08 6c 5f 08 6c 5f 08 62 5f 08 61 5f 08 .a_.l_.l_.b_.a_.
0a90: 63 5f 08 6b 29 08 29 20 20 63 68 65 63 6b 73 20 c_.k).) checks
0aa0: 77 68 65 74 68 65 72 20 74 68 65 20 43 20 66 75 whether the C fu
0ab0: 6e 63 74 69 6f 6e 20 5f 08 63 5f 08 61 5f 08 6c nction _.c_.a_.l
0ac0: 5f 08 6c 5f 08 2d 0a 20 20 20 20 20 20 20 5f 08 _.l_.-. _.
0ad0: 62 5f 08 61 5f 08 63 5f 08 6b 20 77 61 73 20 70 b_.a_.c_.k was p
0ae0: 72 6f 64 75 63 65 64 20 62 79 20 61 20 63 61 6c roduced by a cal
0af0: 6c 20 74 6f 20 20 5f 08 61 5f 08 6c 5f 08 6c 5f l to _.a_.l_.l_
0b00: 08 6f 5f 08 63 5f 08 5f 5f 08 63 5f 08 61 5f 08 .o_.c_.__.c_.a_.
0b10: 6c 5f 08 6c 5f 08 62 5f 08 61 5f 08 63 5f 08 6b l_.l_.b_.a_.c_.k
0b20: 2e 20 20 20 49 66 20 20 74 68 69 73 0a 20 20 20 . If this.
0b30: 20 20 20 20 72 65 74 75 72 6e 73 20 74 72 75 65 returns true
0b40: 2c 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20 , the arguments
0b50: 67 69 76 65 6e 20 74 6f 20 5f 08 61 5f 08 6c 5f given to _.a_.l_
0b60: 08 6c 5f 08 6f 5f 08 63 5f 08 5f 5f 08 63 5f 08 .l_.o_.c_.__.c_.
0b70: 61 5f 08 6c 5f 08 6c 5f 08 62 5f 08 61 5f 08 63 a_.l_.l_.b_.a_.c
0b80: 5f 08 6b 20 63 61 6e 20 62 65 0a 20 20 20 20 20 _.k can be.
0b90: 20 20 72 65 74 72 69 65 76 65 64 3a 0a 0a 20 20 retrieved:..
0ba0: 20 20 20 20 20 20 20 20 20 63 08 63 61 08 61 6c c.ca.al
0bb0: 08 6c 6c 08 6c 62 08 62 61 08 61 63 08 63 6b 08 .ll.lb.ba.ac.ck.
0bc0: 6b 5f 08 5f 61 08 61 64 08 64 64 08 64 72 08 72 k_._a.ad.dd.dr.r
0bd0: 65 08 65 73 08 73 73 08 73 28 08 28 5f 08 63 5f e.es.ss.s(.(_.c_
0be0: 08 61 5f 08 6c 5f 08 6c 5f 08 62 5f 08 61 5f 08 .a_.l_.l_.b_.a_.
0bf0: 63 5f 08 6b 29 08 29 20 72 65 74 75 72 6e 73 20 c_.k).) returns
0c00: 5f 08 26 5f 08 66 5f 08 75 5f 08 6e 5f 08 63 5f _.&_.f_.u_.n_.c_
0c10: 08 74 5f 08 69 5f 08 6f 5f 08 6e 2c 0a 0a 0a 0a .t_.i_.o_.n,....
0c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0c30: 20 20 20 20 20 20 20 20 20 31 34 20 4a 61 6e 75 14 Janu
0c40: 61 72 79 20 32 30 30 31 20 20 20 20 20 20 20 20 ary 2001
0c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0c60: 31 0a 0a 0a 0a 0a 0a 43 41 4c 4c 42 41 43 4b 28 1......CALLBACK(
0c70: 33 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3)
0c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41 4c CAL
0ca0: 4c 42 41 43 4b 28 33 29 0a 0a 0a 20 20 20 20 20 LBACK(3)...
0cb0: 20 20 20 20 20 20 63 08 63 61 08 61 6c 08 6c 6c c.ca.al.ll
0cc0: 08 6c 62 08 62 61 08 61 63 08 63 6b 08 6b 5f 08 .lb.ba.ac.ck.k_.
0cd0: 5f 64 08 64 61 08 61 74 08 74 61 08 61 28 08 28 _d.da.at.ta.a(.(
0ce0: 5f 08 63 5f 08 61 5f 08 6c 5f 08 6c 5f 08 62 5f _.c_.a_.l_.l_.b_
0cf0: 08 61 5f 08 63 5f 08 6b 29 08 29 20 72 65 74 75 .a_.c_.k).) retu
0d00: 72 6e 73 20 5f 08 64 5f 08 61 5f 08 74 5f 08 61 rns _.d_.a_.t_.a
0d10: 2e 0a 0a 0a 56 08 56 41 08 41 43 08 43 41 08 41 ....V.VA.AC.CA.A
0d20: 4c 08 4c 4c 08 4c 20 4d 08 4d 41 08 41 43 08 43 L.LL.L M.MA.AC.C
0d30: 52 08 52 4f 08 4f 53 08 53 0a 20 20 20 20 20 20 R.RO.OS.S.
0d40: 20 57 69 74 68 69 6e 20 5f 08 66 5f 08 75 5f 08 Within _.f_.u_.
0d50: 6e 5f 08 63 5f 08 74 5f 08 69 5f 08 6f 5f 08 6e n_.c_.t_.i_.o_.n
0d60: 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 , the following
0d70: 6d 61 63 72 6f 73 20 63 61 6e 20 62 65 20 75 73 macros can be us
0d80: 65 64 20 74 6f 20 20 77 61 6c 6b 0a 20 20 20 20 ed to walk.
0d90: 20 20 20 74 68 72 6f 75 67 68 20 74 68 65 20 61 through the a
0da0: 72 67 75 6d 65 6e 74 20 6c 69 73 74 20 61 6e 64 rgument list and
0db0: 20 73 70 65 63 69 66 79 20 61 20 72 65 74 75 72 specify a retur
0dc0: 6e 20 76 61 6c 75 65 3a 0a 0a 20 20 20 20 20 20 n value:..
0dd0: 20 76 08 76 61 08 61 5f 08 5f 73 08 73 74 08 74 v.va.a_._s.st.t
0de0: 61 08 61 72 08 72 74 08 74 5f 08 5f 5f 08 74 5f a.ar.rt.t_.__.t_
0df0: 08 79 5f 08 70 5f 08 65 28 08 28 5f 08 61 5f 08 .y_.p_.e(.(_.a_.
0e00: 6c 5f 08 69 5f 08 73 5f 08 74 5b 08 5b 2c 08 2c l_.i_.s_.t[.[,.,
0e10: 20 5f 08 72 5f 08 65 5f 08 74 5f 08 75 5f 08 72 _.r_.e_.t_.u_.r
0e20: 5f 08 6e 5f 08 5f 5f 08 74 5f 08 79 5f 08 70 5f _.n_.__.t_.y_.p_
0e30: 08 65 5d 08 5d 29 08 29 3b 08 3b 0a 20 20 20 20 .e].]).);.;.
0e40: 20 20 20 20 20 20 20 20 20 20 73 74 61 72 74 73 starts
0e50: 20 74 68 65 20 77 61 6c 6b 20 74 68 72 6f 75 67 the walk throug
0e60: 68 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 6c h the argument l
0e70: 69 73 74 20 61 6e 64 20 73 70 65 63 2d 0a 20 20 ist and spec-.
0e80: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 69 65 ifie
0e90: 73 20 74 68 65 20 72 65 74 75 72 6e 20 74 79 70 s the return typ
0ea0: 65 2e 0a 0a 20 20 20 20 20 20 20 5f 08 61 5f 08 e... _.a_.
0eb0: 72 5f 08 67 20 3d 08 3d 20 76 08 76 61 08 61 5f r_.g =.= v.va.a_
0ec0: 08 5f 61 08 61 72 08 72 67 08 67 5f 08 5f 5f 08 ._a.ar.rg.g_.__.
0ed0: 74 5f 08 79 5f 08 70 5f 08 65 28 08 28 5f 08 61 t_.y_.p_.e(.(_.a
0ee0: 5f 08 6c 5f 08 69 5f 08 73 5f 08 74 5b 08 5b 2c _.l_.i_.s_.t[.[,
0ef0: 08 2c 20 5f 08 61 5f 08 72 5f 08 67 5f 08 5f 5f ., _.a_.r_.g_.__
0f00: 08 74 5f 08 79 5f 08 70 5f 08 65 5d 08 5d 29 08 .t_.y_.p_.e].]).
0f10: 29 3b 08 3b 0a 20 20 20 20 20 20 20 20 20 20 20 );.;.
0f20: 20 20 20 66 65 74 63 68 65 73 20 74 68 65 20 6e fetches the n
0f30: 65 78 74 20 61 72 67 75 6d 65 6e 74 20 66 72 6f ext argument fro
0f40: 6d 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 6c m the argument l
0f50: 69 73 74 2e 0a 0a 20 20 20 20 20 20 20 76 08 76 ist... v.v
0f60: 61 08 61 5f 08 5f 72 08 72 65 08 65 74 08 74 75 a.a_._r.re.et.tu
0f70: 08 75 72 08 72 6e 08 6e 5f 08 5f 5f 08 74 5f 08 .ur.rn.n_.__.t_.
0f80: 79 5f 08 70 5f 08 65 28 08 28 5f 08 61 5f 08 6c y_.p_.e(.(_.a_.l
0f90: 5f 08 69 5f 08 73 5f 08 74 5b 08 5b 5b 08 5b 2c _.i_.s_.t[.[[.[,
0fa0: 08 2c 20 5f 08 72 5f 08 65 5f 08 74 5f 08 75 5f ., _.r_.e_.t_.u_
0fb0: 08 72 5f 08 6e 5f 08 5f 5f 08 74 5f 08 79 5f 08 .r_.n_.__.t_.y_.
0fc0: 70 5f 08 65 5d 08 5d 2c 08 2c 20 5f 08 72 5f 08 p_.e].],., _.r_.
0fd0: 65 5f 08 74 5f 08 75 5f 08 72 5f 08 6e 5f 08 5f e_.t_.u_.r_.n_._
0fe0: 5f 08 76 5f 08 61 5f 08 6c 5f 08 75 5f 08 65 5d _.v_.a_.l_.u_.e]
0ff0: 08 5d 29 08 29 3b 08 3b 0a 20 20 20 20 20 20 20 .]).);.;.
1000: 20 20 20 20 20 20 20 65 6e 64 73 20 74 68 65 20 ends the
1010: 77 61 6c 6b 20 74 68 72 6f 75 67 68 20 74 68 65 walk through the
1020: 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 20 61 argument list a
1030: 6e 64 20 20 73 70 65 63 69 2d 0a 20 20 20 20 20 nd speci-.
1040: 20 20 20 20 20 20 20 20 20 66 69 65 73 20 74 68 fies th
1050: 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 0a e return value..
1060: 0a 20 20 20 20 20 20 20 54 68 65 20 20 5f 08 74 . The _.t
1070: 5f 08 79 5f 08 70 5f 08 65 20 69 6e 20 76 08 76 _.y_.p_.e in v.v
1080: 61 08 61 5f 08 5f 73 08 73 74 08 74 61 08 61 72 a.a_._s.st.ta.ar
1090: 08 72 74 08 74 5f 08 5f 5f 08 74 5f 08 79 5f 08 .rt.t_.__.t_.y_.
10a0: 70 5f 08 65 20 61 6e 64 20 76 08 76 61 08 61 5f p_.e and v.va.a_
10b0: 08 5f 72 08 72 65 08 65 74 08 74 75 08 75 72 08 ._r.re.et.tu.ur.
10c0: 72 6e 08 6e 5f 08 5f 5f 08 74 5f 08 79 5f 08 70 rn.n_.__.t_.y_.p
10d0: 5f 08 65 20 73 68 61 6c 6c 20 62 65 20 6f 6e 65 _.e shall be one
10e0: 0a 20 20 20 20 20 20 20 6f 66 20 76 08 76 6f 08 . of v.vo.
10f0: 6f 69 08 69 64 08 64 2c 20 69 08 69 6e 08 6e 74 oi.id.d, i.in.nt
1100: 08 74 2c 20 75 08 75 69 08 69 6e 08 6e 74 08 74 .t, u.ui.in.nt.t
1110: 2c 20 6c 08 6c 6f 08 6f 6e 08 6e 67 08 67 2c 20 , l.lo.on.ng.g,
1120: 75 08 75 6c 08 6c 6f 08 6f 6e 08 6e 67 08 67 2c u.ul.lo.on.ng.g,
1130: 20 6c 08 6c 6f 08 6f 6e 08 6e 67 08 67 6c 08 6c l.lo.on.ng.gl.l
1140: 6f 08 6f 6e 08 6e 67 08 67 2c 20 75 08 75 6c 08 o.on.ng.g, u.ul.
1150: 6c 6f 08 6f 6e 08 6e 67 08 67 6c 08 6c 6f 08 6f lo.on.ng.gl.lo.o
1160: 6e 08 6e 67 08 67 2c 20 64 08 64 6f 08 6f 75 08 n.ng.g, d.do.ou.
1170: 75 2d 08 2d 0a 20 20 20 20 20 20 20 62 08 62 6c u-.-. b.bl
1180: 08 6c 65 08 65 2c 20 20 73 08 73 74 08 74 72 08 .le.e, s.st.tr.
1190: 72 75 08 75 63 08 63 74 08 74 2c 20 70 08 70 74 ru.uc.ct.t, p.pt
11a0: 08 74 72 08 72 20 6f 72 20 28 66 6f 72 20 41 4e .tr.r or (for AN
11b0: 53 49 20 43 20 63 61 6c 6c 69 6e 67 20 63 6f 6e SI C calling con
11c0: 76 65 6e 74 69 6f 6e 73 20 6f 6e 6c 79 29 0a 20 ventions only).
11d0: 20 20 20 20 20 20 63 08 63 68 08 68 61 08 61 72 c.ch.ha.ar
11e0: 08 72 2c 20 73 08 73 63 08 63 68 08 68 61 08 61 .r, s.sc.ch.ha.a
11f0: 72 08 72 2c 20 75 08 75 63 08 63 68 08 68 61 08 r.r, u.uc.ch.ha.
1200: 61 72 08 72 2c 20 73 08 73 68 08 68 6f 08 6f 72 ar.r, s.sh.ho.or
1210: 08 72 74 08 74 2c 20 75 08 75 73 08 73 68 08 68 .rt.t, u.us.sh.h
1220: 6f 08 6f 72 08 72 74 08 74 2c 20 66 08 66 6c 08 o.or.rt.t, f.fl.
1230: 6c 6f 08 6f 61 08 61 74 08 74 2c 20 64 65 70 65 lo.oa.at.t, depe
1240: 6e 64 69 6e 67 20 6f 6e 20 74 68 65 0a 20 20 20 nding on the.
1250: 20 20 20 20 63 6c 61 73 73 20 6f 66 20 5f 08 72 class of _.r
1260: 5f 08 65 5f 08 74 5f 08 75 5f 08 72 5f 08 6e 5f _.e_.t_.u_.r_.n_
1270: 08 5f 5f 08 74 5f 08 79 5f 08 70 5f 08 65 2e 0a .__.t_.y_.p_.e..
1280: 0a 20 20 20 20 20 20 20 54 68 65 20 20 5f 08 74 . The _.t
1290: 5f 08 79 5f 08 70 5f 08 65 20 20 73 70 65 63 69 _.y_.p_.e speci
12a0: 66 69 65 72 73 20 20 69 6e 20 76 08 76 61 08 61 fiers in v.va.a
12b0: 5f 08 5f 73 08 73 74 08 74 61 08 61 72 08 72 74 _._s.st.ta.ar.rt
12c0: 08 74 5f 08 5f 5f 08 74 5f 08 79 5f 08 70 5f 08 .t_.__.t_.y_.p_.
12d0: 65 20 61 6e 64 20 76 08 76 61 08 61 5f 08 5f 72 e and v.va.a_._r
12e0: 08 72 65 08 65 74 08 74 75 08 75 72 08 72 6e 08 .re.et.tu.ur.rn.
12f0: 6e 5f 08 5f 5f 08 74 5f 08 79 5f 08 70 5f 08 65 n_.__.t_.y_.p_.e
1300: 0a 20 20 20 20 20 20 20 6d 75 73 74 20 62 65 20 . must be
1310: 74 68 65 20 73 61 6d 65 2e 20 20 54 68 65 20 5f the same. The _
1320: 08 72 5f 08 65 5f 08 74 5f 08 75 5f 08 72 5f 08 .r_.e_.t_.u_.r_.
1330: 6e 5f 08 5f 5f 08 74 5f 08 79 5f 08 70 5f 08 65 n_.__.t_.y_.p_.e
1340: 20 20 73 70 65 63 69 66 69 65 72 73 20 20 70 61 specifiers pa
1350: 73 73 65 64 20 20 74 6f 0a 20 20 20 20 20 20 20 ssed to.
1360: 76 08 76 61 08 61 5f 08 5f 73 08 73 74 08 74 61 v.va.a_._s.st.ta
1370: 08 61 72 08 72 74 08 74 5f 08 5f 5f 08 74 5f 08 .ar.rt.t_.__.t_.
1380: 79 5f 08 70 5f 08 65 20 61 6e 64 20 76 08 76 61 y_.p_.e and v.va
1390: 08 61 5f 08 5f 72 08 72 65 08 65 74 08 74 75 08 .a_._r.re.et.tu.
13a0: 75 72 08 72 6e 08 6e 5f 08 5f 5f 08 74 5f 08 79 ur.rn.n_.__.t_.y
13b0: 5f 08 70 5f 08 65 20 6d 75 73 74 20 62 65 20 74 _.p_.e must be t
13c0: 68 65 20 73 61 6d 65 2e 0a 0a 20 20 20 20 20 20 he same...
13d0: 20 54 68 65 20 20 5f 08 74 5f 08 79 5f 08 70 5f The _.t_.y_.p_
13e0: 08 65 20 20 69 6e 20 76 08 76 61 08 61 5f 08 5f .e in v.va.a_._
13f0: 61 08 61 72 08 72 67 08 67 5f 08 5f 5f 08 74 5f a.ar.rg.g_.__.t_
1400: 08 79 5f 08 70 5f 08 65 20 73 68 61 6c 6c 20 62 .y_.p_.e shall b
1410: 65 20 6f 6e 65 20 6f 66 20 69 08 69 6e 08 6e 74 e one of i.in.nt
1420: 08 74 2c 20 75 08 75 69 08 69 6e 08 6e 74 08 74 .t, u.ui.in.nt.t
1430: 2c 20 6c 08 6c 6f 08 6f 6e 08 6e 67 08 67 2c 0a , l.lo.on.ng.g,.
1440: 20 20 20 20 20 20 20 75 08 75 6c 08 6c 6f 08 6f u.ul.lo.o
1450: 6e 08 6e 67 08 67 2c 20 6c 08 6c 6f 08 6f 6e 08 n.ng.g, l.lo.on.
1460: 6e 67 08 67 6c 08 6c 6f 08 6f 6e 08 6e 67 08 67 ng.gl.lo.on.ng.g
1470: 2c 20 75 08 75 6c 08 6c 6f 08 6f 6e 08 6e 67 08 , u.ul.lo.on.ng.
1480: 67 6c 08 6c 6f 08 6f 6e 08 6e 67 08 67 2c 20 64 gl.lo.on.ng.g, d
1490: 08 64 6f 08 6f 75 08 75 62 08 62 6c 08 6c 65 08 .do.ou.ub.bl.le.
14a0: 65 2c 20 73 08 73 74 08 74 72 08 72 75 08 75 63 e, s.st.tr.ru.uc
14b0: 08 63 74 08 74 2c 20 20 70 08 70 74 08 74 72 08 .ct.t, p.pt.tr.
14c0: 72 20 20 6f 72 20 20 28 66 6f 72 0a 20 20 20 20 r or (for.
14d0: 20 20 20 41 4e 53 49 20 20 43 20 20 63 61 6c 6c ANSI C call
14e0: 69 6e 67 20 20 63 6f 6e 76 65 6e 74 69 6f 6e 73 ing conventions
14f0: 20 20 6f 6e 6c 79 29 20 20 63 08 63 68 08 68 61 only) c.ch.ha
1500: 08 61 72 08 72 2c 20 20 73 08 73 63 08 63 68 08 .ar.r, s.sc.ch.
1510: 68 61 08 61 72 08 72 2c 20 75 08 75 63 08 63 68 ha.ar.r, u.uc.ch
1520: 08 68 61 08 61 72 08 72 2c 0a 20 20 20 20 20 20 .ha.ar.r,.
1530: 20 73 08 73 68 08 68 6f 08 6f 72 08 72 74 08 74 s.sh.ho.or.rt.t
1540: 2c 20 75 08 75 73 08 73 68 08 68 6f 08 6f 72 08 , u.us.sh.ho.or.
1550: 72 74 08 74 2c 20 66 08 66 6c 08 6c 6f 08 6f 61 rt.t, f.fl.lo.oa
1560: 08 61 74 08 74 2c 20 64 65 70 65 6e 64 69 6e 67 .at.t, depending
1570: 20 6f 6e 20 74 68 65 20 63 6c 61 73 73 20 6f 66 on the class of
1580: 20 20 5f 08 61 5f 08 72 5f 08 67 5f 08 5f 5f 08 _.a_.r_.g_.__.
1590: 74 5f 08 79 5f 08 70 5f 08 65 2e 0a 0a 20 20 20 t_.y_.p_.e...
15a0: 20 20 20 20 49 6e 20 20 76 08 76 61 08 61 5f 08 In v.va.a_.
15b0: 5f 73 08 73 74 08 74 61 08 61 72 08 72 74 08 74 _s.st.ta.ar.rt.t
15c0: 5f 08 5f 73 08 73 74 08 74 72 08 72 75 08 75 63 _._s.st.tr.ru.uc
15d0: 08 63 74 08 74 28 08 28 5f 08 61 5f 08 6c 5f 08 .ct.t(.(_.a_.l_.
15e0: 69 5f 08 73 5f 08 74 2c 08 2c 20 20 5f 08 72 5f i_.s_.t,., _.r_
15f0: 08 65 5f 08 74 5f 08 75 5f 08 72 5f 08 6e 5f 08 .e_.t_.u_.r_.n_.
1600: 5f 5f 08 74 5f 08 79 5f 08 70 5f 08 65 2c 08 2c __.t_.y_.p_.e,.,
1610: 20 20 5f 08 73 5f 08 70 5f 08 6c 5f 08 69 5f 08 _.s_.p_.l_.i_.
1620: 74 5f 08 74 5f 08 61 5f 08 62 5f 08 6c 5f 08 65 t_.t_.a_.b_.l_.e
1630: 29 08 29 3b 08 3b 20 74 68 65 0a 20 20 20 20 20 ).);.; the.
1640: 20 20 5f 08 73 5f 08 70 5f 08 6c 5f 08 69 5f 08 _.s_.p_.l_.i_.
1650: 74 5f 08 74 5f 08 61 5f 08 62 5f 08 6c 5f 08 65 t_.t_.a_.b_.l_.e
1660: 20 66 6c 61 67 20 73 70 65 63 69 66 69 65 73 20 flag specifies
1670: 77 68 65 74 68 65 72 20 74 68 65 20 20 73 74 72 whether the str
1680: 75 63 74 20 20 5f 08 72 5f 08 65 5f 08 74 5f 08 uct _.r_.e_.t_.
1690: 75 5f 08 72 5f 08 6e 5f 08 5f 5f 08 74 5f 08 79 u_.r_.n_.__.t_.y
16a0: 5f 08 70 5f 08 65 0a 20 20 20 20 20 20 20 63 61 _.p_.e. ca
16b0: 6e 20 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 n be returned i
16c0: 6e 20 72 65 67 69 73 74 65 72 73 20 73 75 63 68 n registers such
16d0: 20 74 68 61 74 20 65 76 65 72 79 20 73 74 72 75 that every stru
16e0: 63 74 20 66 69 65 6c 64 0a 20 20 20 20 20 20 20 ct field.
16f0: 66 69 74 73 20 65 6e 74 69 72 65 6c 79 20 69 6e fits entirely in
1700: 20 61 20 73 69 6e 67 6c 65 20 72 65 67 69 73 74 a single regist
1710: 65 72 2e 20 54 68 69 73 20 6e 65 65 64 73 20 74 er. This needs t
1720: 6f 20 62 65 20 73 70 65 63 2d 0a 20 20 20 20 20 o be spec-.
1730: 20 20 69 66 69 65 64 20 20 66 6f 72 20 20 73 74 ified for st
1740: 72 75 63 74 73 20 6f 66 20 73 69 7a 65 20 32 2a ructs of size 2*
1750: 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 2e 20 46 6f sizeof(long). Fo
1760: 72 20 73 74 72 75 63 74 73 20 6f 66 0a 20 20 20 r structs of.
1770: 20 20 20 20 73 69 7a 65 20 3c 3d 20 73 69 7a 65 size <= size
1780: 6f 66 28 6c 6f 6e 67 29 2c 20 5f 08 73 5f 08 70 of(long), _.s_.p
1790: 5f 08 6c 5f 08 69 5f 08 74 5f 08 74 5f 08 61 5f _.l_.i_.t_.t_.a_
17a0: 08 62 5f 08 6c 5f 08 65 20 69 73 20 69 67 6e 6f .b_.l_.e is igno
17b0: 72 65 64 20 61 6e 64 20 61 73 73 75 6d 65 64 20 red and assumed
17c0: 74 6f 0a 20 20 20 20 20 20 20 62 65 20 20 31 2e to. be 1.
17d0: 20 46 6f 72 20 73 74 72 75 63 74 73 20 6f 66 20 For structs of
17e0: 73 69 7a 65 20 3e 20 32 2a 73 69 7a 65 6f 66 28 size > 2*sizeof(
17f0: 6c 6f 6e 67 29 2c 20 5f 08 73 5f 08 70 5f 08 6c long), _.s_.p_.l
1800: 5f 08 69 5f 08 74 5f 08 74 5f 08 61 5f 08 62 5f _.i_.t_.t_.a_.b_
1810: 08 6c 5f 08 65 20 69 73 0a 20 20 20 20 20 20 20 .l_.e is.
1820: 69 67 6e 6f 72 65 64 20 61 6e 64 20 61 73 73 75 ignored and assu
1830: 6d 65 64 20 74 6f 20 62 65 20 30 2e 20 54 68 65 med to be 0. The
1840: 72 65 20 61 72 65 20 73 6f 6d 65 20 20 68 61 6e re are some han
1850: 64 79 20 20 6d 61 63 72 6f 73 0a 20 20 20 20 20 dy macros.
1860: 20 20 66 6f 72 20 74 68 69 73 3a 0a 20 20 20 20 for this:.
1870: 20 20 20 76 08 76 61 08 61 5f 08 5f 77 08 77 6f v.va.a_._w.wo
1880: 08 6f 72 08 72 64 08 64 5f 08 5f 73 08 73 70 08 .or.rd.d_._s.sp.
1890: 70 6c 08 6c 69 08 69 74 08 74 74 08 74 61 08 61 pl.li.it.tt.ta.a
18a0: 62 08 62 6c 08 6c 65 08 65 5f 08 5f 31 08 31 20 b.bl.le.e_._1.1
18b0: 28 08 28 5f 08 74 5f 08 79 5f 08 70 5f 08 65 5f (.(_.t_.y_.p_.e_
18c0: 08 31 29 08 29 0a 20 20 20 20 20 20 20 76 08 76 .1).). v.v
18d0: 61 08 61 5f 08 5f 77 08 77 6f 08 6f 72 08 72 64 a.a_._w.wo.or.rd
18e0: 08 64 5f 08 5f 73 08 73 70 08 70 6c 08 6c 69 08 .d_._s.sp.pl.li.
18f0: 69 74 08 74 74 08 74 61 08 61 62 08 62 6c 08 6c it.tt.ta.ab.bl.l
1900: 65 08 65 5f 08 5f 32 08 32 20 28 08 28 5f 08 74 e.e_._2.2 (.(_.t
1910: 5f 08 79 5f 08 70 5f 08 65 5f 08 31 2c 08 2c 20 _.y_.p_.e_.1,.,
1920: 5f 08 74 5f 08 79 5f 08 70 5f 08 65 5f 08 32 29 _.t_.y_.p_.e_.2)
1930: 08 29 0a 20 20 20 20 20 20 20 76 08 76 61 08 61 .). v.va.a
1940: 5f 08 5f 77 08 77 6f 08 6f 72 08 72 64 08 64 5f _._w.wo.or.rd.d_
1950: 08 5f 73 08 73 70 08 70 6c 08 6c 69 08 69 74 08 ._s.sp.pl.li.it.
1960: 74 74 08 74 61 08 61 62 08 62 6c 08 6c 65 08 65 tt.ta.ab.bl.le.e
1970: 5f 08 5f 33 08 33 20 28 08 28 5f 08 74 5f 08 79 _._3.3 (.(_.t_.y
1980: 5f 08 70 5f 08 65 5f 08 31 2c 08 2c 20 5f 08 74 _.p_.e_.1,., _.t
1990: 5f 08 79 5f 08 70 5f 08 65 5f 08 32 2c 08 2c 20 _.y_.p_.e_.2,.,
19a0: 5f 08 74 5f 08 79 5f 08 70 5f 08 65 5f 08 33 29 _.t_.y_.p_.e_.3)
19b0: 08 29 0a 20 20 20 20 20 20 20 76 08 76 61 08 61 .). v.va.a
19c0: 5f 08 5f 77 08 77 6f 08 6f 72 08 72 64 08 64 5f _._w.wo.or.rd.d_
19d0: 08 5f 73 08 73 70 08 70 6c 08 6c 69 08 69 74 08 ._s.sp.pl.li.it.
19e0: 74 74 08 74 61 08 61 62 08 62 6c 08 6c 65 08 65 tt.ta.ab.bl.le.e
19f0: 5f 08 5f 34 08 34 20 28 08 28 5f 08 74 5f 08 79 _._4.4 (.(_.t_.y
1a00: 5f 08 70 5f 08 65 5f 08 31 2c 08 2c 20 5f 08 74 _.p_.e_.1,., _.t
1a10: 5f 08 79 5f 08 70 5f 08 65 5f 08 32 2c 08 2c 20 _.y_.p_.e_.2,.,
1a20: 5f 08 74 5f 08 79 5f 08 70 5f 08 65 5f 08 33 2c _.t_.y_.p_.e_.3,
1a30: 08 2c 20 5f 08 74 5f 08 79 5f 08 70 5f 08 65 5f ., _.t_.y_.p_.e_
1a40: 08 34 29 08 29 0a 20 20 20 20 20 20 20 46 6f 72 .4).). For
1a50: 20 61 20 73 74 72 75 63 74 20 77 69 74 68 20 74 a struct with t
1a60: 68 72 65 65 20 73 6c 6f 74 73 0a 20 20 20 20 20 hree slots.
1a70: 20 20 73 08 73 74 08 74 72 08 72 75 08 75 63 08 s.st.tr.ru.uc.
1a80: 63 74 08 74 20 7b 08 7b 20 5f 08 74 5f 08 79 5f ct.t {.{ _.t_.y_
1a90: 08 70 5f 08 65 5f 08 31 20 5f 08 69 5f 08 64 5f .p_.e_.1 _.i_.d_
1aa0: 08 31 3b 08 3b 20 5f 08 74 5f 08 79 5f 08 70 5f .1;.; _.t_.y_.p_
1ab0: 08 65 5f 08 32 20 5f 08 69 5f 08 64 5f 08 32 3b .e_.2 _.i_.d_.2;
1ac0: 08 3b 20 5f 08 74 5f 08 79 5f 08 70 5f 08 65 5f .; _.t_.y_.p_.e_
1ad0: 08 33 20 5f 08 69 5f 08 64 5f 08 33 3b 08 3b 20 .3 _.i_.d_.3;.;
1ae0: 7d 08 7d 0a 20 20 20 20 20 20 20 79 6f 75 20 63 }.}. you c
1af0: 61 6e 20 73 70 65 63 69 66 79 20 5f 08 73 5f 08 an specify _.s_.
1b00: 70 5f 08 6c 5f 08 69 5f 08 74 5f 08 74 5f 08 61 p_.l_.i_.t_.t_.a
1b10: 5f 08 62 5f 08 6c 5f 08 65 20 61 73 20 76 08 76 _.b_.l_.e as v.v
1b20: 61 08 61 5f 08 5f 77 08 77 6f 08 6f 72 08 72 64 a.a_._w.wo.or.rd
1b30: 08 64 5f 08 5f 73 08 73 70 08 70 6c 08 6c 69 08 .d_._s.sp.pl.li.
1b40: 69 74 08 74 74 08 74 61 08 61 62 08 62 6c 08 6c it.tt.ta.ab.bl.l
1b50: 65 08 65 5f 08 5f 33 08 33 20 28 08 28 5f 08 74 e.e_._3.3 (.(_.t
1b60: 5f 08 79 5f 08 70 5f 08 65 5f 08 31 2c 08 2c 0a _.y_.p_.e_.1,.,.
1b70: 20 20 20 20 20 20 20 5f 08 74 5f 08 79 5f 08 70 _.t_.y_.p
1b80: 5f 08 65 5f 08 32 2c 08 2c 20 5f 08 74 5f 08 79 _.e_.2,., _.t_.y
1b90: 5f 08 70 5f 08 65 5f 08 33 29 08 29 20 2e 0a 0a _.p_.e_.3).) ...
1ba0: 0a 4e 08 4e 4f 08 4f 54 08 54 45 08 45 53 08 53 .N.NO.OT.TE.ES.S
1bb0: 0a 20 20 20 20 20 20 20 46 75 6e 63 74 69 6f 6e . Function
1bc0: 73 20 77 68 69 63 68 20 77 61 6e 74 20 74 6f 20 s which want to
1bd0: 65 6d 75 6c 61 74 65 20 4b 65 72 6e 69 67 68 61 emulate Kernigha
1be0: 6e 20 26 20 52 69 74 63 68 69 65 20 20 73 74 79 n & Ritchie sty
1bf0: 6c 65 0a 0a 0a 0a 20 20 20 20 20 20 20 20 20 20 le....
1c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 1
1c10: 34 20 4a 61 6e 75 61 72 79 20 32 30 30 31 20 20 4 January 2001
1c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1c30: 20 20 20 20 20 20 32 0a 0a 0a 0a 0a 0a 43 41 4c 2......CAL
1c40: 4c 42 41 43 4b 28 33 29 20 20 20 20 20 20 20 20 LBACK(3)
1c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1c70: 20 20 20 43 41 4c 4c 42 41 43 4b 28 33 29 0a 0a CALLBACK(3)..
1c80: 0a 20 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e . function
1c90: 73 20 20 28 69 2e 65 2e 2c 20 20 69 6e 20 20 41 s (i.e., in A
1ca0: 4e 53 49 20 20 43 2c 20 20 66 75 6e 63 74 69 6f NSI C, functio
1cb0: 6e 73 20 77 69 74 68 6f 75 74 20 61 20 74 79 70 ns without a typ
1cc0: 65 64 0a 20 20 20 20 20 20 20 61 72 67 75 6d 65 ed. argume
1cd0: 6e 74 20 6c 69 73 74 29 20 63 61 6e 6e 6f 74 20 nt list) cannot
1ce0: 75 73 65 20 74 68 65 20 20 5f 08 74 5f 08 79 5f use the _.t_.y_
1cf0: 08 70 5f 08 65 20 20 76 61 6c 75 65 73 20 20 63 .p_.e values c
1d00: 08 63 68 08 68 61 08 61 72 08 72 2c 20 20 73 08 .ch.ha.ar.r, s.
1d10: 73 63 08 63 68 08 68 61 08 61 72 08 72 2c 0a 20 sc.ch.ha.ar.r,.
1d20: 20 20 20 20 20 20 75 08 75 63 08 63 68 08 68 61 u.uc.ch.ha
1d30: 08 61 72 08 72 2c 20 73 08 73 68 08 68 6f 08 6f .ar.r, s.sh.ho.o
1d40: 72 08 72 74 08 74 2c 20 75 08 75 73 08 73 68 08 r.rt.t, u.us.sh.
1d50: 68 6f 08 6f 72 08 72 74 08 74 2c 20 66 08 66 6c ho.or.rt.t, f.fl
1d60: 08 6c 6f 08 6f 61 08 61 74 08 74 2e 20 20 41 73 .lo.oa.at.t. As
1d70: 20 70 72 65 73 63 72 69 62 65 64 20 62 79 20 74 prescribed by t
1d80: 68 65 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 he default.
1d90: 20 20 4b 26 52 20 43 20 65 78 70 72 65 73 73 69 K&R C expressi
1da0: 6f 6e 20 70 72 6f 6d 6f 74 69 6f 6e 73 2c 20 74 on promotions, t
1db0: 68 65 79 20 68 61 76 65 20 74 6f 20 75 73 65 20 hey have to use
1dc0: 69 08 69 6e 08 6e 74 08 74 20 20 69 6e 73 74 65 i.in.nt.t inste
1dd0: 61 64 0a 20 20 20 20 20 20 20 6f 66 20 63 08 63 ad. of c.c
1de0: 68 08 68 61 08 61 72 08 72 2c 20 73 08 73 63 08 h.ha.ar.r, s.sc.
1df0: 63 68 08 68 61 08 61 72 08 72 2c 20 75 08 75 63 ch.ha.ar.r, u.uc
1e00: 08 63 68 08 68 61 08 61 72 08 72 2c 20 73 08 73 .ch.ha.ar.r, s.s
1e10: 68 08 68 6f 08 6f 72 08 72 74 08 74 2c 20 75 08 h.ho.or.rt.t, u.
1e20: 75 73 08 73 68 08 68 6f 08 6f 72 08 72 74 08 74 us.sh.ho.or.rt.t
1e30: 20 61 6e 64 20 64 08 64 6f 08 6f 75 08 75 62 08 and d.do.ou.ub.
1e40: 62 6c 08 6c 65 08 65 20 69 6e 73 74 65 61 64 20 bl.le.e instead
1e50: 6f 66 0a 20 20 20 20 20 20 20 66 08 66 6c 08 6c of. f.fl.l
1e60: 6f 08 6f 61 08 61 74 08 74 2e 0a 0a 20 20 20 20 o.oa.at.t...
1e70: 20 20 20 54 68 65 20 20 6d 61 63 72 6f 73 20 20 The macros
1e80: 20 76 08 76 61 08 61 5f 08 5f 73 08 73 74 08 74 v.va.a_._s.st.t
1e90: 61 08 61 72 08 72 74 08 74 5f 08 5f 6c 08 6c 6f a.ar.rt.t_._l.lo
1ea0: 08 6f 6e 08 6e 67 08 67 6c 08 6c 6f 08 6f 6e 08 .on.ng.gl.lo.on.
1eb0: 6e 67 08 67 28 08 28 29 08 29 2c 20 20 20 76 08 ng.g(.().), v.
1ec0: 76 61 08 61 5f 08 5f 73 08 73 74 08 74 61 08 61 va.a_._s.st.ta.a
1ed0: 72 08 72 74 08 74 5f 08 5f 75 08 75 6c 08 6c 6f r.rt.t_._u.ul.lo
1ee0: 08 6f 6e 08 6e 67 08 67 6c 08 6c 6f 08 6f 6e 08 .on.ng.gl.lo.on.
1ef0: 6e 67 08 67 28 08 28 29 08 29 2c 0a 20 20 20 20 ng.g(.().),.
1f00: 20 20 20 76 08 76 61 08 61 5f 08 5f 72 08 72 65 v.va.a_._r.re
1f10: 08 65 74 08 74 75 08 75 72 08 72 6e 08 6e 5f 08 .et.tu.ur.rn.n_.
1f20: 5f 6c 08 6c 6f 08 6f 6e 08 6e 67 08 67 6c 08 6c _l.lo.on.ng.gl.l
1f30: 6f 08 6f 6e 08 6e 67 08 67 28 08 28 29 08 29 2c o.on.ng.g(.().),
1f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 v
1f50: 08 76 61 08 61 5f 08 5f 72 08 72 65 08 65 74 08 .va.a_._r.re.et.
1f60: 74 75 08 75 72 08 72 6e 08 6e 5f 08 5f 75 08 75 tu.ur.rn.n_._u.u
1f70: 6c 08 6c 6f 08 6f 6e 08 6e 67 08 67 6c 08 6c 6f l.lo.on.ng.gl.lo
1f80: 08 6f 6e 08 6e 67 08 67 28 08 28 29 08 29 2c 0a .on.ng.g(.().),.
1f90: 20 20 20 20 20 20 20 76 08 76 61 08 61 5f 08 5f v.va.a_._
1fa0: 61 08 61 72 08 72 67 08 67 5f 08 5f 6c 08 6c 6f a.ar.rg.g_._l.lo
1fb0: 08 6f 6e 08 6e 67 08 67 6c 08 6c 6f 08 6f 6e 08 .on.ng.gl.lo.on.
1fc0: 6e 67 08 67 28 08 28 29 08 29 20 61 6e 64 20 76 ng.g(.().) and v
1fd0: 08 76 61 08 61 5f 08 5f 61 08 61 72 08 72 67 08 .va.a_._a.ar.rg.
1fe0: 67 5f 08 5f 75 08 75 6c 08 6c 6f 08 6f 6e 08 6e g_._u.ul.lo.on.n
1ff0: 67 08 67 6c 08 6c 6f 08 6f 6e 08 6e 67 08 67 28 g.gl.lo.on.ng.g(
2000: 08 28 29 08 29 20 77 6f 72 6b 20 6f 6e 6c 79 20 .().) work only
2010: 69 66 20 20 74 68 65 0a 20 20 20 20 20 20 20 43 if the. C
2020: 20 63 6f 6d 70 69 6c 65 72 20 68 61 73 20 61 20 compiler has a
2030: 77 6f 72 6b 69 6e 67 20 6c 08 6c 6f 08 6f 6e 08 working l.lo.on.
2040: 6e 67 08 67 20 6c 08 6c 6f 08 6f 6e 08 6e 67 08 ng.g l.lo.on.ng.
2050: 67 20 36 34 2d 62 69 74 20 69 6e 74 65 67 65 72 g 64-bit integer
2060: 20 74 79 70 65 2e 0a 0a 20 20 20 20 20 20 20 54 type... T
2070: 68 65 20 73 74 72 75 63 74 20 74 79 70 65 73 20 he struct types
2080: 75 73 65 64 20 69 6e 20 76 08 76 61 08 61 5f 08 used in v.va.a_.
2090: 5f 73 08 73 74 08 74 61 08 61 72 08 72 74 08 74 _s.st.ta.ar.rt.t
20a0: 5f 08 5f 73 08 73 74 08 74 72 08 72 75 08 75 63 _._s.st.tr.ru.uc
20b0: 08 63 74 08 74 28 08 28 29 08 29 20 61 6e 64 20 .ct.t(.().) and
20c0: 76 08 76 61 08 61 5f 08 5f 73 08 73 74 08 74 72 v.va.a_._s.st.tr
20d0: 08 72 75 08 75 63 08 63 74 08 74 28 08 28 29 08 .ru.uc.ct.t(.().
20e0: 29 0a 20 20 20 20 20 20 20 6d 75 73 74 20 6f 6e ). must on
20f0: 6c 79 20 63 6f 6e 74 61 69 6e 20 28 73 69 67 6e ly contain (sign
2100: 65 64 20 6f 72 20 20 75 6e 73 69 67 6e 65 64 29 ed or unsigned)
2110: 20 20 69 6e 74 2c 20 20 6c 6f 6e 67 2c 20 20 6c int, long, l
2120: 6f 6e 67 0a 20 20 20 20 20 20 20 6c 6f 6e 67 20 ong. long
2130: 20 6f 72 20 20 70 6f 69 6e 74 65 72 20 66 69 65 or pointer fie
2140: 6c 64 73 2e 20 20 53 74 72 75 63 74 20 74 79 70 lds. Struct typ
2150: 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 28 73 es containing (s
2160: 69 67 6e 65 64 0a 20 20 20 20 20 20 20 6f 72 20 igned. or
2170: 75 6e 73 69 67 6e 65 64 29 20 63 68 61 72 2c 20 unsigned) char,
2180: 73 68 6f 72 74 2c 20 66 6c 6f 61 74 2c 20 64 6f short, float, do
2190: 75 62 6c 65 20 6f 72 20 20 6f 74 68 65 72 20 20 uble or other
21a0: 73 74 72 75 63 74 73 0a 20 20 20 20 20 20 20 61 structs. a
21b0: 72 65 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 re not supported
21c0: 2e 0a 0a 0a 53 08 53 45 08 45 45 08 45 20 41 08 ....S.SE.EE.E A.
21d0: 41 4c 08 4c 53 08 53 4f 08 4f 0a 20 20 20 20 20 AL.LS.SO.O.
21e0: 20 20 76 08 76 61 08 61 63 08 63 61 08 61 6c 08 v.va.ac.ca.al.
21f0: 6c 6c 08 6c 28 33 29 2c 20 74 08 74 72 08 72 61 ll.l(3), t.tr.ra
2200: 08 61 6d 08 6d 70 08 70 6f 08 6f 6c 08 6c 69 08 .am.mp.po.ol.li.
2210: 69 6e 08 6e 65 08 65 28 33 29 2e 0a 0a 0a 42 08 in.ne.e(3)....B.
2220: 42 55 08 55 47 08 47 53 08 53 0a 20 20 20 20 20 BU.UG.GS.S.
2230: 20 20 54 68 65 20 20 63 75 72 72 65 6e 74 20 20 The current
2240: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 implementations
2250: 68 61 76 65 20 62 65 65 6e 20 74 65 73 74 65 64 have been tested
2260: 20 6f 6e 20 61 20 73 65 6c 65 63 2d 0a 20 20 20 on a selec-.
2270: 20 20 20 20 74 69 6f 6e 20 6f 66 20 63 6f 6d 6d tion of comm
2280: 6f 6e 20 63 61 73 65 73 20 62 75 74 20 74 68 65 on cases but the
2290: 72 65 20 20 61 72 65 20 20 70 72 6f 62 61 62 6c re are probabl
22a0: 79 20 20 73 74 69 6c 6c 20 20 6d 61 6e 79 0a 20 y still many.
22b0: 20 20 20 20 20 20 62 75 67 73 2e 0a 0a 20 20 20 bugs...
22c0: 20 20 20 20 54 68 65 72 65 20 20 61 72 65 20 20 There are
22d0: 74 79 70 69 63 61 6c 6c 79 20 20 62 75 69 6c 74 typically built
22e0: 2d 69 6e 20 20 6c 69 6d 69 74 73 20 6f 6e 20 74 -in limits on t
22f0: 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 0a 20 he size of the.
2300: 20 20 20 20 20 20 61 72 67 75 6d 65 6e 74 2d 6c argument-l
2310: 69 73 74 2c 20 77 68 69 63 68 20 6d 61 79 20 61 ist, which may a
2320: 6c 73 6f 20 20 69 6e 63 6c 75 64 65 20 20 74 68 lso include th
2330: 65 20 20 73 69 7a 65 20 20 6f 66 20 20 61 6e 79 e size of any
2340: 0a 20 20 20 20 20 20 20 73 74 72 75 63 74 75 72 . structur
2350: 65 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 20 20 e arguments...
2360: 20 20 20 20 20 54 68 65 20 20 64 65 63 69 73 69 The decisi
2370: 6f 6e 20 77 68 65 74 68 65 72 20 61 20 73 74 72 on whether a str
2380: 75 63 74 20 69 73 20 74 6f 20 62 65 20 72 65 74 uct is to be ret
2390: 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73 2d 0a urned in regis-.
23a0: 20 20 20 20 20 20 20 74 65 72 73 20 6f 72 20 69 ters or i
23b0: 6e 20 6d 65 6d 6f 72 79 20 63 6f 6e 73 69 64 65 n memory conside
23c0: 72 73 20 6f 6e 6c 79 20 20 74 68 65 20 20 73 74 rs only the st
23d0: 72 75 63 74 27 73 20 20 73 69 7a 65 20 20 61 6e ruct's size an
23e0: 64 0a 20 20 20 20 20 20 20 61 6c 69 67 6e 6d 65 d. alignme
23f0: 6e 74 2e 20 20 54 68 69 73 20 20 69 73 20 69 6e nt. This is in
2400: 61 63 63 75 72 61 74 65 3a 20 66 6f 72 20 65 78 accurate: for ex
2410: 61 6d 70 6c 65 2c 20 67 63 63 20 6f 6e 20 6d 36 ample, gcc on m6
2420: 38 6b 2d 0a 20 20 20 20 20 20 20 6e 65 78 74 20 8k-. next
2430: 72 65 74 75 72 6e 73 20 73 08 73 74 08 74 72 08 returns s.st.tr.
2440: 72 75 08 75 63 08 63 74 08 74 20 7b 08 7b 20 20 ru.uc.ct.t {.{
2450: 63 08 63 68 08 68 61 08 61 72 08 72 20 20 61 08 c.ch.ha.ar.r a.
2460: 61 2c 08 2c 62 08 62 2c 08 2c 63 08 63 3b 08 3b a,.,b.b,.,c.c;.;
2470: 20 20 7d 08 7d 20 20 69 6e 20 20 72 65 67 69 73 }.} in regis
2480: 74 65 72 73 20 20 61 6e 64 0a 20 20 20 20 20 20 ters and.
2490: 20 73 08 73 74 08 74 72 08 72 75 08 75 63 08 63 s.st.tr.ru.uc.c
24a0: 74 08 74 20 20 7b 08 7b 20 63 08 63 68 08 68 61 t.t {.{ c.ch.ha
24b0: 08 61 72 08 72 20 61 08 61 5b 08 5b 33 08 33 5d .ar.r a.a[.[3.3]
24c0: 08 5d 3b 08 3b 20 7d 08 7d 20 69 6e 20 6d 65 6d .];.; }.} in mem
24d0: 6f 72 79 2c 20 61 6c 74 68 6f 75 67 68 20 62 6f ory, although bo
24e0: 74 68 20 74 79 70 65 73 20 68 61 76 65 0a 20 20 th types have.
24f0: 20 20 20 20 20 74 68 65 20 73 61 6d 65 20 73 69 the same si
2500: 7a 65 20 61 6e 64 20 74 68 65 20 73 61 6d 65 20 ze and the same
2510: 61 6c 69 67 6e 6d 65 6e 74 2e 0a 0a 20 20 20 20 alignment...
2520: 20 20 20 3c 08 3c 63 08 63 61 08 61 6c 08 6c 6c <.<c.ca.al.ll
2530: 08 6c 62 08 62 61 08 61 63 08 63 6b 08 6b 2e 08 .lb.ba.ac.ck.k..
2540: 2e 68 08 68 3e 08 3e 20 20 63 61 6e 6e 6f 74 20 .h.h>.> cannot
2550: 20 62 65 20 20 69 6e 63 6c 75 64 65 64 20 20 77 be included w
2560: 68 65 6e 20 20 3c 08 3c 76 08 76 61 08 61 72 08 hen <.<v.va.ar.
2570: 72 61 08 61 72 08 72 67 08 67 73 08 73 2e 08 2e ra.ar.rg.gs.s...
2580: 68 08 68 3e 08 3e 20 20 20 6f 72 0a 20 20 20 20 h.h>.> or.
2590: 20 20 20 3c 08 3c 73 08 73 74 08 74 64 08 64 61 <.<s.st.td.da
25a0: 08 61 72 08 72 67 08 67 2e 08 2e 68 08 68 3e 08 .ar.rg.g...h.h>.
25b0: 3e 20 69 73 20 69 6e 63 6c 75 64 65 64 2e 20 20 > is included.
25c0: 28 4e 61 6d 65 20 63 6c 61 73 68 20 66 6f 72 20 (Name clash for
25d0: 76 08 76 61 08 61 5f 08 5f 61 08 61 6c 08 6c 69 v.va.a_._a.al.li
25e0: 08 69 73 08 73 74 08 74 2e 29 0a 0a 20 20 20 20 .is.st.t.)..
25f0: 20 20 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20 The argument
2600: 6c 69 73 74 20 63 61 6e 20 6f 6e 6c 79 20 62 65 list can only be
2610: 20 77 61 6c 6b 65 64 20 6f 6e 63 65 2e 0a 0a 0a walked once....
2620: 4e 08 4e 4f 08 4f 4e 08 4e 2d 08 2d 42 08 42 55 N.NO.ON.N-.-B.BU
2630: 08 55 47 08 47 53 08 53 0a 20 20 20 20 20 20 20 .UG.GS.S.
2640: 41 6c 6c 20 20 69 6e 66 6f 72 6d 61 74 69 6f 6e All information
2650: 20 69 73 20 70 61 73 73 65 64 20 69 6e 20 43 50 is passed in CP
2660: 55 20 72 65 67 69 73 74 65 72 73 20 61 6e 64 20 U registers and
2670: 74 68 65 20 73 74 61 63 6b 2e 0a 20 20 20 20 20 the stack..
2680: 20 20 54 68 65 20 63 08 63 61 08 61 6c 08 6c 6c The c.ca.al.ll
2690: 08 6c 62 08 62 61 08 61 63 08 63 6b 08 6b 20 70 .lb.ba.ac.ck.k p
26a0: 61 63 6b 61 67 65 20 69 73 20 74 68 65 72 65 66 ackage is theref
26b0: 6f 72 65 20 6d 75 6c 74 69 74 68 72 65 61 64 2d ore multithread-
26c0: 73 61 66 65 2e 0a 0a 0a 50 08 50 4f 08 4f 52 08 safe....P.PO.OR.
26d0: 52 54 08 54 49 08 49 4e 08 4e 47 08 47 0a 20 20 RT.TI.IN.NG.G.
26e0: 20 20 20 20 20 50 6f 72 74 69 6e 67 20 63 08 63 Porting c.c
26f0: 61 08 61 6c 08 6c 6c 08 6c 62 08 62 61 08 61 63 a.al.ll.lb.ba.ac
2700: 08 63 6b 08 6b 20 63 6f 6e 73 69 73 74 73 20 69 .ck.k consists i
2710: 6e 20 66 69 72 73 74 20 70 6f 72 74 69 6e 67 20 n first porting
2720: 74 68 65 20 76 08 76 61 08 61 63 08 63 61 08 61 the v.va.ac.ca.a
2730: 6c 08 6c 6c 08 6c 20 20 61 6e 64 0a 20 20 20 20 l.ll.l and.
2740: 20 20 20 74 08 74 72 08 72 61 08 61 6d 08 6d 70 t.tr.ra.am.mp
2750: 08 70 6f 08 6f 6c 08 6c 69 08 69 6e 08 6e 65 08 .po.ol.li.in.ne.
2760: 65 20 20 70 61 63 6b 61 67 65 73 2c 20 20 74 68 e packages, th
2770: 65 6e 20 20 63 68 6f 6f 73 69 6e 67 20 20 61 20 en choosing a
2780: 20 43 50 55 20 72 65 67 69 73 74 65 72 20 66 6f CPU register fo
2790: 72 0a 20 20 20 20 20 20 20 70 61 73 73 69 6e 67 r. passing
27a0: 20 74 68 65 20 20 63 6c 6f 73 75 72 65 20 20 66 the closure f
27b0: 72 6f 6d 20 20 74 08 74 72 08 72 61 08 61 6d 08 rom t.tr.ra.am.
27c0: 6d 70 08 70 6f 08 6f 6c 08 6c 69 08 69 6e 08 6e mp.po.ol.li.in.n
27d0: 65 08 65 20 20 74 6f 20 20 76 08 76 61 08 61 63 e.e to v.va.ac
27e0: 08 63 61 08 61 6c 08 6c 6c 08 6c 2e 20 20 20 54 .ca.al.ll.l. T
27f0: 68 69 73 0a 0a 0a 0a 20 20 20 20 20 20 20 20 20 his....
2800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2810: 31 34 20 4a 61 6e 75 61 72 79 20 32 30 30 31 20 14 January 2001
2820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2830: 20 20 20 20 20 20 20 33 0a 0a 0a 0a 0a 0a 43 41 3......CA
2840: 4c 4c 42 41 43 4b 28 33 29 20 20 20 20 20 20 20 LLBACK(3)
2850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2870: 20 20 20 20 43 41 4c 4c 42 41 43 4b 28 33 29 0a CALLBACK(3).
2880: 0a 0a 20 20 20 20 20 20 20 72 65 67 69 73 74 65 .. registe
2890: 72 20 20 20 69 73 20 20 20 6e 6f 72 6d 61 6c 6c r is normall
28a0: 79 20 20 20 74 68 65 20 20 20 72 65 67 69 73 74 y the regist
28b0: 65 72 20 20 20 64 65 73 69 67 6e 61 74 65 64 20 er designated
28c0: 20 62 79 0a 20 20 20 20 20 20 20 53 54 41 54 49 by. STATI
28d0: 43 5f 43 48 41 49 4e 5f 52 45 47 4e 55 4d 20 69 C_CHAIN_REGNUM i
28e0: 6e 20 74 68 65 20 67 63 63 20 73 6f 75 72 63 65 n the gcc source
28f0: 2c 20 66 69 6c 65 20 67 63 63 2d 32 2e 37 2e 32 , file gcc-2.7.2
2900: 2f 63 6f 6e 2d 0a 20 20 20 20 20 20 20 66 69 67 /con-. fig
2910: 2f 5f 08 63 5f 08 70 5f 08 75 2f 5f 08 63 5f 08 /_.c_.p_.u/_.c_.
2920: 70 5f 08 75 2e 68 2e 0a 0a 0a 41 08 41 55 08 55 p_.u.h....A.AU.U
2930: 54 08 54 48 08 48 4f 08 4f 52 08 52 0a 20 20 20 T.TH.HO.OR.R.
2940: 20 20 20 20 42 72 75 6e 6f 20 48 61 69 62 6c 65 Bruno Haible
2950: 20 3c 62 72 75 6e 6f 40 63 6c 69 73 70 2e 6f 72 <bruno@clisp.or
2960: 67 3e 0a 0a 0a 41 08 41 43 08 43 4b 08 4b 4e 08 g>...A.AC.CK.KN.
2970: 4e 4f 08 4f 57 08 57 4c 08 4c 45 08 45 44 08 44 NO.OW.WL.LE.ED.D
2980: 47 08 47 45 08 45 4d 08 4d 45 08 45 4e 08 4e 54 G.GE.EM.ME.EN.NT
2990: 08 54 53 08 53 0a 20 20 20 20 20 20 20 4d 61 6e .TS.S. Man
29a0: 79 20 69 64 65 61 73 20 77 65 72 65 20 63 72 69 y ideas were cri
29b0: 62 62 65 64 20 66 72 6f 6d 20 74 68 65 20 67 63 bbed from the gc
29c0: 63 20 73 6f 75 72 63 65 2e 0a 0a 0a 0a 0a 0a 0a c source........
29d0: 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a ................
29e0: 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a ................
29f0: 0a 0a 0a 0a 0a 0a 0a 0a 20 20 20 20 20 20 20 20 ........
2a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2a10: 20 31 34 20 4a 61 6e 75 61 72 79 20 32 30 30 31 14 January 2001
2a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2a30: 20 20 20 20 20 20 20 20 34 0a 0a 0a 4...