_________________________________________________________________ NAME 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. SYNOPSIS #include <tcl.h> int Tcl_IsSafe(interp) int Tcl_MakeSafe(interp) Tcl_Interp * Tcl_CreateSlave(interp, slaveName, isSafe) Tcl_Interp * Tcl_GetSlave(interp, slaveName) Tcl_Interp * Tcl_GetMaster(interp) int Tcl_GetInterpPath(askingInterp, slaveInterp) int | Tcl_CreateAlias(slaveInterp, srcCmd, targetInterp, targetCmd, argc, argv)| int | Tcl_CreateAliasObj(slaveInterp, srcCmd, targetInterp, targetCmd, objc, objv)| int Tcl_GetAlias(interp, srcCmd, targetInterpPtr, targetCmdPtr, argcPtr, argvPtr) int | Tcl_GetAliasObj(interp, srcCmd, targetInterpPtr, targetCmdPtr, objcPtr, objvPtr)| int | Tcl_ExposeCommand(interp, hiddenCmdName, cmdName) | int | Tcl_HideCommand(interp, cmdName, hiddenCmdName) | ARGUMENTS | Tcl_Interp *interp (in) || Inter- | preter in | which to | execute | the | specified | command. | char *slaveName (in) || Name of | slave | inter- | preter to | create or | manipu- | late. | int isSafe (in) || If non- | zero, a | ``safe'' | slave | that is | suitable | for run- | ning | untrusted | code is | created, | otherwise | a trusted | slave is | created. | Tcl_Interp *slaveInterp (in) || Inter- | preter to | use for | creating | the | source | command | for an | alias | (see | below). | char *srcCmd (in) || Name of | source | command | for | alias. | Tcl_Interp *targetInterp (in) || Inter- | preter | that con- | tains the | target | command | for an | alias. | char *targetCmd (in) || Name of | target | command | for alias | in tar- | getIn- | terp. | int argc (in) || Count of | addi- | tional | arguments | to pass | to the | alias | command. | char **argv (in) || Vector of | strings, | the addi- | tional | arguments | to pass | to the | alias | command. | This | storage | is owned | by the | caller. | int objc (in) || Count of | addi- | tional | object | arguments | to pass | to the | alias | object | command. | Tcl_Object **objv (in) || Vector of | Tcl_Obj | struc- | tures, | the addi- | tional | object | argumenst | to pass | to the | alias | object | command. | This | storage | is owned | by the | caller. | Tcl_Interp **targetInterpPtr (in) || Pointer | to loca- | tion to | store the | address | of the | inter- | preter | where a | target | command | is | defined | for an | alias. | char **targetCmdPtr (out) || Pointer | to loca- | tion to | store the | address | of the | name of | the tar- | get | command | for an | alias. | int *argcPtr (out) || Pointer | to loca- | tion to | store | count of | addi- | tional | arguments | to be | passed to | the | alias. | The loca- | tion is | in | storage | owned by | the | caller. | char ***argvPtr (out) || Pointer | to loca- | tion to | store a | vector of | strings, | the addi- | tional | arguments | to pass | to an | alias. | The loca- | tion is | in | storage | owned by | the | caller, | the vec- | tor of | strings | is owned | by the | called | function. | int *objcPtr (out) || Pointer | to loca- | tion to | store | count of | addi- | tional | object | arguments | to be | passed to | the | alias. | The loca- | tion is | in | storage | owned by | the | caller. | Tcl_Obj ***objvPtr (out) || Pointer | to loca- | tion to | store a | vector of | Tcl_Obj | struc- | tures, | the addi- | tional | arguments | to pass | to an | object | alias | command. | The loca- | tion is | in | storage | owned by | the | caller, | the vec- | tor of | Tcl_Obj | struc- | tures is | owned by | the | called | function. | char *cmdName (in) || Name of | an | exposed | command | to hide | or | create. | char *hiddenCmdName (in) || Name | under | which a | hidden | command | is stored | and with | which it | can be | exposed | or | invoked. _________________________________________________________________ DESCRIPTION These procedures are intended for access to the multiple interpreter facility from inside C programs. They enable managing multiple interpreters in a hierarchical relation- ship, and the management of aliases, commands that when invoked in one interpreter execute a command in another interpreter. The return value for those procedures that return an int is either TCL_OK or TCL_ERROR. If TCL_ERROR is returned then the result field of the interpreter contains an error message. Tcl_CreateSlave creates a new interpreter as a slave of interp. It also creates a slave command named slaveName in interp which allows interp to manipulate the new slave. If isSafe is zero, the command creates a trusted slave in which Tcl code has access to all the Tcl commands. If it is 1, the command creates a ``safe'' slave in which Tcl code has access only to set of Tcl commands defined as ``Safe Tcl''; see the manual entry for the Tcl interp command for details. If the creation of the new slave interpreter failed, NULL is returned. Tcl_IsSafe returns 1 if interp is ``safe'' (was created with the TCL_SAFE_INTERPRETER flag specified), 0 otherwise. Tcl_MakeSafe makes interp ``safe'' by removing all non-core and core unsafe functionality. Note that if you call this after adding some extension to an interpreter, all traces of that extension will be removed from the interpreter. Tcl_GetSlave returns a pointer to a slave interpreter of interp. The slave interpreter is identified by slaveName. If no such slave interpreter exists, NULL is returned. Tcl_GetMaster returns a pointer to the master interpreter of interp. If interp has no master (it is a top-level inter- preter) then NULL is returned. Tcl_GetInterpPath sets the result field in askingInterp to the relative path between askingInterp and slaveInterp; slaveInterp must be a slave of askingInterp. If the computa- tion of the relative path succeeds, TCL_OK is returned, else TCL_ERROR is returned and the result field in askingInterp contains the error message. Tcl_CreateAlias creates an object command named srcCmd in | slaveInterp that when invoked, will cause the command tar- | getCmd to be invoked in targetInterp. The arguments speci- | fied by the strings contained in argv are always prepended | to any arguments supplied in the invocation of srcCmd and | passed to targetCmd. This operation returns TCL_OK if it | succeeds, or TCL_ERROR if it fails; in that case, an error | message is left in the object result of slaveInterp. Note | that there are no restrictions on the ancestry relationship | (as created by Tcl_CreateSlave) between slaveInterp and tar- | getInterp. Any two interpreters can be used, without any | restrictions on how they are related. | Tcl_CreateAliasObj is similar to Tcl_CreateAlias except that | it takes a vector of objects to pass as additional arguments | instead of a vector of strings. Tcl_GetAlias returns information about an alias aliasName in interp. Any of the result fields can be NULL, in which case the corresponding datum is not returned. If a result field is non-NULL, the address indicated is set to the correspond- ing datum. For example, if targetNamePtr is non-NULL it is set to a pointer to the string containing the name of the target command. | Tcl_GetAliasObj is similar to Tcl_GetAlias except that it | returns a pointer to a vector of Tcl_Obj structures instead | of a vector of strings. | Tcl_ExposeCommand moves the command named hiddenCmdName from | the set of hidden commands to the set of exposed commands, | putting it under the name cmdName. HiddenCmdName must be the | name of an existing hidden command, or the operation will | return TCL_ERROR and leave an error message in the result | field in interp. If an exposed command named cmdName | already exists, the operation returns TCL_ERROR and leaves | an error message in the object result of interp. If the | operation succeeds, it returns TCL_OK. After executing this | command, attempts to use cmdName in a call to Tcl_Eval or | with the Tcl eval command will again succeed. | Tcl_HideCommand moves the command named cmdName from the set | of exposed commands to the set of hidden commands, under the | name hiddenCmdName. CmdName must be the name of an existing | exposed command, or the operation will return TCL_ERROR and | leave an error message in the object result of interp. | Currently both cmdName and hiddenCmdName must not contain | namespace qualifiers, or the operation will return TCL_ERROR | and leave an error message in the object result of interp. | The CmdName will be looked up in the global namespace, and | not relative to the current namespace, even if the current | namespace is not the global one. If a hidden command whose | name is hiddenCmdName already exists, the operation also | returns TCL_ERROR and the result field in interp contains an | error message. If the operation succeeds, it returns | TCL_OK. After executing this command, attempts to use | cmdName in a call to Tcl_Eval or with the Tcl eval command | will fail. | SEE ALSO | For a description of the Tcl interface to multiple inter- | preters, see interp(n). | KEYWORDS | alias, command, exposed commands, hidden commands, inter- | preter, invoke, master, slave, |
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |