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

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1989-1993 The Regents of the University of California.
  3. '" Copyright (c) 1994-1997 Sun Microsystems, Inc.
  4. '"
  5. '" See the file "license.terms" for information on usage and redistribution
  6. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  7. '" 
  8. '" RCS: @(#) $Id: SetVar.3,v 1.7.2.2 2004/08/16 14:18:25 msofer Exp $
  9. '" 
  10. .so man.macros
  11. .TH Tcl_SetVar 3 8.1 Tcl "Tcl Library Procedures"
  12. .BS
  13. .SH NAME
  14. Tcl_SetVar2Ex, Tcl_SetVar, Tcl_SetVar2, Tcl_ObjSetVar2, Tcl_GetVar2Ex, Tcl_GetVar, Tcl_GetVar2, Tcl_ObjGetVar2, Tcl_UnsetVar, Tcl_UnsetVar2 - manipulate Tcl variables
  15. .SH SYNOPSIS
  16. .nf
  17. fB#include <tcl.h>fR
  18. .sp
  19. .VS 8.1
  20. Tcl_Obj *
  21. fBTcl_SetVar2ExfR(fIinterp, name1, name2, newValuePtr, flagsfR)
  22. .VE
  23. .sp
  24. CONST char *
  25. fBTcl_SetVarfR(fIinterp, varName, newValue, flagsfR)
  26. .sp
  27. CONST char *
  28. fBTcl_SetVar2fR(fIinterp, name1, name2, newValue, flagsfR)
  29. .sp
  30. Tcl_Obj *
  31. fBTcl_ObjSetVar2fR(fIinterp, part1Ptr, part2Ptr, newValuePtr, flagsfR)
  32. .sp
  33. .VS 8.1
  34. Tcl_Obj *
  35. fBTcl_GetVar2ExfR(fIinterp, name1, name2, flagsfR)
  36. .VE
  37. .sp
  38. CONST char *
  39. fBTcl_GetVarfR(fIinterp, varName, flagsfR)
  40. .sp
  41. CONST char *
  42. fBTcl_GetVar2fR(fIinterp, name1, name2, flagsfR)
  43. .sp
  44. Tcl_Obj *
  45. fBTcl_ObjGetVar2fR(fIinterp, part1Ptr, part2Ptr, flagsfR)
  46. .sp
  47. int
  48. fBTcl_UnsetVarfR(fIinterp, varName, flagsfR)
  49. .sp
  50. int
  51. fBTcl_UnsetVar2fR(fIinterp, name1, name2, flagsfR)
  52. .SH ARGUMENTS
  53. .AS Tcl_Interp *newValuePtr
  54. .AP Tcl_Interp *interp in
  55. Interpreter containing variable.
  56. .AP "CONST char" *name1 in
  57. Contains the name of an array variable (if fIname2fR is non-NULL)
  58. or (if fIname2fR is NULL) either the name of a scalar variable
  59. or a complete name including both variable name and index.
  60. May include fB::fR namespace qualifiers
  61. to specify a variable in a particular namespace.
  62. .AP "CONST char" *name2 in
  63. If non-NULL, gives name of element within array; in this
  64. case fIname1fR must refer to an array variable.
  65. .AP Tcl_Obj *newValuePtr in
  66. .VS 8.1
  67. Points to a Tcl object containing the new value for the variable.
  68. .VE
  69. .AP int flags in
  70. OR-ed combination of bits providing additional information. See below
  71. for valid values.
  72. .AP "CONST char" *varName in
  73. Name of variable.
  74. May include fB::fR namespace qualifiers
  75. to specify a variable in a particular namespace.
  76. May refer to a scalar variable or an element of
  77. an array.
  78. .AP "CONST char" *newValue in
  79. New value for variable, specified as a null-terminated string.
  80. A copy of this value is stored in the variable.
  81. .AP Tcl_Obj *part1Ptr in
  82. Points to a Tcl object containing the variable's name.
  83. The name may include a series of fB::fR namespace qualifiers
  84. to specify a variable in a particular namespace.
  85. May refer to a scalar variable or an element of an array variable.
  86. .AP Tcl_Obj *part2Ptr in
  87. If non-NULL, points to an object containing the name of an element
  88. within an array and fIpart1PtrfR must refer to an array variable.
  89. .BE
  90. .SH DESCRIPTION
  91. .PP
  92. These procedures are used to create, modify, read, and delete
  93. Tcl variables from C code.
  94. .PP
  95. .VS 8.1
  96. fBTcl_SetVar2ExfR, fBTcl_SetVarfR, fBTcl_SetVar2fR, and
  97. fBTcl_ObjSetVar2fR 
  98. will create a new variable or modify an existing one.
  99. These procedures set the given variable to the value
  100. given by fInewValuePtrfR or fInewValuefR and return a
  101. pointer to the variable's new value, which is stored in Tcl's
  102. variable structure.
  103. fBTcl_SetVar2ExfR and fBTcl_ObjSetVar2fR take the new value as a
  104. Tcl_Obj and return
  105. a pointer to a Tcl_Obj.  fBTcl_SetVarfR and fBTcl_SetVar2fR
  106. take the new value as a string and return a string; they are
  107. usually less efficient than fBTcl_ObjSetVar2fR.  Note that the
  108. return value may be different than the fInewValuePtrfR or
  109. .VE
  110. fInewValuefR argument, due to modifications made by write traces.
  111. If an error occurs in setting the variable (e.g. an array
  112. variable is referenced without giving an index into the array)
  113. NULL is returned and an error message is left in fIinterpfR's
  114. result if the fBTCL_LEAVE_ERR_MSGfR fIflagfR bit is set.
  115. .PP
  116. .VS 8.1
  117. fBTcl_GetVar2ExfR, fBTcl_GetVarfR, fBTcl_GetVar2fR, and
  118. fBTcl_ObjGetVar2fR
  119. return the current value of a variable.
  120. The arguments to these procedures are treated in the same way
  121. as the arguments to the procedures described above.
  122. Under normal circumstances, the return value is a pointer
  123. to the variable's value.  For fBTcl_GetVar2ExfR and
  124. fBTcl_ObjGetVar2fR the value is
  125. returned as a pointer to a Tcl_Obj.  For fBTcl_GetVarfR and
  126. fBTcl_GetVar2fR the value is returned as a string; this is
  127. usually less efficient, so fBTcl_GetVar2ExfR or fBTcl_ObjGetVar2fR
  128. are preferred.
  129. .VE
  130. If an error occurs while reading the variable (e.g. the variable
  131. doesn't exist or an array element is specified for a scalar
  132. variable), then NULL is returned and an error message is left
  133. in fIinterpfR's result if the fBTCL_LEAVE_ERR_MSGfR fIflagfR
  134. bit is set.
  135. .PP
  136. fBTcl_UnsetVarfR and fBTcl_UnsetVar2fR may be used to remove
  137. a variable, so that future attempts to read the variable will return
  138. an error.
  139. The arguments to these procedures are treated in the same way
  140. as the arguments to the procedures above.
  141. If the variable is successfully removed then TCL_OK is returned.
  142. If the variable cannot be removed because it doesn't exist then
  143. TCL_ERROR is returned and an error message is left
  144. in fIinterpfR's result if the fBTCL_LEAVE_ERR_MSGfR fIflagfR
  145. bit is set.
  146. If an array element is specified, the given element is removed
  147. but the array remains.
  148. If an array name is specified without an index, then the entire
  149. array is removed.
  150. .PP
  151. The name of a variable may be specified to these procedures in
  152. four ways:
  153. .IP [1]
  154. If fBTcl_SetVarfR, fBTcl_GetVarfR, or fBTcl_UnsetVarfR
  155. is invoked, the variable name is given as
  156. a single string, fIvarNamefR.
  157. If fIvarNamefR contains an open parenthesis and ends with a
  158. close parenthesis, then the value between the parentheses is
  159. treated as an index (which can have any string value) and
  160. the characters before the first open
  161. parenthesis are treated as the name of an array variable.
  162. If fIvarNamefR doesn't have parentheses as described above, then
  163. the entire string is treated as the name of a scalar variable.
  164. .IP [2]
  165. If the fIname1fR and fIname2fR arguments are provided and
  166. fIname2fR is non-NULL, then an array element is specified and
  167. the array name and index have
  168. already been separated by the caller: fIname1fR contains the
  169. name and fIname2fR contains the index.
  170. .VS 8.1
  171. An error is generated
  172. if fIname1fR  contains an open parenthesis and ends with a
  173. close parenthesis (array element) and fIname2fR is non-NULL.
  174. .IP [3]
  175. If fIname2fR is NULL, fIname1fR is treated just like
  176. fIvarNamefR in case [1] above (it can be either a scalar or an array
  177. element variable name).
  178. .VE
  179. .PP
  180. The fIflagsfR argument may be used to specify any of several
  181. options to the procedures.
  182. It consists of an OR-ed combination of the following bits.
  183. .TP
  184. fBTCL_GLOBAL_ONLYfR
  185. Under normal circumstances the procedures look up variables as follows.
  186. If a procedure call is active in fIinterpfR,
  187. the variable is looked up at the current level of procedure call.
  188. Otherwise, the variable is looked up first in the current namespace,
  189. then in the global namespace.
  190. However, if this bit is set in fIflagsfR then the variable
  191. is looked up only in the global namespace
  192. even if there is a procedure call active.
  193. If both fBTCL_GLOBAL_ONLYfR and fBTCL_NAMESPACE_ONLYfR are given,
  194. fBTCL_GLOBAL_ONLYfR is ignored.
  195. .TP
  196. fBTCL_NAMESPACE_ONLYfR
  197. If this bit is set in fIflagsfR then the variable
  198. is looked up only in the current namespace; if a procedure is active
  199. its variables are ignored, and the global namespace is also ignored unless
  200. it is the current namespace.
  201. .TP
  202. fBTCL_LEAVE_ERR_MSGfR
  203. If an error is returned and this bit is set in fIflagsfR, then
  204. an error message will be left in the interpreter's result,
  205. where it can be retrieved with fBTcl_GetObjResultfR
  206. or fBTcl_GetStringResultfR.
  207. If this flag bit isn't set then no error message is left
  208. and the interpreter's result will not be modified.
  209. .TP
  210. fBTCL_APPEND_VALUEfR
  211. If this bit is set then fInewValuePtrfR or fInewValuefR is
  212. appended to the current value instead of replacing it.
  213. If the variable is currently undefined, then the bit is ignored.
  214. This bit is only used by the fBTcl_Set*fR procedures.
  215. .TP
  216. fBTCL_LIST_ELEMENTfR
  217. If this bit is set, then fInewValuefR is converted to a valid
  218. Tcl list element before setting (or appending to) the variable.
  219. A separator space is appended before the new list element unless
  220. the list element is going to be the first element in a list or
  221. sublist (i.e. the variable's current value is empty, or contains
  222. the single character ``{'', or ends in `` }'').
  223. When appending, the original value of the variable must also be
  224. a valid list, so that the operation is the appending of a new
  225. list element onto a list.
  226. .PP
  227. fBTcl_GetVarfR and fBTcl_GetVar2fR
  228. return the current value of a variable.
  229. The arguments to these procedures are treated in the same way
  230. as the arguments to fBTcl_SetVarfR and fBTcl_SetVar2fR.
  231. Under normal circumstances, the return value is a pointer
  232. to the variable's value (which is stored in Tcl's variable
  233. structure and will not change before the next call to fBTcl_SetVarfR
  234. or fBTcl_SetVar2fR).
  235. fBTcl_GetVarfR and fBTcl_GetVar2fR use the flag bits TCL_GLOBAL_ONLY
  236. and TCL_LEAVE_ERR_MSG, both of
  237. which have
  238. the same meaning as for fBTcl_SetVarfR.
  239. If an error occurs in reading the variable (e.g. the variable
  240. doesn't exist or an array element is specified for a scalar
  241. variable), then NULL is returned.
  242. .PP
  243. fBTcl_UnsetVarfR and fBTcl_UnsetVar2fR may be used to remove
  244. a variable, so that future calls to fBTcl_GetVarfR or fBTcl_GetVar2fR
  245. for the variable will return an error.
  246. The arguments to these procedures are treated in the same way
  247. as the arguments to fBTcl_GetVarfR and fBTcl_GetVar2fR.
  248. If the variable is successfully removed then TCL_OK is returned.
  249. If the variable cannot be removed because it doesn't exist then
  250. TCL_ERROR is returned.
  251. If an array element is specified, the given element is removed
  252. but the array remains.
  253. If an array name is specified without an index, then the entire
  254. array is removed.
  255. .SH "SEE ALSO"
  256. Tcl_GetObjResult, Tcl_GetStringResult, Tcl_TraceVar
  257. .SH KEYWORDS
  258. array, get variable, interpreter, object, scalar, set, unset, variable