From d4e8db78c9dc1d7cdb1d515f55b7b49faf331ea0 Mon Sep 17 00:00:00 2001 From: griffin Date: Fri, 26 May 2023 17:15:12 +0000 Subject: Function name cleanup. --- generic/tcl.h | 67 ++++++++++++++++++++++-------------------------- generic/tclArithSeries.c | 3 +-- generic/tclCmdAH.c | 7 +++-- generic/tclCmdIL.c | 12 ++++----- generic/tclDictObj.c | 7 +++-- generic/tclExecute.c | 21 +++++++-------- generic/tclInt.h | 3 ++- generic/tclListObj.c | 22 ++++++++-------- generic/tclObj.c | 50 +++++------------------------------- generic/tclTestABSList.c | 33 ++++++++---------------- generic/tclUtil.c | 15 +++-------- 11 files changed, 88 insertions(+), 152 deletions(-) diff --git a/generic/tcl.h b/generic/tcl.h index ac4b252..3db2dd8 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -609,25 +609,25 @@ typedef void (Tcl_FinalizeNotifierProc) (void *clientData); typedef void (Tcl_MainLoopProc) (void); /* Abstract List functions */ -typedef Tcl_Size (Tcl_ALLengthProc) (struct Tcl_Obj *listPtr); -typedef int (Tcl_ALIndexProc) (Tcl_Interp *interp, struct Tcl_Obj *listPtr, +typedef Tcl_Size (Tcl_ObjTypeLengthProc) (struct Tcl_Obj *listPtr); +typedef int (Tcl_ObjTypeIndexProc) (Tcl_Interp *interp, struct Tcl_Obj *listPtr, Tcl_Size index, struct Tcl_Obj** elemObj); -typedef int (Tcl_ALSliceProc) (Tcl_Interp *interp, struct Tcl_Obj *listPtr, +typedef int (Tcl_ObjTypeSliceProc) (Tcl_Interp *interp, struct Tcl_Obj *listPtr, Tcl_Size fromIdx, Tcl_Size toIdx, struct Tcl_Obj **newObjPtr); -typedef int (Tcl_ALReverseProc) (Tcl_Interp *interp, struct Tcl_Obj *listPtr, +typedef int (Tcl_ObjTypeReverseProc) (Tcl_Interp *interp, struct Tcl_Obj *listPtr, struct Tcl_Obj **newObjPtr); -typedef int (Tcl_ALGetElements) (Tcl_Interp *interp, struct Tcl_Obj *listPtr, +typedef int (Tcl_ObjTypeGetElements) (Tcl_Interp *interp, struct Tcl_Obj *listPtr, Tcl_Size *objcptr, struct Tcl_Obj ***objvptr); -typedef struct Tcl_Obj* (Tcl_ALSetElement) (Tcl_Interp *interp, struct Tcl_Obj *listPtr, +typedef struct Tcl_Obj* (Tcl_ObjTypeSetElement) (Tcl_Interp *interp, struct Tcl_Obj *listPtr, Tcl_Size indexCount, struct Tcl_Obj *const indexArray[], struct Tcl_Obj *valueObj); -typedef int (Tcl_ALReplaceProc) (Tcl_Interp *interp, struct Tcl_Obj *listObj, +typedef int (Tcl_ObjTypeReplaceProc) (Tcl_Interp *interp, struct Tcl_Obj *listObj, Tcl_Size first, Tcl_Size numToDelete, Tcl_Size numToInsert, struct Tcl_Obj *const insertObjs[]); -typedef int (Tcl_ALGetDblProc) (Tcl_Interp *interp, struct Tcl_Obj *objPtr, +typedef int (Tcl_ObjTypeGetDblProc) (Tcl_Interp *interp, struct Tcl_Obj *objPtr, double *doublePtr); #ifndef TCL_NO_DEPRECATED @@ -661,37 +661,30 @@ typedef struct Tcl_ObjType { size_t version; /* List emulation functions - ObjType Version 1 */ - Tcl_ALLengthProc *lengthProc; /* Return the [llength] of the - ** AbstractList */ - void *reserved; - Tcl_ALIndexProc *indexProc; /* Return a value (Tcl_Obj) for - ** [lindex $al $index] */ - Tcl_ALSliceProc *sliceProc; /* Return an AbstractList for - ** [lrange $al $start $end] */ - Tcl_ALReverseProc *reverseProc; /* Return an AbstractList for - ** [lreverse $al] */ - Tcl_ALGetElements *getElementsProc; /* Return an objv[] of all elements in - ** the list */ - Tcl_ALSetElement *setElementProc; /* Replace the element at the indicie - ** with the given valueObj. */ - Tcl_ALReplaceProc *replaceProc; /* Replace subset with subset */ - Tcl_ALGetDblProc *getDoubleProc; /* GetDouble from internal rep */ + Tcl_ObjTypeLengthProc *lengthProc; /* Return the [llength] of the + ** AbstractList */ + Tcl_ObjTypeIndexProc *indexProc; /* Return a value (Tcl_Obj) for + ** [lindex $al $index] */ + Tcl_ObjTypeSliceProc *sliceProc; /* Return an AbstractList for + ** [lrange $al $start $end] */ + Tcl_ObjTypeReverseProc *reverseProc; /* Return an AbstractList for + ** [lreverse $al] */ + Tcl_ObjTypeGetElements *getElementsProc; /* Return an objv[] of all elements in + ** the list */ + Tcl_ObjTypeSetElement *setElementProc; /* Replace the element at the indicie + ** with the given valueObj. */ + Tcl_ObjTypeReplaceProc *replaceProc; /* Replace subset with subset */ + Tcl_ObjTypeGetDblProc *getDoubleProc; /* GetDouble from internal rep */ } Tcl_ObjType; -#define TCL_OBJTYPE_V0 0, /* Pre-Tcl 9 */ \ - NULL, \ - NULL, \ - NULL, \ - NULL, \ - NULL, \ - NULL, \ - NULL, \ - NULL, \ - NULL -#define TCL_OBJTYPE_CURRENT 1 -#define TCL_OBJTYPE_V1(a,b,c,d,e,f,g,h,i) \ - TCL_OBJTYPE_CURRENT, \ - a,b,c,d,e,f,g,h,i /* Tcl 9 - AbstractLists */ +#define TCL_OBJTYPE_V0 0,0,0,0,0,0,0,0,0 /* Pre-Tcl 9 */ +#define TCL_OBJTYPE_V1(a) 1,a,0,0,0,0,0,0,0 /* Tcl 9 Version 1 */ + +#define TCL_OBJTYPE_V2(a,b,c,d,e,f,g,h) 2, \ + a,b,c,d,e,f,g,h /* Tcl 9 - AbstractLists */ + +#define TCL_OBJTYPE_CURRENT 2 + /* * The following structure stores an internal representation (internalrep) for diff --git a/generic/tclArithSeries.c b/generic/tclArithSeries.c index f8428e6..543e989 100755 --- a/generic/tclArithSeries.c +++ b/generic/tclArithSeries.c @@ -87,9 +87,8 @@ static const Tcl_ObjType arithSeriesType = { DupArithSeriesInternalRep, /* dupIntRepProc */ UpdateStringOfArithSeries, /* updateStringProc */ SetArithSeriesFromAny, /* setFromAnyProc */ - TCL_OBJTYPE_V1( + TCL_OBJTYPE_V2( ArithSeriesObjLength, - NULL, TclArithSeriesObjIndex, TclArithSeriesObjRange, TclArithSeriesObjReverse, diff --git a/generic/tclCmdAH.c b/generic/tclCmdAH.c index 4c15daf..7242881 100644 --- a/generic/tclCmdAH.c +++ b/generic/tclCmdAH.c @@ -2807,8 +2807,7 @@ EachloopCmd( &statePtr->varcList[i], &statePtr->varvList[i]); /* Values */ - if (!TclHasInternalRep(objv[2+i*2], &tclListType) && - ABSTRACTLIST_PROC(objv[2+i*2],indexProc)) { + if (TclObjTypeHasProc(objv[2+i*2],indexProc)) { /* Special case for AbstractList */ statePtr->aCopyList[i] = Tcl_DuplicateObj(objv[2+i*2]); if (statePtr->aCopyList[i] == NULL) { @@ -2816,7 +2815,7 @@ EachloopCmd( goto done; } /* Don't compute values here, wait until the last moment */ - statePtr->argcList[i] = ABSTRACTLIST_PROC(statePtr->aCopyList[i], lengthProc)(statePtr->aCopyList[i]); + statePtr->argcList[i] = TclObjTypeHasProc(statePtr->aCopyList[i], lengthProc)(statePtr->aCopyList[i]); } else { statePtr->aCopyList[i] = TclDuplicatePureObj( interp, objv[2+i*2], &tclListType); @@ -2958,7 +2957,7 @@ ForeachAssignments( for (i=0 ; inumLists ; i++) { int isAbstractList = - ABSTRACTLIST_PROC(statePtr->aCopyList[i],indexProc) != NULL; + TclObjTypeHasProc(statePtr->aCopyList[i],indexProc) != NULL; for (v=0 ; vvarcList[i] ; v++) { k = statePtr->index[i]++; diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index 60af33c..a29af82 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -2214,8 +2214,8 @@ Tcl_JoinObjCmd( * pointer to its array of element pointers. */ - if (ABSTRACTLIST_PROC(objv[1], getElementsProc)) { - listLen = ABSTRACTLIST_PROC(objv[1], lengthProc)(objv[1]); + if (TclObjTypeHasProc(objv[1], getElementsProc)) { + listLen = TclObjTypeHasProc(objv[1], lengthProc)(objv[1]); isAbstractList = (listLen ? 1 : 0); if (listLen > 1 && Tcl_ObjTypeGetElements(interp, objv[1], &listLen, &elemPtrs) @@ -2767,7 +2767,7 @@ Tcl_LrangeObjCmd( return result; } - if (ABSTRACTLIST_PROC(objv[1], sliceProc)) { + if (TclObjTypeHasProc(objv[1], sliceProc)) { Tcl_Obj *resultObj; int status = Tcl_ObjTypeSlice(interp, objv[1], first, last, &resultObj); if (status == TCL_OK) { @@ -3190,7 +3190,7 @@ Tcl_LreverseObjCmd( * Handle AbstractList special case - do not shimmer into a list, if it * supports a private Reverse function, just to reverse it. */ - if (ABSTRACTLIST_PROC(objv[1], reverseProc)) { + if (TclObjTypeHasProc(objv[1], reverseProc)) { Tcl_Obj *resultObj; if (Tcl_ObjTypeReverse(interp, objv[1], &resultObj) == TCL_OK) { @@ -4474,7 +4474,7 @@ Tcl_LsetObjCmd( if (objc == 4) { finalValuePtr = TclLsetList(interp, listPtr, objv[2], objv[3]); } else { - if (ABSTRACTLIST_PROC(listPtr, setElementProc)) { + if (TclObjTypeHasProc(listPtr, setElementProc)) { finalValuePtr = Tcl_ObjTypeSetElement(interp, listPtr, objc-3, objv+2, objv[objc-1]); if (finalValuePtr) { @@ -4782,7 +4782,7 @@ Tcl_LsortObjCmd( sortInfo.compareCmdPtr = newCommandPtr; } - if (ABSTRACTLIST_PROC(objv[1], getElementsProc)) { + if (TclObjTypeHasProc(objv[1], getElementsProc)) { sortInfo.resultCode = Tcl_ObjTypeGetElements(interp, listObj, &length, &listObjPtrs); } else { diff --git a/generic/tclDictObj.c b/generic/tclDictObj.c index d37d279..5da29ed 100644 --- a/generic/tclDictObj.c +++ b/generic/tclDictObj.c @@ -61,8 +61,8 @@ static Tcl_ObjCmdProc DictForNRCmd; static Tcl_ObjCmdProc DictMapNRCmd; static Tcl_NRPostProc DictForLoopCallback; static Tcl_NRPostProc DictMapLoopCallback; -static Tcl_ALLengthProc DictAsListLength; -static Tcl_ALIndexProc DictAsListIndex; +static Tcl_ObjTypeLengthProc DictAsListLength; +static Tcl_ObjTypeIndexProc DictAsListIndex; /* * Table of dict subcommand names and implementations. @@ -149,10 +149,9 @@ const Tcl_ObjType tclDictType = { DupDictInternalRep, /* dupIntRepProc */ UpdateStringOfDict, /* updateStringProc */ SetDictFromAny, /* setFromAnyProc */ - TCL_OBJTYPE_V1( /* Extended type for AbstractLists */ + TCL_OBJTYPE_V2( /* Extended type for AbstractLists */ DictAsListLength, /* return "list" length of dict value w/o * shimmering */ - NULL, DictAsListIndex, /* return key or value at "list" index * location. (keysare at even indicies, * values at odd indicies) */ diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 8fc2ae6..a13d9d9 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -4669,8 +4669,8 @@ TEBCresume( TRACE(("\"%.30s\" \"%.30s\" => ", O2S(valuePtr), O2S(value2Ptr))); /* special case for AbstractList */ - if (ABSTRACTLIST_PROC(valuePtr,indexProc)) { - length = ABSTRACTLIST_PROC(valuePtr, lengthProc)(valuePtr); + if (TclObjTypeHasProc(valuePtr,indexProc)) { + length = TclObjTypeHasProc(valuePtr, lengthProc)(valuePtr); if (TclGetIntForIndexM(interp, value2Ptr, length-1, &index)!=TCL_OK) { CACHE_STACK_INFO(); TRACE_ERROR(interp); @@ -4758,8 +4758,8 @@ TEBCresume( */ /* special case for AbstractList */ - if (ABSTRACTLIST_PROC(valuePtr,indexProc)) { - length = ABSTRACTLIST_PROC(valuePtr, lengthProc)(valuePtr); + if (TclObjTypeHasProc(valuePtr,indexProc)) { + length = TclObjTypeHasProc(valuePtr, lengthProc)(valuePtr); /* Decode end-offset index values. */ index = TclIndexDecode(opnd, length-1); @@ -4848,7 +4848,7 @@ TEBCresume( * Compute the new variable value. */ - if (ABSTRACTLIST_PROC(valuePtr, setElementProc)) { + if (TclObjTypeHasProc(valuePtr, setElementProc)) { objResultPtr = Tcl_ObjTypeSetElement(interp, valuePtr, numIndices, @@ -4977,7 +4977,7 @@ TEBCresume( fromIdx = TclIndexDecode(fromIdx, objc - 1); - if (ABSTRACTLIST_PROC(valuePtr, sliceProc)) { + if (TclObjTypeHasProc(valuePtr, sliceProc)) { if (Tcl_ObjTypeSlice(interp, valuePtr, fromIdx, toIdx, &objResultPtr) != TCL_OK) { objResultPtr = NULL; } @@ -5007,7 +5007,7 @@ TEBCresume( if (length > 0) { Tcl_Size i = 0; Tcl_Obj *o; - int isAbstractList = ABSTRACTLIST_PROC(value2Ptr,indexProc) != NULL; + int isAbstractList = TclObjTypeHasProc(value2Ptr,indexProc) != NULL; /* * An empty list doesn't match anything. @@ -5031,9 +5031,10 @@ TEBCresume( if (s1len == s2len) { match = (memcmp(s1, s2, s1len) == 0); } - if (isAbstractList) { - TclDecrRefCount(o); - } + + /* Could be an ephemeral abstract obj */ + TclBumpObj(o); + i++; } while (i < length && match == 0); } diff --git a/generic/tclInt.h b/generic/tclInt.h index a4dca79..d052c0e 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -1086,11 +1086,12 @@ typedef struct ActiveInterpTrace { #define TCL_TRACE_ENTER_EXEC 1 #define TCL_TRACE_LEAVE_EXEC 2 -#define ABSTRACTLIST_PROC(objPtr, proc) \ +#define TclObjTypeHasProc(objPtr, proc) \ (((objPtr)->typePtr \ && (objPtr)->typePtr->version == TCL_OBJTYPE_CURRENT) ? \ ((objPtr)->typePtr)->proc : NULL) + MODULE_SCOPE Tcl_Size TclLengthOne(Tcl_Obj *); diff --git a/generic/tclListObj.c b/generic/tclListObj.c index de74539..88f3e25 100644 --- a/generic/tclListObj.c +++ b/generic/tclListObj.c @@ -156,7 +156,7 @@ const Tcl_ObjType tclListType = { DupListInternalRep, /* dupIntRepProc */ UpdateStringOfList, /* updateStringProc */ SetListFromAny, /* setFromAnyProc */ - TCL_OBJTYPE_V1( + TCL_OBJTYPE_V2( ListLength, NULL, NULL, @@ -164,7 +164,6 @@ const Tcl_ObjType tclListType = { NULL, NULL, NULL, - NULL, NULL) }; @@ -1628,7 +1627,7 @@ Tcl_ListObjGetElements( { ListRep listRep; - if (ABSTRACTLIST_PROC(objPtr, getElementsProc) && + if (TclObjTypeHasProc(objPtr, getElementsProc) && objPtr->typePtr->getElementsProc(interp, objPtr, objcPtr, objvPtr) == TCL_OK) { return TCL_OK; } else if (TclListObjGetRep(interp, objPtr, &listRep) != TCL_OK) { @@ -1920,7 +1919,7 @@ Tcl_ListObjIndex( { Tcl_Obj **elemObjs; Tcl_Size numElems; - int hasAbstractList = ABSTRACTLIST_PROC(listObj,indexProc) != 0; + int hasAbstractList = TclObjTypeHasProc(listObj,indexProc) != 0; /* Empty string => empty list. Avoid unnecessary shimmering */ if (listObj->bytes == &tclEmptyString) { @@ -1931,6 +1930,7 @@ Tcl_ListObjIndex( if (hasAbstractList) { return Tcl_ObjTypeIndex(interp, listObj, index, objPtrPtr); } + if (TclListObjGetElementsM(interp, listObj, &numElems, &elemObjs) != TCL_OK) { return TCL_ERROR; @@ -1981,7 +1981,7 @@ Tcl_ListObjLength( return TCL_OK; } - Tcl_Size (*lengthProc)(Tcl_Obj *obj) = ABSTRACTLIST_PROC(listObj, lengthProc); + Tcl_Size (*lengthProc)(Tcl_Obj *obj) = TclObjTypeHasProc(listObj, lengthProc); if (lengthProc) { *lenPtr = lengthProc(listObj); return TCL_OK; @@ -2065,7 +2065,7 @@ Tcl_ListObjReplace( Tcl_Panic("%s called with shared object", "Tcl_ListObjReplace"); } - if (ABSTRACTLIST_PROC(listObj, replaceProc)) { + if (TclObjTypeHasProc(listObj, replaceProc)) { return Tcl_ObjTypeReplace(interp, listObj, first, numToDelete, numToInsert, insertObjs); } @@ -2632,8 +2632,8 @@ TclLindexFlat( Tcl_Size i; /* Handle AbstractList as special case */ - if (ABSTRACTLIST_PROC(listObj,indexProc)) { - Tcl_Size listLen = ABSTRACTLIST_PROC(listObj,lengthProc)(listObj); + if (TclObjTypeHasProc(listObj,indexProc)) { + Tcl_Size listLen = TclObjTypeHasProc(listObj,lengthProc)(listObj); Tcl_Size index; Tcl_Obj *elemObj = NULL; for (i=0 ; itypePtr ? objPtr->typePtr : typePtr; - + TclInvalidateStringRep(dupPtr); assert(dupPtr->typePtr == NULL); @@ -2578,7 +2542,7 @@ Tcl_GetDoubleFromObj( double *dblPtr) /* Place to store resulting double. */ { do { - Tcl_ALGetDblProc *dblProc = ABSTRACTLIST_PROC(objPtr, getDoubleProc); + Tcl_ObjTypeGetDblProc *dblProc = TclObjTypeHasProc(objPtr, getDoubleProc); if (dblProc) { return dblProc(interp, objPtr, dblPtr); } diff --git a/generic/tclTestABSList.c b/generic/tclTestABSList.c index 13fc799..ec45932 100644 --- a/generic/tclTestABSList.c +++ b/generic/tclTestABSList.c @@ -64,9 +64,8 @@ static const Tcl_ObjType lstringTypes[11] = { DupLStringRep, UpdateStringOfLString, NULL, - TCL_OBJTYPE_V1( + TCL_OBJTYPE_V2( my_LStringObjLength, /* Length */ - NULL, /* RESERVED */ my_LStringObjIndex, /* Index */ my_LStringObjRange, /* Slice */ my_LStringObjReverse, /* Reverse */ @@ -81,9 +80,8 @@ static const Tcl_ObjType lstringTypes[11] = { DupLStringRep, UpdateStringOfLString, NULL, - TCL_OBJTYPE_V1( + TCL_OBJTYPE_V2( NULL, /* Length */ - NULL, /* RESERVED */ my_LStringObjIndex, /* Index */ my_LStringObjRange, /* Slice */ my_LStringObjReverse, /* Reverse */ @@ -98,9 +96,8 @@ static const Tcl_ObjType lstringTypes[11] = { DupLStringRep, UpdateStringOfLString, NULL, - TCL_OBJTYPE_V1( + TCL_OBJTYPE_V2( my_LStringObjLength, /* Length */ - NULL, /* RESERVED */ NULL, /* Index */ my_LStringObjRange, /* Slice */ my_LStringObjReverse, /* Reverse */ @@ -115,9 +112,8 @@ static const Tcl_ObjType lstringTypes[11] = { DupLStringRep, UpdateStringOfLString, NULL, - TCL_OBJTYPE_V1( + TCL_OBJTYPE_V2( my_LStringObjLength, /* Length */ - NULL, /* RESERVED */ my_LStringObjIndex, /* Index */ NULL, /* Slice */ my_LStringObjReverse, /* Reverse */ @@ -132,9 +128,8 @@ static const Tcl_ObjType lstringTypes[11] = { DupLStringRep, UpdateStringOfLString, NULL, - TCL_OBJTYPE_V1( + TCL_OBJTYPE_V2( my_LStringObjLength, /* Length */ - NULL, /* RESERVED */ my_LStringObjIndex, /* Index */ my_LStringObjRange, /* Slice */ NULL, /* Reverse */ @@ -149,9 +144,8 @@ static const Tcl_ObjType lstringTypes[11] = { DupLStringRep, UpdateStringOfLString, NULL, - TCL_OBJTYPE_V1( + TCL_OBJTYPE_V2( my_LStringObjLength, /* Length */ - NULL, /* RESERVED */ my_LStringObjIndex, /* Index */ my_LStringObjRange, /* Slice */ my_LStringObjReverse, /* Reverse */ @@ -166,9 +160,8 @@ static const Tcl_ObjType lstringTypes[11] = { DupLStringRep, UpdateStringOfLString, NULL, - TCL_OBJTYPE_V1( + TCL_OBJTYPE_V2( my_LStringObjLength, /* Length */ - NULL, /* RESERVED */ my_LStringObjIndex, /* Index */ my_LStringObjRange, /* Slice */ my_LStringObjReverse, /* Reverse */ @@ -183,9 +176,8 @@ static const Tcl_ObjType lstringTypes[11] = { DupLStringRep, UpdateStringOfLString, NULL, - TCL_OBJTYPE_V1( + TCL_OBJTYPE_V2( my_LStringObjLength, /* Length */ - NULL, /* RESERVED */ my_LStringObjIndex, /* Index */ my_LStringObjRange, /* Slice */ my_LStringObjReverse, /* Reverse */ @@ -200,9 +192,8 @@ static const Tcl_ObjType lstringTypes[11] = { DupLStringRep, UpdateStringOfLString, NULL, - TCL_OBJTYPE_V1( + TCL_OBJTYPE_V2( my_LStringObjLength, /* Length */ - NULL, /* RESERVED */ my_LStringObjIndex, /* Index */ my_LStringObjRange, /* Slice */ my_LStringObjReverse, /* Reverse */ @@ -217,9 +208,8 @@ static const Tcl_ObjType lstringTypes[11] = { DupLStringRep, UpdateStringOfLString, NULL, - TCL_OBJTYPE_V1( + TCL_OBJTYPE_V2( my_LStringObjLength, /* Length */ - NULL, /* RESERVED */ my_LStringObjIndex, /* Index */ my_LStringObjRange, /* Slice */ my_LStringObjReverse, /* Reverse */ @@ -234,9 +224,8 @@ static const Tcl_ObjType lstringTypes[11] = { DupLStringRep, UpdateStringOfLString, NULL, - TCL_OBJTYPE_V1( + TCL_OBJTYPE_V2( my_LStringObjLength, /* Length */ - NULL, /* RESERVED */ my_LStringObjIndex, /* Index */ my_LStringObjRange, /* Slice */ my_LStringObjReverse, /* Reverse */ diff --git a/generic/tclUtil.c b/generic/tclUtil.c index 5426bdf..218b80f 100644 --- a/generic/tclUtil.c +++ b/generic/tclUtil.c @@ -129,16 +129,7 @@ static const Tcl_ObjType endOffsetType = { NULL, /* dupIntRepProc */ NULL, /* updateStringProc */ NULL, /* setFromAnyProc */ - TCL_OBJTYPE_V1( - TclLengthOne, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL) + TCL_OBJTYPE_V1(TclLengthOne) }; Tcl_Size @@ -1983,7 +1974,7 @@ Tcl_ConcatObj( objPtr = objv[i]; if (TclListObjIsCanonical(objPtr) || - ABSTRACTLIST_PROC(objPtr,indexProc)) { + TclObjTypeHasProc(objPtr,indexProc)) { continue; } (void)Tcl_GetStringFromObj(objPtr, &length); @@ -1996,7 +1987,7 @@ Tcl_ConcatObj( for (i = 0; i < objc; i++) { objPtr = objv[i]; if (!TclListObjIsCanonical(objPtr) && - !ABSTRACTLIST_PROC(objPtr,indexProc)) { + !TclObjTypeHasProc(objPtr,indexProc)) { continue; } if (resPtr) { -- cgit v0.12