Tcl Source Code

Hex Artifact Content
Login

Artifact 003bc59fe6bd9e5d791af5ee7f1ab174ca5d660e:

Attachment "range.patch" to ticket [1052584fff] added by antirez 2004-10-23 08:22:34.
0000: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74  Index: generic/t
0010: 63 6c 2e 64 65 63 6c 73 0a 3d 3d 3d 3d 3d 3d 3d  cl.decls.=======
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53  ============.RCS
0060: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f   file: /cvsroot/
0070: 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f  tcl/tcl/generic/
0080: 74 63 6c 2e 64 65 63 6c 73 2c 76 0a 72 65 74 72  tcl.decls,v.retr
0090: 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20  ieving revision 
00a0: 31 2e 31 30 34 0a 64 69 66 66 20 2d 75 20 2d 72  1.104.diff -u -r
00b0: 31 2e 31 30 34 20 74 63 6c 2e 64 65 63 6c 73 0a  1.104 tcl.decls.
00c0: 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 2e  --- generic/tcl.
00d0: 64 65 63 6c 73 09 31 33 20 4d 61 79 20 32 30 30  decls.13 May 200
00e0: 34 20 31 32 3a 35 39 3a 32 30 20 2d 30 30 30 30  4 12:59:20 -0000
00f0: 09 31 2e 31 30 34 0a 2b 2b 2b 20 67 65 6e 65 72  .1.104.+++ gener
0100: 69 63 2f 74 63 6c 2e 64 65 63 6c 73 09 32 32 20  ic/tcl.decls.22 
0110: 4f 63 74 20 32 30 30 34 20 32 33 3a 35 32 3a 34  Oct 2004 23:52:4
0120: 32 20 2d 30 30 30 30 0a 40 40 20 2d 31 39 30 39  2 -0000.@@ -1909
0130: 2c 36 20 2b 31 39 30 39 2c 31 37 20 40 40 0a 20  ,6 +1909,17 @@. 
0140: 64 65 63 6c 61 72 65 20 35 33 34 20 67 65 6e 65  declare 534 gene
0150: 72 69 63 20 7b 0a 20 20 20 20 20 69 6e 74 20 54  ric {.     int T
0160: 63 6c 5f 4c 69 6d 69 74 47 65 74 47 72 61 6e 75  cl_LimitGetGranu
0170: 6c 61 72 69 74 79 28 54 63 6c 5f 49 6e 74 65 72  larity(Tcl_Inter
0180: 70 20 2a 69 6e 74 65 72 70 2c 20 69 6e 74 20 74  p *interp, int t
0190: 79 70 65 29 0a 20 7d 0a 2b 64 65 63 6c 61 72 65  ype). }.+declare
01a0: 20 35 33 35 20 67 65 6e 65 72 69 63 20 7b 0a 2b   535 generic {.+
01b0: 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 20 54 63      Tcl_Obj * Tc
01c0: 6c 5f 4e 65 77 41 72 69 74 68 53 65 72 69 65 73  l_NewArithSeries
01d0: 4f 62 6a 28 54 63 6c 5f 57 69 64 65 49 6e 74 20  Obj(Tcl_WideInt 
01e0: 73 74 61 72 74 2c 0a 2b 09 20 20 20 20 54 63 6c  start,.+.    Tcl
01f0: 5f 57 69 64 65 49 6e 74 20 65 6e 64 2c 20 54 63  _WideInt end, Tc
0200: 6c 5f 57 69 64 65 49 6e 74 20 73 74 65 70 29 0a  l_WideInt step).
0210: 2b 7d 0a 2b 64 65 63 6c 61 72 65 20 35 33 36 20  +}.+declare 536 
0220: 67 65 6e 65 72 69 63 20 7b 0a 2b 20 20 20 20 69  generic {.+    i
0230: 6e 74 20 54 63 6c 5f 41 72 69 74 68 53 65 72 69  nt Tcl_ArithSeri
0240: 65 73 4f 62 6a 49 6e 64 65 78 28 54 63 6c 5f 4f  esObjIndex(Tcl_O
0250: 62 6a 20 2a 61 72 69 74 68 53 65 72 69 65 73 50  bj *arithSeriesP
0260: 74 72 2c 20 54 63 6c 5f 57 69 64 65 49 6e 74 20  tr, Tcl_WideInt 
0270: 69 6e 64 65 78 2c 0a 2b 20 20 20 20 20 20 20 20  index,.+        
0280: 20 20 20 20 54 63 6c 5f 57 69 64 65 49 6e 74 20      Tcl_WideInt 
0290: 2a 65 6c 65 6d 65 6e 74 29 0a 2b 7d 0a 2b 64 65  *element).+}.+de
02a0: 63 6c 61 72 65 20 35 33 37 20 67 65 6e 65 72 69  clare 537 generi
02b0: 63 20 7b 0a 2b 20 20 20 20 54 63 6c 5f 57 69 64  c {.+    Tcl_Wid
02c0: 65 49 6e 74 20 54 63 6c 5f 41 72 69 74 68 53 65  eInt Tcl_ArithSe
02d0: 72 69 65 73 4f 62 6a 4c 65 6e 67 74 68 28 54 63  riesObjLength(Tc
02e0: 6c 5f 4f 62 6a 20 2a 61 72 69 74 68 53 65 72 69  l_Obj *arithSeri
02f0: 65 73 50 74 72 29 0a 2b 7d 0a 20 0a 20 23 23 23  esPtr).+}. . ###
0300: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0310: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0320: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0330: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0340: 23 23 23 23 23 23 23 23 23 23 23 0a 20 0a 49 6e  ###########. .In
0350: 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c  dex: generic/tcl
0360: 42 61 73 69 63 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d  Basic.c.========
0370: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0380: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0390: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
03a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20  ===========.RCS 
03b0: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74  file: /cvsroot/t
03c0: 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74  cl/tcl/generic/t
03d0: 63 6c 42 61 73 69 63 2e 63 2c 76 0a 72 65 74 72  clBasic.c,v.retr
03e0: 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20  ieving revision 
03f0: 31 2e 31 33 32 0a 64 69 66 66 20 2d 75 20 2d 72  1.132.diff -u -r
0400: 31 2e 31 33 32 20 74 63 6c 42 61 73 69 63 2e 63  1.132 tclBasic.c
0410: 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c  .--- generic/tcl
0420: 42 61 73 69 63 2e 63 09 32 31 20 4f 63 74 20 32  Basic.c.21 Oct 2
0430: 30 30 34 20 31 37 3a 30 37 3a 33 31 20 2d 30 30  004 17:07:31 -00
0440: 30 30 09 31 2e 31 33 32 0a 2b 2b 2b 20 67 65 6e  00.1.132.+++ gen
0450: 65 72 69 63 2f 74 63 6c 42 61 73 69 63 2e 63 09  eric/tclBasic.c.
0460: 32 32 20 4f 63 74 20 32 30 30 34 20 32 33 3a 35  22 Oct 2004 23:5
0470: 32 3a 34 39 20 2d 30 30 30 30 0a 40 40 20 2d 39  2:49 -0000.@@ -9
0480: 34 2c 36 20 2b 39 34 2c 37 20 40 40 0a 20 20 20  4,6 +94,7 @@.   
0490: 20 20 7b 22 6e 61 6d 65 73 70 61 63 65 22 2c 09    {"namespace",.
04a0: 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 4f 62 6a  Tcl_NamespaceObj
04b0: 43 6d 64 2c 09 28 43 6f 6d 70 69 6c 65 50 72 6f  Cmd,.(CompilePro
04c0: 63 20 2a 29 20 4e 55 4c 4c 2c 09 31 7d 2c 0a 20  c *) NULL,.1},. 
04d0: 20 20 20 20 7b 22 70 61 63 6b 61 67 65 22 2c 09      {"package",.
04e0: 09 54 63 6c 5f 50 61 63 6b 61 67 65 4f 62 6a 43  .Tcl_PackageObjC
04f0: 6d 64 2c 09 28 43 6f 6d 70 69 6c 65 50 72 6f 63  md,.(CompileProc
0500: 20 2a 29 20 4e 55 4c 4c 2c 09 31 7d 2c 0a 20 20   *) NULL,.1},.  
0510: 20 20 20 7b 22 70 72 6f 63 22 2c 09 09 54 63 6c     {"proc",..Tcl
0520: 5f 50 72 6f 63 4f 62 6a 43 6d 64 2c 09 09 28 43  _ProcObjCmd,..(C
0530: 6f 6d 70 69 6c 65 50 72 6f 63 20 2a 29 20 4e 55  ompileProc *) NU
0540: 4c 4c 2c 09 31 7d 2c 0a 2b 20 20 20 20 7b 22 72  LL,.1},.+    {"r
0550: 61 6e 67 65 22 2c 09 09 54 63 6c 5f 52 61 6e 67  ange",..Tcl_Rang
0560: 65 4f 62 6a 43 6d 64 2c 09 28 43 6f 6d 70 69 6c  eObjCmd,.(Compil
0570: 65 50 72 6f 63 20 2a 29 20 4e 55 4c 4c 2c 09 31  eProc *) NULL,.1
0580: 7d 2c 0a 20 20 20 20 20 7b 22 72 65 67 65 78 70  },.     {"regexp
0590: 22 2c 09 09 54 63 6c 5f 52 65 67 65 78 70 4f 62  ",..Tcl_RegexpOb
05a0: 6a 43 6d 64 2c 09 54 63 6c 43 6f 6d 70 69 6c 65  jCmd,.TclCompile
05b0: 52 65 67 65 78 70 43 6d 64 2c 09 31 7d 2c 0a 20  RegexpCmd,.1},. 
05c0: 20 20 20 20 7b 22 72 65 67 73 75 62 22 2c 09 09      {"regsub",..
05d0: 54 63 6c 5f 52 65 67 73 75 62 4f 62 6a 43 6d 64  Tcl_RegsubObjCmd
05e0: 2c 09 28 43 6f 6d 70 69 6c 65 50 72 6f 63 20 2a  ,.(CompileProc *
05f0: 29 20 4e 55 4c 4c 2c 09 31 7d 2c 0a 20 20 20 20  ) NULL,.1},.    
0600: 20 7b 22 72 65 6e 61 6d 65 22 2c 09 09 54 63 6c   {"rename",..Tcl
0610: 5f 52 65 6e 61 6d 65 4f 62 6a 43 6d 64 2c 09 28  _RenameObjCmd,.(
0620: 43 6f 6d 70 69 6c 65 50 72 6f 63 20 2a 29 20 4e  CompileProc *) N
0630: 55 4c 4c 2c 09 31 7d 2c 0a 49 6e 64 65 78 3a 20  ULL,.1},.Index: 
0640: 67 65 6e 65 72 69 63 2f 74 63 6c 43 6d 64 41 48  generic/tclCmdAH
0650: 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  .c.=============
0660: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0670: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0680: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0690: 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a  ======.RCS file:
06a0: 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63   /cvsroot/tcl/tc
06b0: 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c 43 6d 64  l/generic/tclCmd
06c0: 41 48 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 6e  AH.c,v.retrievin
06d0: 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 35 36 0a  g revision 1.56.
06e0: 64 69 66 66 20 2d 75 20 2d 72 31 2e 35 36 20 74  diff -u -r1.56 t
06f0: 63 6c 43 6d 64 41 48 2e 63 0a 2d 2d 2d 20 67 65  clCmdAH.c.--- ge
0700: 6e 65 72 69 63 2f 74 63 6c 43 6d 64 41 48 2e 63  neric/tclCmdAH.c
0710: 09 32 31 20 4f 63 74 20 32 30 30 34 20 31 35 3a  .21 Oct 2004 15:
0720: 31 39 3a 34 36 20 2d 30 30 30 30 09 31 2e 35 36  19:46 -0000.1.56
0730: 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c  .+++ generic/tcl
0740: 43 6d 64 41 48 2e 63 09 32 32 20 4f 63 74 20 32  CmdAH.c.22 Oct 2
0750: 30 30 34 20 32 33 3a 35 32 3a 35 32 20 2d 30 30  004 23:52:52 -00
0760: 30 30 0a 40 40 20 2d 31 37 36 37 2c 31 30 20 2b  00.@@ -1767,10 +
0770: 31 37 36 37 2c 31 34 20 40 40 0a 20 09 20 20 20  1767,14 @@. .   
0780: 20 67 6f 74 6f 20 64 6f 6e 65 3b 0a 20 09 7d 0a   goto done;. .}.
0790: 20 0a 2d 09 72 65 73 75 6c 74 20 3d 20 54 63 6c   .-.result = Tcl
07a0: 5f 4c 69 73 74 4f 62 6a 47 65 74 45 6c 65 6d 65  _ListObjGetEleme
07b0: 6e 74 73 28 69 6e 74 65 72 70 2c 20 61 72 67 4f  nts(interp, argO
07c0: 62 6a 76 5b 32 2b 69 2a 32 5d 2c 0a 2d 09 20 20  bjv[2+i*2],.-.  
07d0: 20 20 20 20 20 20 26 61 72 67 63 4c 69 73 74 5b        &argcList[
07e0: 69 5d 2c 20 26 61 72 67 76 4c 69 73 74 5b 69 5d  i], &argvList[i]
07f0: 29 3b 0a 2d 09 69 66 20 28 72 65 73 75 6c 74 20  );.-.if (result 
0800: 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 2d 09 20  != TCL_OK) {.-. 
0810: 20 20 20 67 6f 74 6f 20 64 6f 6e 65 3b 0a 2b 09     goto done;.+.
0820: 69 66 20 28 61 72 67 4f 62 6a 76 5b 32 2b 69 2a  if (argObjv[2+i*
0830: 32 5d 2d 3e 74 79 70 65 50 74 72 20 21 3d 20 26  2]->typePtr != &
0840: 74 63 6c 41 72 69 74 68 53 65 72 69 65 73 54 79  tclArithSeriesTy
0850: 70 65 29 20 7b 0a 2b 09 20 20 20 20 72 65 73 75  pe) {.+.    resu
0860: 6c 74 20 3d 20 54 63 6c 5f 4c 69 73 74 4f 62 6a  lt = Tcl_ListObj
0870: 47 65 74 45 6c 65 6d 65 6e 74 73 28 69 6e 74 65  GetElements(inte
0880: 72 70 2c 20 61 72 67 4f 62 6a 76 5b 32 2b 69 2a  rp, argObjv[2+i*
0890: 32 5d 2c 0a 2b 09 09 09 26 61 72 67 63 4c 69 73  2],.+...&argcLis
08a0: 74 5b 69 5d 2c 20 26 61 72 67 76 4c 69 73 74 5b  t[i], &argvList[
08b0: 69 5d 29 3b 0a 2b 09 20 20 20 20 69 66 20 28 72  i]);.+.    if (r
08c0: 65 73 75 6c 74 20 21 3d 20 54 43 4c 5f 4f 4b 29  esult != TCL_OK)
08d0: 20 7b 0a 2b 09 20 20 20 20 20 20 20 20 67 6f 74   {.+.        got
08e0: 6f 20 64 6f 6e 65 3b 0a 2b 09 20 20 20 20 7d 0a  o done;.+.    }.
08f0: 2b 09 7d 20 65 6c 73 65 20 7b 0a 2b 09 20 20 20  +.} else {.+.   
0900: 20 61 72 67 63 4c 69 73 74 5b 69 5d 20 3d 20 28   argcList[i] = (
0910: 69 6e 74 29 20 54 63 6c 5f 41 72 69 74 68 53 65  int) Tcl_ArithSe
0920: 72 69 65 73 4f 62 6a 4c 65 6e 67 74 68 28 61 72  riesObjLength(ar
0930: 67 4f 62 6a 76 5b 32 2b 69 2a 32 5d 29 3b 0a 20  gObjv[2+i*2]);. 
0940: 09 7d 0a 20 0a 20 09 6a 20 3d 20 61 72 67 63 4c  .}. . .j = argcL
0950: 69 73 74 5b 69 5d 20 2f 20 76 61 72 63 4c 69 73  ist[i] / varcLis
0960: 74 5b 69 5d 3b 0a 40 40 20 2d 31 38 30 34 2c 31  t[i];.@@ -1804,1
0970: 30 20 2b 31 38 30 38 2c 31 34 20 40 40 0a 20 09  0 +1808,14 @@. .
0980: 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 20 21      if (result !
0990: 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 20 09 09 54  = TCL_OK) {. ..T
09a0: 63 6c 5f 50 61 6e 69 63 28 22 54 63 6c 5f 46 6f  cl_Panic("Tcl_Fo
09b0: 72 65 61 63 68 4f 62 6a 43 6d 64 3a 20 63 6f 75  reachObjCmd: cou
09c0: 6c 64 20 6e 6f 74 20 72 65 63 6f 6e 76 65 72 74  ld not reconvert
09d0: 20 76 61 72 69 61 62 6c 65 20 6c 69 73 74 20 25   variable list %
09e0: 64 20 74 6f 20 61 20 6c 69 73 74 20 6f 62 6a 65  d to a list obje
09f0: 63 74 5c 6e 22 2c 20 69 29 3b 0a 20 09 20 20 20  ct\n", i);. .   
0a00: 20 7d 0a 2d 09 20 20 20 20 72 65 73 75 6c 74 20   }.-.    result 
0a10: 3d 20 54 63 6c 5f 4c 69 73 74 4f 62 6a 47 65 74  = Tcl_ListObjGet
0a20: 45 6c 65 6d 65 6e 74 73 28 69 6e 74 65 72 70 2c  Elements(interp,
0a30: 20 61 72 67 4f 62 6a 76 5b 32 2b 69 2a 32 5d 2c   argObjv[2+i*2],
0a40: 0a 2d 09 09 20 20 20 20 26 61 72 67 63 4c 69 73  .-..    &argcLis
0a50: 74 5b 69 5d 2c 20 26 61 72 67 76 4c 69 73 74 5b  t[i], &argvList[
0a60: 69 5d 29 3b 0a 2d 09 20 20 20 20 69 66 20 28 72  i]);.-.    if (r
0a70: 65 73 75 6c 74 20 21 3d 20 54 43 4c 5f 4f 4b 29  esult != TCL_OK)
0a80: 20 7b 0a 2d 09 09 54 63 6c 5f 50 61 6e 69 63 28   {.-..Tcl_Panic(
0a90: 22 54 63 6c 5f 46 6f 72 65 61 63 68 4f 62 6a 43  "Tcl_ForeachObjC
0aa0: 6d 64 3a 20 63 6f 75 6c 64 20 6e 6f 74 20 72 65  md: could not re
0ab0: 63 6f 6e 76 65 72 74 20 76 61 6c 75 65 20 6c 69  convert value li
0ac0: 73 74 20 25 64 20 74 6f 20 61 20 6c 69 73 74 20  st %d to a list 
0ad0: 6f 62 6a 65 63 74 5c 6e 22 2c 20 69 29 3b 0a 2b  object\n", i);.+
0ae0: 09 20 20 20 20 69 66 20 28 61 72 67 4f 62 6a 76  .    if (argObjv
0af0: 5b 32 2b 69 2a 32 5d 2d 3e 74 79 70 65 50 74 72  [2+i*2]->typePtr
0b00: 20 21 3d 20 26 74 63 6c 41 72 69 74 68 53 65 72   != &tclArithSer
0b10: 69 65 73 54 79 70 65 29 20 7b 0a 2b 09 20 20 20  iesType) {.+.   
0b20: 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 54 63       result = Tc
0b30: 6c 5f 4c 69 73 74 4f 62 6a 47 65 74 45 6c 65 6d  l_ListObjGetElem
0b40: 65 6e 74 73 28 69 6e 74 65 72 70 2c 20 61 72 67  ents(interp, arg
0b50: 4f 62 6a 76 5b 32 2b 69 2a 32 5d 2c 0a 2b 09 09  Objv[2+i*2],.+..
0b60: 20 20 20 20 20 20 20 20 26 61 72 67 63 4c 69 73          &argcLis
0b70: 74 5b 69 5d 2c 20 26 61 72 67 76 4c 69 73 74 5b  t[i], &argvList[
0b80: 69 5d 29 3b 0a 2b 09 20 20 20 20 20 20 20 20 69  i]);.+.        i
0b90: 66 20 28 72 65 73 75 6c 74 20 21 3d 20 54 43 4c  f (result != TCL
0ba0: 5f 4f 4b 29 20 7b 0a 2b 09 09 20 20 20 20 54 63  _OK) {.+..    Tc
0bb0: 6c 5f 50 61 6e 69 63 28 22 54 63 6c 5f 46 6f 72  l_Panic("Tcl_For
0bc0: 65 61 63 68 4f 62 6a 43 6d 64 3a 20 63 6f 75 6c  eachObjCmd: coul
0bd0: 64 20 6e 6f 74 20 72 65 63 6f 6e 76 65 72 74 20  d not reconvert 
0be0: 76 61 6c 75 65 20 6c 69 73 74 20 25 64 20 74 6f  value list %d to
0bf0: 20 61 20 6c 69 73 74 20 6f 62 6a 65 63 74 5c 6e   a list object\n
0c00: 22 2c 20 69 29 3b 0a 2b 09 20 20 20 20 20 20 20  ", i);.+.       
0c10: 20 7d 0a 2b 09 20 20 20 20 7d 20 65 6c 73 65 20   }.+.    } else 
0c20: 7b 0a 2b 09 09 61 72 67 63 4c 69 73 74 5b 69 5d  {.+..argcList[i]
0c30: 20 3d 20 28 69 6e 74 29 20 54 63 6c 5f 41 72 69   = (int) Tcl_Ari
0c40: 74 68 53 65 72 69 65 73 4f 62 6a 4c 65 6e 67 74  thSeriesObjLengt
0c50: 68 28 61 72 67 4f 62 6a 76 5b 32 2b 69 2a 32 5d  h(argObjv[2+i*2]
0c60: 29 3b 0a 20 09 20 20 20 20 7d 0a 20 0a 20 09 20  );. .    }. . . 
0c70: 20 20 20 66 6f 72 20 28 76 20 3d 20 30 3b 20 20     for (v = 0;  
0c80: 76 20 3c 20 76 61 72 63 4c 69 73 74 5b 69 5d 3b  v < varcList[i];
0c90: 20 20 76 2b 2b 29 20 7b 0a 40 40 20 2d 31 38 31    v++) {.@@ -181
0ca0: 36 2c 37 20 2b 31 38 32 34 2c 31 34 20 40 40 0a  6,7 +1824,14 @@.
0cb0: 20 09 09 69 6e 74 20 69 73 45 6d 70 74 79 4f 62   ..int isEmptyOb
0cc0: 6a 20 3d 20 30 3b 0a 20 0a 20 09 09 69 66 20 28  j = 0;. . ..if (
0cd0: 6b 20 3c 20 61 72 67 63 4c 69 73 74 5b 69 5d 29  k < argcList[i])
0ce0: 20 7b 0a 2d 09 09 20 20 20 20 76 61 6c 75 65 50   {.-..    valueP
0cf0: 74 72 20 3d 20 61 72 67 76 4c 69 73 74 5b 69 5d  tr = argvList[i]
0d00: 5b 6b 5d 3b 0a 2b 09 09 20 20 20 20 69 66 20 28  [k];.+..    if (
0d10: 61 72 67 4f 62 6a 76 5b 32 2b 69 2a 32 5d 2d 3e  argObjv[2+i*2]->
0d20: 74 79 70 65 50 74 72 20 21 3d 20 26 74 63 6c 41  typePtr != &tclA
0d30: 72 69 74 68 53 65 72 69 65 73 54 79 70 65 29 20  rithSeriesType) 
0d40: 7b 0a 2b 09 09 20 20 20 20 09 76 61 6c 75 65 50  {.+..    .valueP
0d50: 74 72 20 3d 20 61 72 67 76 4c 69 73 74 5b 69 5d  tr = argvList[i]
0d60: 5b 6b 5d 3b 0a 2b 09 09 20 20 20 20 7d 20 65 6c  [k];.+..    } el
0d70: 73 65 20 7b 0a 2b 09 09 09 41 72 69 74 68 53 65  se {.+...ArithSe
0d80: 72 69 65 73 20 2a 61 72 69 74 68 53 65 72 69 65  ries *arithSerie
0d90: 73 52 65 70 50 74 72 20 3d 0a 2b 09 09 09 09 61  sRepPtr =.+....a
0da0: 72 67 4f 62 6a 76 5b 32 2b 69 2a 32 5d 2d 3e 69  rgObjv[2+i*2]->i
0db0: 6e 74 65 72 6e 61 6c 52 65 70 2e 74 77 6f 50 74  nternalRep.twoPt
0dc0: 72 56 61 6c 75 65 2e 70 74 72 31 3b 0a 2b 09 09  rValue.ptr1;.+..
0dd0: 09 76 61 6c 75 65 50 74 72 20 3d 20 54 63 6c 5f  .valuePtr = Tcl_
0de0: 4e 65 77 57 69 64 65 49 6e 74 4f 62 6a 28 61 72  NewWideIntObj(ar
0df0: 69 74 68 53 65 72 69 65 73 52 65 70 50 74 72 2d  ithSeriesRepPtr-
0e00: 3e 73 74 61 72 74 2b 0a 2b 09 09 09 09 09 28 6b  >start+.+.....(k
0e10: 2a 61 72 69 74 68 53 65 72 69 65 73 52 65 70 50  *arithSeriesRepP
0e20: 74 72 2d 3e 73 74 65 70 29 29 3b 0a 2b 09 09 20  tr->step));.+.. 
0e30: 20 20 20 7d 0a 20 09 09 7d 20 65 6c 73 65 20 7b     }. ..} else {
0e40: 0a 20 09 09 20 20 20 20 76 61 6c 75 65 50 74 72  . ..    valuePtr
0e50: 20 3d 20 54 63 6c 5f 4e 65 77 4f 62 6a 28 29 3b   = Tcl_NewObj();
0e60: 20 2f 2a 20 65 6d 70 74 79 20 73 74 72 69 6e 67   /* empty string
0e70: 20 2a 2f 0a 20 09 09 20 20 20 20 69 73 45 6d 70   */. ..    isEmp
0e80: 74 79 4f 62 6a 20 3d 20 31 3b 0a 49 6e 64 65 78  tyObj = 1;.Index
0e90: 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 43 6d 64  : generic/tclCmd
0ea0: 49 4c 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  IL.c.===========
0eb0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0ec0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0ed0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0ee0: 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c  ========.RCS fil
0ef0: 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f  e: /cvsroot/tcl/
0f00: 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c 43  tcl/generic/tclC
0f10: 6d 64 49 4c 2e 63 2c 76 0a 72 65 74 72 69 65 76  mdIL.c,v.retriev
0f20: 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 36  ing revision 1.6
0f30: 36 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 36 36  6.diff -u -r1.66
0f40: 20 74 63 6c 43 6d 64 49 4c 2e 63 0a 2d 2d 2d 20   tclCmdIL.c.--- 
0f50: 67 65 6e 65 72 69 63 2f 74 63 6c 43 6d 64 49 4c  generic/tclCmdIL
0f60: 2e 63 09 31 34 20 4f 63 74 20 32 30 30 34 20 31  .c.14 Oct 2004 1
0f70: 37 3a 32 30 3a 31 31 20 2d 30 30 30 30 09 31 2e  7:20:11 -0000.1.
0f80: 36 36 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74  66.+++ generic/t
0f90: 63 6c 43 6d 64 49 4c 2e 63 09 32 32 20 4f 63 74  clCmdIL.c.22 Oct
0fa0: 20 32 30 30 34 20 32 33 3a 35 32 3a 35 39 20 2d   2004 23:52:59 -
0fb0: 30 30 30 30 0a 40 40 20 2d 32 33 34 34 2c 36 20  0000.@@ -2344,6 
0fc0: 2b 32 33 34 34 2c 33 31 20 40 40 0a 20 0a 20 20  +2344,31 @@. .  
0fd0: 20 20 20 69 66 20 28 61 72 67 50 74 72 2d 3e 74     if (argPtr->t
0fe0: 79 70 65 50 74 72 20 21 3d 20 26 74 63 6c 4c 69  ypePtr != &tclLi
0ff0: 73 74 54 79 70 65 20 0a 20 09 20 20 20 20 26 26  stType . .    &&
1000: 20 54 63 6c 47 65 74 49 6e 74 46 6f 72 49 6e 64   TclGetIntForInd
1010: 65 78 28 4e 55 4c 4c 20 2c 20 61 72 67 50 74 72  ex(NULL , argPtr
1020: 2c 20 30 2c 20 26 69 6e 64 65 78 29 20 3d 3d 20  , 0, &index) == 
1030: 54 43 4c 5f 4f 4b 29 20 7b 0a 2b 0a 2b 09 2f 2a  TCL_OK) {.+.+./*
1040: 20 49 66 20 74 68 65 20 6c 69 73 74 20 69 73 20   If the list is 
1050: 61 6e 20 61 72 69 74 68 6d 65 74 69 63 20 73 65  an arithmetic se
1060: 72 69 65 73 20 72 65 74 75 72 6e 20 74 68 65 0a  ries return the.
1070: 2b 09 20 2a 20 63 6f 6d 70 75 74 65 64 20 65 6c  +. * computed el
1080: 65 6d 65 6e 74 2e 20 2a 2f 0a 2b 20 20 20 20 20  ement. */.+     
1090: 20 20 20 69 66 20 28 6c 69 73 74 50 74 72 2d 3e     if (listPtr->
10a0: 74 79 70 65 50 74 72 20 3d 3d 20 26 74 63 6c 41  typePtr == &tclA
10b0: 72 69 74 68 53 65 72 69 65 73 54 79 70 65 29 20  rithSeriesType) 
10c0: 7b 0a 2b 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20  {.+.    Tcl_Obj 
10d0: 2a 77 69 64 65 50 74 72 3b 0a 2b 09 20 20 20 20  *widePtr;.+.    
10e0: 54 63 6c 5f 57 69 64 65 49 6e 74 20 77 69 64 65  Tcl_WideInt wide
10f0: 56 61 6c 2c 20 61 73 4c 65 6e 3b 0a 2b 0a 2b 09  Val, asLen;.+.+.
1100: 20 20 20 20 2f 2a 20 50 61 72 73 65 20 74 68 65      /* Parse the
1110: 20 69 6e 64 65 78 20 2a 2f 0a 2b 09 20 20 20 20   index */.+.    
1120: 61 73 4c 65 6e 20 3d 20 54 63 6c 5f 41 72 69 74  asLen = Tcl_Arit
1130: 68 53 65 72 69 65 73 4f 62 6a 4c 65 6e 67 74 68  hSeriesObjLength
1140: 28 6c 69 73 74 50 74 72 29 3b 0a 2b 09 20 20 20  (listPtr);.+.   
1150: 20 72 65 73 75 6c 74 20 3d 20 54 63 6c 47 65 74   result = TclGet
1160: 49 6e 74 46 6f 72 49 6e 64 65 78 28 69 6e 74 65  IntForIndex(inte
1170: 72 70 2c 20 61 72 67 50 74 72 2c 0a 2b 09 09 09  rp, argPtr,.+...
1180: 20 20 20 20 2f 2a 65 6e 64 56 61 6c 75 65 2a 2f      /*endValue*/
1190: 20 61 73 4c 65 6e 2d 31 2c 20 26 69 6e 64 65 78   asLen-1, &index
11a0: 29 3b 0a 2b 09 20 20 20 20 69 66 20 28 72 65 73  );.+.    if (res
11b0: 75 6c 74 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 72  ult != TCL_OK) r
11c0: 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a 2b 0a 2b 09  eturn NULL;.+.+.
11d0: 20 20 20 20 2f 2a 20 52 65 74 75 72 6e 20 74 68      /* Return th
11e0: 65 20 63 6f 6d 70 75 74 65 64 20 77 69 64 65 49  e computed wideI
11f0: 6e 74 20 6f 62 6a 65 63 74 20 2a 2f 0a 2b 09 20  nt object */.+. 
1200: 20 20 20 69 66 20 28 54 63 6c 5f 41 72 69 74 68     if (Tcl_Arith
1210: 53 65 72 69 65 73 4f 62 6a 49 6e 64 65 78 28 6c  SeriesObjIndex(l
1220: 69 73 74 50 74 72 2c 20 69 6e 64 65 78 2c 20 26  istPtr, index, &
1230: 77 69 64 65 56 61 6c 29 20 3d 3d 20 54 43 4c 5f  wideVal) == TCL_
1240: 4f 4b 29 0a 2b 09 20 20 20 20 7b 0a 2b 09 20 20  OK).+.    {.+.  
1250: 20 20 20 20 20 20 77 69 64 65 50 74 72 20 3d 20        widePtr = 
1260: 54 63 6c 5f 4e 65 77 57 69 64 65 49 6e 74 4f 62  Tcl_NewWideIntOb
1270: 6a 28 77 69 64 65 56 61 6c 29 3b 0a 2b 20 20 20  j(wideVal);.+   
1280: 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20           } else 
1290: 7b 0a 2b 09 09 2f 2a 20 49 6e 64 65 78 20 6f 75  {.+../* Index ou
12a0: 74 20 6f 66 20 72 61 6e 67 65 20 63 61 73 65 20  t of range case 
12b0: 2a 2f 0a 2b 09 09 77 69 64 65 50 74 72 20 3d 20  */.+..widePtr = 
12c0: 54 63 6c 5f 4e 65 77 4f 62 6a 28 29 3b 0a 2b 09  Tcl_NewObj();.+.
12d0: 20 20 20 20 7d 0a 2b 09 20 20 20 20 54 63 6c 5f      }.+.    Tcl_
12e0: 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 77 69 64  IncrRefCount(wid
12f0: 65 50 74 72 29 3b 0a 2b 09 20 20 20 20 72 65 74  ePtr);.+.    ret
1300: 75 72 6e 20 77 69 64 65 50 74 72 3b 0a 2b 09 7d  urn widePtr;.+.}
1310: 0a 2b 0a 20 09 2f 2a 0a 20 09 20 2a 20 61 72 67  .+. ./*. . * arg
1320: 50 74 72 20 64 65 73 69 67 6e 61 74 65 73 20 61  Ptr designates a
1330: 20 73 69 6e 67 6c 65 20 69 6e 64 65 78 2e 0a 20   single index.. 
1340: 09 20 2a 2f 0a 40 40 20 2d 32 37 32 38 2c 36 20  . */.@@ -2728,6 
1350: 2b 32 37 35 33 2c 31 31 20 40 40 0a 20 09 72 65  +2753,11 @@. .re
1360: 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a  turn TCL_ERROR;.
1370: 20 20 20 20 20 7d 0a 20 0a 2b 20 20 20 20 69 66       }. .+    if
1380: 20 28 6f 62 6a 76 5b 31 5d 2d 3e 74 79 70 65 50   (objv[1]->typeP
1390: 74 72 20 3d 3d 20 26 74 63 6c 41 72 69 74 68 53  tr == &tclArithS
13a0: 65 72 69 65 73 54 79 70 65 29 20 7b 0a 2b 09 20  eriesType) {.+. 
13b0: 20 20 20 54 63 6c 5f 53 65 74 4f 62 6a 52 65 73     Tcl_SetObjRes
13c0: 75 6c 74 28 69 6e 74 65 72 70 2c 0a 2b 09 09 54  ult(interp,.+..T
13d0: 63 6c 5f 4e 65 77 57 69 64 65 49 6e 74 4f 62 6a  cl_NewWideIntObj
13e0: 28 54 63 6c 5f 41 72 69 74 68 53 65 72 69 65 73  (Tcl_ArithSeries
13f0: 4f 62 6a 4c 65 6e 67 74 68 28 6f 62 6a 76 5b 31  ObjLength(objv[1
1400: 5d 29 29 29 3b 0a 2b 09 20 20 20 20 72 65 74 75  ])));.+.    retu
1410: 72 6e 20 54 43 4c 5f 4f 4b 3b 0a 2b 20 20 20 20  rn TCL_OK;.+    
1420: 7d 0a 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20  }.     result = 
1430: 54 63 6c 5f 4c 69 73 74 4f 62 6a 4c 65 6e 67 74  Tcl_ListObjLengt
1440: 68 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 31  h(interp, objv[1
1450: 5d 2c 20 26 6c 69 73 74 4c 65 6e 29 3b 0a 20 20  ], &listLen);.  
1460: 20 20 20 69 66 20 28 72 65 73 75 6c 74 20 21 3d     if (result !=
1470: 20 54 43 4c 5f 4f 4b 29 20 7b 0a 20 09 72 65 74   TCL_OK) {. .ret
1480: 75 72 6e 20 72 65 73 75 6c 74 3b 0a 40 40 20 2d  urn result;.@@ -
1490: 33 36 34 37 2c 36 20 2b 33 36 37 37 2c 37 35 20  3647,6 +3677,75 
14a0: 40 40 0a 20 20 20 20 20 72 65 74 75 72 6e 20 54  @@.     return T
14b0: 43 4c 5f 4f 4b 3b 0a 20 7d 0a 20 0c 0a 2b 0a 2b  CL_OK;. }. ..+.+
14c0: 2f 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  /*.+ *----------
14d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
14e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
14f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1500: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a  ------------.+ *
1510: 0a 2b 20 2a 20 54 63 6c 5f 52 61 6e 67 65 4f 62  .+ * Tcl_RangeOb
1520: 6a 43 6d 64 20 2d 2d 0a 2b 20 2a 0a 2b 20 2a 20  jCmd --.+ *.+ * 
1530: 09 54 68 69 73 20 70 72 6f 63 65 64 75 72 65 20  .This procedure 
1540: 72 65 74 75 72 6e 73 20 61 20 6c 69 73 74 20 77  returns a list w
1550: 68 65 72 65 20 65 76 65 72 79 20 65 6c 65 6d 65  here every eleme
1560: 6e 74 20 69 73 0a 2b 20 2a 20 09 70 61 72 74 20  nt is.+ * .part 
1570: 6f 66 20 61 6e 20 61 72 69 74 68 6d 65 74 69 63  of an arithmetic
1580: 20 73 65 71 75 65 6e 63 65 20 73 74 61 72 74 69   sequence starti
1590: 6e 67 20 77 69 74 68 20 74 68 65 20 6e 75 6d 62  ng with the numb
15a0: 65 72 20 53 54 41 52 54 2c 0a 2b 20 2a 20 09 69  er START,.+ * .i
15b0: 6e 63 72 65 6d 65 6e 74 69 6e 67 20 74 68 65 20  ncrementing the 
15c0: 6e 65 78 74 20 65 6c 65 6d 65 6e 74 73 20 6f 66  next elements of
15d0: 20 53 54 45 50 2c 20 61 6e 64 20 69 6e 63 6c 75   STEP, and inclu
15e0: 64 69 6e 67 0a 2b 20 2a 20 09 61 6c 6c 20 74 68  ding.+ * .all th
15f0: 65 20 65 6c 65 6d 65 6e 74 73 20 3c 20 45 4e 44  e elements < END
1600: 20 28 6f 72 20 3e 20 45 4e 44 20 66 6f 72 20 6e   (or > END for n
1610: 65 67 61 74 69 76 65 20 73 74 65 70 73 29 2e 0a  egative steps)..
1620: 2b 20 2a 20 09 54 68 65 20 63 6f 6d 6d 61 6e 64  + * .The command
1630: 20 72 65 74 75 72 6e 73 20 61 20 73 70 65 63 69   returns a speci
1640: 61 6c 69 7a 65 64 20 6f 62 6a 65 63 74 20 61 62  alized object ab
1650: 6c 65 20 74 6f 20 72 65 70 72 65 73 65 6e 74 0a  le to represent.
1660: 2b 20 2a 20 09 74 68 69 73 20 6c 69 73 74 73 20  + * .this lists 
1670: 69 6e 20 63 6f 6e 73 74 61 6e 74 20 73 70 61 63  in constant spac
1680: 65 20 28 74 68 65 20 41 72 69 74 68 6d 65 74 69  e (the Arithmeti
1690: 63 20 53 65 71 75 65 6e 63 65 20 6f 62 6a 65 63  c Sequence objec
16a0: 74 20 74 79 70 65 29 2e 0a 2b 20 2a 20 09 53 65  t type)..+ * .Se
16b0: 65 20 54 63 6c 5f 4c 69 73 74 4f 62 6a 2e 63 20  e Tcl_ListObj.c 
16c0: 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61  for more informa
16d0: 74 69 6f 6e 20 6f 6e 20 74 68 69 73 20 6f 62 6a  tion on this obj
16e0: 65 63 74 2e 0a 2b 20 2a 0a 2b 20 2a 20 52 65 73  ect..+ *.+ * Res
16f0: 75 6c 74 73 3a 0a 2b 20 2a 09 41 20 73 74 61 6e  ults:.+ *.A stan
1700: 64 61 72 64 20 54 63 6c 20 72 65 73 75 6c 74 2e  dard Tcl result.
1710: 0a 2b 20 2a 0a 2b 20 2a 20 53 69 64 65 20 65 66  .+ *.+ * Side ef
1720: 66 65 63 74 73 3a 0a 2b 20 2a 09 53 65 65 20 74  fects:.+ *.See t
1730: 68 65 20 75 73 65 72 20 64 6f 63 75 6d 65 6e 74  he user document
1740: 61 74 69 6f 6e 2e 0a 2b 20 2a 0a 2b 20 2a 2d 2d  ation..+ *.+ *--
1750: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1760: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1770: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1780: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1790: 2d 2d 2d 2d 0a 2b 20 2a 2f 0a 2b 0a 2b 69 6e 74  ----.+ */.+.+int
17a0: 0a 2b 54 63 6c 5f 52 61 6e 67 65 4f 62 6a 43 6d  .+Tcl_RangeObjCm
17b0: 64 28 20 63 6c 69 65 6e 74 44 61 74 61 2c 20 69  d( clientData, i
17c0: 6e 74 65 72 70 2c 20 6f 62 6a 63 2c 20 6f 62 6a  nterp, objc, obj
17d0: 76 20 29 0a 2b 20 20 20 20 43 6c 69 65 6e 74 44  v ).+    ClientD
17e0: 61 74 61 20 63 6c 69 65 6e 74 44 61 74 61 3b 09  ata clientData;.
17f0: 2f 2a 20 4e 6f 74 20 75 73 65 64 2e 20 2a 2f 0a  /* Not used. */.
1800: 2b 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20  +    Tcl_Interp 
1810: 2a 69 6e 74 65 72 70 3b 09 09 2f 2a 20 43 75 72  *interp;../* Cur
1820: 72 65 6e 74 20 69 6e 74 65 72 70 72 65 74 65 72  rent interpreter
1830: 2e 20 2a 2f 0a 2b 20 20 20 20 69 6e 74 20 6f 62  . */.+    int ob
1840: 6a 63 3b 09 09 09 2f 2a 20 4e 75 6d 62 65 72 20  jc;.../* Number 
1850: 6f 66 20 61 72 67 75 6d 65 6e 74 73 2e 20 2a 2f  of arguments. */
1860: 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 43  .+    Tcl_Obj *C
1870: 4f 4e 53 54 20 6f 62 6a 76 5b 5d 3b 09 2f 2a 20  ONST objv[];./* 
1880: 41 72 67 75 6d 65 6e 74 20 76 61 6c 75 65 73 2e  Argument values.
1890: 20 2a 2f 0a 2b 7b 0a 2b 20 20 20 20 54 63 6c 5f   */.+{.+    Tcl_
18a0: 57 69 64 65 49 6e 74 20 73 74 61 72 74 20 3d 20  WideInt start = 
18b0: 30 2c 20 65 6e 64 2c 20 73 74 65 70 20 3d 20 31  0, end, step = 1
18c0: 3b 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a  ;.+    Tcl_Obj *
18d0: 61 72 69 74 68 53 65 72 69 65 73 50 74 72 3b 0a  arithSeriesPtr;.
18e0: 2b 0a 2b 20 20 20 20 2f 2a 20 43 68 65 63 6b 20  +.+    /* Check 
18f0: 70 61 72 61 6d 65 74 65 72 20 63 6f 75 6e 74 20  parameter count 
1900: 2a 2f 0a 2b 0a 2b 20 20 20 20 69 66 20 28 6f 62  */.+.+    if (ob
1910: 6a 63 20 3c 20 32 20 7c 7c 20 6f 62 6a 63 20 3e  jc < 2 || objc >
1920: 20 34 29 20 7b 0a 2b 09 54 63 6c 5f 57 72 6f 6e   4) {.+.Tcl_Wron
1930: 67 4e 75 6d 41 72 67 73 28 69 6e 74 65 72 70 2c  gNumArgs(interp,
1940: 20 31 2c 20 6f 62 6a 76 2c 20 22 3f 73 74 61 72   1, objv, "?star
1950: 74 3f 20 65 6e 64 20 3f 73 74 65 70 3f 22 29 3b  t? end ?step?");
1960: 0a 2b 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 52  .+.return TCL_ER
1970: 52 4f 52 3b 0a 2b 20 20 20 20 7d 0a 2b 0a 2b 20  ROR;.+    }.+.+ 
1980: 20 20 20 2f 2a 20 47 65 74 20 74 68 65 20 73 74     /* Get the st
1990: 61 72 74 2c 20 65 6e 64 2c 20 73 74 65 70 20 70  art, end, step p
19a0: 61 72 61 6d 65 74 65 72 73 20 66 72 6f 6d 20 61  arameters from a
19b0: 72 67 75 6d 65 6e 74 73 20 2a 2f 0a 2b 20 20 20  rguments */.+   
19c0: 20 69 66 20 28 6f 62 6a 63 20 3d 3d 20 32 29 20   if (objc == 2) 
19d0: 7b 0a 2b 09 20 20 20 20 69 66 20 28 54 63 6c 5f  {.+.    if (Tcl_
19e0: 47 65 74 57 69 64 65 49 6e 74 46 72 6f 6d 4f 62  GetWideIntFromOb
19f0: 6a 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 31  j(interp, objv[1
1a00: 5d 2c 20 26 65 6e 64 29 20 21 3d 20 54 43 4c 5f  ], &end) != TCL_
1a10: 4f 4b 29 0a 2b 09 09 20 20 20 20 72 65 74 75 72  OK).+..    retur
1a20: 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 2b 20 20  n TCL_ERROR;.+  
1a30: 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6f 62 6a    } else if (obj
1a40: 63 20 3e 3d 20 33 29 20 7b 0a 2b 09 20 20 20 20  c >= 3) {.+.    
1a50: 69 66 20 28 54 63 6c 5f 47 65 74 57 69 64 65 49  if (Tcl_GetWideI
1a60: 6e 74 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70  ntFromObj(interp
1a70: 2c 20 6f 62 6a 76 5b 31 5d 2c 20 26 73 74 61 72  , objv[1], &star
1a80: 74 29 20 21 3d 20 54 43 4c 5f 4f 4b 20 7c 7c 0a  t) != TCL_OK ||.
1a90: 2b 09 09 54 63 6c 5f 47 65 74 57 69 64 65 49 6e  +..Tcl_GetWideIn
1aa0: 74 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 2c  tFromObj(interp,
1ab0: 20 6f 62 6a 76 5b 32 5d 2c 20 26 65 6e 64 29 20   objv[2], &end) 
1ac0: 21 3d 20 54 43 4c 5f 4f 4b 29 0a 2b 09 09 20 20  != TCL_OK).+..  
1ad0: 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52    return TCL_ERR
1ae0: 4f 52 3b 0a 2b 09 20 20 20 20 69 66 20 28 6f 62  OR;.+.    if (ob
1af0: 6a 63 20 3d 3d 20 34 20 26 26 0a 2b 09 09 54 63  jc == 4 &&.+..Tc
1b00: 6c 5f 47 65 74 57 69 64 65 49 6e 74 46 72 6f 6d  l_GetWideIntFrom
1b10: 4f 62 6a 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76  Obj(interp, objv
1b20: 5b 33 5d 2c 20 26 73 74 65 70 29 20 21 3d 20 54  [3], &step) != T
1b30: 43 4c 5f 4f 4b 29 0a 2b 09 09 20 20 20 20 72 65  CL_OK).+..    re
1b40: 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a  turn TCL_ERROR;.
1b50: 2b 20 20 20 20 7d 0a 2b 0a 2b 20 20 20 20 2f 2a  +    }.+.+    /*
1b60: 20 43 72 65 61 74 65 20 74 68 65 20 61 72 69 74   Create the arit
1b70: 68 6d 65 74 69 63 20 73 65 72 69 65 73 20 6f 62  hmetic series ob
1b80: 6a 65 63 74 2c 20 63 68 65 63 6b 69 6e 67 20 69  ject, checking i
1b90: 66 20 74 68 65 0a 2b 20 20 20 20 20 2a 20 70 61  f the.+     * pa
1ba0: 72 61 6d 65 74 65 72 73 20 61 72 65 20 69 6e 76  rameters are inv
1bb0: 61 6c 69 64 2e 20 2a 2f 0a 2b 0a 2b 20 20 20 20  alid. */.+.+    
1bc0: 61 72 69 74 68 53 65 72 69 65 73 50 74 72 20 3d  arithSeriesPtr =
1bd0: 20 54 63 6c 5f 4e 65 77 41 72 69 74 68 53 65 72   Tcl_NewArithSer
1be0: 69 65 73 4f 62 6a 28 73 74 61 72 74 2c 20 65 6e  iesObj(start, en
1bf0: 64 2c 20 73 74 65 70 29 3b 0a 2b 20 20 20 20 69  d, step);.+    i
1c00: 66 20 28 61 72 69 74 68 53 65 72 69 65 73 50 74  f (arithSeriesPt
1c10: 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 54  r == NULL) {.+.T
1c20: 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 28  cl_AppendResult(
1c30: 69 6e 74 65 72 70 2c 0a 2b 09 09 22 49 6e 76 61  interp,.+.."Inva
1c40: 6c 69 64 20 28 69 6e 66 69 6e 69 74 65 3f 29 20  lid (infinite?) 
1c50: 61 72 69 74 68 6d 65 74 69 63 20 73 65 71 75 65  arithmetic seque
1c60: 6e 63 65 20 73 70 65 63 69 66 69 65 64 22 2c 20  nce specified", 
1c70: 4e 55 4c 4c 29 3b 0a 2b 09 72 65 74 75 72 6e 20  NULL);.+.return 
1c80: 54 43 4c 5f 45 52 52 4f 52 3b 0a 2b 20 20 20 20  TCL_ERROR;.+    
1c90: 7d 0a 2b 0a 2b 20 20 20 20 2f 2a 20 52 65 74 75  }.+.+    /* Retu
1ca0: 72 6e 20 74 68 65 20 6e 65 77 20 6f 62 6a 65 63  rn the new objec
1cb0: 74 2e 20 2a 2f 0a 2b 0a 2b 20 20 20 20 54 63 6c  t. */.+.+    Tcl
1cc0: 5f 53 65 74 4f 62 6a 52 65 73 75 6c 74 28 69 6e  _SetObjResult(in
1cd0: 74 65 72 70 2c 20 61 72 69 74 68 53 65 72 69 65  terp, arithSerie
1ce0: 73 50 74 72 29 3b 0a 2b 20 20 20 20 72 65 74 75  sPtr);.+    retu
1cf0: 72 6e 20 54 43 4c 5f 4f 4b 3b 0a 2b 7d 0a 2b 0a  rn TCL_OK;.+}.+.
1d00: 20 2f 2a 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d   /*.  *---------
1d10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1d20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1d30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1d40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20  -------------.  
1d50: 2a 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63  *.Index: generic
1d60: 2f 74 63 6c 44 65 63 6c 73 2e 68 0a 3d 3d 3d 3d  /tclDecls.h.====
1d70: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1d80: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1d90: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1da0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a  ===============.
1db0: 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f  RCS file: /cvsro
1dc0: 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72  ot/tcl/tcl/gener
1dd0: 69 63 2f 74 63 6c 44 65 63 6c 73 2e 68 2c 76 0a  ic/tclDecls.h,v.
1de0: 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73  retrieving revis
1df0: 69 6f 6e 20 31 2e 31 30 35 0a 64 69 66 66 20 2d  ion 1.105.diff -
1e00: 75 20 2d 72 31 2e 31 30 35 20 74 63 6c 44 65 63  u -r1.105 tclDec
1e10: 6c 73 2e 68 0a 2d 2d 2d 20 67 65 6e 65 72 69 63  ls.h.--- generic
1e20: 2f 74 63 6c 44 65 63 6c 73 2e 68 09 37 20 4a 75  /tclDecls.h.7 Ju
1e30: 6e 20 32 30 30 34 20 31 36 3a 34 38 3a 34 34 20  n 2004 16:48:44 
1e40: 2d 30 30 30 30 09 31 2e 31 30 35 0a 2b 2b 2b 20  -0000.1.105.+++ 
1e50: 67 65 6e 65 72 69 63 2f 74 63 6c 44 65 63 6c 73  generic/tclDecls
1e60: 2e 68 09 32 32 20 4f 63 74 20 32 30 30 34 20 32  .h.22 Oct 2004 2
1e70: 33 3a 35 33 3a 31 31 20 2d 30 30 30 30 0a 40 40  3:53:11 -0000.@@
1e80: 20 2d 33 33 31 34 2c 36 20 2b 33 33 31 34 2c 32   -3314,6 +3314,2
1e90: 35 20 40 40 0a 20 45 58 54 45 52 4e 20 69 6e 74  5 @@. EXTERN int
1ea0: 09 09 54 63 6c 5f 4c 69 6d 69 74 47 65 74 47 72  ..Tcl_LimitGetGr
1eb0: 61 6e 75 6c 61 72 69 74 79 20 5f 41 4e 53 49 5f  anularity _ANSI_
1ec0: 41 52 47 53 5f 28 28 0a 20 09 09 09 09 54 63 6c  ARGS_((. ....Tcl
1ed0: 5f 49 6e 74 65 72 70 20 2a 20 69 6e 74 65 72 70  _Interp * interp
1ee0: 2c 20 69 6e 74 20 74 79 70 65 29 29 3b 0a 20 23  , int type));. #
1ef0: 65 6e 64 69 66 0a 2b 23 69 66 6e 64 65 66 20 54  endif.+#ifndef T
1f00: 63 6c 5f 4e 65 77 41 72 69 74 68 53 65 72 69 65  cl_NewArithSerie
1f10: 73 4f 62 6a 5f 54 43 4c 5f 44 45 43 4c 41 52 45  sObj_TCL_DECLARE
1f20: 44 0a 2b 23 64 65 66 69 6e 65 20 54 63 6c 5f 4e  D.+#define Tcl_N
1f30: 65 77 41 72 69 74 68 53 65 72 69 65 73 4f 62 6a  ewArithSeriesObj
1f40: 5f 54 43 4c 5f 44 45 43 4c 41 52 45 44 0a 2b 2f  _TCL_DECLARED.+/
1f50: 2a 20 35 33 35 20 2a 2f 0a 2b 45 58 54 45 52 4e  * 535 */.+EXTERN
1f60: 20 54 63 6c 5f 4f 62 6a 20 2a 09 54 63 6c 5f 4e   Tcl_Obj *.Tcl_N
1f70: 65 77 41 72 69 74 68 53 65 72 69 65 73 4f 62 6a  ewArithSeriesObj
1f80: 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 54 63   _ANSI_ARGS_((Tc
1f90: 6c 5f 57 69 64 65 49 6e 74 20 73 74 61 72 74 2c  l_WideInt start,
1fa0: 20 0a 2b 09 09 09 09 54 63 6c 5f 57 69 64 65 49   .+....Tcl_WideI
1fb0: 6e 74 20 65 6e 64 2c 20 54 63 6c 5f 57 69 64 65  nt end, Tcl_Wide
1fc0: 49 6e 74 20 73 74 65 70 29 29 3b 0a 2b 23 65 6e  Int step));.+#en
1fd0: 64 69 66 0a 2b 23 69 66 6e 64 65 66 20 54 63 6c  dif.+#ifndef Tcl
1fe0: 5f 41 72 69 74 68 53 65 72 69 65 73 4f 62 6a 49  _ArithSeriesObjI
1ff0: 6e 64 65 78 5f 54 43 4c 5f 44 45 43 4c 41 52 45  ndex_TCL_DECLARE
2000: 44 0a 2b 23 64 65 66 69 6e 65 20 54 63 6c 5f 41  D.+#define Tcl_A
2010: 72 69 74 68 53 65 72 69 65 73 4f 62 6a 49 6e 64  rithSeriesObjInd
2020: 65 78 5f 54 43 4c 5f 44 45 43 4c 41 52 45 44 0a  ex_TCL_DECLARED.
2030: 2b 2f 2a 20 35 33 36 20 2a 2f 0a 2b 45 58 54 45  +/* 536 */.+EXTE
2040: 52 4e 20 69 6e 74 09 09 54 63 6c 5f 41 72 69 74  RN int..Tcl_Arit
2050: 68 53 65 72 69 65 73 4f 62 6a 49 6e 64 65 78 20  hSeriesObjIndex 
2060: 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 0a 2b 09  _ANSI_ARGS_((.+.
2070: 09 09 09 54 63 6c 5f 4f 62 6a 20 2a 20 61 72 69  ...Tcl_Obj * ari
2080: 74 68 53 65 72 69 65 73 50 74 72 2c 20 54 63 6c  thSeriesPtr, Tcl
2090: 5f 57 69 64 65 49 6e 74 20 69 6e 64 65 78 2c 20  _WideInt index, 
20a0: 0a 2b 09 09 09 09 54 63 6c 5f 57 69 64 65 49 6e  .+....Tcl_WideIn
20b0: 74 20 2a 20 65 6c 65 6d 65 6e 74 29 29 3b 0a 2b  t * element));.+
20c0: 23 65 6e 64 69 66 0a 2b 23 69 66 6e 64 65 66 20  #endif.+#ifndef 
20d0: 54 63 6c 5f 41 72 69 74 68 53 65 72 69 65 73 4f  Tcl_ArithSeriesO
20e0: 62 6a 4c 65 6e 67 74 68 5f 54 43 4c 5f 44 45 43  bjLength_TCL_DEC
20f0: 4c 41 52 45 44 0a 2b 23 64 65 66 69 6e 65 20 54  LARED.+#define T
2100: 63 6c 5f 41 72 69 74 68 53 65 72 69 65 73 4f 62  cl_ArithSeriesOb
2110: 6a 4c 65 6e 67 74 68 5f 54 43 4c 5f 44 45 43 4c  jLength_TCL_DECL
2120: 41 52 45 44 0a 2b 2f 2a 20 35 33 37 20 2a 2f 0a  ARED.+/* 537 */.
2130: 2b 45 58 54 45 52 4e 20 54 63 6c 5f 57 69 64 65  +EXTERN Tcl_Wide
2140: 49 6e 74 09 54 63 6c 5f 41 72 69 74 68 53 65 72  Int.Tcl_ArithSer
2150: 69 65 73 4f 62 6a 4c 65 6e 67 74 68 20 5f 41 4e  iesObjLength _AN
2160: 53 49 5f 41 52 47 53 5f 28 28 0a 2b 09 09 09 09  SI_ARGS_((.+....
2170: 54 63 6c 5f 4f 62 6a 20 2a 20 61 72 69 74 68 53  Tcl_Obj * arithS
2180: 65 72 69 65 73 50 74 72 29 29 3b 0a 2b 23 65 6e  eriesPtr));.+#en
2190: 64 69 66 0a 20 0a 20 74 79 70 65 64 65 66 20 73  dif. . typedef s
21a0: 74 72 75 63 74 20 54 63 6c 53 74 75 62 48 6f 6f  truct TclStubHoo
21b0: 6b 73 20 7b 0a 20 20 20 20 20 73 74 72 75 63 74  ks {.     struct
21c0: 20 54 63 6c 50 6c 61 74 53 74 75 62 73 20 2a 74   TclPlatStubs *t
21d0: 63 6c 50 6c 61 74 53 74 75 62 73 3b 0a 40 40 20  clPlatStubs;.@@ 
21e0: 2d 33 38 39 30 2c 36 20 2b 33 39 30 39 2c 39 20  -3890,6 +3909,9 
21f0: 40 40 0a 20 20 20 20 20 69 6e 74 20 28 2a 74 63  @@.     int (*tc
2200: 6c 5f 4c 69 6d 69 74 47 65 74 43 6f 6d 6d 61 6e  l_LimitGetComman
2210: 64 73 29 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28  ds) _ANSI_ARGS_(
2220: 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 20 69 6e  (Tcl_Interp * in
2230: 74 65 72 70 29 29 3b 20 2f 2a 20 35 33 32 20 2a  terp)); /* 532 *
2240: 2f 0a 20 20 20 20 20 76 6f 69 64 20 28 2a 74 63  /.     void (*tc
2250: 6c 5f 4c 69 6d 69 74 47 65 74 54 69 6d 65 29 20  l_LimitGetTime) 
2260: 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 54 63 6c  _ANSI_ARGS_((Tcl
2270: 5f 49 6e 74 65 72 70 20 2a 20 69 6e 74 65 72 70  _Interp * interp
2280: 2c 20 54 63 6c 5f 54 69 6d 65 20 2a 20 74 69 6d  , Tcl_Time * tim
2290: 65 4c 69 6d 69 74 50 74 72 29 29 3b 20 2f 2a 20  eLimitPtr)); /* 
22a0: 35 33 33 20 2a 2f 0a 20 20 20 20 20 69 6e 74 20  533 */.     int 
22b0: 28 2a 74 63 6c 5f 4c 69 6d 69 74 47 65 74 47 72  (*tcl_LimitGetGr
22c0: 61 6e 75 6c 61 72 69 74 79 29 20 5f 41 4e 53 49  anularity) _ANSI
22d0: 5f 41 52 47 53 5f 28 28 54 63 6c 5f 49 6e 74 65  _ARGS_((Tcl_Inte
22e0: 72 70 20 2a 20 69 6e 74 65 72 70 2c 20 69 6e 74  rp * interp, int
22f0: 20 74 79 70 65 29 29 3b 20 2f 2a 20 35 33 34 20   type)); /* 534 
2300: 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20  */.+    Tcl_Obj 
2310: 2a 20 28 2a 74 63 6c 5f 4e 65 77 41 72 69 74 68  * (*tcl_NewArith
2320: 53 65 72 69 65 73 4f 62 6a 29 20 5f 41 4e 53 49  SeriesObj) _ANSI
2330: 5f 41 52 47 53 5f 28 28 54 63 6c 5f 57 69 64 65  _ARGS_((Tcl_Wide
2340: 49 6e 74 20 73 74 61 72 74 2c 20 54 63 6c 5f 57  Int start, Tcl_W
2350: 69 64 65 49 6e 74 20 65 6e 64 2c 20 54 63 6c 5f  ideInt end, Tcl_
2360: 57 69 64 65 49 6e 74 20 73 74 65 70 29 29 3b 20  WideInt step)); 
2370: 2f 2a 20 35 33 35 20 2a 2f 0a 2b 20 20 20 20 69  /* 535 */.+    i
2380: 6e 74 20 28 2a 74 63 6c 5f 41 72 69 74 68 53 65  nt (*tcl_ArithSe
2390: 72 69 65 73 4f 62 6a 49 6e 64 65 78 29 20 5f 41  riesObjIndex) _A
23a0: 4e 53 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f 4f  NSI_ARGS_((Tcl_O
23b0: 62 6a 20 2a 20 61 72 69 74 68 53 65 72 69 65 73  bj * arithSeries
23c0: 50 74 72 2c 20 54 63 6c 5f 57 69 64 65 49 6e 74  Ptr, Tcl_WideInt
23d0: 20 69 6e 64 65 78 2c 20 54 63 6c 5f 57 69 64 65   index, Tcl_Wide
23e0: 49 6e 74 20 2a 20 65 6c 65 6d 65 6e 74 29 29 3b  Int * element));
23f0: 20 2f 2a 20 35 33 36 20 2a 2f 0a 2b 20 20 20 20   /* 536 */.+    
2400: 54 63 6c 5f 57 69 64 65 49 6e 74 20 28 2a 74 63  Tcl_WideInt (*tc
2410: 6c 5f 41 72 69 74 68 53 65 72 69 65 73 4f 62 6a  l_ArithSeriesObj
2420: 4c 65 6e 67 74 68 29 20 5f 41 4e 53 49 5f 41 52  Length) _ANSI_AR
2430: 47 53 5f 28 28 54 63 6c 5f 4f 62 6a 20 2a 20 61  GS_((Tcl_Obj * a
2440: 72 69 74 68 53 65 72 69 65 73 50 74 72 29 29 3b  rithSeriesPtr));
2450: 20 2f 2a 20 35 33 37 20 2a 2f 0a 20 7d 20 54 63   /* 537 */. } Tc
2460: 6c 53 74 75 62 73 3b 0a 20 0a 20 23 69 66 64 65  lStubs;. . #ifde
2470: 66 20 5f 5f 63 70 6c 75 73 70 6c 75 73 0a 40 40  f __cplusplus.@@
2480: 20 2d 36 30 37 30 2c 36 20 2b 36 30 39 32 2c 31   -6070,6 +6092,1
2490: 38 20 40 40 0a 20 23 64 65 66 69 6e 65 20 54 63  8 @@. #define Tc
24a0: 6c 5f 4c 69 6d 69 74 47 65 74 47 72 61 6e 75 6c  l_LimitGetGranul
24b0: 61 72 69 74 79 20 5c 0a 20 09 28 74 63 6c 53 74  arity \. .(tclSt
24c0: 75 62 73 50 74 72 2d 3e 74 63 6c 5f 4c 69 6d 69  ubsPtr->tcl_Limi
24d0: 74 47 65 74 47 72 61 6e 75 6c 61 72 69 74 79 29  tGetGranularity)
24e0: 20 2f 2a 20 35 33 34 20 2a 2f 0a 20 23 65 6e 64   /* 534 */. #end
24f0: 69 66 0a 2b 23 69 66 6e 64 65 66 20 54 63 6c 5f  if.+#ifndef Tcl_
2500: 4e 65 77 41 72 69 74 68 53 65 72 69 65 73 4f 62  NewArithSeriesOb
2510: 6a 0a 2b 23 64 65 66 69 6e 65 20 54 63 6c 5f 4e  j.+#define Tcl_N
2520: 65 77 41 72 69 74 68 53 65 72 69 65 73 4f 62 6a  ewArithSeriesObj
2530: 20 5c 0a 2b 09 28 74 63 6c 53 74 75 62 73 50 74   \.+.(tclStubsPt
2540: 72 2d 3e 74 63 6c 5f 4e 65 77 41 72 69 74 68 53  r->tcl_NewArithS
2550: 65 72 69 65 73 4f 62 6a 29 20 2f 2a 20 35 33 35  eriesObj) /* 535
2560: 20 2a 2f 0a 2b 23 65 6e 64 69 66 0a 2b 23 69 66   */.+#endif.+#if
2570: 6e 64 65 66 20 54 63 6c 5f 41 72 69 74 68 53 65  ndef Tcl_ArithSe
2580: 72 69 65 73 4f 62 6a 49 6e 64 65 78 0a 2b 23 64  riesObjIndex.+#d
2590: 65 66 69 6e 65 20 54 63 6c 5f 41 72 69 74 68 53  efine Tcl_ArithS
25a0: 65 72 69 65 73 4f 62 6a 49 6e 64 65 78 20 5c 0a  eriesObjIndex \.
25b0: 2b 09 28 74 63 6c 53 74 75 62 73 50 74 72 2d 3e  +.(tclStubsPtr->
25c0: 74 63 6c 5f 41 72 69 74 68 53 65 72 69 65 73 4f  tcl_ArithSeriesO
25d0: 62 6a 49 6e 64 65 78 29 20 2f 2a 20 35 33 36 20  bjIndex) /* 536 
25e0: 2a 2f 0a 2b 23 65 6e 64 69 66 0a 2b 23 69 66 6e  */.+#endif.+#ifn
25f0: 64 65 66 20 54 63 6c 5f 41 72 69 74 68 53 65 72  def Tcl_ArithSer
2600: 69 65 73 4f 62 6a 4c 65 6e 67 74 68 0a 2b 23 64  iesObjLength.+#d
2610: 65 66 69 6e 65 20 54 63 6c 5f 41 72 69 74 68 53  efine Tcl_ArithS
2620: 65 72 69 65 73 4f 62 6a 4c 65 6e 67 74 68 20 5c  eriesObjLength \
2630: 0a 2b 09 28 74 63 6c 53 74 75 62 73 50 74 72 2d  .+.(tclStubsPtr-
2640: 3e 74 63 6c 5f 41 72 69 74 68 53 65 72 69 65 73  >tcl_ArithSeries
2650: 4f 62 6a 4c 65 6e 67 74 68 29 20 2f 2a 20 35 33  ObjLength) /* 53
2660: 37 20 2a 2f 0a 2b 23 65 6e 64 69 66 0a 20 0a 20  7 */.+#endif. . 
2670: 23 65 6e 64 69 66 20 2f 2a 20 64 65 66 69 6e 65  #endif /* define
2680: 64 28 55 53 45 5f 54 43 4c 5f 53 54 55 42 53 29  d(USE_TCL_STUBS)
2690: 20 26 26 20 21 64 65 66 69 6e 65 64 28 55 53 45   && !defined(USE
26a0: 5f 54 43 4c 5f 53 54 55 42 5f 50 52 4f 43 53 29  _TCL_STUB_PROCS)
26b0: 20 2a 2f 0a 20 0a 49 6e 64 65 78 3a 20 67 65 6e   */. .Index: gen
26c0: 65 72 69 63 2f 74 63 6c 45 78 65 63 75 74 65 2e  eric/tclExecute.
26d0: 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  c.==============
26e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
26f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2700: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2710: 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20  =====.RCS file: 
2720: 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c  /cvsroot/tcl/tcl
2730: 2f 67 65 6e 65 72 69 63 2f 74 63 6c 45 78 65 63  /generic/tclExec
2740: 75 74 65 2e 63 2c 76 0a 72 65 74 72 69 65 76 69  ute.c,v.retrievi
2750: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 36  ng revision 1.16
2760: 30 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 31 36  0.diff -u -r1.16
2770: 30 20 74 63 6c 45 78 65 63 75 74 65 2e 63 0a 2d  0 tclExecute.c.-
2780: 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 45 78  -- generic/tclEx
2790: 65 63 75 74 65 2e 63 09 32 32 20 4f 63 74 20 32  ecute.c.22 Oct 2
27a0: 30 30 34 20 31 34 3a 30 31 3a 30 30 20 2d 30 30  004 14:01:00 -00
27b0: 30 30 09 31 2e 31 36 30 0a 2b 2b 2b 20 67 65 6e  00.1.160.+++ gen
27c0: 65 72 69 63 2f 74 63 6c 45 78 65 63 75 74 65 2e  eric/tclExecute.
27d0: 63 09 32 32 20 4f 63 74 20 32 30 30 34 20 32 33  c.22 Oct 2004 23
27e0: 3a 35 33 3a 32 31 20 2d 30 30 30 30 0a 40 40 20  :53:21 -0000.@@ 
27f0: 2d 32 36 31 30 2c 31 33 20 2b 32 36 31 30 2c 31  -2610,13 +2610,1
2800: 38 20 40 40 0a 20 09 20 20 20 20 0a 20 09 20 20  8 @@. .    . .  
2810: 20 20 76 61 6c 75 65 50 74 72 20 3d 20 2a 74 6f    valuePtr = *to
2820: 73 50 74 72 3b 0a 20 0a 2d 09 20 20 20 20 72 65  sPtr;. .-.    re
2830: 73 75 6c 74 20 3d 20 54 63 6c 5f 4c 69 73 74 4f  sult = Tcl_ListO
2840: 62 6a 4c 65 6e 67 74 68 28 69 6e 74 65 72 70 2c  bjLength(interp,
2850: 20 76 61 6c 75 65 50 74 72 2c 20 26 6c 65 6e 67   valuePtr, &leng
2860: 74 68 29 3b 0a 2d 09 20 20 20 20 69 66 20 28 72  th);.-.    if (r
2870: 65 73 75 6c 74 20 21 3d 20 54 43 4c 5f 4f 4b 29  esult != TCL_OK)
2880: 20 7b 0a 2d 09 09 54 52 41 43 45 5f 57 49 54 48   {.-..TRACE_WITH
2890: 5f 4f 42 4a 28 28 22 25 2e 33 30 73 20 3d 3e 20  _OBJ(("%.30s => 
28a0: 45 52 52 4f 52 3a 20 22 2c 20 4f 32 53 28 76 61  ERROR: ", O2S(va
28b0: 6c 75 65 50 74 72 29 29 2c 0a 2d 09 09 09 54 63  luePtr)),.-...Tc
28c0: 6c 5f 47 65 74 4f 62 6a 52 65 73 75 6c 74 28 69  l_GetObjResult(i
28d0: 6e 74 65 72 70 29 29 3b 0a 2d 09 09 67 6f 74 6f  nterp));.-..goto
28e0: 20 63 68 65 63 6b 46 6f 72 43 61 74 63 68 3b 0a   checkForCatch;.
28f0: 2b 09 20 20 20 20 69 66 20 28 76 61 6c 75 65 50  +.    if (valueP
2900: 74 72 2d 3e 74 79 70 65 50 74 72 20 3d 3d 20 26  tr->typePtr == &
2910: 74 63 6c 41 72 69 74 68 53 65 72 69 65 73 54 79  tclArithSeriesTy
2920: 70 65 29 20 7b 0a 2b 09 20 20 20 20 20 20 20 20  pe) {.+.        
2930: 6f 62 6a 52 65 73 75 6c 74 50 74 72 20 3d 20 54  objResultPtr = T
2940: 63 6c 5f 4e 65 77 57 69 64 65 49 6e 74 4f 62 6a  cl_NewWideIntObj
2950: 28 0a 2b 09 09 09 09 54 63 6c 5f 41 72 69 74 68  (.+....Tcl_Arith
2960: 53 65 72 69 65 73 4f 62 6a 4c 65 6e 67 74 68 28  SeriesObjLength(
2970: 76 61 6c 75 65 50 74 72 29 29 3b 0a 2b 09 20 20  valuePtr));.+.  
2980: 20 20 7d 20 65 6c 73 65 20 7b 0a 2b 09 20 20 20    } else {.+.   
2990: 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 54 63       result = Tc
29a0: 6c 5f 4c 69 73 74 4f 62 6a 4c 65 6e 67 74 68 28  l_ListObjLength(
29b0: 69 6e 74 65 72 70 2c 20 76 61 6c 75 65 50 74 72  interp, valuePtr
29c0: 2c 20 26 6c 65 6e 67 74 68 29 3b 0a 2b 09 20 20  , &length);.+.  
29d0: 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74        if (result
29e0: 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 2b 09   != TCL_OK) {.+.
29f0: 09 20 20 20 20 54 52 41 43 45 5f 57 49 54 48 5f  .    TRACE_WITH_
2a00: 4f 42 4a 28 28 22 25 2e 33 30 73 20 3d 3e 20 45  OBJ(("%.30s => E
2a10: 52 52 4f 52 3a 20 22 2c 20 4f 32 53 28 76 61 6c  RROR: ", O2S(val
2a20: 75 65 50 74 72 29 29 2c 0a 2b 09 09 09 20 20 20  uePtr)),.+...   
2a30: 20 54 63 6c 5f 47 65 74 4f 62 6a 52 65 73 75 6c   Tcl_GetObjResul
2a40: 74 28 69 6e 74 65 72 70 29 29 3b 0a 2b 09 09 20  t(interp));.+.. 
2a50: 20 20 20 67 6f 74 6f 20 63 68 65 63 6b 46 6f 72     goto checkFor
2a60: 43 61 74 63 68 3b 0a 2b 09 20 20 20 20 20 20 20  Catch;.+.       
2a70: 20 7d 0a 2b 09 20 20 20 20 20 20 20 20 6f 62 6a   }.+.        obj
2a80: 52 65 73 75 6c 74 50 74 72 20 3d 20 54 63 6c 5f  ResultPtr = Tcl_
2a90: 4e 65 77 49 6e 74 4f 62 6a 28 6c 65 6e 67 74 68  NewIntObj(length
2aa0: 29 3b 0a 20 09 20 20 20 20 7d 0a 2d 09 20 20 20  );. .    }.-.   
2ab0: 20 6f 62 6a 52 65 73 75 6c 74 50 74 72 20 3d 20   objResultPtr = 
2ac0: 54 63 6c 5f 4e 65 77 49 6e 74 4f 62 6a 28 6c 65  Tcl_NewIntObj(le
2ad0: 6e 67 74 68 29 3b 0a 20 09 20 20 20 20 54 52 41  ngth);. .    TRA
2ae0: 43 45 28 28 22 25 2e 32 30 73 20 3d 3e 20 25 64  CE(("%.20s => %d
2af0: 5c 6e 22 2c 20 4f 32 53 28 76 61 6c 75 65 50 74  \n", O2S(valuePt
2b00: 72 29 2c 20 6c 65 6e 67 74 68 29 29 3b 0a 20 09  r), length));. .
2b10: 20 20 20 20 4e 45 58 54 5f 49 4e 53 54 5f 46 28      NEXT_INST_F(
2b20: 31 2c 20 31 2c 20 31 29 3b 0a 20 09 7d 0a 40 40  1, 1, 1);. .}.@@
2b30: 20 2d 34 35 36 32 2c 36 20 2b 34 35 36 37 2c 37   -4562,6 +4567,7
2b40: 20 40 40 0a 20 09 20 20 20 20 69 6e 74 20 6e 75   @@. .    int nu
2b50: 6d 4c 69 73 74 73 3b 0a 20 09 20 20 20 20 54 63  mLists;. .    Tc
2b60: 6c 5f 4f 62 6a 20 2a 6c 69 73 74 50 74 72 2c 2a  l_Obj *listPtr,*
2b70: 76 61 6c 75 65 50 74 72 2c 20 2a 76 61 6c 75 65  valuePtr, *value
2b80: 32 50 74 72 3b 0a 20 09 20 20 20 20 4c 69 73 74  2Ptr;. .    List
2b90: 20 2a 6c 69 73 74 52 65 70 50 74 72 3b 0a 2b 09   *listRepPtr;.+.
2ba0: 20 20 20 20 41 72 69 74 68 53 65 72 69 65 73 20      ArithSeries 
2bb0: 2a 61 72 69 74 68 53 65 72 69 65 73 52 65 70 50  *arithSeriesRepP
2bc0: 74 72 3b 0a 20 09 20 20 20 20 56 61 72 20 2a 69  tr;. .    Var *i
2bd0: 74 65 72 56 61 72 50 74 72 2c 20 2a 6c 69 73 74  terVarPtr, *list
2be0: 56 61 72 50 74 72 3b 0a 20 09 20 20 20 20 69 6e  VarPtr;. .    in
2bf0: 74 20 69 74 65 72 4e 75 6d 2c 20 6c 69 73 74 54  t iterNum, listT
2c00: 6d 70 49 6e 64 65 78 2c 20 6c 69 73 74 4c 65 6e  mpIndex, listLen
2c10: 2c 20 6e 75 6d 56 61 72 73 3b 0a 20 09 20 20 20  , numVars;. .   
2c20: 20 69 6e 74 20 76 61 72 49 6e 64 65 78 2c 20 76   int varIndex, v
2c30: 61 6c 49 6e 64 65 78 2c 20 63 6f 6e 74 69 6e 75  alIndex, continu
2c40: 65 4c 6f 6f 70 2c 20 6a 3b 0a 40 40 20 2d 34 35  eLoop, j;.@@ -45
2c50: 39 36 2c 37 20 2b 34 36 30 32 2c 31 32 20 40 40  96,7 +4602,12 @@
2c60: 0a 20 09 09 20 20 20 20 0a 20 09 09 6c 69 73 74  . ..    . ..list
2c70: 56 61 72 50 74 72 20 3d 20 26 28 63 6f 6d 70 69  VarPtr = &(compi
2c80: 6c 65 64 4c 6f 63 61 6c 73 5b 6c 69 73 74 54 6d  ledLocals[listTm
2c90: 70 49 6e 64 65 78 5d 29 3b 0a 20 09 09 6c 69 73  pIndex]);. ..lis
2ca0: 74 50 74 72 20 3d 20 6c 69 73 74 56 61 72 50 74  tPtr = listVarPt
2cb0: 72 2d 3e 76 61 6c 75 65 2e 6f 62 6a 50 74 72 3b  r->value.objPtr;
2cc0: 0a 2d 09 09 72 65 73 75 6c 74 20 3d 20 54 63 6c  .-..result = Tcl
2cd0: 5f 4c 69 73 74 4f 62 6a 4c 65 6e 67 74 68 28 69  _ListObjLength(i
2ce0: 6e 74 65 72 70 2c 20 6c 69 73 74 50 74 72 2c 20  nterp, listPtr, 
2cf0: 26 6c 69 73 74 4c 65 6e 29 3b 0a 2b 09 09 69 66  &listLen);.+..if
2d00: 20 28 6c 69 73 74 50 74 72 2d 3e 74 79 70 65 50   (listPtr->typeP
2d10: 74 72 20 3d 3d 20 26 74 63 6c 41 72 69 74 68 53  tr == &tclArithS
2d20: 65 72 69 65 73 54 79 70 65 29 20 7b 0a 2b 09 09  eriesType) {.+..
2d30: 09 6c 69 73 74 4c 65 6e 20 3d 20 28 69 6e 74 29  .listLen = (int)
2d40: 20 54 63 6c 5f 41 72 69 74 68 53 65 72 69 65 73   Tcl_ArithSeries
2d50: 4f 62 6a 4c 65 6e 67 74 68 28 6c 69 73 74 50 74  ObjLength(listPt
2d60: 72 29 3b 0a 2b 09 09 09 72 65 73 75 6c 74 20 3d  r);.+...result =
2d70: 20 54 43 4c 5f 4f 4b 3b 20 2f 2a 20 54 63 6c 5f   TCL_OK; /* Tcl_
2d80: 41 72 69 74 68 53 65 72 69 65 73 4c 65 6e 67 74  ArithSeriesLengt
2d90: 68 20 63 61 6e 27 74 20 66 61 69 6c 20 2a 2f 0a  h can't fail */.
2da0: 2b 09 09 7d 20 65 6c 73 65 20 7b 0a 2b 09 09 09  +..} else {.+...
2db0: 72 65 73 75 6c 74 20 3d 20 54 63 6c 5f 4c 69 73  result = Tcl_Lis
2dc0: 74 4f 62 6a 4c 65 6e 67 74 68 28 69 6e 74 65 72  tObjLength(inter
2dd0: 70 2c 20 6c 69 73 74 50 74 72 2c 20 26 6c 69 73  p, listPtr, &lis
2de0: 74 4c 65 6e 29 3b 0a 2b 09 09 7d 0a 20 09 09 69  tLen);.+..}. ..i
2df0: 66 20 28 72 65 73 75 6c 74 20 21 3d 20 54 43 4c  f (result != TCL
2e00: 5f 4f 4b 29 20 7b 0a 20 09 09 20 20 20 20 54 52  _OK) {. ..    TR
2e10: 41 43 45 5f 57 49 54 48 5f 4f 42 4a 28 28 22 25  ACE_WITH_OBJ(("%
2e20: 75 20 3d 3e 20 45 52 52 4f 52 20 63 6f 6e 76 65  u => ERROR conve
2e30: 72 74 69 6e 67 20 6c 69 73 74 20 25 6c 64 2c 20  rting list %ld, 
2e40: 5c 22 25 73 5c 22 3a 20 22 2c 0a 20 09 09 20 20  \"%s\": ",. ..  
2e50: 20 20 20 20 20 20 20 20 20 20 6f 70 6e 64 2c 20            opnd, 
2e60: 69 2c 20 4f 32 53 28 6c 69 73 74 50 74 72 29 29  i, O2S(listPtr))
2e70: 2c 20 54 63 6c 5f 47 65 74 4f 62 6a 52 65 73 75  , Tcl_GetObjResu
2e80: 6c 74 28 69 6e 74 65 72 70 29 29 3b 0a 40 40 20  lt(interp));.@@ 
2e90: 2d 34 36 32 34 2c 32 37 20 2b 34 36 33 35 2c 36  -4624,27 +4635,6
2ea0: 37 20 40 40 0a 20 09 09 20 20 20 20 6c 69 73 74  7 @@. ..    list
2eb0: 56 61 72 50 74 72 20 3d 20 26 28 63 6f 6d 70 69  VarPtr = &(compi
2ec0: 6c 65 64 4c 6f 63 61 6c 73 5b 6c 69 73 74 54 6d  ledLocals[listTm
2ed0: 70 49 6e 64 65 78 5d 29 3b 0a 20 09 09 20 20 20  pIndex]);. ..   
2ee0: 20 6c 69 73 74 50 74 72 20 3d 20 6c 69 73 74 56   listPtr = listV
2ef0: 61 72 50 74 72 2d 3e 76 61 6c 75 65 2e 6f 62 6a  arPtr->value.obj
2f00: 50 74 72 3b 0a 20 09 09 20 20 20 20 6c 69 73 74  Ptr;. ..    list
2f10: 52 65 70 50 74 72 20 3d 20 28 4c 69 73 74 20 2a  RepPtr = (List *
2f20: 29 20 6c 69 73 74 50 74 72 2d 3e 69 6e 74 65 72  ) listPtr->inter
2f30: 6e 61 6c 52 65 70 2e 74 77 6f 50 74 72 56 61 6c  nalRep.twoPtrVal
2f40: 75 65 2e 70 74 72 31 3b 0a 2d 09 09 20 20 20 20  ue.ptr1;.-..    
2f50: 6c 69 73 74 4c 65 6e 20 3d 20 6c 69 73 74 52 65  listLen = listRe
2f60: 70 50 74 72 2d 3e 65 6c 65 6d 43 6f 75 6e 74 3b  pPtr->elemCount;
2f70: 0a 2b 09 09 20 20 20 20 61 72 69 74 68 53 65 72  .+..    arithSer
2f80: 69 65 73 52 65 70 50 74 72 20 3d 20 28 41 72 69  iesRepPtr = (Ari
2f90: 74 68 53 65 72 69 65 73 20 2a 29 20 6c 69 73 74  thSeries *) list
2fa0: 52 65 70 50 74 72 3b 0a 2b 09 09 20 20 20 20 69  RepPtr;.+..    i
2fb0: 66 20 28 6c 69 73 74 50 74 72 2d 3e 74 79 70 65  f (listPtr->type
2fc0: 50 74 72 20 3d 3d 20 26 74 63 6c 4c 69 73 74 54  Ptr == &tclListT
2fd0: 79 70 65 29 20 7b 0a 2b 09 09 20 20 20 20 09 6c  ype) {.+..    .l
2fe0: 69 73 74 4c 65 6e 20 3d 20 6c 69 73 74 52 65 70  istLen = listRep
2ff0: 50 74 72 2d 3e 65 6c 65 6d 43 6f 75 6e 74 3b 0a  Ptr->elemCount;.
3000: 2b 09 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  +..    } else {.
3010: 2b 09 09 09 6c 69 73 74 4c 65 6e 20 3d 20 61 72  +...listLen = ar
3020: 69 74 68 53 65 72 69 65 73 52 65 70 50 74 72 2d  ithSeriesRepPtr-
3030: 3e 6c 65 6e 3b 0a 2b 09 09 20 20 20 20 7d 0a 20  >len;.+..    }. 
3040: 09 09 09 0a 20 09 09 20 20 20 20 76 61 6c 49 6e  .... ..    valIn
3050: 64 65 78 20 3d 20 28 69 74 65 72 4e 75 6d 20 2a  dex = (iterNum *
3060: 20 6e 75 6d 56 61 72 73 29 3b 0a 20 09 09 20 20   numVars);. ..  
3070: 20 20 66 6f 72 20 28 6a 20 3d 20 30 3b 20 20 6a    for (j = 0;  j
3080: 20 3c 20 6e 75 6d 56 61 72 73 3b 20 20 6a 2b 2b   < numVars;  j++
3090: 29 20 7b 0a 2d 09 09 09 69 6e 74 20 73 65 74 45  ) {.-...int setE
30a0: 6d 70 74 79 53 74 72 20 3d 20 30 3b 0a 2b 09 09  mptyStr = 0;.+..
30b0: 09 69 6e 74 20 73 65 74 45 6d 70 74 79 53 74 72  .int setEmptyStr
30c0: 20 3d 20 30 2c 20 69 6e 6c 69 6e 65 56 61 72 41   = 0, inlineVarA
30d0: 63 63 65 73 73 20 3d 20 30 3b 0a 2b 0a 2b 09 09  ccess = 0;.+.+..
30e0: 09 76 61 72 49 6e 64 65 78 20 3d 20 76 61 72 4c  .varIndex = varL
30f0: 69 73 74 50 74 72 2d 3e 76 61 72 49 6e 64 65 78  istPtr->varIndex
3100: 65 73 5b 6a 5d 3b 0a 2b 09 09 09 76 61 72 50 74  es[j];.+...varPt
3110: 72 20 3d 20 26 28 63 6f 6d 70 69 6c 65 64 4c 6f  r = &(compiledLo
3120: 63 61 6c 73 5b 76 61 72 49 6e 64 65 78 5d 29 3b  cals[varIndex]);
3130: 0a 2b 09 09 09 69 66 20 28 21 28 28 76 61 72 50  .+...if (!((varP
3140: 74 72 2d 3e 66 6c 61 67 73 20 26 20 56 41 52 5f  tr->flags & VAR_
3150: 49 4e 5f 48 41 53 48 54 41 42 4c 45 29 20 26 26  IN_HASHTABLE) &&
3160: 0a 2b 09 09 09 09 28 76 61 72 50 74 72 2d 3e 68  .+....(varPtr->h
3170: 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 29 0a 2b 09  Ptr == NULL)).+.
3180: 09 09 09 26 26 20 28 76 61 72 50 74 72 2d 3e 74  ...&& (varPtr->t
3190: 72 61 63 65 50 74 72 20 3d 3d 20 4e 55 4c 4c 29  racePtr == NULL)
31a0: 0a 2b 09 09 09 09 26 26 20 28 54 63 6c 49 73 56  .+....&& (TclIsV
31b0: 61 72 53 63 61 6c 61 72 28 76 61 72 50 74 72 29  arScalar(varPtr)
31c0: 20 7c 7c 0a 2b 09 09 09 09 09 54 63 6c 49 73 56   ||.+.....TclIsV
31d0: 61 72 55 6e 64 65 66 69 6e 65 64 28 76 61 72 50  arUndefined(varP
31e0: 74 72 29 29 29 0a 2b 09 09 09 7b 0a 2b 09 09 09  tr))).+...{.+...
31f0: 20 20 20 20 69 6e 6c 69 6e 65 56 61 72 41 63 63      inlineVarAcc
3200: 65 73 73 20 3d 20 31 3b 0a 2b 09 09 09 7d 0a 2b  ess = 1;.+...}.+
3210: 0a 20 09 09 09 69 66 20 28 76 61 6c 49 6e 64 65  . ...if (valInde
3220: 78 20 3e 3d 20 6c 69 73 74 4c 65 6e 29 20 7b 0a  x >= listLen) {.
3230: 20 09 09 09 20 20 20 20 73 65 74 45 6d 70 74 79   ...    setEmpty
3240: 53 74 72 20 3d 20 31 3b 0a 20 09 09 09 20 20 20  Str = 1;. ...   
3250: 20 54 63 6c 4e 65 77 4f 62 6a 28 76 61 6c 75 65   TclNewObj(value
3260: 50 74 72 29 3b 0a 20 09 09 09 7d 20 65 6c 73 65  Ptr);. ...} else
3270: 20 7b 0a 2d 09 09 09 20 20 20 20 76 61 6c 75 65   {.-...    value
3280: 50 74 72 20 3d 20 6c 69 73 74 52 65 70 50 74 72  Ptr = listRepPtr
3290: 2d 3e 65 6c 65 6d 65 6e 74 73 5b 76 61 6c 49 6e  ->elements[valIn
32a0: 64 65 78 5d 3b 0a 2b 09 09 09 20 20 20 20 69 66  dex];.+...    if
32b0: 28 6c 69 73 74 50 74 72 2d 3e 74 79 70 65 50 74  (listPtr->typePt
32c0: 72 20 3d 3d 20 26 74 63 6c 4c 69 73 74 54 79 70  r == &tclListTyp
32d0: 65 29 20 7b 0a 2b 09 09 09 20 20 20 20 20 20 20  e) {.+...       
32e0: 20 76 61 6c 75 65 50 74 72 20 3d 20 6c 69 73 74   valuePtr = list
32f0: 52 65 70 50 74 72 2d 3e 65 6c 65 6d 65 6e 74 73  RepPtr->elements
3300: 5b 76 61 6c 49 6e 64 65 78 5d 3b 0a 2b 09 09 09  [valIndex];.+...
3310: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 2b 09 09      } else {.+..
3320: 09 09 2f 2a 20 49 66 20 70 6f 73 73 69 62 6c 65  ../* If possible
3330: 20 77 65 20 6b 69 6c 6c 20 74 68 65 20 72 65 66   we kill the ref
3340: 65 72 65 6e 63 65 0a 2b 09 09 09 09 20 2a 20 69  erence.+.... * i
3350: 6e 20 74 68 65 20 76 61 72 20 41 53 41 50 2c 20  n the var ASAP, 
3360: 69 6e 20 6f 72 64 65 72 20 74 6f 20 62 65 20 73  in order to be s
3370: 75 72 65 0a 2b 09 09 09 09 20 2a 20 74 68 61 74  ure.+.... * that
3380: 20 74 68 65 20 61 72 69 74 68 53 65 72 69 65 73   the arithSeries
3390: 20 57 69 64 65 20 6f 62 6a 65 63 74 20 69 73 20   Wide object is 
33a0: 6e 6f 74 0a 2b 09 09 09 09 20 2a 20 73 68 61 72  not.+.... * shar
33b0: 65 64 20 6a 75 73 74 20 62 65 63 61 75 65 73 20  ed just becaues 
33c0: 6f 66 20 69 74 2e 20 2a 2f 0a 2b 09 09 09 09 69  of it. */.+....i
33d0: 66 20 28 69 6e 6c 69 6e 65 56 61 72 41 63 63 65  f (inlineVarAcce
33e0: 73 73 29 20 7b 0a 2b 09 09 09 09 20 20 20 20 69  ss) {.+....    i
33f0: 66 20 28 76 61 72 50 74 72 2d 3e 76 61 6c 75 65  f (varPtr->value
3400: 2e 6f 62 6a 50 74 72 20 3d 3d 0a 2b 09 09 09 09  .objPtr ==.+....
3410: 20 20 20 20 20 20 20 20 61 72 69 74 68 53 65 72          arithSer
3420: 69 65 73 52 65 70 50 74 72 2d 3e 77 69 64 65 4f  iesRepPtr->wideO
3430: 62 6a 50 74 72 29 0a 2b 09 09 09 09 20 20 20 20  bjPtr).+....    
3440: 7b 0a 2b 09 09 09 09 09 54 63 6c 5f 44 65 63 72  {.+.....Tcl_Decr
3450: 52 65 66 43 6f 75 6e 74 28 76 61 72 50 74 72 2d  RefCount(varPtr-
3460: 3e 76 61 6c 75 65 2e 6f 62 6a 50 74 72 29 3b 0a  >value.objPtr);.
3470: 2b 09 09 09 09 09 76 61 72 50 74 72 2d 3e 76 61  +.....varPtr->va
3480: 6c 75 65 2e 6f 62 6a 50 74 72 20 3d 20 4e 55 4c  lue.objPtr = NUL
3490: 4c 3b 0a 2b 09 09 09 09 20 20 20 20 7d 0a 2b 09  L;.+....    }.+.
34a0: 09 09 09 7d 0a 2b 09 09 09 09 2f 2a 20 54 72 79  ...}.+..../* Try
34b0: 20 74 6f 20 72 65 75 73 65 20 74 68 65 20 73 61   to reuse the sa
34c0: 6d 65 20 6f 62 6a 65 63 74 20 66 6f 72 20 65 76  me object for ev
34d0: 65 72 79 0a 2b 09 09 09 09 20 2a 20 69 6e 74 65  ery.+.... * inte
34e0: 72 61 74 69 6f 6e 2e 20 2a 2f 0a 2b 09 09 09 09  ration. */.+....
34f0: 69 66 20 28 54 63 6c 5f 49 73 53 68 61 72 65 64  if (Tcl_IsShared
3500: 28 61 72 69 74 68 53 65 72 69 65 73 52 65 70 50  (arithSeriesRepP
3510: 74 72 2d 3e 77 69 64 65 4f 62 6a 50 74 72 29 29  tr->wideObjPtr))
3520: 0a 2b 09 09 09 09 7b 0a 2b 09 09 09 09 20 20 20  .+....{.+....   
3530: 20 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e   Tcl_DecrRefCoun
3540: 74 28 61 72 69 74 68 53 65 72 69 65 73 52 65 70  t(arithSeriesRep
3550: 50 74 72 2d 3e 77 69 64 65 4f 62 6a 50 74 72 29  Ptr->wideObjPtr)
3560: 3b 0a 2b 09 09 09 09 20 20 20 20 61 72 69 74 68  ;.+....    arith
3570: 53 65 72 69 65 73 52 65 70 50 74 72 2d 3e 77 69  SeriesRepPtr->wi
3580: 64 65 4f 62 6a 50 74 72 20 3d 20 54 63 6c 5f 4e  deObjPtr = Tcl_N
3590: 65 77 57 69 64 65 49 6e 74 4f 62 6a 28 30 29 3b  ewWideIntObj(0);
35a0: 0a 2b 09 09 09 09 20 20 20 20 54 63 6c 5f 49 6e  .+....    Tcl_In
35b0: 63 72 52 65 66 43 6f 75 6e 74 28 61 72 69 74 68  crRefCount(arith
35c0: 53 65 72 69 65 73 52 65 70 50 74 72 2d 3e 77 69  SeriesRepPtr->wi
35d0: 64 65 4f 62 6a 50 74 72 29 3b 0a 2b 09 09 09 09  deObjPtr);.+....
35e0: 7d 0a 2b 09 09 09 09 76 61 6c 75 65 50 74 72 20  }.+....valuePtr 
35f0: 3d 20 61 72 69 74 68 53 65 72 69 65 73 52 65 70  = arithSeriesRep
3600: 50 74 72 2d 3e 77 69 64 65 4f 62 6a 50 74 72 3b  Ptr->wideObjPtr;
3610: 0a 2b 09 09 09 09 76 61 6c 75 65 50 74 72 2d 3e  .+....valuePtr->
3620: 69 6e 74 65 72 6e 61 6c 52 65 70 2e 77 69 64 65  internalRep.wide
3630: 56 61 6c 75 65 20 3d 0a 2b 09 09 09 09 09 61 72  Value =.+.....ar
3640: 69 74 68 53 65 72 69 65 73 52 65 70 50 74 72 2d  ithSeriesRepPtr-
3650: 3e 73 74 61 72 74 2b 0a 2b 09 09 09 09 09 28 76  >start+.+.....(v
3660: 61 6c 49 6e 64 65 78 2a 61 72 69 74 68 53 65 72  alIndex*arithSer
3670: 69 65 73 52 65 70 50 74 72 2d 3e 73 74 65 70 29  iesRepPtr->step)
3680: 3b 0a 2b 09 09 09 20 20 20 20 7d 0a 20 09 09 09  ;.+...    }. ...
3690: 7d 0a 20 09 09 09 20 20 20 20 0a 2d 09 09 09 76  }. ...    .-...v
36a0: 61 72 49 6e 64 65 78 20 3d 20 76 61 72 4c 69 73  arIndex = varLis
36b0: 74 50 74 72 2d 3e 76 61 72 49 6e 64 65 78 65 73  tPtr->varIndexes
36c0: 5b 6a 5d 3b 0a 2d 09 09 09 76 61 72 50 74 72 20  [j];.-...varPtr 
36d0: 3d 20 26 28 63 6f 6d 70 69 6c 65 64 4c 6f 63 61  = &(compiledLoca
36e0: 6c 73 5b 76 61 72 49 6e 64 65 78 5d 29 3b 0a 20  ls[varIndex]);. 
36f0: 09 09 09 70 61 72 74 31 20 3d 20 76 61 72 50 74  ...part1 = varPt
3700: 72 2d 3e 6e 61 6d 65 3b 0a 20 09 09 09 77 68 69  r->name;. ...whi
3710: 6c 65 20 28 54 63 6c 49 73 56 61 72 4c 69 6e 6b  le (TclIsVarLink
3720: 28 76 61 72 50 74 72 29 29 20 7b 0a 20 09 09 09  (varPtr)) {. ...
3730: 20 20 20 20 76 61 72 50 74 72 20 3d 20 76 61 72      varPtr = var
3740: 50 74 72 2d 3e 76 61 6c 75 65 2e 6c 69 6e 6b 50  Ptr->value.linkP
3750: 74 72 3b 0a 20 09 09 09 7d 0a 2d 09 09 09 69 66  tr;. ...}.-...if
3760: 20 28 21 28 28 76 61 72 50 74 72 2d 3e 66 6c 61   (!((varPtr->fla
3770: 67 73 20 26 20 56 41 52 5f 49 4e 5f 48 41 53 48  gs & VAR_IN_HASH
3780: 54 41 42 4c 45 29 20 26 26 20 28 76 61 72 50 74  TABLE) && (varPt
3790: 72 2d 3e 68 50 74 72 20 3d 3d 20 4e 55 4c 4c 29  r->hPtr == NULL)
37a0: 29 0a 2d 09 09 09 20 20 20 20 20 20 20 20 26 26  ).-...        &&
37b0: 20 28 76 61 72 50 74 72 2d 3e 74 72 61 63 65 50   (varPtr->traceP
37c0: 74 72 20 3d 3d 20 4e 55 4c 4c 29 0a 2d 09 09 09  tr == NULL).-...
37d0: 20 20 20 20 20 20 20 20 26 26 20 28 54 63 6c 49          && (TclI
37e0: 73 56 61 72 53 63 61 6c 61 72 28 76 61 72 50 74  sVarScalar(varPt
37f0: 72 29 20 7c 7c 20 54 63 6c 49 73 56 61 72 55 6e  r) || TclIsVarUn
3800: 64 65 66 69 6e 65 64 28 76 61 72 50 74 72 29 29  defined(varPtr))
3810: 29 20 7b 0a 2b 09 09 09 69 66 20 28 69 6e 6c 69  ) {.+...if (inli
3820: 6e 65 56 61 72 41 63 63 65 73 73 29 20 7b 0a 20  neVarAccess) {. 
3830: 09 09 09 20 20 20 20 76 61 6c 75 65 32 50 74 72  ...    value2Ptr
3840: 20 3d 20 76 61 72 50 74 72 2d 3e 76 61 6c 75 65   = varPtr->value
3850: 2e 6f 62 6a 50 74 72 3b 0a 20 09 09 09 20 20 20  .objPtr;. ...   
3860: 20 69 66 20 28 76 61 6c 75 65 50 74 72 20 21 3d   if (valuePtr !=
3870: 20 76 61 6c 75 65 32 50 74 72 29 20 7b 0a 20 09   value2Ptr) {. .
3880: 09 09 09 69 66 20 28 76 61 6c 75 65 32 50 74 72  ...if (value2Ptr
3890: 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 49 6e 64 65   != NULL) {.Inde
38a0: 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 49 6e  x: generic/tclIn
38b0: 74 2e 68 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  t.h.============
38c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
38d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
38e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
38f0: 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65  =======.RCS file
3900: 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74  : /cvsroot/tcl/t
3910: 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c 49 6e  cl/generic/tclIn
3920: 74 2e 68 2c 76 0a 72 65 74 72 69 65 76 69 6e 67  t.h,v.retrieving
3930: 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 38 36 0a   revision 1.186.
3940: 64 69 66 66 20 2d 75 20 2d 72 31 2e 31 38 36 20  diff -u -r1.186 
3950: 74 63 6c 49 6e 74 2e 68 0a 2d 2d 2d 20 67 65 6e  tclInt.h.--- gen
3960: 65 72 69 63 2f 74 63 6c 49 6e 74 2e 68 09 32 31  eric/tclInt.h.21
3970: 20 4f 63 74 20 32 30 30 34 20 31 37 3a 30 37 3a   Oct 2004 17:07:
3980: 33 31 20 2d 30 30 30 30 09 31 2e 31 38 36 0a 2b  31 -0000.1.186.+
3990: 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 49 6e  ++ generic/tclIn
39a0: 74 2e 68 09 32 32 20 4f 63 74 20 32 30 30 34 20  t.h.22 Oct 2004 
39b0: 32 33 3a 35 33 3a 32 37 20 2d 30 30 30 30 0a 40  23:53:27 -0000.@
39c0: 40 20 2d 31 35 33 37 2c 36 20 2b 31 35 33 37 2c  @ -1537,6 +1537,
39d0: 31 39 20 40 40 0a 20 7d 20 4c 69 73 74 3b 0a 20  19 @@. } List;. 
39e0: 0a 20 2f 2a 0a 2b 20 2a 20 54 68 65 20 73 74 72  . /*.+ * The str
39f0: 75 63 74 75 72 65 20 75 73 65 64 20 66 6f 72 20  ucture used for 
3a00: 74 68 65 20 41 69 72 74 68 53 65 72 69 65 73 20  the AirthSeries 
3a10: 69 6e 74 65 72 6e 61 6c 20 72 65 70 72 65 73 65  internal represe
3a20: 6e 74 61 74 69 6f 6e 2e 0a 2b 20 2a 20 4e 6f 74  ntation..+ * Not
3a30: 65 20 74 68 61 74 20 74 68 65 20 6c 65 6e 20 63  e that the len c
3a40: 61 6e 20 69 6e 20 74 68 65 6f 72 79 20 62 65 20  an in theory be 
3a50: 61 6c 77 61 79 73 20 63 6f 6d 70 75 74 65 64 20  always computed 
3a60: 62 79 20 73 74 61 72 74 2c 65 6e 64 2c 73 74 65  by start,end,ste
3a70: 70 0a 2b 20 2a 20 62 75 74 20 69 74 27 73 20 66  p.+ * but it's f
3a80: 61 73 74 65 72 20 74 6f 20 63 61 63 68 65 20 69  aster to cache i
3a90: 74 20 69 6e 73 69 64 65 20 74 68 65 20 69 6e 74  t inside the int
3aa0: 65 72 6e 61 6c 20 72 65 70 72 65 73 65 6e 74 61  ernal representa
3ab0: 74 69 6f 6e 2e 0a 2b 20 2a 2f 0a 2b 74 79 70 65  tion..+ */.+type
3ac0: 64 65 66 20 73 74 72 75 63 74 20 41 72 69 74 68  def struct Arith
3ad0: 53 65 72 69 65 73 20 7b 0a 2b 20 20 20 20 54 63  Series {.+    Tc
3ae0: 6c 5f 57 69 64 65 49 6e 74 20 73 74 61 72 74 3b  l_WideInt start;
3af0: 0a 2b 20 20 20 20 54 63 6c 5f 57 69 64 65 49 6e  .+    Tcl_WideIn
3b00: 74 20 65 6e 64 3b 0a 2b 20 20 20 20 54 63 6c 5f  t end;.+    Tcl_
3b10: 57 69 64 65 49 6e 74 20 73 74 65 70 3b 0a 2b 20  WideInt step;.+ 
3b20: 20 20 20 54 63 6c 5f 57 69 64 65 49 6e 74 20 6c     Tcl_WideInt l
3b30: 65 6e 3b 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a  en;.+    Tcl_Obj
3b40: 20 2a 77 69 64 65 4f 62 6a 50 74 72 3b 20 2f 2a   *wideObjPtr; /*
3b50: 20 55 73 65 64 20 74 6f 20 73 70 65 65 64 75 70   Used to speedup
3b60: 20 5b 66 6f 72 65 61 63 68 5d 20 72 65 75 73 69   [foreach] reusi
3b70: 6e 67 20 74 68 65 20 73 61 6d 65 20 6f 62 6a 2e  ng the same obj.
3b80: 20 2a 2f 0a 2b 7d 20 41 72 69 74 68 53 65 72 69   */.+} ArithSeri
3b90: 65 73 3b 0a 2b 0a 2b 2f 2a 0a 20 20 2a 2d 2d 2d  es;.+.+/*.  *---
3ba0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3bb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3bc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3bd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20  -------------.  
3be0: 2a 20 44 61 74 61 20 73 74 72 75 63 74 75 72 65  * Data structure
3bf0: 73 20 72 65 6c 61 74 65 64 20 74 6f 20 74 68 65  s related to the
3c00: 20 66 69 6c 65 73 79 73 74 65 6d 20 69 6e 74 65   filesystem inte
3c10: 72 6e 61 6c 73 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d  rnals.  *-------
3c20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3c30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3c40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3c50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 40 40 20 2d 31 36  ---------.@@ -16
3c60: 34 32 2c 36 20 2b 31 36 35 35 2c 37 20 40 40 0a  42,6 +1655,7 @@.
3c70: 20 65 78 74 65 72 6e 20 54 63 6c 5f 4f 62 6a 54   extern Tcl_ObjT
3c80: 79 70 65 09 74 63 6c 45 6e 64 4f 66 66 73 65 74  ype.tclEndOffset
3c90: 54 79 70 65 3b 0a 20 65 78 74 65 72 6e 20 54 63  Type;. extern Tc
3ca0: 6c 5f 4f 62 6a 54 79 70 65 09 74 63 6c 49 6e 74  l_ObjType.tclInt
3cb0: 54 79 70 65 3b 0a 20 65 78 74 65 72 6e 20 54 63  Type;. extern Tc
3cc0: 6c 5f 4f 62 6a 54 79 70 65 09 74 63 6c 4c 69 73  l_ObjType.tclLis
3cd0: 74 54 79 70 65 3b 0a 2b 65 78 74 65 72 6e 20 54  tType;.+extern T
3ce0: 63 6c 5f 4f 62 6a 54 79 70 65 09 74 63 6c 41 72  cl_ObjType.tclAr
3cf0: 69 74 68 53 65 72 69 65 73 54 79 70 65 3b 0a 20  ithSeriesType;. 
3d00: 65 78 74 65 72 6e 20 54 63 6c 5f 4f 62 6a 54 79  extern Tcl_ObjTy
3d10: 70 65 09 74 63 6c 44 69 63 74 54 79 70 65 3b 0a  pe.tclDictType;.
3d20: 20 65 78 74 65 72 6e 20 54 63 6c 5f 4f 62 6a 54   extern Tcl_ObjT
3d30: 79 70 65 09 74 63 6c 50 72 6f 63 42 6f 64 79 54  ype.tclProcBodyT
3d40: 79 70 65 3b 0a 20 65 78 74 65 72 6e 20 54 63 6c  ype;. extern Tcl
3d50: 5f 4f 62 6a 54 79 70 65 09 74 63 6c 53 74 72 69  _ObjType.tclStri
3d60: 6e 67 54 79 70 65 3b 0a 40 40 20 2d 32 30 36 32  ngType;.@@ -2062
3d70: 2c 36 20 2b 32 30 37 36 2c 38 20 40 40 0a 20 09  ,6 +2076,8 @@. .
3d80: 09 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20  .    Tcl_Interp 
3d90: 2a 69 6e 74 65 72 70 2c 20 69 6e 74 20 6f 62 6a  *interp, int obj
3da0: 63 2c 20 54 63 6c 5f 4f 62 6a 20 2a 43 4f 4e 53  c, Tcl_Obj *CONS
3db0: 54 20 6f 62 6a 76 5b 5d 29 29 3b 0a 20 45 58 54  T objv[]));. EXT
3dc0: 45 52 4e 20 69 6e 74 09 54 63 6c 5f 50 77 64 4f  ERN int.Tcl_PwdO
3dd0: 62 6a 43 6d 64 20 5f 41 4e 53 49 5f 41 52 47 53  bjCmd _ANSI_ARGS
3de0: 5f 28 28 43 6c 69 65 6e 74 44 61 74 61 20 63 6c  _((ClientData cl
3df0: 69 65 6e 74 44 61 74 61 2c 0a 20 09 09 20 20 20  ientData,. ..   
3e00: 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74   Tcl_Interp *int
3e10: 65 72 70 2c 20 69 6e 74 20 6f 62 6a 63 2c 20 54  erp, int objc, T
3e20: 63 6c 5f 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f 62  cl_Obj *CONST ob
3e30: 6a 76 5b 5d 29 29 3b 0a 2b 45 58 54 45 52 4e 20  jv[]));.+EXTERN 
3e40: 69 6e 74 09 54 63 6c 5f 52 61 6e 67 65 4f 62 6a  int.Tcl_RangeObj
3e50: 43 6d 64 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28  Cmd _ANSI_ARGS_(
3e60: 28 43 6c 69 65 6e 74 44 61 74 61 20 63 6c 69 65  (ClientData clie
3e70: 6e 74 44 61 74 61 2c 0a 2b 09 09 20 20 20 20 54  ntData,.+..    T
3e80: 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72  cl_Interp *inter
3e90: 70 2c 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 6c  p, int objc, Tcl
3ea0: 5f 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76  _Obj *CONST objv
3eb0: 5b 5d 29 29 3b 0a 20 45 58 54 45 52 4e 20 69 6e  []));. EXTERN in
3ec0: 74 09 54 63 6c 5f 52 65 61 64 4f 62 6a 43 6d 64  t.Tcl_ReadObjCmd
3ed0: 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 43 6c   _ANSI_ARGS_((Cl
3ee0: 69 65 6e 74 44 61 74 61 20 63 6c 69 65 6e 74 44  ientData clientD
3ef0: 61 74 61 2c 0a 20 09 09 20 20 20 20 54 63 6c 5f  ata,. ..    Tcl_
3f00: 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 20  Interp *interp, 
3f10: 69 6e 74 20 6f 62 6a 63 2c 20 54 63 6c 5f 4f 62  int objc, Tcl_Ob
3f20: 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d 29  j *CONST objv[])
3f30: 29 3b 0a 20 45 58 54 45 52 4e 20 69 6e 74 09 54  );. EXTERN int.T
3f40: 63 6c 5f 52 65 67 65 78 70 4f 62 6a 43 6d 64 20  cl_RegexpObjCmd 
3f50: 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 43 6c 69  _ANSI_ARGS_((Cli
3f60: 65 6e 74 44 61 74 61 20 63 6c 69 65 6e 74 44 61  entData clientDa
3f70: 74 61 2c 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72  ta,.Index: gener
3f80: 69 63 2f 74 63 6c 4c 69 73 74 4f 62 6a 2e 63 0a  ic/tclListObj.c.
3f90: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3fa0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3fb0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3fc0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3fd0: 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63  ===.RCS file: /c
3fe0: 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67  vsroot/tcl/tcl/g
3ff0: 65 6e 65 72 69 63 2f 74 63 6c 4c 69 73 74 4f 62  eneric/tclListOb
4000: 6a 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 6e 67  j.c,v.retrieving
4010: 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 39 0a 64   revision 1.19.d
4020: 69 66 66 20 2d 75 20 2d 72 31 2e 31 39 20 74 63  iff -u -r1.19 tc
4030: 6c 4c 69 73 74 4f 62 6a 2e 63 0a 2d 2d 2d 20 67  lListObj.c.--- g
4040: 65 6e 65 72 69 63 2f 74 63 6c 4c 69 73 74 4f 62  eneric/tclListOb
4050: 6a 2e 63 09 32 39 20 53 65 70 20 32 30 30 34 20  j.c.29 Sep 2004 
4060: 32 32 3a 31 37 3a 33 30 20 2d 30 30 30 30 09 31  22:17:30 -0000.1
4070: 2e 31 39 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f  .19.+++ generic/
4080: 74 63 6c 4c 69 73 74 4f 62 6a 2e 63 09 32 32 20  tclListObj.c.22 
4090: 4f 63 74 20 32 30 30 34 20 32 33 3a 35 33 3a 33  Oct 2004 23:53:3
40a0: 30 20 2d 30 30 30 30 0a 40 40 20 2d 31 35 36 36  0 -0000.@@ -1566
40b0: 2c 36 20 2b 31 35 36 36 2c 33 33 20 40 40 0a 20  ,6 +1566,33 @@. 
40c0: 20 20 20 20 4c 69 73 74 20 2a 6c 69 73 74 52 65      List *listRe
40d0: 70 50 74 72 3b 0a 20 0a 20 20 20 20 20 2f 2a 0a  pPtr;. .     /*.
40e0: 2b 20 20 20 20 20 2a 20 43 6f 6e 76 65 72 74 69  +     * Converti
40f0: 6f 6e 20 66 72 6f 6d 20 41 72 69 74 68 6d 65 74  on from Arithmet
4100: 69 63 20 53 65 72 69 65 73 20 69 73 20 61 20 73  ic Series is a s
4110: 70 65 63 69 61 6c 20 63 61 73 65 0a 2b 20 20 20  pecial case.+   
4120: 20 20 2a 20 62 65 63 61 75 73 65 20 69 74 20 63    * because it c
4130: 61 6e 20 62 65 20 64 6f 6e 65 20 61 6e 20 6f 72  an be done an or
4140: 64 65 72 20 6f 66 20 6d 61 67 6e 69 74 75 64 65  der of magnitude
4150: 20 66 61 73 74 65 72 0a 2b 20 20 20 20 20 2a 20   faster.+     * 
4160: 61 6e 64 20 6d 61 79 20 6f 63 63 75 72 20 66 72  and may occur fr
4170: 65 71 75 65 6e 74 6c 79 2e 0a 2b 20 20 20 20 20  equently..+     
4180: 2a 2f 0a 2b 20 20 20 20 69 66 20 28 6f 62 6a 50  */.+    if (objP
4190: 74 72 2d 3e 74 79 70 65 50 74 72 20 3d 3d 20 26  tr->typePtr == &
41a0: 74 63 6c 41 72 69 74 68 53 65 72 69 65 73 54 79  tclArithSeriesTy
41b0: 70 65 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 54  pe) {.+        T
41c0: 63 6c 5f 57 69 64 65 49 6e 74 20 77 69 64 65 4c  cl_WideInt wideL
41d0: 65 6e 20 3d 20 54 63 6c 5f 41 72 69 74 68 53 65  en = Tcl_ArithSe
41e0: 72 69 65 73 4f 62 6a 4c 65 6e 67 74 68 28 6f 62  riesObjLength(ob
41f0: 6a 50 74 72 29 2c 20 6a 3b 0a 2b 20 20 20 20 20  jPtr), j;.+     
4200: 20 20 20 41 72 69 74 68 53 65 72 69 65 73 20 2a     ArithSeries *
4210: 61 72 69 74 68 53 65 72 69 65 73 52 65 70 50 74  arithSeriesRepPt
4220: 72 20 3d 20 28 41 72 69 74 68 53 65 72 69 65 73  r = (ArithSeries
4230: 2a 29 0a 2b 09 09 6f 62 6a 50 74 72 2d 3e 69 6e  *).+..objPtr->in
4240: 74 65 72 6e 61 6c 52 65 70 2e 74 77 6f 50 74 72  ternalRep.twoPtr
4250: 56 61 6c 75 65 2e 70 74 72 31 3b 0a 2b 0a 2b 09  Value.ptr1;.+.+.
4260: 65 6c 65 6d 50 74 72 73 20 3d 20 28 54 63 6c 5f  elemPtrs = (Tcl_
4270: 4f 62 6a 2a 2a 29 20 63 6b 61 6c 6c 6f 63 28 73  Obj**) ckalloc(s
4280: 69 7a 65 6f 66 28 54 63 6c 5f 4f 62 6a 2a 29 2a  izeof(Tcl_Obj*)*
4290: 77 69 64 65 4c 65 6e 29 3b 0a 2b 09 66 6f 72 20  wideLen);.+.for 
42a0: 28 6a 20 3d 20 30 3b 20 6a 20 3c 20 77 69 64 65  (j = 0; j < wide
42b0: 4c 65 6e 3b 20 6a 2b 2b 29 20 7b 0a 2b 09 09 65  Len; j++) {.+..e
42c0: 6c 65 6d 50 74 72 73 5b 6a 5d 20 3d 20 54 63 6c  lemPtrs[j] = Tcl
42d0: 5f 4e 65 77 57 69 64 65 49 6e 74 4f 62 6a 28 0a  _NewWideIntObj(.
42e0: 2b 09 09 09 61 72 69 74 68 53 65 72 69 65 73 52  +...arithSeriesR
42f0: 65 70 50 74 72 2d 3e 73 74 61 72 74 2b 28 6a 2a  epPtr->start+(j*
4300: 61 72 69 74 68 53 65 72 69 65 73 52 65 70 50 74  arithSeriesRepPt
4310: 72 2d 3e 73 74 65 70 29 29 3b 0a 2b 09 7d 0a 2b  r->step));.+.}.+
4320: 20 20 20 20 20 20 20 20 6c 69 73 74 52 65 70 50          listRepP
4330: 74 72 20 3d 20 28 4c 69 73 74 20 2a 29 20 63 6b  tr = (List *) ck
4340: 61 6c 6c 6f 63 28 73 69 7a 65 6f 66 28 4c 69 73  alloc(sizeof(Lis
4350: 74 29 29 3b 0a 2b 20 20 20 20 20 20 20 20 6c 69  t));.+        li
4360: 73 74 52 65 70 50 74 72 2d 3e 6d 61 78 45 6c 65  stRepPtr->maxEle
4370: 6d 43 6f 75 6e 74 20 3d 20 77 69 64 65 4c 65 6e  mCount = wideLen
4380: 3b 0a 2b 20 20 20 20 20 20 20 20 6c 69 73 74 52  ;.+        listR
4390: 65 70 50 74 72 2d 3e 65 6c 65 6d 43 6f 75 6e 74  epPtr->elemCount
43a0: 20 20 20 20 3d 20 77 69 64 65 4c 65 6e 3b 0a 2b      = wideLen;.+
43b0: 20 20 20 20 20 20 20 20 6c 69 73 74 52 65 70 50          listRepP
43c0: 74 72 2d 3e 65 6c 65 6d 65 6e 74 73 20 20 20 20  tr->elements    
43d0: 20 3d 20 65 6c 65 6d 50 74 72 73 3b 0a 2b 0a 2b   = elemPtrs;.+.+
43e0: 20 20 20 20 20 20 20 20 54 63 6c 46 72 65 65 49          TclFreeI
43f0: 6e 74 52 65 70 28 6f 62 6a 50 74 72 29 3b 0a 2b  ntRep(objPtr);.+
4400: 20 20 20 20 20 20 20 20 6f 62 6a 50 74 72 2d 3e          objPtr->
4410: 69 6e 74 65 72 6e 61 6c 52 65 70 2e 74 77 6f 50  internalRep.twoP
4420: 74 72 56 61 6c 75 65 2e 70 74 72 31 20 3d 20 28  trValue.ptr1 = (
4430: 56 4f 49 44 20 2a 29 20 6c 69 73 74 52 65 70 50  VOID *) listRepP
4440: 74 72 3b 0a 2b 20 20 20 20 20 20 20 20 6f 62 6a  tr;.+        obj
4450: 50 74 72 2d 3e 69 6e 74 65 72 6e 61 6c 52 65 70  Ptr->internalRep
4460: 2e 74 77 6f 50 74 72 56 61 6c 75 65 2e 70 74 72  .twoPtrValue.ptr
4470: 32 20 3d 20 4e 55 4c 4c 3b 0a 2b 20 20 20 20 20  2 = NULL;.+     
4480: 20 20 20 6f 62 6a 50 74 72 2d 3e 74 79 70 65 50     objPtr->typeP
4490: 74 72 20 3d 20 26 74 63 6c 4c 69 73 74 54 79 70  tr = &tclListTyp
44a0: 65 3b 0a 2b 09 72 65 74 75 72 6e 20 54 43 4c 5f  e;.+.return TCL_
44b0: 4f 4b 3b 0a 2b 20 20 20 20 7d 0a 2b 0a 2b 20 20  OK;.+    }.+.+  
44c0: 20 20 2f 2a 0a 20 20 20 20 20 20 2a 20 47 65 74    /*.      * Get
44d0: 20 74 68 65 20 73 74 72 69 6e 67 20 72 65 70 72   the string repr
44e0: 65 73 65 6e 74 61 74 69 6f 6e 2e 20 4d 61 6b 65  esentation. Make
44f0: 20 69 74 20 75 70 2d 74 6f 2d 64 61 74 65 20 69   it up-to-date i
4500: 66 20 6e 65 63 65 73 73 61 72 79 2e 0a 20 20 20  f necessary..   
4510: 20 20 20 2a 2f 0a 20 0a 40 40 20 2d 31 37 33 33     */. .@@ -1733
4520: 2c 33 20 2b 31 37 36 30 2c 33 36 34 20 40 40 0a  ,3 +1760,364 @@.
4530: 20 20 20 20 20 7d 0a 20 20 20 20 20 6c 69 73 74       }.     list
4540: 50 74 72 2d 3e 6c 65 6e 67 74 68 20 3d 20 64 73  Ptr->length = ds
4550: 74 20 2d 20 6c 69 73 74 50 74 72 2d 3e 62 79 74  t - listPtr->byt
4560: 65 73 3b 0a 20 7d 0a 2b 0a 2b 2f 2a 20 2d 2d 2d  es;. }.+.+/* ---
4570: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4580: 2d 2d 2d 2d 2d 2d 2d 20 41 72 69 74 68 53 65 72  ------- ArithSer
4590: 69 65 73 20 6f 62 6a 65 63 74 20 2d 2d 2d 2d 2d  ies object -----
45a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
45b0: 2d 2d 2d 2d 2d 2d 2d 20 2a 2f 0a 2b 0a 2b 2f 2a  ------- */.+.+/*
45c0: 0a 2b 20 2a 20 50 72 6f 74 6f 74 79 70 65 73 20  .+ * Prototypes 
45d0: 66 6f 72 20 70 72 6f 63 65 64 75 72 65 73 20 64  for procedures d
45e0: 65 66 69 6e 65 64 20 6c 61 74 65 72 20 69 6e 20  efined later in 
45f0: 74 68 69 73 20 66 69 6c 65 3a 0a 2b 20 2a 2f 0a  this file:.+ */.
4600: 2b 0a 2b 73 74 61 74 69 63 20 76 6f 69 64 09 09  +.+static void..
4610: 44 75 70 41 72 69 74 68 53 65 72 69 65 73 49 6e  DupArithSeriesIn
4620: 74 65 72 6e 61 6c 52 65 70 20 5f 41 4e 53 49 5f  ternalRep _ANSI_
4630: 41 52 47 53 5f 28 28 54 63 6c 5f 4f 62 6a 20 2a  ARGS_((Tcl_Obj *
4640: 73 72 63 50 74 72 2c 0a 2b 09 09 09 20 20 20 20  srcPtr,.+...    
4650: 54 63 6c 5f 4f 62 6a 20 2a 63 6f 70 79 50 74 72  Tcl_Obj *copyPtr
4660: 29 29 3b 0a 2b 73 74 61 74 69 63 20 76 6f 69 64  ));.+static void
4670: 09 09 46 72 65 65 41 72 69 74 68 53 65 72 69 65  ..FreeArithSerie
4680: 73 49 6e 74 65 72 6e 61 6c 52 65 70 20 5f 41 4e  sInternalRep _AN
4690: 53 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f 4f 62  SI_ARGS_((Tcl_Ob
46a0: 6a 20 2a 6c 69 73 74 50 74 72 29 29 3b 0a 2b 73  j *listPtr));.+s
46b0: 74 61 74 69 63 20 69 6e 74 09 09 53 65 74 41 72  tatic int..SetAr
46c0: 69 74 68 53 65 72 69 65 73 46 72 6f 6d 41 6e 79  ithSeriesFromAny
46d0: 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 54 63   _ANSI_ARGS_((Tc
46e0: 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70  l_Interp *interp
46f0: 2c 0a 2b 09 09 09 20 20 20 20 54 63 6c 5f 4f 62  ,.+...    Tcl_Ob
4700: 6a 20 2a 6f 62 6a 50 74 72 29 29 3b 0a 2b 73 74  j *objPtr));.+st
4710: 61 74 69 63 20 76 6f 69 64 09 09 55 70 64 61 74  atic void..Updat
4720: 65 53 74 72 69 6e 67 4f 66 41 72 69 74 68 53 65  eStringOfArithSe
4730: 72 69 65 73 20 5f 41 4e 53 49 5f 41 52 47 53 5f  ries _ANSI_ARGS_
4740: 28 28 54 63 6c 5f 4f 62 6a 20 2a 6c 69 73 74 50  ((Tcl_Obj *listP
4750: 74 72 29 29 3b 0a 2b 0a 2b 2f 2a 0a 2b 20 2a 20  tr));.+.+/*.+ * 
4760: 54 68 65 20 73 74 72 75 63 74 75 72 65 20 62 65  The structure be
4770: 6c 6f 77 20 64 65 66 69 6e 65 73 20 74 68 65 20  low defines the 
4780: 61 72 69 74 68 6d 65 74 69 63 20 73 65 72 69 65  arithmetic serie
4790: 73 20 54 63 6c 20 6f 62 6a 65 63 74 20 74 79 70  s Tcl object typ
47a0: 65 20 62 79 0a 2b 20 2a 20 6d 65 61 6e 73 20 6f  e by.+ * means o
47b0: 66 20 70 72 6f 63 65 64 75 72 65 73 20 74 68 61  f procedures tha
47c0: 74 20 63 61 6e 20 62 65 20 69 6e 76 6f 6b 65 64  t can be invoked
47d0: 20 62 79 20 67 65 6e 65 72 69 63 20 6f 62 6a 65   by generic obje
47e0: 63 74 20 63 6f 64 65 2e 0a 2b 20 2a 0a 2b 20 2a  ct code..+ *.+ *
47f0: 20 54 68 65 20 61 72 69 74 68 6d 65 74 69 63 20   The arithmetic 
4800: 73 65 72 69 65 73 20 6f 62 6a 65 63 74 20 69 73  series object is
4810: 20 61 20 73 70 65 63 69 61 6c 20 63 61 73 65 20   a special case 
4820: 6f 66 20 54 63 6c 20 6c 69 73 74 20 72 65 70 72  of Tcl list repr
4830: 65 73 65 6e 74 69 6e 67 0a 2b 20 2a 20 61 6e 20  esenting.+ * an 
4840: 69 6e 74 65 72 76 61 6c 20 6f 66 20 61 6e 20 61  interval of an a
4850: 72 69 74 68 6d 65 74 69 63 20 73 65 72 69 65 73  rithmetic series
4860: 20 69 6e 20 63 6f 6e 73 74 61 6e 74 20 73 70 61   in constant spa
4870: 63 65 2e 0a 2b 20 2a 20 0a 2b 20 2a 20 54 68 65  ce..+ * .+ * The
4880: 20 61 72 69 74 68 6d 65 74 69 63 20 73 65 72 69   arithmetic seri
4890: 65 73 20 69 73 20 69 6e 74 65 72 6e 61 6c 6c 79  es is internally
48a0: 20 72 65 70 72 65 73 65 6e 74 65 64 20 77 69 74   represented wit
48b0: 68 20 74 68 72 65 65 20 69 6e 74 65 67 65 72 73  h three integers
48c0: 2c 0a 2b 20 2a 20 2a 73 74 61 72 74 2a 2c 20 2a  ,.+ * *start*, *
48d0: 65 6e 64 2a 2c 20 61 6e 64 20 2a 73 74 65 70 2a  end*, and *step*
48e0: 2c 20 57 68 65 72 65 20 74 68 65 20 6c 65 6e 67  , Where the leng
48f0: 74 68 20 69 73 20 63 61 6c 63 75 6c 61 74 65 64  th is calculated
4900: 20 77 69 74 68 0a 2b 20 2a 20 74 68 65 20 66 6f   with.+ * the fo
4910: 6c 6c 6f 77 69 6e 67 20 61 6c 67 6f 72 69 74 68  llowing algorith
4920: 6d 3a 0a 2b 20 2a 0a 2b 20 2a 20 69 66 20 52 41  m:.+ *.+ * if RA
4930: 4e 47 45 20 3d 3d 20 30 20 54 48 45 4e 0a 2b 20  NGE == 0 THEN.+ 
4940: 2a 20 20 20 45 52 52 4f 52 0a 2b 20 2a 20 69 66  *   ERROR.+ * if
4950: 20 52 41 4e 47 45 20 3e 20 30 0a 2b 20 2a 20 20   RANGE > 0.+ *  
4960: 20 4c 45 4e 20 69 73 20 28 28 28 45 4e 44 2d 53   LEN is (((END-S
4970: 54 41 52 54 29 2d 31 29 2f 53 54 45 50 29 20 2b  TART)-1)/STEP) +
4980: 20 31 0a 2b 20 2a 20 65 6c 73 65 20 69 66 20 52   1.+ * else if R
4990: 41 4e 47 45 20 3c 20 30 0a 2b 20 2a 20 20 20 4c  ANGE < 0.+ *   L
49a0: 45 4e 20 69 73 20 28 28 28 45 4e 44 2d 53 54 41  EN is (((END-STA
49b0: 52 54 29 2d 31 29 2f 53 54 45 50 29 20 2d 20 31  RT)-1)/STEP) - 1
49c0: 0a 2b 20 2a 0a 2b 20 2a 20 41 6e 64 20 77 68 65  .+ *.+ * And whe
49d0: 72 65 20 74 68 65 20 65 71 75 69 76 61 6c 65 6e  re the equivalen
49e0: 74 27 73 20 6c 69 73 74 20 49 2d 74 68 20 65 6c  t's list I-th el
49f0: 65 6d 65 6e 74 20 69 73 20 63 61 6c 63 75 6c 61  ement is calcula
4a00: 74 65 64 0a 2b 20 2a 20 61 73 3a 0a 2b 20 2a 0a  ted.+ * as:.+ *.
4a10: 2b 20 2a 20 4c 49 53 54 5b 69 5d 20 3d 20 53 54  + * LIST[i] = ST
4a20: 41 52 54 2b 28 53 54 45 50 2a 69 29 0a 2b 20 2a  ART+(STEP*i).+ *
4a30: 0a 2b 20 2a 20 5a 65 72 6f 20 65 6c 65 6d 65 6e  .+ * Zero elemen
4a40: 74 73 20 72 61 6e 67 65 73 2c 20 6c 69 6b 65 20  ts ranges, like 
4a50: 69 6e 20 74 68 65 20 63 61 73 65 20 6f 66 20 53  in the case of S
4a60: 54 41 52 54 3d 31 30 20 45 4e 44 3d 31 30 20 53  TART=10 END=10 S
4a70: 54 45 50 3d 31 0a 2b 20 2a 20 61 72 65 20 76 61  TEP=1.+ * are va
4a80: 6c 69 64 20 61 6e 64 20 77 69 6c 6c 20 62 65 20  lid and will be 
4a90: 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 74 68  equivalent to th
4aa0: 65 20 65 6d 70 74 79 20 6c 69 73 74 2e 0a 2b 20  e empty list..+ 
4ab0: 2a 2f 0a 2b 0a 2b 54 63 6c 5f 4f 62 6a 54 79 70  */.+.+Tcl_ObjTyp
4ac0: 65 20 74 63 6c 41 72 69 74 68 53 65 72 69 65 73  e tclArithSeries
4ad0: 54 79 70 65 20 3d 20 7b 0a 2b 20 20 20 20 22 61  Type = {.+    "a
4ae0: 72 69 74 68 73 65 72 69 65 73 22 2c 09 09 09 2f  rithseries",.../
4af0: 2a 20 6e 61 6d 65 20 2a 2f 0a 2b 20 20 20 20 46  * name */.+    F
4b00: 72 65 65 41 72 69 74 68 53 65 72 69 65 73 49 6e  reeArithSeriesIn
4b10: 74 65 72 6e 61 6c 52 65 70 2c 09 09 2f 2a 20 66  ternalRep,../* f
4b20: 72 65 65 49 6e 74 52 65 70 50 72 6f 63 20 2a 2f  reeIntRepProc */
4b30: 0a 2b 20 20 20 20 44 75 70 41 72 69 74 68 53 65  .+    DupArithSe
4b40: 72 69 65 73 49 6e 74 65 72 6e 61 6c 52 65 70 2c  riesInternalRep,
4b50: 09 09 2f 2a 20 64 75 70 49 6e 74 52 65 70 50 72  ../* dupIntRepPr
4b60: 6f 63 20 2a 2f 0a 2b 20 20 20 20 55 70 64 61 74  oc */.+    Updat
4b70: 65 53 74 72 69 6e 67 4f 66 41 72 69 74 68 53 65  eStringOfArithSe
4b80: 72 69 65 73 2c 09 09 2f 2a 20 75 70 64 61 74 65  ries,../* update
4b90: 53 74 72 69 6e 67 50 72 6f 63 20 2a 2f 0a 2b 20  StringProc */.+ 
4ba0: 20 20 20 53 65 74 41 72 69 74 68 53 65 72 69 65     SetArithSerie
4bb0: 73 46 72 6f 6d 41 6e 79 09 09 2f 2a 20 73 65 74  sFromAny../* set
4bc0: 46 72 6f 6d 41 6e 79 50 72 6f 63 20 2a 2f 0a 2b  FromAnyProc */.+
4bd0: 7d 3b 0a 2b 0a 2b 2f 2a 0a 2b 20 2a 2d 2d 2d 2d  };.+.+/*.+ *----
4be0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4bf0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4c00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4c10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4c20: 2d 2d 0a 2b 20 2a 0a 2b 20 2a 20 41 72 69 74 68  --.+ *.+ * Arith
4c30: 53 65 72 69 65 73 4c 65 6e 20 2d 2d 0a 2b 20 2a  SeriesLen --.+ *
4c40: 0a 2b 20 2a 20 09 43 6f 6d 70 75 74 65 20 74 68  .+ * .Compute th
4c50: 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20  e length of the 
4c60: 65 71 75 69 76 61 6c 65 6e 74 20 6c 69 73 74 20  equivalent list 
4c70: 77 68 65 72 65 0a 2b 20 2a 20 09 65 76 65 72 79  where.+ * .every
4c80: 20 65 6c 65 6d 65 6e 74 20 69 73 20 67 65 6e 65   element is gene
4c90: 72 61 74 65 64 20 73 74 61 72 74 69 6e 67 20 66  rated starting f
4ca0: 72 6f 6d 20 2a 73 74 61 72 74 2a 2c 0a 2b 20 2a  rom *start*,.+ *
4cb0: 20 09 61 6e 64 20 61 64 64 69 6e 67 20 2a 73 74   .and adding *st
4cc0: 65 70 2a 20 74 6f 20 67 65 6e 65 72 61 74 65 20  ep* to generate 
4cd0: 65 76 65 72 79 20 73 75 63 63 65 73 73 69 76 65  every successive
4ce0: 20 65 6c 65 6d 65 6e 74 0a 2b 20 2a 20 09 74 68   element.+ * .th
4cf0: 61 74 27 73 20 3c 20 2a 65 6e 64 2a 20 66 6f 72  at's < *end* for
4d00: 20 70 6f 73 69 74 69 76 65 20 73 74 65 70 73 2c   positive steps,
4d10: 20 6f 72 20 3e 20 2a 65 6e 64 2a 20 66 6f 72 20   or > *end* for 
4d20: 6e 65 67 61 74 69 76 65 0a 2b 20 2a 20 09 73 74  negative.+ * .st
4d30: 65 70 73 2e 0a 2b 20 2a 0a 2b 20 2a 20 52 65 73  eps..+ *.+ * Res
4d40: 75 6c 74 73 3a 0a 2b 20 2a 0a 2b 20 2a 20 09 54  ults:.+ *.+ * .T
4d50: 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65  he length of the
4d60: 20 6c 69 73 74 20 67 65 6e 65 72 61 74 65 64 20   list generated 
4d70: 62 79 20 74 68 65 20 67 69 76 65 6e 20 72 61 6e  by the given ran
4d80: 67 65 2c 0a 2b 20 2a 20 09 74 68 61 74 20 6d 61  ge,.+ * .that ma
4d90: 79 20 62 65 20 7a 65 72 6f 2e 0a 2b 20 2a 20 09  y be zero..+ * .
4da0: 54 68 65 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  The function ret
4db0: 75 72 6e 73 20 2d 31 20 69 66 20 74 68 65 20 6c  urns -1 if the l
4dc0: 69 73 74 20 69 73 20 6f 66 20 6c 65 6e 67 74 68  ist is of length
4dd0: 20 69 6e 66 69 69 74 65 2e 0a 2b 20 2a 0a 2b 20   infiite..+ *.+ 
4de0: 2a 20 53 69 64 65 20 65 66 66 65 63 74 73 3a 0a  * Side effects:.
4df0: 2b 20 2a 0a 2b 20 2a 20 09 4e 6f 6e 65 2e 0a 2b  + *.+ * .None..+
4e00: 20 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   *.+ *----------
4e10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4e20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4e30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4e40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a  ------------.+ *
4e50: 2f 0a 2b 73 74 61 74 69 63 20 54 63 6c 5f 57 69  /.+static Tcl_Wi
4e60: 64 65 49 6e 74 0a 2b 41 72 69 74 68 53 65 72 69  deInt.+ArithSeri
4e70: 65 73 4c 65 6e 28 54 63 6c 5f 57 69 64 65 49 6e  esLen(Tcl_WideIn
4e80: 74 20 73 74 61 72 74 2c 20 54 63 6c 5f 57 69 64  t start, Tcl_Wid
4e90: 65 49 6e 74 20 65 6e 64 2c 20 54 63 6c 5f 57 69  eInt end, Tcl_Wi
4ea0: 64 65 49 6e 74 20 73 74 65 70 29 0a 2b 7b 0a 2b  deInt step).+{.+
4eb0: 09 54 63 6c 5f 57 69 64 65 49 6e 74 20 6c 65 6e  .Tcl_WideInt len
4ec0: 3b 0a 2b 0a 2b 09 69 66 20 28 73 74 65 70 20 3d  ;.+.+.if (step =
4ed0: 3d 20 30 29 20 72 65 74 75 72 6e 20 2d 31 3b 0a  = 0) return -1;.
4ee0: 2b 09 6c 65 6e 20 3d 20 28 28 73 74 65 70 20 3e  +.len = ((step >
4ef0: 20 30 29 20 3f 20 31 20 3a 20 2d 31 29 20 2b 20   0) ? 1 : -1) + 
4f00: 28 28 28 65 6e 64 2d 73 74 61 72 74 29 2d 31 29  (((end-start)-1)
4f10: 2f 73 74 65 70 29 3b 0a 2b 09 72 65 74 75 72 6e  /step);.+.return
4f20: 20 28 6c 65 6e 20 3c 20 30 29 20 3f 20 2d 31 20   (len < 0) ? -1 
4f30: 3a 20 6c 65 6e 3b 0a 2b 7d 0a 2b 0a 2b 2f 2a 0a  : len;.+}.+.+/*.
4f40: 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  + *-------------
4f50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4f60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4f70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4f80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 0a 2b 20  ---------.+ *.+ 
4f90: 2a 20 54 63 6c 5f 4e 65 77 41 72 69 74 68 53 65  * Tcl_NewArithSe
4fa0: 72 69 65 73 4f 62 6a 20 2d 2d 0a 2b 20 2a 0a 2b  riesObj --.+ *.+
4fb0: 20 2a 09 43 72 65 61 74 65 73 20 61 20 6e 65 77   *.Creates a new
4fc0: 20 41 72 69 74 68 53 65 72 69 65 73 20 6f 62 6a   ArithSeries obj
4fd0: 65 63 74 2e 20 54 68 65 20 72 65 74 75 72 6e 65  ect. The returne
4fe0: 64 20 6f 62 6a 65 63 74 20 68 61 73 0a 2b 20 2a  d object has.+ *
4ff0: 09 72 65 66 63 6f 75 6e 74 20 3d 20 30 2e 0a 2b  .refcount = 0..+
5000: 20 2a 0a 2b 20 2a 20 52 65 73 75 6c 74 73 3a 0a   *.+ * Results:.
5010: 2b 20 2a 0a 2b 20 2a 20 09 41 20 54 63 6c 5f 4f  + *.+ * .A Tcl_O
5020: 62 6a 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  bj pointer to th
5030: 65 20 63 72 65 61 74 65 64 20 41 72 69 74 68 53  e created ArithS
5040: 65 72 69 65 73 20 6f 62 6a 65 63 74 2e 0a 2b 20  eries object..+ 
5050: 2a 20 09 41 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  * .A NULL pointe
5060: 72 20 6f 66 20 74 68 65 20 72 61 6e 67 65 20 69  r of the range i
5070: 73 20 69 6e 76 61 6c 69 64 2e 0a 2b 20 2a 0a 2b  s invalid..+ *.+
5080: 20 2a 20 53 69 64 65 20 45 66 66 65 63 74 73 3a   * Side Effects:
5090: 0a 2b 20 2a 0a 2b 20 2a 20 09 4e 6f 6e 65 2e 0a  .+ *.+ * .None..
50a0: 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  + *-------------
50b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
50c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
50d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
50e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 2f 0a 2b  ---------.+ */.+
50f0: 54 63 6c 5f 4f 62 6a 20 2a 0a 2b 54 63 6c 5f 4e  Tcl_Obj *.+Tcl_N
5100: 65 77 41 72 69 74 68 53 65 72 69 65 73 4f 62 6a  ewArithSeriesObj
5110: 28 54 63 6c 5f 57 69 64 65 49 6e 74 20 73 74 61  (Tcl_WideInt sta
5120: 72 74 2c 20 54 63 6c 5f 57 69 64 65 49 6e 74 20  rt, Tcl_WideInt 
5130: 65 6e 64 2c 20 54 63 6c 5f 57 69 64 65 49 6e 74  end, Tcl_WideInt
5140: 20 73 74 65 70 29 0a 2b 7b 0a 2b 20 20 20 20 54   step).+{.+    T
5150: 63 6c 5f 57 69 64 65 49 6e 74 20 6c 65 6e 20 3d  cl_WideInt len =
5160: 20 41 72 69 74 68 53 65 72 69 65 73 4c 65 6e 28   ArithSeriesLen(
5170: 73 74 61 72 74 2c 20 65 6e 64 2c 20 73 74 65 70  start, end, step
5180: 29 3b 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20  );.+    Tcl_Obj 
5190: 2a 61 72 69 74 68 53 65 72 69 65 73 50 74 72 3b  *arithSeriesPtr;
51a0: 0a 2b 20 20 20 20 41 72 69 74 68 53 65 72 69 65  .+    ArithSerie
51b0: 73 20 2a 61 72 69 74 68 53 65 72 69 65 73 52 65  s *arithSeriesRe
51c0: 70 50 74 72 3b 0a 2b 0a 2b 20 20 20 20 69 66 20  pPtr;.+.+    if 
51d0: 28 6c 65 6e 20 3d 3d 20 2d 31 29 20 72 65 74 75  (len == -1) retu
51e0: 72 6e 20 4e 55 4c 4c 3b 20 2f 2a 20 49 6e 76 61  rn NULL; /* Inva
51f0: 6c 69 64 20 72 61 6e 67 65 20 65 72 72 6f 72 20  lid range error 
5200: 2a 2f 0a 2b 20 20 20 20 54 63 6c 4e 65 77 4f 62  */.+    TclNewOb
5210: 6a 28 61 72 69 74 68 53 65 72 69 65 73 50 74 72  j(arithSeriesPtr
5220: 29 3b 0a 2b 0a 2b 20 20 20 20 61 72 69 74 68 53  );.+.+    arithS
5230: 65 72 69 65 73 52 65 70 50 74 72 20 3d 20 28 41  eriesRepPtr = (A
5240: 72 69 74 68 53 65 72 69 65 73 2a 29 20 63 6b 61  rithSeries*) cka
5250: 6c 6c 6f 63 28 73 69 7a 65 6f 66 20 28 41 72 69  lloc(sizeof (Ari
5260: 74 68 53 65 72 69 65 73 29 29 3b 0a 2b 20 20 20  thSeries));.+   
5270: 20 61 72 69 74 68 53 65 72 69 65 73 52 65 70 50   arithSeriesRepP
5280: 74 72 2d 3e 73 74 61 72 74 20 3d 20 73 74 61 72  tr->start = star
5290: 74 3b 0a 2b 20 20 20 20 61 72 69 74 68 53 65 72  t;.+    arithSer
52a0: 69 65 73 52 65 70 50 74 72 2d 3e 65 6e 64 20 3d  iesRepPtr->end =
52b0: 20 65 6e 64 3b 0a 2b 20 20 20 20 61 72 69 74 68   end;.+    arith
52c0: 53 65 72 69 65 73 52 65 70 50 74 72 2d 3e 73 74  SeriesRepPtr->st
52d0: 65 70 20 3d 20 73 74 65 70 3b 0a 2b 20 20 20 20  ep = step;.+    
52e0: 61 72 69 74 68 53 65 72 69 65 73 52 65 70 50 74  arithSeriesRepPt
52f0: 72 2d 3e 6c 65 6e 20 3d 20 6c 65 6e 3b 0a 2b 20  r->len = len;.+ 
5300: 20 20 20 61 72 69 74 68 53 65 72 69 65 73 52 65     arithSeriesRe
5310: 70 50 74 72 2d 3e 77 69 64 65 4f 62 6a 50 74 72  pPtr->wideObjPtr
5320: 20 3d 20 54 63 6c 5f 4e 65 77 57 69 64 65 49 6e   = Tcl_NewWideIn
5330: 74 4f 62 6a 28 30 29 3b 0a 2b 20 20 20 20 54 63  tObj(0);.+    Tc
5340: 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 61  l_IncrRefCount(a
5350: 72 69 74 68 53 65 72 69 65 73 52 65 70 50 74 72  rithSeriesRepPtr
5360: 2d 3e 77 69 64 65 4f 62 6a 50 74 72 29 3b 0a 2b  ->wideObjPtr);.+
5370: 20 20 20 20 61 72 69 74 68 53 65 72 69 65 73 50      arithSeriesP
5380: 74 72 2d 3e 69 6e 74 65 72 6e 61 6c 52 65 70 2e  tr->internalRep.
5390: 74 77 6f 50 74 72 56 61 6c 75 65 2e 70 74 72 31  twoPtrValue.ptr1
53a0: 20 3d 20 28 56 4f 49 44 20 2a 29 20 61 72 69 74   = (VOID *) arit
53b0: 68 53 65 72 69 65 73 52 65 70 50 74 72 3b 0a 2b  hSeriesRepPtr;.+
53c0: 20 20 20 20 61 72 69 74 68 53 65 72 69 65 73 50      arithSeriesP
53d0: 74 72 2d 3e 69 6e 74 65 72 6e 61 6c 52 65 70 2e  tr->internalRep.
53e0: 74 77 6f 50 74 72 56 61 6c 75 65 2e 70 74 72 32  twoPtrValue.ptr2
53f0: 20 3d 20 4e 55 4c 4c 3b 0a 2b 20 20 20 20 61 72   = NULL;.+    ar
5400: 69 74 68 53 65 72 69 65 73 50 74 72 2d 3e 74 79  ithSeriesPtr->ty
5410: 70 65 50 74 72 20 3d 20 26 74 63 6c 41 72 69 74  pePtr = &tclArit
5420: 68 53 65 72 69 65 73 54 79 70 65 3b 0a 2b 20 20  hSeriesType;.+  
5430: 20 20 69 66 20 28 6c 65 6e 20 3e 20 30 29 0a 2b    if (len > 0).+
5440: 20 20 20 20 09 54 63 6c 5f 49 6e 76 61 6c 69 64      .Tcl_Invalid
5450: 61 74 65 53 74 72 69 6e 67 52 65 70 28 61 72 69  ateStringRep(ari
5460: 74 68 53 65 72 69 65 73 50 74 72 29 3b 0a 2b 0a  thSeriesPtr);.+.
5470: 2b 20 20 20 20 72 65 74 75 72 6e 20 61 72 69 74  +    return arit
5480: 68 53 65 72 69 65 73 50 74 72 3b 0a 2b 7d 0a 2b  hSeriesPtr;.+}.+
5490: 0a 2b 0a 2b 2f 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d  .+.+/*.+ *------
54a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
54b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
54c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
54d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
54e0: 0a 2b 20 2a 0a 2b 20 2a 20 54 63 6c 5f 41 72 69  .+ *.+ * Tcl_Ari
54f0: 74 68 53 65 72 69 65 73 4f 62 6a 49 6e 64 65 78  thSeriesObjIndex
5500: 20 2d 2d 0a 2b 20 2a 0a 2b 20 2a 09 52 65 74 75   --.+ *.+ *.Retu
5510: 72 6e 73 20 74 68 65 20 65 6c 65 6d 65 6e 74 20  rns the element 
5520: 77 69 74 68 20 74 68 65 20 73 70 65 63 69 66 69  with the specifi
5530: 65 64 20 69 6e 64 65 78 20 69 6e 20 74 68 65 20  ed index in the 
5540: 6c 69 73 74 0a 2b 20 2a 09 72 65 70 72 65 73 65  list.+ *.represe
5550: 6e 74 65 64 20 62 79 20 74 68 65 20 73 70 65 63  nted by the spec
5560: 69 66 69 65 64 20 41 72 69 74 68 6d 65 6e 74 69  ified Arithmenti
5570: 63 20 53 65 71 75 65 6e 63 65 20 6f 62 6a 65 63  c Sequence objec
5580: 74 2e 0a 2b 20 2a 09 49 66 20 74 68 65 20 69 6e  t..+ *.If the in
5590: 64 65 78 20 69 73 20 6f 75 74 20 6f 66 20 72 61  dex is out of ra
55a0: 6e 67 65 2c 20 54 43 4c 5f 45 52 52 4f 52 20 69  nge, TCL_ERROR i
55b0: 73 20 72 65 74 75 72 6e 65 64 2c 0a 2b 20 2a 09  s returned,.+ *.
55c0: 6f 74 68 65 72 77 69 73 65 20 54 43 4c 5f 4f 4b  otherwise TCL_OK
55d0: 20 69 73 20 72 65 74 75 72 6e 65 64 20 61 6e 64   is returned and
55e0: 20 74 68 65 20 69 6e 74 65 67 65 72 20 76 61 6c   the integer val
55f0: 75 65 20 6f 66 20 74 68 65 0a 2b 20 2a 09 65 6c  ue of the.+ *.el
5600: 65 6d 65 6e 74 20 69 73 20 73 74 6f 72 65 64 20  ement is stored 
5610: 69 6e 20 2a 65 6c 65 6d 65 6e 74 2e 0a 2b 20 2a  in *element..+ *
5620: 0a 2b 20 2a 20 52 65 73 75 6c 74 73 3a 0a 2b 20  .+ * Results:.+ 
5630: 2a 0a 2b 20 2a 20 09 54 43 4c 5f 4f 4b 20 6f 6e  *.+ * .TCL_OK on
5640: 20 73 75 63 63 65 73 2c 20 54 43 4c 5f 45 52 52   succes, TCL_ERR
5650: 4f 52 20 6f 6e 20 69 6e 64 65 78 20 6f 75 74 20  OR on index out 
5660: 6f 66 20 72 61 6e 67 65 2e 0a 2b 20 2a 0a 2b 20  of range..+ *.+ 
5670: 2a 20 53 69 64 65 20 45 66 66 65 63 74 73 3a 0a  * Side Effects:.
5680: 2b 20 2a 0a 2b 20 2a 20 09 4f 6e 20 73 75 63 63  + *.+ * .On succ
5690: 65 73 73 2c 20 74 68 65 20 69 6e 74 65 67 65 72  ess, the integer
56a0: 20 70 6f 69 6e 74 65 64 20 62 79 20 2a 65 6c 65   pointed by *ele
56b0: 6d 65 6e 74 20 69 73 20 6d 6f 64 69 66 69 65 64  ment is modified
56c0: 2e 0a 2b 20 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d  ..+ *.+ *-------
56d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
56e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
56f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5700: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
5710: 2b 20 2a 2f 0a 2b 0a 2b 69 6e 74 0a 2b 54 63 6c  + */.+.+int.+Tcl
5720: 5f 41 72 69 74 68 53 65 72 69 65 73 4f 62 6a 49  _ArithSeriesObjI
5730: 6e 64 65 78 28 54 63 6c 5f 4f 62 6a 20 2a 61 72  ndex(Tcl_Obj *ar
5740: 69 74 68 53 65 72 69 65 73 50 74 72 2c 20 54 63  ithSeriesPtr, Tc
5750: 6c 5f 57 69 64 65 49 6e 74 20 69 6e 64 65 78 2c  l_WideInt index,
5760: 20 54 63 6c 5f 57 69 64 65 49 6e 74 20 2a 65 6c   Tcl_WideInt *el
5770: 65 6d 65 6e 74 29 0a 2b 7b 0a 2b 20 20 20 20 41  ement).+{.+    A
5780: 72 69 74 68 53 65 72 69 65 73 20 2a 61 72 69 74  rithSeries *arit
5790: 68 53 65 72 69 65 73 52 65 70 50 74 72 3b 0a 2b  hSeriesRepPtr;.+
57a0: 0a 2b 20 20 20 20 69 66 20 28 61 72 69 74 68 53  .+    if (arithS
57b0: 65 72 69 65 73 50 74 72 2d 3e 74 79 70 65 50 74  eriesPtr->typePt
57c0: 72 20 21 3d 20 26 74 63 6c 41 72 69 74 68 53 65  r != &tclArithSe
57d0: 72 69 65 73 54 79 70 65 29 20 7b 0a 2b 20 20 20  riesType) {.+   
57e0: 20 20 20 20 20 54 63 6c 5f 50 61 6e 69 63 28 22       Tcl_Panic("
57f0: 54 63 6c 5f 41 72 69 74 68 53 65 72 69 65 73 4f  Tcl_ArithSeriesO
5800: 62 6a 49 6e 64 65 78 20 63 61 6c 6c 65 64 20 77  bjIndex called w
5810: 69 74 68 20 61 20 6e 6f 74 20 41 72 69 74 68 53  ith a not ArithS
5820: 65 72 69 65 73 20 4f 62 6a 2e 22 29 3b 0a 2b 20  eries Obj.");.+ 
5830: 20 20 20 7d 0a 2b 20 20 20 20 61 72 69 74 68 53     }.+    arithS
5840: 65 72 69 65 73 52 65 70 50 74 72 20 3d 20 28 41  eriesRepPtr = (A
5850: 72 69 74 68 53 65 72 69 65 73 2a 29 0a 2b 09 20  rithSeries*).+. 
5860: 20 20 20 61 72 69 74 68 53 65 72 69 65 73 50 74     arithSeriesPt
5870: 72 2d 3e 69 6e 74 65 72 6e 61 6c 52 65 70 2e 74  r->internalRep.t
5880: 77 6f 50 74 72 56 61 6c 75 65 2e 70 74 72 31 3b  woPtrValue.ptr1;
5890: 0a 2b 20 20 20 20 69 66 20 28 69 6e 64 65 78 20  .+    if (index 
58a0: 3c 20 30 20 7c 7c 20 69 6e 64 65 78 20 3e 3d 20  < 0 || index >= 
58b0: 61 72 69 74 68 53 65 72 69 65 73 52 65 70 50 74  arithSeriesRepPt
58c0: 72 2d 3e 6c 65 6e 29 0a 2b 09 20 20 20 20 72 65  r->len).+.    re
58d0: 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a  turn TCL_ERROR;.
58e0: 2b 20 20 20 20 2f 2a 20 4c 69 73 74 5b 69 5d 20  +    /* List[i] 
58f0: 3d 20 53 74 61 72 74 20 2b 20 28 53 74 65 70 20  = Start + (Step 
5900: 2a 20 69 29 20 2a 2f 0a 2b 20 20 20 20 2a 65 6c  * i) */.+    *el
5910: 65 6d 65 6e 74 20 3d 20 61 72 69 74 68 53 65 72  ement = arithSer
5920: 69 65 73 52 65 70 50 74 72 2d 3e 73 74 61 72 74  iesRepPtr->start
5930: 2b 28 69 6e 64 65 78 2a 61 72 69 74 68 53 65 72  +(index*arithSer
5940: 69 65 73 52 65 70 50 74 72 2d 3e 73 74 65 70 29  iesRepPtr->step)
5950: 3b 0a 2b 20 20 20 20 72 65 74 75 72 6e 20 54 43  ;.+    return TC
5960: 4c 5f 4f 4b 3b 0a 2b 7d 0a 2b 0a 2b 2f 2a 0a 2b  L_OK;.+}.+.+/*.+
5970: 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   *--------------
5980: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5990: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
59a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
59b0: 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 0a 2b 20 2a  --------.+ *.+ *
59c0: 20 54 63 6c 5f 41 72 69 74 68 53 65 72 69 65 73   Tcl_ArithSeries
59d0: 4f 62 6a 4c 65 6e 67 74 68 0a 2b 20 2a 0a 2b 20  ObjLength.+ *.+ 
59e0: 2a 09 52 65 74 75 72 6e 73 20 74 68 65 20 6c 65  *.Returns the le
59f0: 6e 67 74 68 20 6f 66 20 74 68 65 20 61 72 69 74  ngth of the arit
5a00: 68 6d 65 6e 74 69 63 20 73 65 72 69 65 73 2e 0a  hmentic series..
5a10: 2b 20 2a 0a 2b 20 2a 20 52 65 73 75 6c 74 73 3a  + *.+ * Results:
5a20: 0a 2b 20 2a 0a 2b 20 2a 20 09 54 68 65 20 6c 65  .+ *.+ * .The le
5a30: 6e 67 74 68 20 6f 66 20 74 68 65 20 73 65 72 69  ngth of the seri
5a40: 65 73 20 61 73 20 54 63 6c 5f 57 69 64 65 49 6e  es as Tcl_WideIn
5a50: 74 2e 0a 2b 20 2a 0a 2b 20 2a 20 53 69 64 65 20  t..+ *.+ * Side 
5a60: 45 66 66 65 63 74 73 3a 0a 2b 20 2a 0a 2b 20 2a  Effects:.+ *.+ *
5a70: 20 09 4e 6f 6e 65 2e 0a 2b 20 2a 0a 2b 20 2a 2d   .None..+ *.+ *-
5a80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5a90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5aa0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5ab0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5ac0: 2d 2d 2d 2d 2d 0a 2b 20 2a 2f 0a 2b 54 63 6c 5f  -----.+ */.+Tcl_
5ad0: 57 69 64 65 49 6e 74 20 54 63 6c 5f 41 72 69 74  WideInt Tcl_Arit
5ae0: 68 53 65 72 69 65 73 4f 62 6a 4c 65 6e 67 74 68  hSeriesObjLength
5af0: 28 54 63 6c 5f 4f 62 6a 20 2a 61 72 69 74 68 53  (Tcl_Obj *arithS
5b00: 65 72 69 65 73 50 74 72 29 0a 2b 7b 0a 2b 20 20  eriesPtr).+{.+  
5b10: 20 20 41 72 69 74 68 53 65 72 69 65 73 20 2a 61    ArithSeries *a
5b20: 72 69 74 68 53 65 72 69 65 73 52 65 70 50 74 72  rithSeriesRepPtr
5b30: 20 3d 20 28 41 72 69 74 68 53 65 72 69 65 73 2a   = (ArithSeries*
5b40: 29 0a 2b 09 20 20 20 20 61 72 69 74 68 53 65 72  ).+.    arithSer
5b50: 69 65 73 50 74 72 2d 3e 69 6e 74 65 72 6e 61 6c  iesPtr->internal
5b60: 52 65 70 2e 74 77 6f 50 74 72 56 61 6c 75 65 2e  Rep.twoPtrValue.
5b70: 70 74 72 31 3b 0a 2b 20 20 20 20 72 65 74 75 72  ptr1;.+    retur
5b80: 6e 20 61 72 69 74 68 53 65 72 69 65 73 52 65 70  n arithSeriesRep
5b90: 50 74 72 2d 3e 6c 65 6e 3b 0a 2b 7d 0a 2b 0a 2b  Ptr->len;.+}.+.+
5ba0: 2f 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  /*.+ *----------
5bb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5bc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5bd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5be0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a  ------------.+ *
5bf0: 0a 2b 20 2a 20 46 72 65 65 41 72 69 74 68 53 65  .+ * FreeArithSe
5c00: 72 69 65 73 49 6e 74 65 72 6e 61 6c 52 65 70 20  riesInternalRep 
5c10: 2d 2d 0a 2b 20 2a 0a 2b 20 2a 09 44 65 61 6c 6c  --.+ *.+ *.Deall
5c20: 6f 63 61 74 65 20 74 68 65 20 73 74 6f 72 61 67  ocate the storag
5c30: 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  e associated wit
5c40: 68 20 61 6e 20 61 72 69 74 68 73 65 72 69 65 73  h an arithseries
5c50: 20 6f 62 6a 65 63 74 27 73 0a 2b 20 2a 09 69 6e   object's.+ *.in
5c60: 74 65 72 6e 61 6c 20 72 65 70 72 65 73 65 6e 74  ternal represent
5c70: 61 74 69 6f 6e 2e 0a 2b 20 2a 0a 2b 20 2a 20 52  ation..+ *.+ * R
5c80: 65 73 75 6c 74 73 3a 0a 2b 20 2a 09 4e 6f 6e 65  esults:.+ *.None
5c90: 2e 0a 2b 20 2a 0a 2b 20 2a 20 53 69 64 65 20 65  ..+ *.+ * Side e
5ca0: 66 66 65 63 74 73 3a 0a 2b 20 2a 09 46 72 65 65  ffects:.+ *.Free
5cb0: 73 20 61 72 69 74 68 53 65 72 69 65 73 50 74 72  s arithSeriesPtr
5cc0: 27 73 20 41 72 69 74 68 53 65 72 69 65 73 2a 20  's ArithSeries* 
5cd0: 69 6e 74 65 72 6e 61 6c 20 72 65 70 72 65 73 65  internal represe
5ce0: 6e 74 61 74 69 6f 6e 20 61 6e 64 0a 2b 20 2a 09  ntation and.+ *.
5cf0: 73 65 74 73 20 6c 69 73 74 50 74 72 27 73 09 69  sets listPtr's.i
5d00: 6e 74 65 72 6e 61 6c 52 65 70 2e 74 77 6f 50 74  nternalRep.twoPt
5d10: 72 56 61 6c 75 65 2e 70 74 72 31 20 74 6f 20 4e  rValue.ptr1 to N
5d20: 55 4c 4c 2e 0a 2b 20 2a 0a 2b 20 2a 2d 2d 2d 2d  ULL..+ *.+ *----
5d30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5d40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5d50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5d60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5d70: 2d 2d 0a 2b 20 2a 2f 0a 2b 0a 2b 73 74 61 74 69  --.+ */.+.+stati
5d80: 63 20 76 6f 69 64 0a 2b 46 72 65 65 41 72 69 74  c void.+FreeArit
5d90: 68 53 65 72 69 65 73 49 6e 74 65 72 6e 61 6c 52  hSeriesInternalR
5da0: 65 70 28 54 63 6c 5f 4f 62 6a 20 2a 61 72 69 74  ep(Tcl_Obj *arit
5db0: 68 53 65 72 69 65 73 50 74 72 29 0a 2b 7b 0a 2b  hSeriesPtr).+{.+
5dc0: 20 20 20 20 41 72 69 74 68 53 65 72 69 65 73 20      ArithSeries 
5dd0: 2a 61 72 69 74 68 53 65 72 69 65 73 52 65 70 50  *arithSeriesRepP
5de0: 74 72 20 3d 0a 2b 09 20 20 20 20 28 41 72 69 74  tr =.+.    (Arit
5df0: 68 53 65 72 69 65 73 20 2a 29 20 61 72 69 74 68  hSeries *) arith
5e00: 53 65 72 69 65 73 50 74 72 2d 3e 69 6e 74 65 72  SeriesPtr->inter
5e10: 6e 61 6c 52 65 70 2e 74 77 6f 50 74 72 56 61 6c  nalRep.twoPtrVal
5e20: 75 65 2e 70 74 72 31 3b 0a 2b 20 20 20 20 54 63  ue.ptr1;.+    Tc
5e30: 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 61  l_DecrRefCount(a
5e40: 72 69 74 68 53 65 72 69 65 73 52 65 70 50 74 72  rithSeriesRepPtr
5e50: 2d 3e 77 69 64 65 4f 62 6a 50 74 72 29 3b 0a 2b  ->wideObjPtr);.+
5e60: 20 20 20 20 63 6b 66 72 65 65 28 28 63 68 61 72      ckfree((char
5e70: 20 2a 29 20 61 72 69 74 68 53 65 72 69 65 73 52   *) arithSeriesR
5e80: 65 70 50 74 72 29 3b 0a 2b 20 20 20 20 61 72 69  epPtr);.+    ari
5e90: 74 68 53 65 72 69 65 73 50 74 72 2d 3e 69 6e 74  thSeriesPtr->int
5ea0: 65 72 6e 61 6c 52 65 70 2e 74 77 6f 50 74 72 56  ernalRep.twoPtrV
5eb0: 61 6c 75 65 2e 70 74 72 31 20 3d 20 4e 55 4c 4c  alue.ptr1 = NULL
5ec0: 3b 0a 2b 7d 0a 2b 0a 2b 2f 2a 0a 2b 20 2a 2d 2d  ;.+}.+.+/*.+ *--
5ed0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5ee0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5ef0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5f00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5f10: 2d 2d 2d 2d 0a 2b 20 2a 0a 2b 20 2a 20 44 75 70  ----.+ *.+ * Dup
5f20: 41 72 69 74 68 53 65 72 69 65 73 49 6e 74 65 72  ArithSeriesInter
5f30: 6e 61 6c 52 65 70 20 2d 2d 0a 2b 20 2a 0a 2b 20  nalRep --.+ *.+ 
5f40: 2a 09 49 6e 69 74 69 61 6c 69 7a 65 20 74 68 65  *.Initialize the
5f50: 20 69 6e 74 65 72 6e 61 6c 20 72 65 70 72 65 73   internal repres
5f60: 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61 20 61 72  entation of a ar
5f70: 69 74 68 73 65 72 69 65 73 20 54 63 6c 5f 4f 62  ithseries Tcl_Ob
5f80: 6a 20 74 6f 20 61 0a 2b 20 2a 09 63 6f 70 79 20  j to a.+ *.copy 
5f90: 6f 66 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20  of the internal 
5fa0: 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f  representation o
5fb0: 66 20 61 6e 20 65 78 69 73 74 69 6e 67 20 61 72  f an existing ar
5fc0: 69 74 68 73 65 72 69 65 73 20 6f 62 6a 65 63 74  ithseries object
5fd0: 2e 20 0a 2b 20 2a 0a 2b 20 2a 20 52 65 73 75 6c  . .+ *.+ * Resul
5fe0: 74 73 3a 0a 2b 20 2a 09 4e 6f 6e 65 2e 0a 2b 20  ts:.+ *.None..+ 
5ff0: 2a 0a 2b 20 2a 20 53 69 64 65 20 65 66 66 65 63  *.+ * Side effec
6000: 74 73 3a 0a 2b 20 2a 09 57 65 20 73 65 74 20 22  ts:.+ *.We set "
6010: 63 6f 70 79 50 74 72 22 73 20 69 6e 74 65 72 6e  copyPtr"s intern
6020: 61 6c 20 72 65 70 20 74 6f 20 61 20 70 6f 69 6e  al rep to a poin
6030: 74 65 72 20 74 6f 20 61 0a 2b 20 2a 09 6e 65 77  ter to a.+ *.new
6040: 6c 79 20 61 6c 6c 6f 63 61 74 65 64 20 41 72 69  ly allocated Ari
6050: 74 68 53 65 72 69 65 73 20 73 74 72 75 63 74 75  thSeries structu
6060: 72 65 2e 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d  re..+ *---------
6070: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6080: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
60a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20  -------------.+ 
60b0: 2a 2f 0a 2b 0a 2b 73 74 61 74 69 63 20 76 6f 69  */.+.+static voi
60c0: 64 0a 2b 44 75 70 41 72 69 74 68 53 65 72 69 65  d.+DupArithSerie
60d0: 73 49 6e 74 65 72 6e 61 6c 52 65 70 28 73 72 63  sInternalRep(src
60e0: 50 74 72 2c 20 63 6f 70 79 50 74 72 29 0a 2b 20  Ptr, copyPtr).+ 
60f0: 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 73 72 63 50     Tcl_Obj *srcP
6100: 74 72 3b 09 09 2f 2a 20 4f 62 6a 65 63 74 20 77  tr;../* Object w
6110: 69 74 68 20 69 6e 74 65 72 6e 61 6c 20 72 65 70  ith internal rep
6120: 20 74 6f 20 63 6f 70 79 2e 20 2a 2f 0a 2b 20 20   to copy. */.+  
6130: 20 20 54 63 6c 5f 4f 62 6a 20 2a 63 6f 70 79 50    Tcl_Obj *copyP
6140: 74 72 3b 09 09 2f 2a 20 4f 62 6a 65 63 74 20 77  tr;../* Object w
6150: 69 74 68 20 69 6e 74 65 72 6e 61 6c 20 72 65 70  ith internal rep
6160: 20 74 6f 20 73 65 74 2e 20 2a 2f 0a 2b 7b 0a 2b   to set. */.+{.+
6170: 20 20 20 20 41 72 69 74 68 53 65 72 69 65 73 20      ArithSeries 
6180: 2a 73 72 63 41 72 69 74 68 53 65 72 69 65 73 52  *srcArithSeriesR
6190: 65 70 50 74 72 20 3d 0a 2b 09 20 20 20 20 28 41  epPtr =.+.    (A
61a0: 72 69 74 68 53 65 72 69 65 73 20 2a 29 20 73 72  rithSeries *) sr
61b0: 63 50 74 72 2d 3e 69 6e 74 65 72 6e 61 6c 52 65  cPtr->internalRe
61c0: 70 2e 74 77 6f 50 74 72 56 61 6c 75 65 2e 70 74  p.twoPtrValue.pt
61d0: 72 31 3b 0a 2b 20 20 20 20 41 72 69 74 68 53 65  r1;.+    ArithSe
61e0: 72 69 65 73 20 2a 63 6f 70 79 41 72 69 74 68 53  ries *copyArithS
61f0: 65 72 69 65 73 52 65 70 50 74 72 3b 0a 2b 0a 2b  eriesRepPtr;.+.+
6200: 20 20 20 20 2f 2a 0a 2b 20 20 20 20 20 2a 20 41      /*.+     * A
6210: 6c 6c 6f 63 61 74 65 20 61 20 6e 65 77 20 41 72  llocate a new Ar
6220: 69 74 68 53 65 72 69 65 73 20 73 74 72 75 63 74  ithSeries struct
6230: 75 72 65 2e 20 2a 2f 0a 2b 0a 2b 20 20 20 20 63  ure. */.+.+    c
6240: 6f 70 79 41 72 69 74 68 53 65 72 69 65 73 52 65  opyArithSeriesRe
6250: 70 50 74 72 20 3d 20 28 41 72 69 74 68 53 65 72  pPtr = (ArithSer
6260: 69 65 73 2a 29 20 63 6b 61 6c 6c 6f 63 28 73 69  ies*) ckalloc(si
6270: 7a 65 6f 66 28 41 72 69 74 68 53 65 72 69 65 73  zeof(ArithSeries
6280: 29 29 3b 0a 2b 20 20 20 20 63 6f 70 79 41 72 69  ));.+    copyAri
6290: 74 68 53 65 72 69 65 73 52 65 70 50 74 72 2d 3e  thSeriesRepPtr->
62a0: 73 74 61 72 74 20 3d 20 73 72 63 41 72 69 74 68  start = srcArith
62b0: 53 65 72 69 65 73 52 65 70 50 74 72 2d 3e 73 74  SeriesRepPtr->st
62c0: 61 72 74 3b 0a 2b 20 20 20 20 63 6f 70 79 41 72  art;.+    copyAr
62d0: 69 74 68 53 65 72 69 65 73 52 65 70 50 74 72 2d  ithSeriesRepPtr-
62e0: 3e 65 6e 64 20 3d 20 73 72 63 41 72 69 74 68 53  >end = srcArithS
62f0: 65 72 69 65 73 52 65 70 50 74 72 2d 3e 65 6e 64  eriesRepPtr->end
6300: 3b 0a 2b 20 20 20 20 63 6f 70 79 41 72 69 74 68  ;.+    copyArith
6310: 53 65 72 69 65 73 52 65 70 50 74 72 2d 3e 73 74  SeriesRepPtr->st
6320: 65 70 20 3d 20 73 72 63 41 72 69 74 68 53 65 72  ep = srcArithSer
6330: 69 65 73 52 65 70 50 74 72 2d 3e 73 74 65 70 3b  iesRepPtr->step;
6340: 0a 2b 20 20 20 20 63 6f 70 79 41 72 69 74 68 53  .+    copyArithS
6350: 65 72 69 65 73 52 65 70 50 74 72 2d 3e 6c 65 6e  eriesRepPtr->len
6360: 20 3d 20 73 72 63 41 72 69 74 68 53 65 72 69 65   = srcArithSerie
6370: 73 52 65 70 50 74 72 2d 3e 6c 65 6e 3b 0a 2b 20  sRepPtr->len;.+ 
6380: 20 20 20 63 6f 70 79 41 72 69 74 68 53 65 72 69     copyArithSeri
6390: 65 73 52 65 70 50 74 72 2d 3e 77 69 64 65 4f 62  esRepPtr->wideOb
63a0: 6a 50 74 72 20 3d 20 54 63 6c 5f 4e 65 77 57 69  jPtr = Tcl_NewWi
63b0: 64 65 49 6e 74 4f 62 6a 28 30 29 3b 0a 2b 20 20  deIntObj(0);.+  
63c0: 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75    Tcl_IncrRefCou
63d0: 6e 74 28 63 6f 70 79 41 72 69 74 68 53 65 72 69  nt(copyArithSeri
63e0: 65 73 52 65 70 50 74 72 2d 3e 77 69 64 65 4f 62  esRepPtr->wideOb
63f0: 6a 50 74 72 29 3b 0a 2b 0a 2b 20 20 20 20 63 6f  jPtr);.+.+    co
6400: 70 79 50 74 72 2d 3e 69 6e 74 65 72 6e 61 6c 52  pyPtr->internalR
6410: 65 70 2e 74 77 6f 50 74 72 56 61 6c 75 65 2e 70  ep.twoPtrValue.p
6420: 74 72 31 20 3d 20 28 56 4f 49 44 20 2a 29 20 63  tr1 = (VOID *) c
6430: 6f 70 79 41 72 69 74 68 53 65 72 69 65 73 52 65  opyArithSeriesRe
6440: 70 50 74 72 3b 0a 2b 20 20 20 20 63 6f 70 79 50  pPtr;.+    copyP
6450: 74 72 2d 3e 69 6e 74 65 72 6e 61 6c 52 65 70 2e  tr->internalRep.
6460: 74 77 6f 50 74 72 56 61 6c 75 65 2e 70 74 72 32  twoPtrValue.ptr2
6470: 20 3d 20 4e 55 4c 4c 3b 0a 2b 20 20 20 20 63 6f   = NULL;.+    co
6480: 70 79 50 74 72 2d 3e 74 79 70 65 50 74 72 20 3d  pyPtr->typePtr =
6490: 20 26 74 63 6c 41 72 69 74 68 53 65 72 69 65 73   &tclArithSeries
64a0: 54 79 70 65 3b 0a 2b 7d 0a 2b 0a 2b 2f 2a 0a 2b  Type;.+}.+.+/*.+
64b0: 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   *--------------
64c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
64d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
64e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
64f0: 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 0a 2b 20 2a  --------.+ *.+ *
6500: 20 55 70 64 61 74 65 53 74 72 69 6e 67 4f 66 41   UpdateStringOfA
6510: 72 69 74 68 53 65 72 69 65 73 20 2d 2d 0a 2b 20  rithSeries --.+ 
6520: 2a 0a 2b 20 2a 09 55 70 64 61 74 65 20 74 68 65  *.+ *.Update the
6530: 20 73 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e   string represen
6540: 74 61 74 69 6f 6e 20 66 6f 72 20 61 6e 20 61 72  tation for an ar
6550: 69 74 68 73 65 72 69 65 73 20 6f 62 6a 65 63 74  ithseries object
6560: 2e 0a 2b 20 2a 09 4e 6f 74 65 3a 20 54 68 69 73  ..+ *.Note: This
6570: 20 70 72 6f 63 65 64 75 72 65 20 64 6f 65 73 20   procedure does 
6580: 6e 6f 74 20 69 6e 76 61 6c 69 64 61 74 65 20 61  not invalidate a
6590: 6e 20 65 78 69 73 74 69 6e 67 20 6f 6c 64 20 73  n existing old s
65a0: 74 72 69 6e 67 20 72 65 70 0a 2b 20 2a 09 73 6f  tring rep.+ *.so
65b0: 20 73 74 6f 72 61 67 65 20 77 69 6c 6c 20 62 65   storage will be
65c0: 20 6c 6f 73 74 20 69 66 20 74 68 69 73 20 68 61   lost if this ha
65d0: 73 20 6e 6f 74 20 61 6c 72 65 61 64 79 20 62 65  s not already be
65e0: 65 6e 20 64 6f 6e 65 2e 20 0a 2b 20 2a 0a 2b 20  en done. .+ *.+ 
65f0: 2a 20 52 65 73 75 6c 74 73 3a 0a 2b 20 2a 09 4e  * Results:.+ *.N
6600: 6f 6e 65 2e 0a 2b 20 2a 0a 2b 20 2a 20 53 69 64  one..+ *.+ * Sid
6610: 65 20 65 66 66 65 63 74 73 3a 0a 2b 20 2a 09 54  e effects:.+ *.T
6620: 68 65 20 6f 62 6a 65 63 74 27 73 20 73 74 72 69  he object's stri
6630: 6e 67 20 69 73 20 73 65 74 20 74 6f 20 61 20 76  ng is set to a v
6640: 61 6c 69 64 20 73 74 72 69 6e 67 20 74 68 61 74  alid string that
6650: 20 72 65 73 75 6c 74 73 20 66 72 6f 6d 0a 2b 20   results from.+ 
6660: 2a 09 74 68 65 20 6c 69 73 74 2d 74 6f 2d 73 74  *.the list-to-st
6670: 72 69 6e 67 20 63 6f 6e 76 65 72 73 69 6f 6e 2e  ring conversion.
6680: 20 54 68 69 73 20 73 74 72 69 6e 67 20 77 69 6c   This string wil
6690: 6c 20 62 65 20 65 6d 70 74 79 20 69 66 20 74 68  l be empty if th
66a0: 65 0a 2b 20 2a 09 6c 69 73 74 20 68 61 73 20 6e  e.+ *.list has n
66b0: 6f 20 65 6c 65 6d 65 6e 74 73 2e 20 54 68 65 20  o elements. The 
66c0: 6c 69 73 74 20 69 6e 74 65 72 6e 61 6c 20 72 65  list internal re
66d0: 70 72 65 73 65 6e 74 61 74 69 6f 6e 0a 2b 20 2a  presentation.+ *
66e0: 09 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 4e  .should not be N
66f0: 55 4c 4c 20 61 6e 64 20 77 65 20 61 73 73 75 6d  ULL and we assum
6700: 65 20 69 74 20 69 73 20 6e 6f 74 20 4e 55 4c 4c  e it is not NULL
6710: 2e 0a 2b 20 2a 0a 2b 20 2a 20 4e 6f 74 65 73 3a  ..+ *.+ * Notes:
6720: 0a 2b 20 2a 20 09 41 74 20 74 68 65 20 63 6f 73  .+ * .At the cos
6730: 74 20 6f 66 20 6f 76 65 72 61 6c 6c 6f 63 61 74  t of overallocat
6740: 69 6f 6e 20 69 74 27 73 20 70 6f 73 73 69 62 6c  ion it's possibl
6750: 65 20 74 6f 20 65 73 74 69 6d 61 74 65 0a 2b 20  e to estimate.+ 
6760: 2a 20 09 74 68 65 20 6c 65 6e 67 74 68 20 6f 66  * .the length of
6770: 20 74 68 65 20 73 74 72 69 6e 67 20 72 65 70 72   the string repr
6780: 65 73 65 6e 74 61 74 69 6f 6e 20 61 6e 64 20 6d  esentation and m
6790: 61 6b 65 20 74 68 69 73 20 70 72 6f 63 65 64 75  ake this procedu
67a0: 72 65 0a 2b 20 2a 20 09 6d 75 63 68 20 66 61 73  re.+ * .much fas
67b0: 74 65 72 2e 20 42 65 63 61 75 73 65 20 74 68 65  ter. Because the
67c0: 20 70 72 6f 67 72 61 6d 6d 65 72 20 73 68 6f 75   programmer shou
67d0: 6c 64 6e 27 74 20 65 78 70 65 63 74 20 74 68 65  ldn't expect the
67e0: 0a 2b 20 2a 20 09 73 74 72 69 6e 67 20 63 6f 6e  .+ * .string con
67f0: 76 65 72 73 69 6f 6e 20 6f 66 20 61 20 62 69 67  version of a big
6800: 20 61 72 69 74 68 6d 65 74 69 63 20 73 65 71 75   arithmetic sequ
6810: 65 6e 63 65 20 74 6f 20 62 65 20 66 61 73 74 0a  ence to be fast.
6820: 2b 20 2a 20 09 74 68 69 73 20 76 65 72 73 69 6f  + * .this versio
6830: 6e 20 74 61 6b 65 73 20 6d 6f 72 65 20 63 61 72  n takes more car
6840: 65 20 6f 66 20 73 70 61 63 65 20 74 68 61 6e 20  e of space than 
6850: 74 69 6d 65 2e 0a 2b 20 2a 0a 2b 20 2a 2d 2d 2d  time..+ *.+ *---
6860: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6870: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6880: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6890: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
68a0: 2d 2d 2d 0a 2b 20 2a 2f 0a 2b 0a 2b 73 74 61 74  ---.+ */.+.+stat
68b0: 69 63 20 76 6f 69 64 0a 2b 55 70 64 61 74 65 53  ic void.+UpdateS
68c0: 74 72 69 6e 67 4f 66 41 72 69 74 68 53 65 72 69  tringOfArithSeri
68d0: 65 73 28 54 63 6c 5f 4f 62 6a 20 2a 61 72 69 74  es(Tcl_Obj *arit
68e0: 68 53 65 72 69 65 73 50 74 72 29 0a 2b 7b 0a 2b  hSeriesPtr).+{.+
68f0: 20 20 20 20 41 72 69 74 68 53 65 72 69 65 73 20      ArithSeries 
6900: 2a 61 72 69 74 68 53 65 72 69 65 73 52 65 70 50  *arithSeriesRepP
6910: 74 72 20 3d 0a 2b 09 20 20 20 20 28 41 72 69 74  tr =.+.    (Arit
6920: 68 53 65 72 69 65 73 2a 29 20 61 72 69 74 68 53  hSeries*) arithS
6930: 65 72 69 65 73 50 74 72 2d 3e 69 6e 74 65 72 6e  eriesPtr->intern
6940: 61 6c 52 65 70 2e 74 77 6f 50 74 72 56 61 6c 75  alRep.twoPtrValu
6950: 65 2e 70 74 72 31 3b 0a 2b 20 20 20 20 63 68 61  e.ptr1;.+    cha
6960: 72 20 62 75 66 66 65 72 5b 54 43 4c 5f 49 4e 54  r buffer[TCL_INT
6970: 45 47 45 52 5f 53 50 41 43 45 2b 32 5d 2c 20 2a  EGER_SPACE+2], *
6980: 70 3b 0a 2b 20 20 20 20 54 63 6c 5f 57 69 64 65  p;.+    Tcl_Wide
6990: 49 6e 74 20 69 3b 0a 2b 20 20 20 20 54 63 6c 5f  Int i;.+    Tcl_
69a0: 57 69 64 65 49 6e 74 20 6c 65 6e 67 74 68 20 3d  WideInt length =
69b0: 20 30 2c 20 65 6c 65 3b 0a 2b 20 20 20 20 69 6e   0, ele;.+    in
69c0: 74 20 73 6c 65 6e 3b 0a 2b 0a 2b 20 20 20 20 2f  t slen;.+.+    /
69d0: 2a 0a 2b 20 20 20 20 20 2a 20 50 61 73 73 20 31  *.+     * Pass 1
69e0: 3a 20 65 73 74 69 6d 61 74 65 20 73 70 61 63 65  : estimate space
69f0: 2e 0a 2b 20 20 20 20 20 2a 2f 0a 2b 20 20 20 20  ..+     */.+    
6a00: 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20  for (i = 0; i < 
6a10: 61 72 69 74 68 53 65 72 69 65 73 52 65 70 50 74  arithSeriesRepPt
6a20: 72 2d 3e 6c 65 6e 3b 20 69 2b 2b 29 20 7b 0a 2b  r->len; i++) {.+
6a30: 09 65 6c 65 20 3d 20 61 72 69 74 68 53 65 72 69  .ele = arithSeri
6a40: 65 73 52 65 70 50 74 72 2d 3e 73 74 61 72 74 20  esRepPtr->start 
6a50: 2b 20 28 69 2a 61 72 69 74 68 53 65 72 69 65 73  + (i*arithSeries
6a60: 52 65 70 50 74 72 2d 3e 73 74 65 70 29 3b 0a 2b  RepPtr->step);.+
6a70: 20 20 20 20 2f 2a 0a 2b 20 20 20 20 20 2a 20 4e      /*.+     * N
6a80: 6f 74 65 20 74 68 61 74 20 73 70 72 69 6e 74 66  ote that sprintf
6a90: 20 77 69 6c 6c 20 67 65 6e 65 72 61 74 65 20 61   will generate a
6aa0: 20 63 6f 6d 70 69 6c 65 72 20 77 61 72 6e 69 6e   compiler warnin
6ab0: 67 20 75 6e 64 65 72 0a 2b 20 20 20 20 20 2a 20  g under.+     * 
6ac0: 4d 69 6e 67 77 20 63 6c 61 69 6d 69 6e 67 20 25  Mingw claiming %
6ad0: 49 36 34 20 69 73 20 61 6e 20 75 6e 6b 6e 6f 77  I64 is an unknow
6ae0: 6e 20 66 6f 72 6d 61 74 20 73 70 65 63 69 66 69  n format specifi
6af0: 65 72 2e 0a 2b 20 20 20 20 20 2a 20 4a 75 73 74  er..+     * Just
6b00: 20 69 67 6e 6f 72 65 20 74 68 69 73 20 77 61 72   ignore this war
6b10: 6e 69 6e 67 2e 20 57 65 20 63 61 6e 27 74 20 75  ning. We can't u
6b20: 73 65 20 25 4c 20 61 73 20 74 68 65 20 66 6f 72  se %L as the for
6b30: 6d 61 74 0a 2b 20 20 20 20 20 2a 20 73 70 65 63  mat.+     * spec
6b40: 69 66 69 65 72 20 73 69 6e 63 65 20 74 68 61 74  ifier since that
6b50: 20 67 65 74 73 20 70 72 69 6e 74 65 64 20 61 73   gets printed as
6b60: 20 61 20 33 32 20 62 69 74 20 76 61 6c 75 65 2e   a 32 bit value.
6b70: 0a 2b 20 20 20 20 20 2a 2f 0a 2b 09 73 70 72 69  .+     */.+.spri
6b80: 6e 74 66 28 62 75 66 66 65 72 2c 20 22 25 22 20  ntf(buffer, "%" 
6b90: 54 43 4c 5f 4c 4c 5f 4d 4f 44 49 46 49 45 52 20  TCL_LL_MODIFIER 
6ba0: 22 64 22 2c 20 65 6c 65 29 3b 0a 2b 09 73 6c 65  "d", ele);.+.sle
6bb0: 6e 20 3d 20 73 74 72 6c 65 6e 28 62 75 66 66 65  n = strlen(buffe
6bc0: 72 29 20 2b 20 31 3b 20 2f 2a 20 2b 20 31 20 69  r) + 1; /* + 1 i
6bd0: 73 20 66 6f 72 20 74 68 65 20 73 70 61 63 65 20  s for the space 
6be0: 6f 72 20 74 68 65 20 6e 75 6c 2d 74 65 72 6d 20  or the nul-term 
6bf0: 2a 2f 0a 2b 09 6c 65 6e 67 74 68 20 2b 3d 20 73  */.+.length += s
6c00: 6c 65 6e 3b 0a 2b 20 20 20 20 7d 0a 2b 0a 2b 20  len;.+    }.+.+ 
6c10: 20 20 20 2f 2a 0a 2b 20 20 20 20 20 2a 20 50 61     /*.+     * Pa
6c20: 73 73 20 32 3a 20 67 65 6e 65 72 61 74 65 20 74  ss 2: generate t
6c30: 68 65 20 73 74 72 69 6e 67 20 72 65 70 72 2e 0a  he string repr..
6c40: 2b 20 20 20 20 20 2a 2f 0a 2b 0a 2b 20 20 20 20  +     */.+.+    
6c50: 70 20 3d 20 61 72 69 74 68 53 65 72 69 65 73 50  p = arithSeriesP
6c60: 74 72 2d 3e 62 79 74 65 73 20 3d 20 63 6b 61 6c  tr->bytes = ckal
6c70: 6c 6f 63 28 6c 65 6e 67 74 68 29 3b 0a 2b 20 20  loc(length);.+  
6c80: 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20    for (i = 0; i 
6c90: 3c 20 61 72 69 74 68 53 65 72 69 65 73 52 65 70  < arithSeriesRep
6ca0: 50 74 72 2d 3e 6c 65 6e 3b 20 69 2b 2b 29 20 7b  Ptr->len; i++) {
6cb0: 0a 2b 09 65 6c 65 20 3d 20 61 72 69 74 68 53 65  .+.ele = arithSe
6cc0: 72 69 65 73 52 65 70 50 74 72 2d 3e 73 74 61 72  riesRepPtr->star
6cd0: 74 20 2b 20 28 69 2a 61 72 69 74 68 53 65 72 69  t + (i*arithSeri
6ce0: 65 73 52 65 70 50 74 72 2d 3e 73 74 65 70 29 3b  esRepPtr->step);
6cf0: 0a 2b 09 73 70 72 69 6e 74 66 28 62 75 66 66 65  .+.sprintf(buffe
6d00: 72 2c 20 22 25 22 20 54 43 4c 5f 4c 4c 5f 4d 4f  r, "%" TCL_LL_MO
6d10: 44 49 46 49 45 52 20 22 64 22 2c 20 65 6c 65 29  DIFIER "d", ele)
6d20: 3b 0a 2b 09 73 6c 65 6e 20 3d 20 73 74 72 6c 65  ;.+.slen = strle
6d30: 6e 28 62 75 66 66 65 72 29 3b 0a 2b 09 73 74 72  n(buffer);.+.str
6d40: 63 70 79 28 70 2c 20 62 75 66 66 65 72 29 3b 0a  cpy(p, buffer);.
6d50: 2b 09 70 5b 73 6c 65 6e 5d 20 3d 20 27 20 27 3b  +.p[slen] = ' ';
6d60: 0a 2b 09 70 20 2b 3d 20 73 6c 65 6e 2b 31 3b 0a  .+.p += slen+1;.
6d70: 2b 20 20 20 20 7d 0a 2b 20 20 20 20 69 66 20 28  +    }.+    if (
6d80: 6c 65 6e 67 74 68 20 3e 20 30 29 20 61 72 69 74  length > 0) arit
6d90: 68 53 65 72 69 65 73 50 74 72 2d 3e 62 79 74 65  hSeriesPtr->byte
6da0: 73 5b 6c 65 6e 67 74 68 2d 31 5d 20 3d 20 27 5c  s[length-1] = '\
6db0: 30 27 3b 0a 2b 20 20 20 20 61 72 69 74 68 53 65  0';.+    arithSe
6dc0: 72 69 65 73 50 74 72 2d 3e 6c 65 6e 67 74 68 20  riesPtr->length 
6dd0: 3d 20 6c 65 6e 67 74 68 3b 0a 2b 7d 0a 2b 0a 2b  = length;.+}.+.+
6de0: 2f 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  /*.+ *----------
6df0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6e00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6e10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6e20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a  ------------.+ *
6e30: 0a 2b 20 2a 20 53 65 74 41 72 69 74 68 53 65 72  .+ * SetArithSer
6e40: 69 65 73 46 72 6f 6d 41 6e 79 20 2d 2d 0a 2b 20  iesFromAny --.+ 
6e50: 2a 0a 2b 20 2a 20 09 54 68 65 20 41 72 69 74 68  *.+ * .The Arith
6e60: 6d 65 74 69 63 20 53 65 72 69 65 73 20 6f 62 6a  metic Series obj
6e70: 65 63 74 20 69 73 20 6a 75 73 74 20 61 6e 20 77  ect is just an w
6e80: 61 79 20 74 6f 20 6f 70 74 69 6d 69 7a 65 0a 2b  ay to optimize.+
6e90: 20 2a 20 09 4c 69 73 74 73 20 73 70 61 63 65 20   * .Lists space 
6ea0: 63 6f 6d 70 6c 65 78 69 74 79 2c 20 73 6f 20 6e  complexity, so n
6eb0: 6f 20 6f 6e 65 20 73 68 6f 75 6c 64 20 74 72 79  o one should try
6ec0: 20 74 6f 20 63 6f 6e 76 65 72 74 0a 2b 20 2a 20   to convert.+ * 
6ed0: 09 61 20 73 74 72 69 6e 67 20 74 6f 20 61 6e 20  .a string to an 
6ee0: 41 72 69 74 68 6d 65 74 69 63 20 53 65 72 69 65  Arithmetic Serie
6ef0: 73 20 6f 62 6a 65 63 74 2e 0a 2b 20 2a 0a 2b 20  s object..+ *.+ 
6f00: 2a 20 09 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  * .This function
6f10: 20 69 73 20 68 65 72 65 20 6a 75 73 74 20 74 6f   is here just to
6f20: 20 70 6f 70 75 6c 61 74 65 20 74 68 65 20 54 79   populate the Ty
6f30: 70 65 20 73 74 72 75 63 74 75 72 65 2e 0a 2b 20  pe structure..+ 
6f40: 2a 0a 2b 20 2a 20 52 65 73 75 6c 74 73 3a 0a 2b  *.+ * Results:.+
6f50: 20 2a 0a 2b 20 2a 20 09 54 68 65 20 72 65 73 75   *.+ * .The resu
6f60: 6c 74 20 69 73 20 61 6c 77 61 79 73 20 54 43 4c  lt is always TCL
6f70: 5f 45 52 52 4f 52 2e 20 42 75 74 20 73 65 65 20  _ERROR. But see 
6f80: 53 69 64 65 20 45 66 66 65 63 74 73 2e 0a 2b 20  Side Effects..+ 
6f90: 2a 0a 2b 20 2a 20 53 69 64 65 20 65 66 66 65 63  *.+ * Side effec
6fa0: 74 73 3a 0a 2b 20 2a 0a 2b 20 2a 20 09 54 63 6c  ts:.+ *.+ * .Tcl
6fb0: 20 50 61 6e 69 63 20 69 66 20 63 61 6c 6c 65 64   Panic if called
6fc0: 2e 0a 2b 20 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d  ..+ *.+ *-------
6fd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6fe0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6ff0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
7000: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
7010: 2b 20 2a 2f 0a 2b 0a 2b 73 74 61 74 69 63 20 69  + */.+.+static i
7020: 6e 74 0a 2b 53 65 74 41 72 69 74 68 53 65 72 69  nt.+SetArithSeri
7030: 65 73 46 72 6f 6d 41 6e 79 28 69 6e 74 65 72 70  esFromAny(interp
7040: 2c 20 6f 62 6a 50 74 72 29 0a 2b 20 20 20 20 54  , objPtr).+    T
7050: 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72  cl_Interp *inter
7060: 70 3b 09 09 2f 2a 20 55 73 65 64 20 66 6f 72 20  p;../* Used for 
7070: 65 72 72 6f 72 20 72 65 70 6f 72 74 69 6e 67 20  error reporting 
7080: 69 66 20 6e 6f 74 20 4e 55 4c 4c 2e 20 2a 2f 0a  if not NULL. */.
7090: 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 6f 62  +    Tcl_Obj *ob
70a0: 6a 50 74 72 3b 09 09 2f 2a 20 54 68 65 20 6f 62  jPtr;../* The ob
70b0: 6a 65 63 74 20 74 6f 20 63 6f 6e 76 65 72 74 2e  ject to convert.
70c0: 20 2a 2f 0a 2b 7b 0a 2b 20 20 20 20 54 63 6c 5f   */.+{.+    Tcl_
70d0: 50 61 6e 69 63 28 22 53 65 74 41 72 69 74 68 53  Panic("SetArithS
70e0: 65 72 69 65 73 46 72 6f 6d 41 6e 79 3a 20 73 68  eriesFromAny: sh
70f0: 6f 75 6c 64 20 6e 65 76 65 72 20 62 65 20 63 61  ould never be ca
7100: 6c 6c 65 64 22 29 3b 0a 2b 20 20 20 20 72 65 74  lled");.+    ret
7110: 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 2b  urn TCL_ERROR;.+
7120: 7d 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63  }.Index: generic
7130: 2f 74 63 6c 53 74 75 62 49 6e 69 74 2e 63 0a 3d  /tclStubInit.c.=
7140: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
7150: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
7160: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
7170: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
7180: 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76  ==.RCS file: /cv
7190: 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65  sroot/tcl/tcl/ge
71a0: 6e 65 72 69 63 2f 74 63 6c 53 74 75 62 49 6e 69  neric/tclStubIni
71b0: 74 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 6e 67  t.c,v.retrieving
71c0: 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 30 35 0a   revision 1.105.
71d0: 64 69 66 66 20 2d 75 20 2d 72 31 2e 31 30 35 20  diff -u -r1.105 
71e0: 74 63 6c 53 74 75 62 49 6e 69 74 2e 63 0a 2d 2d  tclStubInit.c.--
71f0: 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 53 74 75  - generic/tclStu
7200: 62 49 6e 69 74 2e 63 09 31 34 20 4f 63 74 20 32  bInit.c.14 Oct 2
7210: 30 30 34 20 31 35 3a 30 36 3a 30 33 20 2d 30 30  004 15:06:03 -00
7220: 30 30 09 31 2e 31 30 35 0a 2b 2b 2b 20 67 65 6e  00.1.105.+++ gen
7230: 65 72 69 63 2f 74 63 6c 53 74 75 62 49 6e 69 74  eric/tclStubInit
7240: 2e 63 09 32 32 20 4f 63 74 20 32 30 30 34 20 32  .c.22 Oct 2004 2
7250: 33 3a 35 33 3a 33 32 20 2d 30 30 30 30 0a 40 40  3:53:32 -0000.@@
7260: 20 2d 39 33 32 2c 36 20 2b 39 33 32 2c 39 20 40   -932,6 +932,9 @
7270: 40 0a 20 20 20 20 20 54 63 6c 5f 4c 69 6d 69 74  @.     Tcl_Limit
7280: 47 65 74 43 6f 6d 6d 61 6e 64 73 2c 20 2f 2a 20  GetCommands, /* 
7290: 35 33 32 20 2a 2f 0a 20 20 20 20 20 54 63 6c 5f  532 */.     Tcl_
72a0: 4c 69 6d 69 74 47 65 74 54 69 6d 65 2c 20 2f 2a  LimitGetTime, /*
72b0: 20 35 33 33 20 2a 2f 0a 20 20 20 20 20 54 63 6c   533 */.     Tcl
72c0: 5f 4c 69 6d 69 74 47 65 74 47 72 61 6e 75 6c 61  _LimitGetGranula
72d0: 72 69 74 79 2c 20 2f 2a 20 35 33 34 20 2a 2f 0a  rity, /* 534 */.
72e0: 2b 20 20 20 20 54 63 6c 5f 4e 65 77 41 72 69 74  +    Tcl_NewArit
72f0: 68 53 65 72 69 65 73 4f 62 6a 2c 20 2f 2a 20 35  hSeriesObj, /* 5
7300: 33 35 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 41  35 */.+    Tcl_A
7310: 72 69 74 68 53 65 72 69 65 73 4f 62 6a 49 6e 64  rithSeriesObjInd
7320: 65 78 2c 20 2f 2a 20 35 33 36 20 2a 2f 0a 2b 20  ex, /* 536 */.+ 
7330: 20 20 20 54 63 6c 5f 41 72 69 74 68 53 65 72 69     Tcl_ArithSeri
7340: 65 73 4f 62 6a 4c 65 6e 67 74 68 2c 20 2f 2a 20  esObjLength, /* 
7350: 35 33 37 20 2a 2f 0a 20 7d 3b 0a 20 0a 20 2f 2a  537 */. };. . /*
7360: 20 21 45 4e 44 21 3a 20 44 6f 20 6e 6f 74 20 65   !END!: Do not e
7370: 64 69 74 20 61 62 6f 76 65 20 74 68 69 73 20 6c  dit above this l
7380: 69 6e 65 2e 20 2a 2f 0a                          ine. */.