summaryrefslogtreecommitdiffstats
path: root/generic/tclInt.h
diff options
context:
space:
mode:
authormlafon <mlafon@gmail.com>2017-05-04 22:27:23 (GMT)
committermlafon <mlafon@gmail.com>2017-05-04 22:27:23 (GMT)
commit45bf0120ad12d84441a0c3133a9aa88c446afdc0 (patch)
treec5fa202ff0effa2d836caa70c515e9376bb7f25f /generic/tclInt.h
parentaa7f26cefe717461f284fb9e389ee6a613b2d970 (diff)
downloadtcl-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.h15
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(