summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2019-02-25 19:50:43 (GMT)
committerdgp <dgp@users.sourceforge.net>2019-02-25 19:50:43 (GMT)
commitc5fc098588f330557b3b42404a426c521b46f4a2 (patch)
tree571e338680983e5e8921437dea9c8245eb9adc3f
parent3789b98a4949916a96bb57312c9a5a7713e00aaa (diff)
downloadtcl-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.c2
-rw-r--r--generic/tclBinary.c6
-rw-r--r--generic/tclClock.c2
-rw-r--r--generic/tclCmdMZ.c12
-rw-r--r--generic/tclDictObj.c2
-rw-r--r--generic/tclDisassemble.c8
-rw-r--r--generic/tclExecute.c6
-rw-r--r--generic/tclInt.h4
-rw-r--r--generic/tclListObj.c2
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;