Artifact 243e7784d7712a381f42a89613eb7b15e0e4a6f2:


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...