1 /*
2  * bltNsUtil.h --
3  *
4  * Copyright 1993-1998 Lucent Technologies, Inc.
5  *
6  * Permission to use, copy, modify, and distribute this software and
7  * its documentation for any purpose and without fee is hereby
8  * granted, provided that the above copyright notice appear in all
9  * copies and that both that the copyright notice and warranty
10  * disclaimer appear in supporting documentation, and that the names
11  * of Lucent Technologies any of their entities not be used in
12  * advertising or publicity pertaining to distribution of the software
13  * without specific, written prior permission.
14  *
15  * Lucent Technologies disclaims all warranties with regard to this
16  * software, including all implied warranties of merchantability and
17  * fitness.  In no event shall Lucent Technologies be liable for any
18  * special, indirect or consequential damages or any damages
19  * whatsoever resulting from loss of use, data or profits, whether in
20  * an action of contract, negligence or other tortuous action, arising
21  * out of or in connection with the use or performance of this
22  * software.
23  */
24 
25 #ifndef BLT_NS_UTIL_H
26 #define BLT_NS_UTIL_H 1
27 
28 #if defined(ITCL_NAMESPACES) || (TCL_MAJOR_VERSION >= 8)
29 #define HAVE_NAMESPACES 1
30 #else
31 #define HAVE_NAMESPACES 0
32 #endif
33 
34 #if (TCL_MAJOR_VERSION <= 7)
35 
36 /*
37  * Namespaces and callframes don't exist before Tcl version 8.0.
38  * We'll define them as opaque pointers.  In reality, they
39  * point to the interpreter token.
40  */
41 typedef struct Tcl_NamespaceStruct Tcl_Namespace;
42 typedef struct Tcl_CallFrameStruct *Tcl_CallFrame;
43 #endif
44 
45 #ifndef TCL_NAMESPACE_ONLY
46 #define TCL_NAMESPACE_ONLY TCL_GLOBAL_ONLY
47 #endif
48 
49 #define NS_SEARCH_NONE		(0)
50 #define NS_SEARCH_CURRENT	(1<<0)
51 #define NS_SEARCH_GLOBAL	(1<<1)
52 #define NS_SEARCH_BOTH		(NS_SEARCH_GLOBAL | NS_SEARCH_CURRENT)
53 
54 #ifndef WIN32
55 #if 0
56 EXTERN Tcl_Command Tcl_FindCommand _ANSI_ARGS_((Tcl_Interp *interp,
57 	char *name, Tcl_Namespace *nsPtr, int flags));
58 
59 
60 /*
61  * Namespace procedures not prototyped defined in Tcl.h
62  */
63 EXTERN Tcl_Namespace *Tcl_GetCurrentNamespace _ANSI_ARGS_((Tcl_Interp *interp));
64 
65 EXTERN Tcl_Namespace *Tcl_GetGlobalNamespace _ANSI_ARGS_((Tcl_Interp *interp));
66 
67 #if (TCL_MAJOR_VERSION >= 8)
68 EXTERN Tcl_Namespace *Tcl_CreateNamespace _ANSI_ARGS_((Tcl_Interp *interp,
69 	char *name, ClientData clientData, Tcl_NamespaceDeleteProc *nsDelProc));
70 
71 EXTERN void Tcl_DeleteNamespace _ANSI_ARGS_((Tcl_Namespace *nsPtr));
72 
73 EXTERN Tcl_Namespace *Tcl_FindNamespace _ANSI_ARGS_((Tcl_Interp *interp,
74 	char *name, Tcl_Namespace *context, int flags));
75 
76 EXTERN int Tcl_Export _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Namespace *nsPtr,
77 	char *name, int resetFlag));
78 
79 EXTERN Tcl_Var Tcl_FindNamespaceVar _ANSI_ARGS_((Tcl_Interp *interp, char *name,
80 	Tcl_Namespace *contextNsPtr, int flags));
81 
82 EXTERN void Tcl_PopCallFrame _ANSI_ARGS_((Tcl_Interp *interp));
83 
84 EXTERN int Tcl_PushCallFrame _ANSI_ARGS_((Tcl_Interp *interp,
85 	Tcl_CallFrame * framePtr, Tcl_Namespace *nsPtr, int isProcCallFrame));
86 #endif /* 0 */
87 
88 extern Tcl_HashTable *Blt_GetArrayVariableTable _ANSI_ARGS_((
89 	Tcl_Interp *interp, CONST char *varName, int flags));
90 
91 #endif /* TCL_MAJOR_VERSION >= 8 */
92 #endif /* WIN32 */
93 
94 
95 /*
96  * Auxillary procedures
97  */
98 EXTERN Tcl_Namespace *Blt_GetVariableNamespace _ANSI_ARGS_((Tcl_Interp *interp,
99 	CONST char *varName));
100 
101 EXTERN Tcl_Namespace *Blt_GetCommandNamespace _ANSI_ARGS_((Tcl_Interp *interp,
102 	Tcl_Command cmdToken));
103 
104 EXTERN Tcl_CallFrame *Blt_EnterNamespace _ANSI_ARGS_((Tcl_Interp *interp,
105 	Tcl_Namespace *nsPtr));
106 
107 EXTERN void Blt_LeaveNamespace _ANSI_ARGS_((Tcl_Interp *interp,
108 	Tcl_CallFrame * framePtr));
109 
110 EXTERN int Blt_ParseQualifiedName _ANSI_ARGS_((Tcl_Interp *interp,
111 	CONST char *name, Tcl_Namespace **nsPtrPtr, CONST char **namePtr));
112 
113 EXTERN char *Blt_GetQualifiedName _ANSI_ARGS_((Tcl_Namespace *nsPtr,
114 	CONST char *name, Tcl_DString *resultPtr));
115 
116 EXTERN Tcl_Command Blt_CreateCommand _ANSI_ARGS_((Tcl_Interp *interp,
117 	CONST char *cmdName, Tcl_CmdProc *proc, ClientData clientData,
118 	Tcl_CmdDeleteProc *deleteProc));
119 
120 
121 #endif /* BLT_NS_UTIL_H */
122