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