diff options
author | mlafon <mlafon@gmail.com> | 2017-05-04 22:27:23 (GMT) |
---|---|---|
committer | mlafon <mlafon@gmail.com> | 2017-05-04 22:27:23 (GMT) |
commit | 45bf0120ad12d84441a0c3133a9aa88c446afdc0 (patch) | |
tree | c5fa202ff0effa2d836caa70c515e9376bb7f25f /generic/tclInt.h | |
parent | aa7f26cefe717461f284fb9e389ee6a613b2d970 (diff) | |
download | tcl-info_linkedname.zip tcl-info_linkedname.tar.gz tcl-info_linkedname.tar.bz2 |
Add [info linkedname] introspection commandinfo_linkedname
Diffstat (limited to 'generic/tclInt.h')
-rw-r--r-- | generic/tclInt.h | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/generic/tclInt.h b/generic/tclInt.h index 725280c..9a30ca2 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -208,14 +208,15 @@ typedef struct NamespacePathEntry NamespacePathEntry; /* * Special hashtable for variables: this is just a Tcl_HashTable with an nsPtr - * field added at the end: in this way variables can find their namespace - * without having to copy a pointer in their struct: they can access it via - * their hPtr->tablePtr. + * field and a Var field added at the end: in this way variables can find their + * namespace or related array variable (for array elements) without having to + * copy a pointer in their struct: they can access it via their hPtr->tablePtr. */ typedef struct TclVarHashTable { Tcl_HashTable table; struct Namespace *nsPtr; + struct Var *arrayPtr; } TclVarHashTable; /* @@ -850,6 +851,11 @@ typedef struct VarInHash { ? ((TclVarHashTable *) ((((VarInHash *) (varPtr))->entry.tablePtr)))->nsPtr \ : NULL) +#define TclGetVarArrayPtr(varPtr) \ + (TclIsVarInHash(varPtr) \ + ? ((TclVarHashTable *) ((((VarInHash *) (varPtr))->entry.tablePtr)))->arrayPtr \ + : NULL) + #define VarHashRefCount(varPtr) \ ((VarInHash *) (varPtr))->refCount @@ -3002,11 +3008,14 @@ MODULE_SCOPE int TclInfoCoroutineCmd(ClientData dummy, Tcl_Interp *interp, MODULE_SCOPE Tcl_Obj * TclInfoFrame(Tcl_Interp *interp, CmdFrame *framePtr); MODULE_SCOPE int TclInfoGlobalsCmd(ClientData dummy, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); +MODULE_SCOPE int TclInfoLinkedNameCmd(ClientData dummy, + Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); MODULE_SCOPE int TclInfoLocalsCmd(ClientData dummy, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); MODULE_SCOPE int TclInfoVarsCmd(ClientData dummy, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); MODULE_SCOPE void TclInitAlloc(void); +MODULE_SCOPE void TclInitArrayHashTable(Var *arrayPtr); MODULE_SCOPE void TclInitDbCkalloc(void); MODULE_SCOPE void TclInitDoubleConversion(void); MODULE_SCOPE void TclInitEmbeddedConfigurationInformation( |