summaryrefslogtreecommitdiffstats
path: root/generic/tclOOBasic.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2024-11-13 15:37:49 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2024-11-13 15:37:49 (GMT)
commit6d26a8ddf1477bbc823917eca93f495d5093ca5f (patch)
tree1b06f7ccd2627e4036491cfca84bcc2ca877cab6 /generic/tclOOBasic.c
parentd0d263041d6c50b9f621f3b0718e3d3413e33842 (diff)
downloadtcl-6d26a8ddf1477bbc823917eca93f495d5093ca5f.zip
tcl-6d26a8ddf1477bbc823917eca93f495d5093ca5f.tar.gz
tcl-6d26a8ddf1477bbc823917eca93f495d5093ca5f.tar.bz2
(backport) Move non-error literal to TclOO's internal literal cache.
Diffstat (limited to 'generic/tclOOBasic.c')
-rw-r--r--generic/tclOOBasic.c139
1 files changed, 70 insertions, 69 deletions
diff --git a/generic/tclOOBasic.c b/generic/tclOOBasic.c
index af19d765..e3d8a24 100644
--- a/generic/tclOOBasic.c
+++ b/generic/tclOOBasic.c
@@ -51,7 +51,7 @@ AddConstructionFinalizer(
static int
FinalizeConstruction(
- ClientData data[],
+ void *data[],
Tcl_Interp *interp,
int result)
{
@@ -76,7 +76,7 @@ FinalizeConstruction(
int
TclOO_Class_Constructor(
- TCL_UNUSED(ClientData),
+ TCL_UNUSED(void *),
Tcl_Interp *interp,
Tcl_ObjectContext context,
int objc,
@@ -120,7 +120,7 @@ TclOO_Class_Constructor(
invoke = (Tcl_Obj **)ckalloc(3 * sizeof(Tcl_Obj *));
invoke[0] = oPtr->fPtr->defineName;
invoke[1] = TclOOObjectName(interp, oPtr);
- invoke[2] = objv[objc-1];
+ invoke[2] = objv[objc - 1];
/*
* Must add references or errors in configuration script will cause
@@ -143,7 +143,7 @@ TclOO_Class_Constructor(
static int
DecrRefsPostClassConstructor(
- ClientData data[],
+ void *data[],
Tcl_Interp *interp,
int result)
{
@@ -155,7 +155,7 @@ DecrRefsPostClassConstructor(
TclDecrRefCount(invoke[0]);
TclDecrRefCount(invoke[1]);
TclDecrRefCount(invoke[2]);
- invoke[0] = Tcl_NewStringObj("::oo::MixinClassDelegates", -1);
+ invoke[0] = oPtr->fPtr->mcdName;
invoke[1] = TclOOObjectName(interp, oPtr);
Tcl_IncrRefCount(invoke[0]);
Tcl_IncrRefCount(invoke[1]);
@@ -183,7 +183,7 @@ DecrRefsPostClassConstructor(
int
TclOO_Class_Create(
- TCL_UNUSED(ClientData),
+ TCL_UNUSED(void *),
Tcl_Interp *interp, /* Interpreter in which to create the object;
* also used for error reporting. */
Tcl_ObjectContext context, /* The object/call context. */
@@ -192,7 +192,7 @@ TclOO_Class_Create(
{
Object *oPtr = (Object *) Tcl_ObjectContextObject(context);
const char *objName;
- int len;
+ Tcl_Size len;
/*
* Sanity check; should not be possible to invoke this method on a
@@ -212,16 +212,16 @@ TclOO_Class_Create(
* Check we have the right number of (sensible) arguments.
*/
- if (objc - Tcl_ObjectContextSkippedArgs(context) < 1) {
+ if (objc < 1 + Tcl_ObjectContextSkippedArgs(context)) {
Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
"objectName ?arg ...?");
return TCL_ERROR;
}
- objName = TclGetStringFromObj(
+ objName = Tcl_GetStringFromObj(
objv[Tcl_ObjectContextSkippedArgs(context)], &len);
if (len == 0) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "object name must not be empty", -1));
+ "object name must not be empty", TCL_AUTO_LENGTH));
Tcl_SetErrorCode(interp, "TCL", "OO", "EMPTY_NAME", (char *)NULL);
return TCL_ERROR;
}
@@ -248,7 +248,7 @@ TclOO_Class_Create(
int
TclOO_Class_CreateNs(
- TCL_UNUSED(ClientData),
+ TCL_UNUSED(void *),
Tcl_Interp *interp, /* Interpreter in which to create the object;
* also used for error reporting. */
Tcl_ObjectContext context, /* The object/call context. */
@@ -257,7 +257,7 @@ TclOO_Class_CreateNs(
{
Object *oPtr = (Object *) Tcl_ObjectContextObject(context);
const char *objName, *nsName;
- int len;
+ Tcl_Size len;
/*
* Sanity check; should not be possible to invoke this method on a
@@ -277,24 +277,24 @@ TclOO_Class_CreateNs(
* Check we have the right number of (sensible) arguments.
*/
- if (objc - Tcl_ObjectContextSkippedArgs(context) < 2) {
+ if (objc < Tcl_ObjectContextSkippedArgs(context) + 2) {
Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
"objectName namespaceName ?arg ...?");
return TCL_ERROR;
}
- objName = TclGetStringFromObj(
+ objName = Tcl_GetStringFromObj(
objv[Tcl_ObjectContextSkippedArgs(context)], &len);
if (len == 0) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "object name must not be empty", -1));
+ "object name must not be empty", TCL_AUTO_LENGTH));
Tcl_SetErrorCode(interp, "TCL", "OO", "EMPTY_NAME", (char *)NULL);
return TCL_ERROR;
}
- nsName = TclGetStringFromObj(
- objv[Tcl_ObjectContextSkippedArgs(context)+1], &len);
+ nsName = Tcl_GetStringFromObj(
+ objv[Tcl_ObjectContextSkippedArgs(context) + 1], &len);
if (len == 0) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "namespace name must not be empty", -1));
+ "namespace name must not be empty", TCL_AUTO_LENGTH));
Tcl_SetErrorCode(interp, "TCL", "OO", "EMPTY_NAME", (char *)NULL);
return TCL_ERROR;
}
@@ -305,7 +305,7 @@ TclOO_Class_CreateNs(
return TclNRNewObjectInstance(interp, (Tcl_Class) oPtr->classPtr,
objName, nsName, objc, objv,
- Tcl_ObjectContextSkippedArgs(context)+2,
+ Tcl_ObjectContextSkippedArgs(context) + 2,
AddConstructionFinalizer(interp));
}
@@ -321,7 +321,7 @@ TclOO_Class_CreateNs(
int
TclOO_Class_New(
- TCL_UNUSED(ClientData),
+ TCL_UNUSED(void *),
Tcl_Interp *interp, /* Interpreter in which to create the object;
* also used for error reporting. */
Tcl_ObjectContext context, /* The object/call context. */
@@ -365,7 +365,7 @@ TclOO_Class_New(
int
TclOO_Object_Destroy(
- TCL_UNUSED(ClientData),
+ TCL_UNUSED(void *),
Tcl_Interp *interp, /* Interpreter in which to create the object;
* also used for error reporting. */
Tcl_ObjectContext context, /* The object/call context. */
@@ -401,7 +401,7 @@ TclOO_Object_Destroy(
static int
AfterNRDestructor(
- ClientData data[],
+ void *data[],
Tcl_Interp *interp,
int result)
{
@@ -426,7 +426,7 @@ AfterNRDestructor(
int
TclOO_Object_Eval(
- TCL_UNUSED(ClientData),
+ TCL_UNUSED(void *),
Tcl_Interp *interp, /* Interpreter in which to create the object;
* also used for error reporting. */
Tcl_ObjectContext context, /* The object/call context. */
@@ -435,12 +435,12 @@ TclOO_Object_Eval(
{
CallContext *contextPtr = (CallContext *) context;
Tcl_Object object = Tcl_ObjectContextObject(context);
- const int skip = Tcl_ObjectContextSkippedArgs(context);
+ Tcl_Size skip = Tcl_ObjectContextSkippedArgs(context);
CallFrame *framePtr, **framePtrPtr = &framePtr;
Tcl_Obj *scriptPtr;
CmdFrame *invoker;
- if (objc-1 < skip) {
+ if (objc < skip + 1) {
Tcl_WrongNumArgs(interp, skip, objv, "arg ?arg ...?");
return TCL_ERROR;
}
@@ -488,7 +488,7 @@ TclOO_Object_Eval(
static int
FinalizeEval(
- ClientData data[],
+ void *data[],
Tcl_Interp *interp,
int result)
{
@@ -528,7 +528,7 @@ FinalizeEval(
int
TclOO_Object_Unknown(
- TCL_UNUSED(ClientData),
+ TCL_UNUSED(void *),
Tcl_Interp *interp, /* Interpreter in which to create the object;
* also used for error reporting. */
Tcl_ObjectContext context, /* The object/call context. */
@@ -540,7 +540,8 @@ TclOO_Object_Unknown(
Class *callerCls = NULL;
Object *oPtr = contextPtr->oPtr;
const char **methodNames;
- int numMethodNames, i, skip = Tcl_ObjectContextSkippedArgs(context);
+ int numMethodNames, i;
+ Tcl_Size skip = Tcl_ObjectContextSkippedArgs(context);
CallFrame *framePtr = ((Interp *) interp)->varFramePtr;
Tcl_Obj *errorMsg;
@@ -550,7 +551,7 @@ TclOO_Object_Unknown(
* name without an error).
*/
- if (objc < skip+1) {
+ if (objc < skip + 1) {
Tcl_WrongNumArgs(interp, skip, objv, "method ?arg ...?");
return TCL_ERROR;
}
@@ -607,14 +608,14 @@ TclOO_Object_Unknown(
TclGetString(objv[skip]));
for (i=0 ; i<numMethodNames-1 ; i++) {
if (i) {
- Tcl_AppendToObj(errorMsg, ", ", -1);
+ Tcl_AppendToObj(errorMsg, ", ", TCL_AUTO_LENGTH);
}
- Tcl_AppendToObj(errorMsg, methodNames[i], -1);
+ Tcl_AppendToObj(errorMsg, methodNames[i], TCL_AUTO_LENGTH);
}
if (i) {
- Tcl_AppendToObj(errorMsg, " or ", -1);
+ Tcl_AppendToObj(errorMsg, " or ", TCL_AUTO_LENGTH);
}
- Tcl_AppendToObj(errorMsg, methodNames[i], -1);
+ Tcl_AppendToObj(errorMsg, methodNames[i], TCL_AUTO_LENGTH);
ckfree(methodNames);
Tcl_SetObjResult(interp, errorMsg);
Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "METHOD",
@@ -634,7 +635,7 @@ TclOO_Object_Unknown(
int
TclOO_Object_LinkVar(
- TCL_UNUSED(ClientData),
+ TCL_UNUSED(void *),
Tcl_Interp *interp, /* Interpreter in which to create the object;
* also used for error reporting. */
Tcl_ObjectContext context, /* The object/call context. */
@@ -644,9 +645,9 @@ TclOO_Object_LinkVar(
Interp *iPtr = (Interp *) interp;
Tcl_Object object = Tcl_ObjectContextObject(context);
Namespace *savedNsPtr;
- int i;
+ Tcl_Size i;
- if (objc-Tcl_ObjectContextSkippedArgs(context) < 0) {
+ if (objc < Tcl_ObjectContextSkippedArgs(context)) {
Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
"?varName ...?");
return TCL_ERROR;
@@ -662,7 +663,7 @@ TclOO_Object_LinkVar(
return TCL_OK;
}
- for (i=Tcl_ObjectContextSkippedArgs(context) ; i<objc ; i++) {
+ for (i = Tcl_ObjectContextSkippedArgs(context) ; i < objc ; i++) {
Var *varPtr, *aryPtr;
const char *varName = TclGetString(objv[i]);
@@ -736,7 +737,7 @@ TclOO_Object_LinkVar(
int
TclOO_Object_VarName(
- TCL_UNUSED(ClientData),
+ TCL_UNUSED(void *),
Tcl_Interp *interp, /* Interpreter in which to create the object;
* also used for error reporting. */
Tcl_ObjectContext context, /* The object/call context. */
@@ -781,12 +782,12 @@ TclOO_Object_VarName(
*/
if (framePtr->isProcCallFrame & FRAME_IS_METHOD) {
- Object *oPtr = (Object *) Tcl_ObjectContextObject(context);
+ Object *oPtr = (Object *)Tcl_ObjectContextObject(context);
CallContext *callerContext = (CallContext *)framePtr->clientData;
Method *mPtr = callerContext->callPtr->chain[
callerContext->index].mPtr;
PrivateVariableMapping *pvPtr;
- int i;
+ Tcl_Size i;
if (mPtr->declaringObjectPtr == oPtr) {
FOREACH_STRUCT(pvPtr, oPtr->privateVariables) {
@@ -848,12 +849,13 @@ TclOO_Object_VarName(
*/
TclNewObj(varNamePtr);
+
if (aryVar != NULL) {
- Tcl_GetVariableFullName(interp, (Tcl_Var) aryVar, varNamePtr);
+ Tcl_GetVariableFullName(interp, (Tcl_Var)aryVar, varNamePtr);
Tcl_AppendPrintfToObj(varNamePtr, "(%s)",
Tcl_GetString(VarHashGetKey(varPtr)));
} else if (!TclIsVarArrayElement(varPtr)) {
- Tcl_GetVariableFullName(interp, (Tcl_Var) varPtr, varNamePtr);
+ Tcl_GetVariableFullName(interp, (Tcl_Var)varPtr, varNamePtr);
} else {
/*
* Target is an element of an array but we don't know which one.
@@ -886,7 +888,7 @@ TclOO_Object_VarName(
int
TclOONextObjCmd(
- TCL_UNUSED(ClientData),
+ TCL_UNUSED(void *),
Tcl_Interp *interp,
int objc,
Tcl_Obj *const *objv)
@@ -922,7 +924,7 @@ TclOONextObjCmd(
int
TclOONextToObjCmd(
- TCL_UNUSED(ClientData),
+ TCL_UNUSED(void *),
Tcl_Interp *interp,
int objc,
Tcl_Obj *const *objv)
@@ -931,7 +933,7 @@ TclOONextToObjCmd(
CallFrame *framePtr = iPtr->varFramePtr;
Class *classPtr;
CallContext *contextPtr;
- int i;
+ Tcl_Size i;
Tcl_Object object;
const char *methodType;
@@ -977,7 +979,7 @@ TclOONextToObjCmd(
*/
for (i=contextPtr->index+1 ; i<contextPtr->callPtr->numChain ; i++) {
- struct MInvoke *miPtr = contextPtr->callPtr->chain + i;
+ MInvoke *miPtr = &contextPtr->callPtr->chain[i];
if (!miPtr->isFilter && miPtr->mPtr->declaringClassPtr == classPtr) {
/*
@@ -987,7 +989,7 @@ TclOONextToObjCmd(
TclNRAddCallback(interp, NextRestoreFrame, framePtr,
contextPtr, INT2PTR(contextPtr->index), NULL);
- contextPtr->index = i-1;
+ contextPtr->index = i - 1;
iPtr->varFramePtr = framePtr->callerVarPtr;
return TclNRObjectContextInvokeNext(interp,
(Tcl_ObjectContext) contextPtr, objc, objv, 2);
@@ -1008,7 +1010,7 @@ TclOONextToObjCmd(
}
for (i=contextPtr->index ; i>=0 ; i--) {
- struct MInvoke *miPtr = contextPtr->callPtr->chain + i;
+ MInvoke *miPtr = contextPtr->callPtr->chain + i;
if (!miPtr->isFilter && miPtr->mPtr->declaringClassPtr == classPtr) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
@@ -1028,7 +1030,7 @@ TclOONextToObjCmd(
static int
NextRestoreFrame(
- ClientData data[],
+ void *data[],
Tcl_Interp *interp,
int result)
{
@@ -1055,7 +1057,7 @@ NextRestoreFrame(
int
TclOOSelfObjCmd(
- TCL_UNUSED(ClientData),
+ TCL_UNUSED(void *),
Tcl_Interp *interp,
int objc,
Tcl_Obj *const *objv)
@@ -1067,12 +1069,11 @@ TclOOSelfObjCmd(
enum SelfCmds {
SELF_CALL, SELF_CALLER, SELF_CLASS, SELF_FILTER, SELF_METHOD, SELF_NS,
SELF_NEXT, SELF_OBJECT, SELF_TARGET
- };
+ } index;
Interp *iPtr = (Interp *) interp;
CallFrame *framePtr = iPtr->varFramePtr;
CallContext *contextPtr;
Tcl_Obj *result[3];
- int index;
#define CurrentlyInvoked(contextPtr) \
((contextPtr)->callPtr->chain[(contextPtr)->index])
@@ -1089,7 +1090,7 @@ TclOOSelfObjCmd(
return TCL_ERROR;
}
- contextPtr = (CallContext*)framePtr->clientData;
+ contextPtr = (CallContext *)framePtr->clientData;
/*
* Now we do "conventional" argument parsing for a while. Note that no
@@ -1106,7 +1107,7 @@ TclOOSelfObjCmd(
return TCL_ERROR;
}
- switch ((enum SelfCmds) index) {
+ switch (index) {
case SELF_OBJECT:
Tcl_SetObjResult(interp, TclOOObjectName(interp, contextPtr->oPtr));
return TCL_OK;
@@ -1119,7 +1120,7 @@ TclOOSelfObjCmd(
if (clsPtr == NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "method not defined by a class", -1));
+ "method not defined by a class", TCL_AUTO_LENGTH));
Tcl_SetErrorCode(interp, "TCL", "OO", "UNMATCHED_CONTEXT", (char *)NULL);
return TCL_ERROR;
}
@@ -1140,11 +1141,11 @@ TclOOSelfObjCmd(
case SELF_FILTER:
if (!CurrentlyInvoked(contextPtr).isFilter) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "not inside a filtering context", -1));
+ "not inside a filtering context", TCL_AUTO_LENGTH));
Tcl_SetErrorCode(interp, "TCL", "OO", "UNMATCHED_CONTEXT", (char *)NULL);
return TCL_ERROR;
} else {
- struct MInvoke *miPtr = &CurrentlyInvoked(contextPtr);
+ MInvoke *miPtr = &CurrentlyInvoked(contextPtr);
Object *oPtr;
const char *type;
@@ -1157,7 +1158,7 @@ TclOOSelfObjCmd(
}
result[0] = TclOOObjectName(interp, oPtr);
- result[1] = Tcl_NewStringObj(type, -1);
+ result[1] = Tcl_NewStringObj(type, TCL_AUTO_LENGTH);
result[2] = miPtr->mPtr->namePtr;
Tcl_SetObjResult(interp, Tcl_NewListObj(3, result));
return TCL_OK;
@@ -1166,7 +1167,7 @@ TclOOSelfObjCmd(
if ((framePtr->callerVarPtr == NULL) ||
!(framePtr->callerVarPtr->isProcCallFrame & FRAME_IS_METHOD)){
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "caller is not an object", -1));
+ "caller is not an object", TCL_AUTO_LENGTH));
Tcl_SetErrorCode(interp, "TCL", "OO", "CONTEXT_REQUIRED", (char *)NULL);
return TCL_ERROR;
} else {
@@ -1184,7 +1185,7 @@ TclOOSelfObjCmd(
*/
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "method without declarer!", -1));
+ "method without declarer!", TCL_AUTO_LENGTH));
return TCL_ERROR;
}
@@ -1201,9 +1202,9 @@ TclOOSelfObjCmd(
return TCL_OK;
}
case SELF_NEXT:
- if (contextPtr->index < contextPtr->callPtr->numChain-1) {
+ if (contextPtr->index < contextPtr->callPtr->numChain - 1) {
Method *mPtr =
- contextPtr->callPtr->chain[contextPtr->index+1].mPtr;
+ contextPtr->callPtr->chain[contextPtr->index + 1].mPtr;
Object *declarerPtr;
if (mPtr->declaringClassPtr != NULL) {
@@ -1216,7 +1217,7 @@ TclOOSelfObjCmd(
*/
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "method without declarer!", -1));
+ "method without declarer!", TCL_AUTO_LENGTH));
return TCL_ERROR;
}
@@ -1234,15 +1235,15 @@ TclOOSelfObjCmd(
case SELF_TARGET:
if (!CurrentlyInvoked(contextPtr).isFilter) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "not inside a filtering context", -1));
+ "not inside a filtering context", TCL_AUTO_LENGTH));
Tcl_SetErrorCode(interp, "TCL", "OO", "UNMATCHED_CONTEXT", (char *)NULL);
return TCL_ERROR;
} else {
Method *mPtr;
Object *declarerPtr;
- int i;
+ Tcl_Size i;
- for (i=contextPtr->index ; i<contextPtr->callPtr->numChain ; i++){
+ for (i=contextPtr->index ; i<contextPtr->callPtr->numChain ; i++) {
if (!contextPtr->callPtr->chain[i].isFilter) {
break;
}
@@ -1261,7 +1262,7 @@ TclOOSelfObjCmd(
*/
Tcl_SetObjResult(interp, Tcl_NewStringObj(
- "method without declarer!", -1));
+ "method without declarer!", TCL_AUTO_LENGTH));
return TCL_ERROR;
}
result[0] = TclOOObjectName(interp, declarerPtr);
@@ -1292,7 +1293,7 @@ TclOOSelfObjCmd(
int
TclOOCopyObjectCmd(
- TCL_UNUSED(ClientData),
+ TCL_UNUSED(void *),
Tcl_Interp *interp,
int objc,
Tcl_Obj *const *objv)
@@ -1301,7 +1302,7 @@ TclOOCopyObjectCmd(
if (objc < 2 || objc > 4) {
Tcl_WrongNumArgs(interp, 1, objv,
- "sourceName ?targetName? ?targetNamespace?");
+ "sourceName ?targetName? ?targetNamespace?");
return TCL_ERROR;
}