CrtSlave.3
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:10k
源码类别:

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1995-1996 Sun Microsystems, Inc.
  3. '"
  4. '" See the file "license.terms" for information on usage and redistribution
  5. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  6. '" 
  7. '" RCS: @(#) $Id: CrtSlave.3,v 1.8.2.2 2003/07/18 15:20:51 dgp Exp $
  8. '" 
  9. .so man.macros
  10. .TH Tcl_CreateSlave 3 7.6 Tcl "Tcl Library Procedures"
  11. .BS
  12. .SH NAME
  13. Tcl_IsSafe, Tcl_MakeSafe, Tcl_CreateSlave, Tcl_GetSlave, Tcl_GetMaster, Tcl_GetInterpPath, Tcl_CreateAlias, Tcl_CreateAliasObj, Tcl_GetAlias, Tcl_GetAliasObj, Tcl_ExposeCommand, Tcl_HideCommand - manage multiple Tcl interpreters, aliases and hidden commands.
  14. .SH SYNOPSIS
  15. .nf
  16. fB#include <tcl.h>fR
  17. .sp
  18. int
  19. fBTcl_IsSafefR(fIinterpfR)
  20. .sp
  21. int
  22. fBTcl_MakeSafefR(fIinterpfR)
  23. .sp
  24. Tcl_Interp *
  25. fBTcl_CreateSlavefR(fIinterp, slaveName, isSafefR)
  26. .sp
  27. Tcl_Interp *
  28. fBTcl_GetSlavefR(fIinterp, slaveNamefR)
  29. .sp
  30. Tcl_Interp *
  31. fBTcl_GetMasterfR(fIinterpfR)
  32. .sp
  33. int
  34. fBTcl_GetInterpPathfR(fIaskingInterp, slaveInterpfR)
  35. .sp
  36. .VS
  37. int
  38. fBTcl_CreateAliasfR(fIslaveInterp, slaveCmd, targetInterp, targetCmd, argc, argvfR)
  39. .sp
  40. int
  41. fBTcl_CreateAliasObjfR(fIslaveInterp, slaveCmd, targetInterp, targetCmd, objc, objvfR)
  42. .VE
  43. .sp
  44. int
  45. fBTcl_GetAliasfR(fIinterp, slaveCmd, targetInterpPtr, targetCmdPtr, argcPtr, argvPtrfR)
  46. .sp
  47. .VS
  48. int
  49. fBTcl_GetAliasObjfR(fIinterp, slaveCmd, targetInterpPtr, targetCmdPtr, objcPtr, objvPtrfR)
  50. .sp
  51. int
  52. fBTcl_ExposeCommandfR(fIinterp, hiddenCmdName, cmdNamefR)
  53. .sp
  54. int
  55. fBTcl_HideCommandfR(fIinterp, cmdName, hiddenCmdNamefR)
  56. .SH ARGUMENTS
  57. .AS Tcl_InterpDeleteProc **hiddenCmdName
  58. .AP Tcl_Interp *interp in
  59. Interpreter in which to execute the specified command.
  60. .AP "CONST char" *slaveName in
  61. Name of slave interpreter to create or manipulate.
  62. .AP int isSafe in
  63. If non-zero, a ``safe'' slave that is suitable for running untrusted code
  64. is created, otherwise a trusted slave is created.
  65. .AP Tcl_Interp *slaveInterp in
  66. Interpreter to use for creating the source command for an alias (see
  67. below).
  68. .AP "CONST char" *slaveCmd in
  69. Name of source command for alias.
  70. .AP Tcl_Interp *targetInterp in
  71. Interpreter that contains the target command for an alias.
  72. .AP "CONST char" *targetCmd in
  73. Name of target command for alias in fItargetInterpfR.
  74. .AP int argc in
  75. Count of additional arguments to pass to the alias command.
  76. .AP "CONST char * CONST" *argv in
  77. Vector of strings, the additional arguments to pass to the alias command.
  78. This storage is owned by the caller.
  79. .AP int objc in
  80. Count of additional object arguments to pass to the alias object command.
  81. .AP Tcl_Object **objv in
  82. Vector of Tcl_Obj structures, the additional object arguments to pass to
  83. the alias object command.
  84. This storage is owned by the caller.
  85. .AP Tcl_Interp **targetInterpPtr in
  86. Pointer to location to store the address of the interpreter where a target
  87. command is defined for an alias.
  88. .AP "CONST char" **targetCmdPtr out
  89. Pointer to location to store the address of the name of the target command
  90. for an alias.
  91. .AP int *argcPtr out
  92. Pointer to location to store count of additional arguments to be passed to
  93. the alias. The location is in storage owned by the caller.
  94. .AP "CONST char" ***argvPtr out
  95. Pointer to location to store a vector of strings, the additional arguments
  96. to pass to an alias. The location is in storage owned by the caller, the
  97. vector of strings is owned by the called function.
  98. .AP int *objcPtr out
  99. Pointer to location to store count of additional object arguments to be
  100. passed to the alias. The location is in storage owned by the caller.
  101. .AP Tcl_Obj ***objvPtr out
  102. Pointer to location to store a vector of Tcl_Obj structures, the additional
  103. arguments to pass to an object alias command. The location is in storage
  104. owned by the caller, the vector of Tcl_Obj structures is owned by the
  105. called function.
  106. .VS
  107. .VS 8.4
  108. .AP "CONST char" *cmdName in
  109. .VE
  110. Name of an exposed command to hide or create.
  111. .VS 8.4
  112. .AP "CONST char" *hiddenCmdName in
  113. .VE
  114. Name under which a hidden command is stored and with which it can be
  115. exposed or invoked.
  116. .VE
  117. .BE
  118. .SH DESCRIPTION
  119. .PP
  120. These procedures are intended for access to the multiple interpreter
  121. facility from inside C programs. They enable managing multiple interpreters
  122. in a hierarchical relationship, and the management of aliases, commands
  123. that when invoked in one interpreter execute a command in another
  124. interpreter. The return value for those procedures that return an fBintfR
  125. is either fBTCL_OKfR or fBTCL_ERRORfR. If fBTCL_ERRORfR is returned
  126. then the fBresultfR field of the interpreter contains an error message.
  127. .PP
  128. fBTcl_CreateSlavefR creates a new interpreter as a slave of fIinterpfR.
  129. It also creates a slave command named fIslaveNamefR in fIinterpfR which 
  130. allows fIinterpfR to manipulate the new slave. 
  131. If fIisSafefR is zero, the command creates a trusted slave in which Tcl
  132. code has access to all the Tcl commands.
  133. If it is fB1fR, the command creates a ``safe'' slave in which Tcl code
  134. has access only to set of Tcl commands defined as ``Safe Tcl''; see the
  135. manual entry for the Tcl fBinterpfR command for details.
  136. If the creation of the new slave interpreter failed, fBNULLfR is returned.
  137. .PP
  138. fBTcl_IsSafefR returns fB1fR if fIinterpfR is ``safe'' (was created
  139. with the fBTCL_SAFE_INTERPRETERfR flag specified),
  140. fB0fR otherwise.
  141. .PP
  142. fBTcl_MakeSafefR marks fIinterpfR as ``safe'', so that future
  143. calls to fBTcl_IsSafefR will return 1.  It also removes all known
  144. potentially-unsafe core functionality (both commands and variables)
  145. from fIinterpfR.  However, it cannot know what parts of an extension
  146. or application are safe and does not make any attempt to remove those
  147. parts, so safety is not guaranteed after calling fBTcl_MakeSafefR.
  148. Callers will want to take care with their use of fBTcl_MakeSafefR
  149. to avoid false claims of safety.  For many situations, fBTcl_CreateSlavefR
  150. may be a better choice, since it creates interpreters in a known-safe state.
  151. .PP
  152. fBTcl_GetSlavefR returns a pointer to a slave interpreter of
  153. fIinterpfR. The slave interpreter is identified by fIslaveNamefR.
  154. If no such slave interpreter exists, fBNULLfR is returned.
  155. .PP
  156. fBTcl_GetMasterfR returns a pointer to the master interpreter of
  157. fIinterpfR. If fIinterpfR has no master (it is a
  158. top-level interpreter) then fBNULLfR is returned.
  159. .PP
  160. fBTcl_GetInterpPathfR sets the fIresultfR field in fIaskingInterpfR
  161. to the relative path between fIaskingInterpfR and fIslaveInterpfR;
  162. fIslaveInterpfR must be a slave of fIaskingInterpfR. If the computation
  163. of the relative path succeeds, fBTCL_OKfR is returned, else
  164. fBTCL_ERRORfR is returned and the fIresultfR field in
  165. fIaskingInterpfR contains the error message.
  166. .PP
  167. .VS
  168. fBTcl_CreateAliasfR creates an object command named fIslaveCmdfR in
  169. fIslaveInterpfR that when invoked, will cause the command fItargetCmdfR
  170. to be invoked in fItargetInterpfR. The arguments specified by the strings
  171. contained in fIargvfR are always prepended to any arguments supplied in the
  172. invocation of fIslaveCmdfR and passed to fItargetCmdfR.
  173. This operation returns fBTCL_OKfR if it succeeds, or fBTCL_ERRORfR if
  174. it fails; in that case, an error message is left in the object result
  175. of fIslaveInterpfR.
  176. Note that there are no restrictions on the ancestry relationship (as
  177. created by fBTcl_CreateSlavefR) between fIslaveInterpfR and
  178. fItargetInterpfR. Any two interpreters can be used, without any
  179. restrictions on how they are related.
  180. .PP
  181. fBTcl_CreateAliasObjfR is similar to fBTcl_CreateAliasfR except 
  182. that it takes a vector of objects to pass as additional arguments instead
  183. of a vector of strings.
  184. .VE
  185. .PP
  186. fBTcl_GetAliasfR returns information about an alias fIaliasNamefR
  187. in fIinterpfR. Any of the result fields can be fBNULLfR, in
  188. which case the corresponding datum is not returned. If a result field is
  189. non-fBNULLfR, the address indicated is set to the corresponding datum.
  190. For example, if fItargetNamePtrfR is non-fBNULLfR it is set to a
  191. pointer to the string containing the name of the target command.
  192. .VS
  193. .PP
  194. fBTcl_GetAliasObjfR is similar to fBTcl_GetAliasfR except that it
  195. returns a pointer to a vector of Tcl_Obj structures instead of a vector of
  196. strings.
  197. .PP
  198. fBTcl_ExposeCommandfR moves the command named fIhiddenCmdNamefR from
  199. the set of hidden commands to the set of exposed commands, putting
  200. it under the name
  201. fIcmdNamefR. 
  202. fIHiddenCmdNamefR must be the name of an existing hidden
  203. command, or the operation will return fBTCL_ERRORfR and leave an error
  204. message in the fIresultfR field in fIinterpfR.
  205. If an exposed command named fIcmdNamefR already exists,
  206. the operation returns fBTCL_ERRORfR and leaves an error message in the
  207. object result of fIinterpfR.
  208. If the operation succeeds, it returns fBTCL_OKfR.
  209. After executing this command, attempts to use fIcmdNamefR in a call to
  210. fBTcl_EvalfR or with the Tcl fBevalfR command will again succeed.
  211. .PP
  212. fBTcl_HideCommandfR moves the command named fIcmdNamefR from the set of
  213. exposed commands to the set of hidden commands, under the name
  214. fIhiddenCmdNamefR.
  215. fICmdNamefR must be the name of an existing exposed
  216. command, or the operation will return fBTCL_ERRORfR and leave an error
  217. message in the object result of fIinterpfR.
  218. Currently both fIcmdNamefR and fIhiddenCmdNamefR must not contain
  219. namespace qualifiers, or the operation will return fBTCL_ERRORfR and
  220. leave an error message in the object result of fIinterpfR.
  221. The fICmdNamefR will be looked up in the global namespace, and not
  222. relative to the current namespace, even if the current namespace is not the
  223. global one.
  224. If a hidden command whose name is fIhiddenCmdNamefR already
  225. exists, the operation also returns fBTCL_ERRORfR and the fIresultfR
  226. field in fIinterpfR contains an error message.
  227. If the operation succeeds, it returns fBTCL_OKfR.
  228. After executing this command, attempts to use fIcmdNamefR in a call to
  229. fBTcl_EvalfR or with the Tcl fBevalfR command will fail.
  230. .PP
  231. For a description of the Tcl interface to multiple interpreters, see
  232. fIinterp(n)fR.
  233. .SH "SEE ALSO"
  234. interp
  235. .SH KEYWORDS
  236. alias, command, exposed commands, hidden commands, interpreter, invoke,
  237. master, slave