From a37106179e4c1484469107de089057cd2748090c Mon Sep 17 00:00:00 2001 From: nijtmans Date: Mon, 30 Aug 2010 13:49:27 +0000 Subject: [Patch 2997642] many type casts needed when using Tcl_Pkg* API. Partly. --- ChangeLog | 5 +++++ generic/tcl.decls | 8 ++++---- generic/tclDecls.h | 15 +++++++-------- generic/tclPkg.c | 15 ++++++++------- generic/tclStubLib.c | 8 ++++---- generic/tclTomMathStubLib.c | 9 ++++----- 6 files changed, 32 insertions(+), 28 deletions(-) diff --git a/ChangeLog b/ChangeLog index efb5703..2bd1908 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,11 @@ * win/tclWinDde.c: Those 3 files are not converted yet to be * win/tclWinReg.c: built with -DUNICODE, so add a TODO. * win/tclWinTest.c: + * generic/tcl.decls: [Patch 2997642] many type casts needed when + * generic/tclDecls.h: using Tcl_Pkg* API. Partly. + * generic/tclPkg.c: + * generic/tclStubLib.c: demonstration how this change can benefit code. + * generic/tclTomMathStubLib.c: 2010-08-29 Donal K. Fellows diff --git a/generic/tcl.decls b/generic/tcl.decls index 3fadbce..826c6a6 100644 --- a/generic/tcl.decls +++ b/generic/tcl.decls @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tcl.decls,v 1.178 2010/08/25 01:00:10 nijtmans Exp $ +# RCS: @(#) $Id: tcl.decls,v 1.179 2010/08/30 13:49:27 nijtmans Exp $ library tcl @@ -35,7 +35,7 @@ declare 0 generic { declare 1 generic { CONST84_RETURN char *Tcl_PkgRequireEx(Tcl_Interp *interp, const char *name, const char *version, int exact, - ClientData *clientDataPtr) + void *clientDataPtr) } declare 2 generic { void Tcl_Panic(const char *format, ...) @@ -966,7 +966,7 @@ declare 271 generic { declare 272 generic { CONST84_RETURN char *Tcl_PkgPresentEx(Tcl_Interp *interp, const char *name, const char *version, int exact, - ClientData *clientDataPtr) + void *clientDataPtr) } declare 273 generic { int Tcl_PkgProvide(Tcl_Interp *interp, const char *name, @@ -2085,7 +2085,7 @@ declare 572 generic { # TIP#268 (extended version numbers and requirements) akupries declare 573 generic { int Tcl_PkgRequireProc(Tcl_Interp *interp, const char *name, - int objc, Tcl_Obj *const objv[], ClientData *clientDataPtr) + int objc, Tcl_Obj *const objv[], void *clientDataPtr) } # TIP#270 (utility C routines for string formatting) dgp diff --git a/generic/tclDecls.h b/generic/tclDecls.h index c16ba1b..b993e38 100644 --- a/generic/tclDecls.h +++ b/generic/tclDecls.h @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclDecls.h,v 1.183 2010/08/25 01:00:10 nijtmans Exp $ + * RCS: @(#) $Id: tclDecls.h,v 1.184 2010/08/30 13:49:28 nijtmans Exp $ */ #ifndef _TCLDECLS @@ -44,7 +44,7 @@ EXTERN int Tcl_PkgProvideEx(Tcl_Interp *interp, /* 1 */ EXTERN CONST84_RETURN char * Tcl_PkgRequireEx(Tcl_Interp *interp, const char *name, const char *version, - int exact, ClientData *clientDataPtr); + int exact, void *clientDataPtr); /* 2 */ EXTERN void Tcl_Panic(const char *format, ...); /* 3 */ @@ -817,7 +817,7 @@ EXTERN CONST84_RETURN char * Tcl_PkgPresent(Tcl_Interp *interp, /* 272 */ EXTERN CONST84_RETURN char * Tcl_PkgPresentEx(Tcl_Interp *interp, const char *name, const char *version, - int exact, ClientData *clientDataPtr); + int exact, void *clientDataPtr); /* 273 */ EXTERN int Tcl_PkgProvide(Tcl_Interp *interp, const char *name, const char *version); @@ -1648,8 +1648,7 @@ EXTERN const char * Tcl_GetEncodingNameFromEnvironment( /* 573 */ EXTERN int Tcl_PkgRequireProc(Tcl_Interp *interp, const char *name, int objc, - Tcl_Obj *const objv[], - ClientData *clientDataPtr); + Tcl_Obj *const objv[], void *clientDataPtr); /* 574 */ EXTERN void Tcl_AppendObjToErrorInfo(Tcl_Interp *interp, Tcl_Obj *objPtr); @@ -1822,7 +1821,7 @@ typedef struct TclStubs { const struct TclStubHooks *hooks; int (*tcl_PkgProvideEx) (Tcl_Interp *interp, const char *name, const char *version, ClientData clientData); /* 0 */ - CONST84_RETURN char * (*tcl_PkgRequireEx) (Tcl_Interp *interp, const char *name, const char *version, int exact, ClientData *clientDataPtr); /* 1 */ + CONST84_RETURN char * (*tcl_PkgRequireEx) (Tcl_Interp *interp, const char *name, const char *version, int exact, void *clientDataPtr); /* 1 */ void (*tcl_Panic) (const char *format, ...); /* 2 */ char * (*tcl_Alloc) (unsigned int size); /* 3 */ void (*tcl_Free) (char *ptr); /* 4 */ @@ -2117,7 +2116,7 @@ typedef struct TclStubs { char * (*tcl_HashStats) (Tcl_HashTable *tablePtr); /* 269 */ CONST84_RETURN char * (*tcl_ParseVar) (Tcl_Interp *interp, const char *start, CONST84 char **termPtr); /* 270 */ CONST84_RETURN char * (*tcl_PkgPresent) (Tcl_Interp *interp, const char *name, const char *version, int exact); /* 271 */ - CONST84_RETURN char * (*tcl_PkgPresentEx) (Tcl_Interp *interp, const char *name, const char *version, int exact, ClientData *clientDataPtr); /* 272 */ + CONST84_RETURN char * (*tcl_PkgPresentEx) (Tcl_Interp *interp, const char *name, const char *version, int exact, void *clientDataPtr); /* 272 */ int (*tcl_PkgProvide) (Tcl_Interp *interp, const char *name, const char *version); /* 273 */ CONST84_RETURN char * (*tcl_PkgRequire) (Tcl_Interp *interp, const char *name, const char *version, int exact); /* 274 */ void (*tcl_SetErrorCodeVA) (Tcl_Interp *interp, va_list argList); /* 275 */ @@ -2418,7 +2417,7 @@ typedef struct TclStubs { Tcl_Obj * (*tcl_GetEncodingSearchPath) (void); /* 570 */ int (*tcl_SetEncodingSearchPath) (Tcl_Obj *searchPath); /* 571 */ const char * (*tcl_GetEncodingNameFromEnvironment) (Tcl_DString *bufPtr); /* 572 */ - int (*tcl_PkgRequireProc) (Tcl_Interp *interp, const char *name, int objc, Tcl_Obj *const objv[], ClientData *clientDataPtr); /* 573 */ + int (*tcl_PkgRequireProc) (Tcl_Interp *interp, const char *name, int objc, Tcl_Obj *const objv[], void *clientDataPtr); /* 573 */ void (*tcl_AppendObjToErrorInfo) (Tcl_Interp *interp, Tcl_Obj *objPtr); /* 574 */ void (*tcl_AppendLimitedToObj) (Tcl_Obj *objPtr, const char *bytes, int length, int limit, const char *ellipsis); /* 575 */ Tcl_Obj * (*tcl_Format) (Tcl_Interp *interp, const char *format, int objc, Tcl_Obj *const objv[]); /* 576 */ diff --git a/generic/tclPkg.c b/generic/tclPkg.c index 31972af..cba612f 100644 --- a/generic/tclPkg.c +++ b/generic/tclPkg.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPkg.c,v 1.42 2010/05/05 22:43:46 nijtmans Exp $ + * RCS: @(#) $Id: tclPkg.c,v 1.43 2010/08/30 13:49:27 nijtmans Exp $ * * TIP #268. * Heavily rewritten to handle the extend version numbers, and extended @@ -73,7 +73,7 @@ static void AddRequirementsToDString(Tcl_DString *dstring, static Package * FindPackage(Tcl_Interp *interp, const char *name); static const char * PkgRequireCore(Tcl_Interp *interp, const char *name, int reqc, Tcl_Obj *const reqv[], - ClientData *clientDataPtr); + void *clientDataPtr); /* * Helper macros. @@ -212,7 +212,7 @@ Tcl_PkgRequireEx( int exact, /* Non-zero means that only the particular * version given is acceptable. Zero means use * the latest compatible version. */ - ClientData *clientDataPtr) /* Used to return the client data for this + void *clientDataPtr) /* Used to return the client data for this * package. If it is NULL then the client data * is not returned. This is unchanged if this * call fails for any reason. */ @@ -323,7 +323,7 @@ Tcl_PkgRequireProc( * version. */ Tcl_Obj *const reqv[], /* 0 means to use the latest version * available. */ - ClientData *clientDataPtr) + void *clientDataPtr) { const char *result = PkgRequireCore(interp, name, reqc, reqv, clientDataPtr); @@ -344,7 +344,7 @@ PkgRequireCore( * version. */ Tcl_Obj *const reqv[], /* 0 means to use the latest version * available. */ - ClientData *clientDataPtr) + void *clientDataPtr) { Interp *iPtr = (Interp *) interp; Package *pkgPtr; @@ -621,7 +621,8 @@ PkgRequireCore( if (satisfies) { if (clientDataPtr) { - *clientDataPtr = pkgPtr->clientData; + ClientData *ptr = clientDataPtr; + *ptr = pkgPtr->clientData; } return pkgPtr->version; } @@ -677,7 +678,7 @@ Tcl_PkgPresentEx( int exact, /* Non-zero means that only the particular * version given is acceptable. Zero means use * the latest compatible version. */ - ClientData *clientDataPtr) /* Used to return the client data for this + void *clientDataPtr) /* Used to return the client data for this * package. If it is NULL then the client data * is not returned. This is unchanged if this * call fails for any reason. */ diff --git a/generic/tclStubLib.c b/generic/tclStubLib.c index 8603e02..db10cc8 100644 --- a/generic/tclStubLib.c +++ b/generic/tclStubLib.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStubLib.c,v 1.32 2010/03/06 06:29:24 nijtmans Exp $ + * RCS: @(#) $Id: tclStubLib.c,v 1.33 2010/08/30 13:49:28 nijtmans Exp $ */ /* @@ -84,7 +84,7 @@ Tcl_InitStubs( int exact) { const char *actualVersion = NULL; - ClientData pkgData = NULL; + const TclStubs *stubsPtr; /* * We can't optimize this check by caching tclStubsPtr because that @@ -97,7 +97,7 @@ Tcl_InitStubs( return NULL; } - actualVersion = Tcl_PkgRequireEx(interp, "Tcl", version, 0, &pkgData); + actualVersion = Tcl_PkgRequireEx(interp, "Tcl", version, 0, &stubsPtr); if (actualVersion == NULL) { return NULL; } @@ -127,7 +127,7 @@ Tcl_InitStubs( } } } - tclStubsPtr = (TclStubs *) pkgData; + tclStubsPtr = stubsPtr; if (tclStubsPtr->hooks) { tclPlatStubsPtr = tclStubsPtr->hooks->tclPlatStubs; diff --git a/generic/tclTomMathStubLib.c b/generic/tclTomMathStubLib.c index 4139261..9c9cbc5 100644 --- a/generic/tclTomMathStubLib.c +++ b/generic/tclTomMathStubLib.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTomMathStubLib.c,v 1.1 2010/03/04 22:29:05 nijtmans Exp $ + * RCS: @(#) $Id: tclTomMathStubLib.c,v 1.2 2010/08/30 13:49:28 nijtmans Exp $ */ /* @@ -57,15 +57,14 @@ TclTomMathInitializeStubs( int exact = 0; const char *packageName = "tcl::tommath"; const char *errMsg = NULL; - ClientData pkgClientData = NULL; + const TclTomMathStubs *stubsPtr; const char *actualVersion = - Tcl_PkgRequireEx(interp, packageName, version, exact, &pkgClientData); - const TclTomMathStubs *stubsPtr = pkgClientData; + Tcl_PkgRequireEx(interp, packageName, version, exact, &stubsPtr); if (actualVersion == NULL) { return NULL; } - if (pkgClientData == NULL) { + if (stubsPtr == NULL) { errMsg = "missing stub table pointer"; } else if ((stubsPtr->tclBN_epoch)() != epoch) { errMsg = "epoch number mismatch"; -- cgit v0.12