Posted to tcl by jdc at Tue Oct 02 09:29:16 GMT 2007view raw

  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.  
  50. EXTERN Tcl_Command Tcl_FindCommand _ANSI_ARGS_((Tcl_Interp *interp,
  51. CONST char *name, Tcl_Namespace *nsPtr, int flags));
  52.  
  53. #define NS_SEARCH_NONE (0)
  54. #define NS_SEARCH_CURRENT (1<<0)
  55. #define NS_SEARCH_GLOBAL (1<<1)
  56. #define NS_SEARCH_BOTH (NS_SEARCH_GLOBAL | NS_SEARCH_CURRENT)
  57.  
  58.  
  59. /*
  60. * Namespace procedures not prototyped defined in Tcl.h
  61. */
  62. EXTERN Tcl_Namespace *Tcl_GetCurrentNamespace _ANSI_ARGS_((Tcl_Interp *interp));
  63.  
  64. EXTERN Tcl_Namespace *Tcl_GetGlobalNamespace _ANSI_ARGS_((Tcl_Interp *interp));
  65.  
  66. #if (TCL_MAJOR_VERSION >= 8)
  67. EXTERN Tcl_Namespace *Tcl_CreateNamespace _ANSI_ARGS_((Tcl_Interp *interp,
  68. CONST char *name, ClientData clientData, Tcl_NamespaceDeleteProc *nsDelProc));
  69.  
  70. EXTERN void Tcl_DeleteNamespace _ANSI_ARGS_((Tcl_Namespace *nsPtr));
  71.  
  72. EXTERN Tcl_Namespace *Tcl_FindNamespace _ANSI_ARGS_((Tcl_Interp *interp,
  73. CONST char *name, Tcl_Namespace *context, int flags));
  74.  
  75. EXTERN int Tcl_Export _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Namespace *nsPtr,
  76. CONST char *name, int resetFlag));
  77.  
  78. EXTERN Tcl_Var Tcl_FindNamespaceVar _ANSI_ARGS_((Tcl_Interp *interp, char *name,
  79. Tcl_Namespace *contextNsPtr, int flags));
  80.  
  81. EXTERN void Tcl_PopCallFrame _ANSI_ARGS_((Tcl_Interp *interp));
  82.  
  83. EXTERN int Tcl_PushCallFrame _ANSI_ARGS_((Tcl_Interp *interp,
  84. Tcl_CallFrame * framePtr, Tcl_Namespace *nsPtr, int isProcCallFrame));
  85.  
  86. extern Tcl_HashTable *Blt_GetArrayVariableTable _ANSI_ARGS_((
  87. Tcl_Interp *interp, CONST char *varName, int flags));
  88.  
  89. #endif /* TCL_MAJOR_VERSION >= 8 */
  90.  
  91.  
  92. /*
  93. * Auxillary procedures
  94. */
  95. EXTERN Tcl_Namespace *Blt_GetVariableNamespace _ANSI_ARGS_((Tcl_Interp *interp,
  96. CONST char *varName));
  97.  
  98. EXTERN Tcl_Namespace *Blt_GetCommandNamespace _ANSI_ARGS_((Tcl_Interp *interp,
  99. Tcl_Command cmdToken));
  100.  
  101. EXTERN Tcl_CallFrame *Blt_EnterNamespace _ANSI_ARGS_((Tcl_Interp *interp,
  102. Tcl_Namespace *nsPtr));
  103.  
  104. EXTERN void Blt_LeaveNamespace _ANSI_ARGS_((Tcl_Interp *interp,
  105. Tcl_CallFrame * framePtr));
  106.  
  107. EXTERN int Blt_ParseQualifiedName _ANSI_ARGS_((Tcl_Interp *interp,
  108. CONST char *name, Tcl_Namespace **nsPtrPtr, CONST char **namePtr));
  109.  
  110. EXTERN char *Blt_GetQualifiedName _ANSI_ARGS_((Tcl_Namespace *nsPtr,
  111. CONST char *name, Tcl_DString *resultPtr));
  112.  
  113. EXTERN Tcl_Command Blt_CreateCommand _ANSI_ARGS_((Tcl_Interp *interp,
  114. CONST char *cmdName, Tcl_CmdProc *proc, ClientData clientData,
  115. Tcl_CmdDeleteProc *deleteProc));
  116.  
  117.  
  118. #endif /* BLT_NS_UTIL_H */