826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
|
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
|
-
+
-
-
-
-
-
-
|
localPtr->flags |= VAR_NAMED_GROUP;
} else if ((length == 6)
&& (fieldValues[i][1] == 'v')
&& (strcmp(fieldValues[i], "-value") == 0)) {
/*
* Handle '-value value'. Must only be specified inside
* a name group and if a default option has already been
* a name group.
* set.
*/
if (localPtr->defValuePtr == NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"-default required for -value", -1));
goto parseError;
}
if (lastArgSpecPtr == NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"-name required for -value", -1));
goto parseError;
}
if (lastArgSpecPtr->valuePtr != NULL) {
Tcl_DecrRefCount(lastArgSpecPtr->valuePtr);
|
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
|
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
|
-
+
|
Tcl_Obj *procNameObj, /* Procedure name for error reporting. */
Tcl_Obj *const *argObjs, /* Array of input arguments */
int argCt) /* Number of input arguments */
{
CallFrame *framePtr = ((Interp *)interp)->varFramePtr;
register Proc *procPtr = framePtr->procPtr;
register Var *varPtr = framePtr->compiledLocals;
int numArgs = procPtr->numArgs, i, iLocal, iArg;
int numArgs = procPtr->numArgs, iLocal, iArg;
Tcl_Obj *objPtr;
CompiledLocal *localPtr, *namedLocalPtr;
ExtendedArgSpec *argSpecPtr;
int optLength, result;
const char *optStr;
for (iLocal = 0, iArg = 0, localPtr = procPtr->firstLocalPtr;
|
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
|
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
|
+
-
+
|
* Start of a named argument group. Handle all of them together.
*/
for (; iArg < argCt; iArg++) {
optStr = TclGetString(argObjs[iArg]);
if (*optStr != '-') {
/* argument without leading dash, end named group */
return TCL_ERROR;
break;
}
optStr++;
optLength = strlen(optStr);
if ((optLength == 1) && (optStr[0] == '-')) {
/* end-of-option marker (--) */
|
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
|
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
|
-
|
*----------------------------------------------------------------------
*/
void
TclProcCleanupProc(
register Proc *procPtr) /* Procedure to be deleted. */
{
register CompiledLocal *localPtr;
Tcl_Obj *bodyPtr = procPtr->bodyPtr;
Tcl_HashEntry *hePtr = NULL;
CmdFrame *cfPtr = NULL;
Interp *iPtr = procPtr->iPtr;
if (bodyPtr != NULL) {
Tcl_DecrRefCount(bodyPtr);
|