Index: TODO =================================================================== diff -u -r8d45ee4442be4ba3222fa1abaeacd94a7aa02cc3 -ra6e6e5de115f92c579b867bb88323a9916aec4d4 --- TODO (.../TODO) (revision 8d45ee4442be4ba3222fa1abaeacd94a7aa02cc3) +++ TODO (.../TODO) (revision a6e6e5de115f92c579b867bb88323a9916aec4d4) @@ -3910,6 +3910,8 @@ by the setter method", which lead for the converter to a double refcounting on the value. +- use Tcl's EXTERN macro instead of "extern" + ======================================================================== TODO: Index: generic/nsf.c =================================================================== diff -u -re3339b6c33a84e9232fed245c72d9ad55f549ec8 -ra6e6e5de115f92c579b867bb88323a9916aec4d4 --- generic/nsf.c (.../nsf.c) (revision e3339b6c33a84e9232fed245c72d9ad55f549ec8) +++ generic/nsf.c (.../nsf.c) (revision a6e6e5de115f92c579b867bb88323a9916aec4d4) @@ -69,7 +69,7 @@ #ifdef COMPILE_NSF_STUBS # if defined(PRE86) -extern NsfStubs nsfStubs; +EXTERN NsfStubs nsfStubs; # else MODULE_SCOPE const NsfStubs * const nsfConstStubPtr; # endif @@ -750,7 +750,7 @@ *---------------------------------------------------------------------- */ -extern int +EXTERN int NsfCallMethodWithArgs(Tcl_Interp *interp, Nsf_Object *object, Tcl_Obj *methodObj, Tcl_Obj *arg1, int givenObjc, Tcl_Obj *CONST objv[], int flags) { int objc = givenObjc + 2; @@ -857,32 +857,32 @@ } /*********************************************************************** - * Extern callable routines for the preliminary C interface + * EXTERN callable routines for the preliminary C interface ***********************************************************************/ -extern Nsf_Object * +EXTERN Nsf_Object * NsfGetSelfObj(Tcl_Interp *interp) { return (Nsf_Object *) GetSelfObj(interp); } -extern Nsf_Object * +EXTERN Nsf_Object * NsfGetObject(Tcl_Interp *interp, CONST char *name) { return (Nsf_Object *) GetObjectFromString(interp, name); } -extern Nsf_Class * +EXTERN Nsf_Class * NsfGetClass(Tcl_Interp *interp, CONST char *name) { return (Nsf_Class *)GetClassFromString(interp, name); } -extern Nsf_Class * +EXTERN Nsf_Class * NsfIsClass(Tcl_Interp *UNUSED(interp), ClientData clientData) { if (clientData && NsfObjectIsClass((NsfObject *)clientData)) { return (Nsf_Class *) clientData; } return NULL; } -extern void +EXTERN void NsfRequireObjNamespace(Tcl_Interp *interp, Nsf_Object *object) { RequireObjNamespace(interp, (NsfObject *) object); } -extern Tcl_Obj * +EXTERN Tcl_Obj * Nsf_ObjSetVar2(Nsf_Object *object, Tcl_Interp *interp, Tcl_Obj *name1, Tcl_Obj *name2, Tcl_Obj *valueObj, int flags) { Tcl_Obj *result; @@ -896,7 +896,7 @@ Nsf_PopFrameObj(interp, framePtr); return result; } -extern Tcl_Obj * +EXTERN Tcl_Obj * Nsf_ObjGetVar2(Nsf_Object *object, Tcl_Interp *interp, Tcl_Obj *name1, Tcl_Obj *name2, int flags) { Tcl_Obj *result; @@ -911,7 +911,7 @@ return result; } -extern int +EXTERN int Nsf_UnsetVar2(Nsf_Object *object1, Tcl_Interp *interp, CONST char *name1, CONST char *name2, int flags) { NsfObject *object = (NsfObject *) object1; @@ -926,7 +926,7 @@ Nsf_PopFrameObj(interp, framePtr); return result; } -extern int +EXTERN int NsfCreate(Tcl_Interp *interp, Nsf_Class *class, Tcl_Obj *nameObj, int objc, Tcl_Obj *CONST objv[]) { NsfClass *cl = (NsfClass *) class; @@ -947,11 +947,11 @@ return result; } -extern int +EXTERN int NsfDeleteObject(Tcl_Interp *interp, Nsf_Object *object) { return DispatchDestroyMethod(interp, (NsfObject *)object, 0); } -extern int +EXTERN int NsfRemoveObjectMethod(Tcl_Interp *interp, Nsf_Object *object1, CONST char *methodName) { NsfObject *object = (NsfObject *) object1; @@ -974,7 +974,7 @@ } return TCL_OK; } -extern int +EXTERN int NsfRemoveClassMethod(Tcl_Interp *interp, Nsf_Class *class, CONST char *methodName) { NsfClass *cl = (NsfClass *) class; int rc; @@ -1452,7 +1452,7 @@ /* * Version of GetClassFromObj() with external symbol */ -extern int +EXTERN int NsfGetClassFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, NsfClass **clPtr, int withUnknown) { return GetClassFromObj(interp, objPtr, clPtr, withUnknown); @@ -4883,7 +4883,7 @@ * *---------------------------------------------------------------------- */ -extern int +EXTERN int NsfAddObjectMethod(Tcl_Interp *interp, Nsf_Object *object1, CONST char *methodName, Tcl_ObjCmdProc *proc, ClientData clientData, Tcl_CmdDeleteProc *dp, int flags) { @@ -4930,7 +4930,7 @@ * *---------------------------------------------------------------------- */ -extern int +EXTERN int NsfAddClassMethod(Tcl_Interp *interp, Nsf_Class *class, CONST char *methodName, Tcl_ObjCmdProc *proc, ClientData clientData, Tcl_CmdDeleteProc *dp, int flags) { @@ -10816,16 +10816,16 @@ */ #if defined(NRE) Tcl_ObjCmdProc NsfObjDispatchNRE; -extern int +EXTERN int NsfObjDispatch(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { return Tcl_NRCallObjProc(interp, NsfObjDispatchNRE, clientData, objc, objv); } -extern int +EXTERN int NsfObjDispatchNRE(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { #else -extern int +EXTERN int NsfObjDispatch(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { #endif @@ -12466,7 +12466,7 @@ * *---------------------------------------------------------------------- */ -extern int +EXTERN int NsfProcStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { NsfProcClientData *tcd = clientData; int result; @@ -15090,24 +15090,24 @@ /* * obj/cl ClientData setter/getter */ -extern void +EXTERN void NsfSetObjClientData(Tcl_Interp *interp, Nsf_Object *object1, ClientData data) { NsfObject *object = (NsfObject *) object1; NsfObjectOpt *opt = NsfRequireObjectOpt(object); opt->clientData = data; } -extern ClientData +EXTERN ClientData NsfGetObjClientData(Tcl_Interp *interp, Nsf_Object *object1) { NsfObject *object = (NsfObject *) object1; return (object && object->opt) ? object->opt->clientData : NULL; } -extern void +EXTERN void NsfSetClassClientData(Tcl_Interp *interp, Nsf_Class *cli, ClientData data) { NsfClass *cl = (NsfClass *) cli; NsfRequireClassOpt(cl); cl->opt->clientData = data; } -extern ClientData +EXTERN ClientData NsfGetClassClientData(Tcl_Interp *interp, Nsf_Class *cli) { NsfClass *cl = (NsfClass *) cli; return (cl && cl->opt) ? cl->opt->clientData : NULL; @@ -16371,7 +16371,7 @@ * *---------------------------------------------------------------------- */ -extern int +EXTERN int Nsf_ArgumentParse(Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[], Nsf_Object *object, Tcl_Obj *procNameObj, Nsf_Param CONST *paramPtr, int nrParams, int serial, @@ -24165,7 +24165,7 @@ #include #endif -extern int +EXTERN int Nsf_Init(Tcl_Interp *interp) { ClientData runtimeState; int result, i; @@ -24426,7 +24426,7 @@ } -extern int +EXTERN int Nsf_SafeInit(Tcl_Interp *interp) { /*** dummy for now **/ return Nsf_Init(interp); Index: generic/nsf.h =================================================================== diff -u -r1398015d9294ce3adec8b1d5dc6e98f7c717b243 -ra6e6e5de115f92c579b867bb88323a9916aec4d4 --- generic/nsf.h (.../nsf.h) (revision 1398015d9294ce3adec8b1d5dc6e98f7c717b243) +++ generic/nsf.h (.../nsf.h) (revision a6e6e5de115f92c579b867bb88323a9916aec4d4) @@ -272,26 +272,26 @@ Tcl_Obj *method; } Nsf_Param; -extern int +EXTERN int Nsf_ArgumentParse(Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[], Nsf_Object *object, Tcl_Obj *procNameObj, Nsf_Param CONST *paramPtr, int nrParams, int serial, int doCheck, Nsf_ParseContext *pcPtr); -extern int +EXTERN int NsfArgumentError(Tcl_Interp *interp, CONST char *errorMsg, Nsf_Param CONST *paramPtr, Tcl_Obj *cmdNameObj, Tcl_Obj *methodObj); -extern int +EXTERN int NsfDispatchClientDataError(Tcl_Interp *interp, ClientData clientData, CONST char *what, CONST char *methodName); -extern int +EXTERN int NsfNoCurrentObjectError(Tcl_Interp *interp, CONST char *what); -extern int +EXTERN int NsfUnexpectedArgumentError(Tcl_Interp *interp, CONST char *argumentString, Nsf_Object *object, Nsf_Param CONST *paramPtr, Tcl_Obj *procNameObj); -extern int +EXTERN int NsfUnexpectedNonposArgumentError(Tcl_Interp *interp, CONST char *argumentString, Nsf_Object *object, @@ -305,19 +305,19 @@ #define NSF_LOG_NOTICE 2 #define NSF_LOG_WARN 1 -extern void +EXTERN void NsfLog(Tcl_Interp *interp, int requiredLevel, CONST char *fmt, ...); /* * Nsf Pointer converter interface */ -extern int Nsf_PointerAdd(Tcl_Interp *interp, char *buffer, CONST char *typeName, void *valuePtr); -extern int Nsf_PointerDelete(CONST char *key, void *valuePtr); -extern void Nsf_PointerInit(Tcl_Interp *interp); -extern void Nsf_PointerExit(Tcl_Interp *interp); -extern void *Nsf_PointerTypeLookup(Tcl_Interp *interp, CONST char* typeName); -extern int Nsf_PointerTypeRegister(Tcl_Interp *interp, CONST char* typeName, int *counterPtr); +EXTERN int Nsf_PointerAdd(Tcl_Interp *interp, char *buffer, CONST char *typeName, void *valuePtr); +EXTERN int Nsf_PointerDelete(CONST char *key, void *valuePtr); +EXTERN void Nsf_PointerInit(Tcl_Interp *interp); +EXTERN void Nsf_PointerExit(Tcl_Interp *interp); +EXTERN void *Nsf_PointerTypeLookup(Tcl_Interp *interp, CONST char* typeName); +EXTERN int Nsf_PointerTypeRegister(Tcl_Interp *interp, CONST char* typeName, int *counterPtr); /* * methodDefinition @@ -346,7 +346,7 @@ #ifdef USE_NSF_STUBS # ifdef __cplusplus -extern "C" +EXTERN "C" # endif CONST char * Nsf_InitStubs _ANSI_ARGS_((Tcl_Interp *interp, CONST char *version, int exact)); @@ -357,7 +357,9 @@ #endif /* RC_INVOKED */ +/* #undef TCL_STORAGE_CLASS #define TCL_STORAGE_CLASS DLLIMPORT +*/ #endif /* _nsf_h_ */ Index: generic/nsfInt.h =================================================================== diff -u -r8d45ee4442be4ba3222fa1abaeacd94a7aa02cc3 -ra6e6e5de115f92c579b867bb88323a9916aec4d4 --- generic/nsfInt.h (.../nsfInt.h) (revision 8d45ee4442be4ba3222fa1abaeacd94a7aa02cc3) +++ generic/nsfInt.h (.../nsfInt.h) (revision a6e6e5de115f92c579b867bb88323a9916aec4d4) @@ -106,7 +106,7 @@ #endif #ifdef NSF_MEM_COUNT -extern int nsfMemCountInterpCounter; +EXTERN int nsfMemCountInterpCounter; typedef struct NsfMemCounter { int peak; int count; @@ -562,7 +562,7 @@ } SystemMethodsIdx; #if !defined(NSF_C) -extern CONST char *Nsf_SystemMethodOpts[]; +EXTERN CONST char *Nsf_SystemMethodOpts[]; #else CONST char *Nsf_SystemMethodOpts[] = { "-class.alloc", @@ -619,7 +619,7 @@ NSF_RENAME } NsfGlobalNames; #if !defined(NSF_C) -extern char *NsfGlobalStrings[]; +EXTERN char *NsfGlobalStrings[]; #else char *NsfGlobalStrings[] = { "", "0", "1", @@ -646,10 +646,10 @@ #define NsfGlobalObjs RUNTIME_STATE(interp)->methodObjNames /* obj types */ -extern Tcl_ObjType NsfMixinregObjType; +EXTERN Tcl_ObjType NsfMixinregObjType; int NsfMixinregGet(Tcl_Obj *obj, NsfClass **clPtr, Tcl_Obj **guardObj); -extern Tcl_ObjType NsfFilterregObjType; +EXTERN Tcl_ObjType NsfFilterregObjType; int NsfFilterregGet(Tcl_Obj *obj, Tcl_Obj **filterObj, Tcl_Obj **guardObj); /* Next Scripting ShadowTclCommands */ @@ -820,13 +820,13 @@ #ifdef NSF_OBJECTDATA -extern void +EXTERN void NsfSetObjectData(struct NsfObject *obj, struct NsfClass *cl, ClientData data); -extern int +EXTERN int NsfGetObjectData(struct NsfObject *obj, struct NsfClass *cl, ClientData *data); -extern int +EXTERN int NsfUnsetObjectData(struct NsfObject *obj, struct NsfClass *cl); -extern void +EXTERN void NsfFreeObjectData(NsfClass *cl); #endif @@ -865,13 +865,13 @@ */ #if defined(NSF_PROFILE) -extern void NsfProfileRecordMethodData(Tcl_Interp* interp, NsfCallStackContent *cscPtr); -extern void NsfProfileRecordProcData(Tcl_Interp *interp, char *methodName, long startSec, long startUsec); -extern void NsfProfileInit(Tcl_Interp *interp); -extern void NsfProfileFree(Tcl_Interp *interp); -extern void NsfProfileClearData(Tcl_Interp *interp); -extern void NsfProfileGetData(Tcl_Interp *interp); -extern NsfCallStackContent *NsfCallStackGetTopFrame(Tcl_Interp *interp, Tcl_CallFrame **framePtrPtr); +EXTERN void NsfProfileRecordMethodData(Tcl_Interp* interp, NsfCallStackContent *cscPtr); +EXTERN void NsfProfileRecordProcData(Tcl_Interp *interp, char *methodName, long startSec, long startUsec); +EXTERN void NsfProfileInit(Tcl_Interp *interp); +EXTERN void NsfProfileFree(Tcl_Interp *interp); +EXTERN void NsfProfileClearData(Tcl_Interp *interp); +EXTERN void NsfProfileGetData(Tcl_Interp *interp); +EXTERN NsfCallStackContent *NsfCallStackGetTopFrame(Tcl_Interp *interp, Tcl_CallFrame **framePtrPtr); #endif /* @@ -920,29 +920,29 @@ Tcl_ObjCmdProc NsfInitProcNSCmd, NsfSelfDispatchCmd, NsfNextObjCmd, NsfGetSelfObjCmd; -extern NsfCompEnv *NsfGetCompEnv(); +EXTERN NsfCompEnv *NsfGetCompEnv(); int NsfDirectSelfDispatch(ClientData cd, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]); #endif -extern int NsfGetClassFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, +EXTERN int NsfGetClassFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, NsfClass **clPtr, int withUnknown); -extern int NsfObjDispatch(ClientData cd, Tcl_Interp *interp, +EXTERN int NsfObjDispatch(ClientData cd, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]); -extern int NsfObjWrongArgs(Tcl_Interp *interp, CONST char *msg, +EXTERN int NsfObjWrongArgs(Tcl_Interp *interp, CONST char *msg, Tcl_Obj *cmdName, Tcl_Obj *methodName, char *arglist); -extern CONST char *NsfMethodName(Tcl_Obj *methodObj); -extern void NsfReportVars(Tcl_Interp *interp); -extern void NsfDStringArgv(Tcl_DString *dsPtr, int objc, Tcl_Obj *CONST objv[]); +EXTERN CONST char *NsfMethodName(Tcl_Obj *methodObj); +EXTERN void NsfReportVars(Tcl_Interp *interp); +EXTERN void NsfDStringArgv(Tcl_DString *dsPtr, int objc, Tcl_Obj *CONST objv[]); -extern Tcl_Obj *NsfMethodNamePath(Tcl_Interp *interp, Tcl_Obj *procObj); +EXTERN Tcl_Obj *NsfMethodNamePath(Tcl_Interp *interp, Tcl_Obj *procObj); /* * NsfFlag type */ -extern Tcl_ObjType NsfFlagObjType; -extern int NsfFlagObjSet(Tcl_Interp *interp, Tcl_Obj *objPtr, +EXTERN Tcl_ObjType NsfFlagObjType; +EXTERN int NsfFlagObjSet(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param CONST *baseParamPtr, int serial, Nsf_Param CONST *paramPtr, Tcl_Obj *payload, int flags); typedef struct { @@ -959,9 +959,9 @@ /* * NsfMethodContext type */ -extern Tcl_ObjType NsfInstanceMethodObjType; -extern Tcl_ObjType NsfObjectMethodObjType; -extern int NsfMethodObjSet(Tcl_Interp *interp, Tcl_Obj *objPtr, +EXTERN Tcl_ObjType NsfInstanceMethodObjType; +EXTERN Tcl_ObjType NsfObjectMethodObjType; +EXTERN int NsfMethodObjSet(Tcl_Interp *interp, Tcl_Obj *objPtr, Tcl_ObjType *objectType, void *context, int methodEpoch, Tcl_Command cmd, NsfClass *cl, int flags); Index: generic/nsfObjectData.c =================================================================== diff -u -ra09faeafaaacd8dcd4c52cdb86653993e8dc499a -ra6e6e5de115f92c579b867bb88323a9916aec4d4 --- generic/nsfObjectData.c (.../nsfObjectData.c) (revision a09faeafaaacd8dcd4c52cdb86653993e8dc499a) +++ generic/nsfObjectData.c (.../nsfObjectData.c) (revision a6e6e5de115f92c579b867bb88323a9916aec4d4) @@ -30,15 +30,15 @@ #include "nsfInt.h" #ifdef NSF_OBJECTDATA -extern void +EXTERN void NsfFreeObjectData(NsfClass* cl) { if (cl->opt && cl->opt->objectdata) { Tcl_DeleteHashTable(cl->opt->objectdata); ckfree((char*)cl->opt->objectdata); cl->opt->objectdata = 0; } } -extern void +EXTERN void NsfSetObjectData(NsfObject* obj, NsfClass* cl, ClientData data) { Tcl_HashEntry *hPtr; int nw; @@ -53,7 +53,7 @@ Tcl_SetHashValue(hPtr, data); } -extern int +EXTERN int NsfGetObjectData(NsfObject* obj, NsfClass* cl, ClientData* data) { Tcl_HashEntry *hPtr; if (!cl->opt || !cl->opt->objectdata) @@ -63,7 +63,7 @@ return hPtr != 0; } -extern int +EXTERN int NsfUnsetObjectData(NsfObject* obj, NsfClass* cl) { Tcl_HashEntry *hPtr; Index: win/winMain.c =================================================================== diff -u -r8eddf67371ec031084a6ef98fdec21e38dff85ff -ra6e6e5de115f92c579b867bb88323a9916aec4d4 --- win/winMain.c (.../winMain.c) (revision 8eddf67371ec031084a6ef98fdec21e38dff85ff) +++ win/winMain.c (.../winMain.c) (revision a6e6e5de115f92c579b867bb88323a9916aec4d4) @@ -41,12 +41,12 @@ static void WishPanic _ANSI_ARGS_(TCL_VARARGS(CONST char *,format)); #ifdef TK_TEST -extern int Tktest_Init(Tcl_Interp *interp); +EXTERN int Tktest_Init(Tcl_Interp *interp); #endif /* TK_TEST */ #ifdef TCL_TEST -extern int TclObjTest_Init _ANSI_ARGS_((Tcl_Interp *interp)); -extern int Tcltest_Init _ANSI_ARGS_((Tcl_Interp *interp)); +EXTERN int TclObjTest_Init _ANSI_ARGS_((Tcl_Interp *interp)); +EXTERN int Tcltest_Init _ANSI_ARGS_((Tcl_Interp *interp)); #endif /* TCL_TEST */ static BOOL consoleRequired = TRUE;