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

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1993 The Regents of the University of California.
  3. '" Copyright (c) 1994-1996 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: LinkVar.3,v 1.6.2.1 2003/07/18 16:56:24 dgp Exp $
  9. '" 
  10. .so man.macros
  11. .TH Tcl_LinkVar 3 7.5 Tcl "Tcl Library Procedures"
  12. .BS
  13. .SH NAME
  14. Tcl_LinkVar, Tcl_UnlinkVar, Tcl_UpdateLinkedVar - link Tcl variable to C variable
  15. .SH SYNOPSIS
  16. .nf
  17. fB#include <tcl.h>fR
  18. .sp
  19. int
  20. fBTcl_LinkVarfR(fIinterp, varName, addr, typefR)
  21. .sp
  22. fBTcl_UnlinkVarfR(fIinterp, varNamefR)
  23. .sp
  24. fBTcl_UpdateLinkedVarfR(fIinterp, varNamefR)
  25. .SH ARGUMENTS
  26. .AS Tcl_Interp writable
  27. .AP Tcl_Interp *interp in
  28. Interpreter that contains fIvarNamefR.
  29. Also used by fBTcl_LinkVarfR to return error messages.
  30. .AP "CONST char" *varName in
  31. Name of global variable.  
  32. .AP char *addr in
  33. Address of C variable that is to be linked to fIvarNamefR.
  34. .AP int type in
  35. Type of C variable.  Must be one of TCL_LINK_INT, TCL_LINK_DOUBLE,
  36. .VS 8.4
  37. TCL_LINK_WIDE_INT,
  38. .VE 8.4
  39. TCL_LINK_BOOLEAN, or TCL_LINK_STRING, optionally OR'ed with
  40. TCL_LINK_READ_ONLY to make Tcl variable read-only.
  41. .BE
  42. .SH DESCRIPTION
  43. .PP
  44. fBTcl_LinkVarfR uses variable traces to keep the Tcl variable
  45. named by fIvarNamefR in sync with the C variable at the address
  46. given by fIaddrfR.
  47. Whenever the Tcl variable is read the value of the C variable will
  48. be returned, and whenever the Tcl variable is written the C
  49. variable will be updated to have the same value.
  50. fBTcl_LinkVarfR normally returns TCL_OK;  if an error occurs
  51. while setting up the link (e.g. because fIvarNamefR is the
  52. name of array) then TCL_ERROR is returned and the interpreter's result
  53. contains an error message.
  54. .PP
  55. The fItypefR argument specifies the type of the C variable,
  56. and must have one of the following values, optionally OR'ed with
  57. TCL_LINK_READ_ONLY:
  58. .TP
  59. fBTCL_LINK_INTfR
  60. The C variable is of type fBintfR.
  61. Any value written into the Tcl variable must have a proper integer
  62. form acceptable to fBTcl_GetIntFromObjfR;  attempts to write
  63. non-integer values into fIvarNamefR will be rejected with
  64. Tcl errors.
  65. .TP
  66. fBTCL_LINK_DOUBLEfR
  67. The C variable is of type fBdoublefR.
  68. Any value written into the Tcl variable must have a proper real
  69. form acceptable to fBTcl_GetDoubleFromObjfR;  attempts to write
  70. non-real values into fIvarNamefR will be rejected with
  71. Tcl errors.
  72. .TP
  73. fBTCL_LINK_WIDE_INTfR
  74. .VS 8.4
  75. The C variable is of type fBTcl_WideIntfR (which is an integer type
  76. at least 64-bits wide on all platforms that can support it.)
  77. Any value written into the Tcl variable must have a proper integer
  78. form acceptable to fBTcl_GetWideIntFromObjfR;  attempts to write
  79. non-integer values into fIvarNamefR will be rejected with
  80. Tcl errors.
  81. .VE 8.4
  82. .TP
  83. fBTCL_LINK_BOOLEANfR
  84. The C variable is of type fBintfR.
  85. If its value is zero then it will read from Tcl as ``0'';
  86. otherwise it will read from Tcl as ``1''.
  87. Whenever fIvarNamefR is
  88. modified, the C variable will be set to a 0 or 1 value.
  89. Any value written into the Tcl variable must have a proper boolean
  90. form acceptable to fBTcl_GetBooleanFromObjfR;  attempts to write
  91. non-boolean values into fIvarNamefR will be rejected with
  92. Tcl errors.
  93. .TP
  94. fBTCL_LINK_STRINGfR
  95. The C variable is of type fBchar *fR.
  96. .VS
  97. If its value is not NULL then it must be a pointer to a string
  98. allocated with fBTcl_AllocfR or fBckallocfR.
  99. .VE
  100. Whenever the Tcl variable is modified the current C string will be
  101. freed and new memory will be allocated to hold a copy of the variable's
  102. new value.
  103. If the C variable contains a NULL pointer then the Tcl variable
  104. will read as ``NULL''.
  105. .PP
  106. If the TCL_LINK_READ_ONLY flag is present in fItypefR then the
  107. variable will be read-only from Tcl, so that its value can only be
  108. changed by modifying the C variable.
  109. Attempts to write the variable from Tcl will be rejected with errors.
  110. .PP
  111. fBTcl_UnlinkVarfR removes the link previously set up for the
  112. variable given by fIvarNamefR.  If there does not exist a link
  113. for fIvarNamefR then the procedure has no effect.
  114. .PP
  115. fBTcl_UpdateLinkedVarfR may be invoked after the C variable has
  116. changed to force the Tcl variable to be updated immediately.
  117. In many cases this procedure is not needed, since any attempt to
  118. read the Tcl variable will return the latest value of the C variable.
  119. However, if a trace has been set on the Tcl variable (such as a
  120. Tk widget that wishes to display the value of the variable), the
  121. trace will not trigger when the C variable has changed.
  122. fBTcl_UpdateLinkedVarfR ensures that any traces on the Tcl
  123. variable are invoked.
  124. .SH KEYWORDS
  125. boolean, integer, link, read-only, real, string, traces, variable