Overview
| Artifact ID: | 6969f7769abbbcfa4c7a5f32fed0b30b4272ac8c |
|---|---|
| Ticket: | 1017532fffffffffffffffffffffffffffffffff |
| Date: | 2004-08-27 18:55:53 |
| User: | nobody |
| Artifact Attached: | c0353fafe39fdb8c09d7e866f2573c62f4b23580 |
| Filename: | lsort-indices-diff.txt |
| Description: | Ref. Implementation v1.3 for TIP#217 |
Content:
*** tcl8.4.6/generic/tclCmdIL.c Thu Jul 17 13:29:19 2003
--- tclCmdIL.c Fri Aug 27 04:48:36 2004
***************
*** 3255,3261 ****
int objc; /* Number of arguments. */
Tcl_Obj *CONST objv[]; /* Argument values. */
{
! int i, index, unique;
Tcl_Obj *resultPtr;
int length;
Tcl_Obj *cmdPtr, **listObjPtrs;
--- 3255,3261 ----
int objc; /* Number of arguments. */
Tcl_Obj *CONST objv[]; /* Argument values. */
{
! int i, index, unique, indices;
Tcl_Obj *resultPtr;
int length;
Tcl_Obj *cmdPtr, **listObjPtrs;
***************
*** 3266,3272 ****
* comparison function */
static CONST char *switches[] = {
"-ascii", "-command", "-decreasing", "-dictionary", "-increasing",
! "-index", "-integer", "-real", "-unique", (char *) NULL
};
resultPtr = Tcl_GetObjResult(interp);
--- 3266,3272 ----
* comparison function */
static CONST char *switches[] = {
"-ascii", "-command", "-decreasing", "-dictionary", "-increasing",
! "-index", "-integer", "-real", "-unique", "-indices", (char *) NULL
};
resultPtr = Tcl_GetObjResult(interp);
***************
*** 3286,3291 ****
--- 3286,3292 ----
sortInfo.resultCode = TCL_OK;
cmdPtr = NULL;
unique = 0;
+ indices = 0;
for (i = 1; i < objc-1; i++) {
if (Tcl_GetIndexFromObj(interp, objv[i], switches, "option", 0, &index)
!= TCL_OK) {
***************
*** 3337,3342 ****
--- 3338,3346 ----
case 8: /* -unique */
unique = 1;
break;
+ case 9: /* -indices */
+ indices = 1;
+ break;
}
}
if (sortInfo.sortMode == SORTMODE_COMMAND) {
***************
*** 3383,3398 ****
Tcl_ResetResult(interp);
resultPtr = Tcl_GetObjResult(interp);
if (unique) {
! for (; elementPtr != NULL; elementPtr = elementPtr->nextPtr){
! if (elementPtr->count == 0) {
! Tcl_ListObjAppendElement(interp, resultPtr,
elementPtr->objPtr);
}
}
} else {
! for (; elementPtr != NULL; elementPtr = elementPtr->nextPtr){
! Tcl_ListObjAppendElement(interp, resultPtr,
elementPtr->objPtr);
}
}
}
--- 3387,3418 ----
Tcl_ResetResult(interp);
resultPtr = Tcl_GetObjResult(interp);
if (unique) {
! if (indices) {
! for (; elementPtr != NULL; elementPtr = elementPtr->nextPtr){
! if (elementPtr->count == 0) {
! Tcl_ListObjAppendElement(interp, resultPtr,
! Tcl_NewIntObj(elementPtr - &elementArray[0]));
! }
! }
! } else {
! for (; elementPtr != NULL; elementPtr = elementPtr->nextPtr){
! if (elementPtr->count == 0) {
! Tcl_ListObjAppendElement(interp, resultPtr,
elementPtr->objPtr);
+ }
}
}
} else {
! if (indices) {
! for (; elementPtr != NULL; elementPtr = elementPtr->nextPtr){
! Tcl_ListObjAppendElement(interp, resultPtr,
! Tcl_NewIntObj(elementPtr - &elementArray[0]));
! }
! } else {
! for (; elementPtr != NULL; elementPtr = elementPtr->nextPtr){
! Tcl_ListObjAppendElement(interp, resultPtr,
elementPtr->objPtr);
+ }
}
}
}
