diff options
author | dgp <dgp@users.sourceforge.net> | 2019-02-25 19:50:43 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2019-02-25 19:50:43 (GMT) |
commit | c5fc098588f330557b3b42404a426c521b46f4a2 (patch) | |
tree | 571e338680983e5e8921437dea9c8245eb9adc3f | |
parent | 3789b98a4949916a96bb57312c9a5a7713e00aaa (diff) | |
download | tcl-c5fc098588f330557b3b42404a426c521b46f4a2.zip tcl-c5fc098588f330557b3b42404a426c521b46f4a2.tar.gz tcl-c5fc098588f330557b3b42404a426c521b46f4a2.tar.bz2 |
New internal macro TclHasIntRep() to re-encapsulate the typePtr field.
-rw-r--r-- | generic/tclBasic.c | 2 | ||||
-rw-r--r-- | generic/tclBinary.c | 6 | ||||
-rw-r--r-- | generic/tclClock.c | 2 | ||||
-rw-r--r-- | generic/tclCmdMZ.c | 12 | ||||
-rw-r--r-- | generic/tclDictObj.c | 2 | ||||
-rw-r--r-- | generic/tclDisassemble.c | 8 | ||||
-rw-r--r-- | generic/tclExecute.c | 6 | ||||
-rw-r--r-- | generic/tclInt.h | 4 | ||||
-rw-r--r-- | generic/tclListObj.c | 2 |
9 files changed, 23 insertions, 21 deletions
diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 44acac8..3747c90 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -7889,7 +7889,7 @@ ExprDoubleFunc( } if (Tcl_GetDoubleFromObj(interp, objv[1], &dResult) != TCL_OK) { #ifdef ACCEPT_NAN - if (objv[1]->typePtr == &tclDoubleType) { + if (TclHasIntRep(objv[1], &tclDoubleType)) { Tcl_SetObjResult(interp, objv[1]); return TCL_OK; } diff --git a/generic/tclBinary.c b/generic/tclBinary.c index 677213e..ab9262f 100644 --- a/generic/tclBinary.c +++ b/generic/tclBinary.c @@ -291,7 +291,7 @@ int TclIsPureByteArray( Tcl_Obj * objPtr) { - return objPtr->typePtr == &properByteArrayType; + return TclHasIntRep(objPtr, &properByteArrayType); } /* @@ -563,10 +563,10 @@ SetByteArrayFromAny( ByteArray *byteArrayPtr; Tcl_ObjIntRep ir; - if (objPtr->typePtr == &properByteArrayType) { + if (TclHasIntRep(objPtr, &properByteArrayType)) { return TCL_OK; } - if (objPtr->typePtr == &tclByteArrayType) { + if (TclHasIntRep(objPtr, &tclByteArrayType)) { return TCL_OK; } diff --git a/generic/tclClock.c b/generic/tclClock.c index 2c25f6c..233ddd2 100644 --- a/generic/tclClock.c +++ b/generic/tclClock.c @@ -452,7 +452,7 @@ ClockGetdatefieldsObjCmd( * that it isn't. */ - if (objv[1]->typePtr == &tclBignumType) { + if (TclHasIntRep(objv[1], &tclBignumType)) { Tcl_SetObjResult(interp, literals[LIT_INTEGER_VALUE_TOO_LARGE]); return TCL_ERROR; } diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index dac82b8..2dea688 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -1641,9 +1641,9 @@ StringIsCmd( chcomp = Tcl_UniCharIsDigit; break; case STR_IS_DOUBLE: { - if ((objPtr->typePtr == &tclDoubleType) || - (objPtr->typePtr == &tclIntType) || - (objPtr->typePtr == &tclBignumType)) { + if (TclHasIntRep(objPtr, &tclDoubleType) || + TclHasIntRep(objPtr, &tclIntType) || + TclHasIntRep(objPtr, &tclBignumType)) { break; } string1 = TclGetStringFromObj(objPtr, &length1); @@ -1672,8 +1672,8 @@ StringIsCmd( break; case STR_IS_INT: case STR_IS_ENTIER: - if ((objPtr->typePtr == &tclIntType) || - (objPtr->typePtr == &tclBignumType)) { + if (TclHasIntRep(objPtr, &tclIntType) || + TclHasIntRep(objPtr, &tclBignumType)) { break; } string1 = TclGetStringFromObj(objPtr, &length1); @@ -1952,7 +1952,7 @@ StringMapCmd( */ if (!TclHasStringRep(objv[objc-2]) - && (objv[objc-2]->typePtr == &tclDictType)){ + && TclHasIntRep(objv[objc-2], &tclDictType)){ int i, done; Tcl_DictSearch search; diff --git a/generic/tclDictObj.c b/generic/tclDictObj.c index 629a3f0..baf96a8 100644 --- a/generic/tclDictObj.c +++ b/generic/tclDictObj.c @@ -623,7 +623,7 @@ SetDictFromAny( * the conversion from lists to dictionaries. */ - if (objPtr->typePtr == &tclListType) { + if (TclHasIntRep(objPtr, &tclListType)) { int objc, i; Tcl_Obj **objv; diff --git a/generic/tclDisassemble.c b/generic/tclDisassemble.c index 027683d..e5fce72 100644 --- a/generic/tclDisassemble.c +++ b/generic/tclDisassemble.c @@ -1384,7 +1384,7 @@ Tcl_DisassembleObjCmd( return TCL_ERROR; } - if ((objv[2]->typePtr != &tclByteCodeType) && (TCL_OK + if (!TclHasIntRep(objv[2], &tclByteCodeType) && (TCL_OK != TclSetByteCodeFromAny(interp, objv[2], NULL, NULL))) { return TCL_ERROR; } @@ -1435,7 +1435,7 @@ Tcl_DisassembleObjCmd( * Compile if necessary. */ - if (procPtr->bodyPtr->typePtr != &tclByteCodeType) { + if (!TclHasIntRep(procPtr->bodyPtr, &tclByteCodeType)) { Command cmd; /* @@ -1500,7 +1500,7 @@ Tcl_DisassembleObjCmd( * Compile if necessary. */ - if (procPtr->bodyPtr->typePtr != &tclByteCodeType) { + if (!TclHasIntRep(procPtr->bodyPtr, &tclByteCodeType)) { Command cmd; /* @@ -1585,7 +1585,7 @@ Tcl_DisassembleObjCmd( "METHODTYPE", NULL); return TCL_ERROR; } - if (procPtr->bodyPtr->typePtr != &tclByteCodeType) { + if (!TclHasIntRep(procPtr->bodyPtr, &tclByteCodeType)) { Command cmd; /* diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 17ad0bb..717ebf6 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -4768,7 +4768,7 @@ TEBCresume( */ if ((TclListObjGetElements(interp, valuePtr, &objc, &objv) == TCL_OK) - && (value2Ptr->typePtr != &tclListType) + && !TclHasIntRep(value2Ptr, &tclListType) && (TclGetIntForIndexM(NULL, value2Ptr, objc-1, &index) == TCL_OK)) { TclDecrRefCount(value2Ptr); @@ -7108,7 +7108,7 @@ TEBCresume( } varPtr = LOCAL(opnd); if (varPtr->value.objPtr) { - if (varPtr->value.objPtr->typePtr == &dictIteratorType) { + if (TclHasIntRep(varPtr->value.objPtr, &dictIteratorType)) { Tcl_Panic("mis-issued dictFirst!"); } TclDecrRefCount(varPtr->value.objPtr); @@ -9622,7 +9622,7 @@ EvalStatsCmd( for (i = 0; i < globalTablePtr->numBuckets; i++) { for (entryPtr = globalTablePtr->buckets[i]; entryPtr != NULL; entryPtr = entryPtr->nextPtr) { - if (entryPtr->objPtr->typePtr == &tclByteCodeType) { + if (TclHasIntRep(entryPtr->objPtr, &tclByteCodeType)) { numByteCodeLits++; } (void) TclGetStringFromObj(entryPtr->objPtr, &length); diff --git a/generic/tclInt.h b/generic/tclInt.h index d7836d2..b8bcbac 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -4623,8 +4623,10 @@ MODULE_SCOPE void TclDbInitNewObj(Tcl_Obj *objPtr, const char *file, MODULE_SCOPE int TclIsPureByteArray(Tcl_Obj *objPtr); #define TclIsPureDict(objPtr) \ (((objPtr)->bytes==NULL) && ((objPtr)->typePtr==&tclDictType)) +#define TclHasIntRep(objPtr, type) \ + ((objPtr)->typePtr == (type)) #define TclFetchIntRep(objPtr, type) \ - (((objPtr)->typePtr == type) ? &((objPtr)->internalRep) : NULL) + (TclHasIntRep((objPtr), (type)) ? &((objPtr)->internalRep) : NULL) /* diff --git a/generic/tclListObj.c b/generic/tclListObj.c index 7a90950..eb5f32d 100644 --- a/generic/tclListObj.c +++ b/generic/tclListObj.c @@ -1997,7 +1997,7 @@ SetListFromAny( * describe duplicate keys). */ - if (!TclHasStringRep(objPtr) && (objPtr->typePtr == &tclDictType)) { + if (!TclHasStringRep(objPtr) && TclHasIntRep(objPtr, &tclDictType)) { Tcl_Obj *keyPtr, *valuePtr; Tcl_DictSearch search; int done, size; |