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

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1989-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: CrtMathFnc.3,v 1.5.14.2 2003/04/16 22:26:16 dkf Exp $
  9. '" 
  10. .so man.macros
  11. .TH Tcl_CreateMathFunc 3 8.4 Tcl "Tcl Library Procedures"
  12. .BS
  13. .SH NAME
  14. Tcl_CreateMathFunc, Tcl_GetMathFuncInfo, Tcl_ListMathFuncs - Define, query and enumerate math functions for expressions
  15. .SH SYNOPSIS
  16. .nf
  17. fB#include <tcl.h>fR
  18. .sp
  19. void
  20. fBTcl_CreateMathFuncfR(fIinterp, name, numArgs, argTypes, proc, clientDatafR)
  21. .sp
  22. .VS 8.4
  23. int
  24. fBTcl_GetMathFuncInfofR(fIinterp, name, numArgsPtr, argTypesPtr, procPtr, clientDataPtrfR)
  25. .sp
  26. Tcl_Obj *
  27. fBTcl_ListMathFuncsfR(fIinterp, patternfR)
  28. .VE
  29. .SH ARGUMENTS
  30. .AS Tcl_ValueType *clientDataPtr
  31. .AP Tcl_Interp *interp in
  32. Interpreter in which new function will be defined.
  33. .VS 8.4
  34. .AP "CONST char" *name in
  35. .VE
  36. Name for new function.
  37. .AP int numArgs in
  38. Number of arguments to new function;  also gives size of fIargTypesfR array.
  39. .AP Tcl_ValueType *argTypes in
  40. Points to an array giving the permissible types for each argument to
  41. function.
  42. .AP Tcl_MathProc *proc in
  43. Procedure that implements the function.
  44. .AP ClientData clientData in
  45. Arbitrary one-word value to pass to fIprocfR when it is invoked.
  46. .AP int *numArgsPtr out
  47. Points to a variable that will be set to contain the number of
  48. arguments to the function.
  49. .AP Tcl_ValueType **argTypesPtr out
  50. Points to a variable that will be set to contain a pointer to an array
  51. giving the permissible types for each argument to the function which
  52. will need to be freed up using fITcl_FreefR.
  53. .AP Tcl_MathProc **procPtr out
  54. Points to a variable that will be set to contain a pointer to the
  55. implementation code for the function (or NULL if the function is
  56. implemented directly in bytecode.)
  57. .AP ClientData *clientDataPtr out
  58. Points to a variable that will be set to contain the clientData
  59. argument passed to fITcl_CreateMathFuncfR when the function was
  60. created if the function is not implemented directly in bytecode.
  61. .AP "CONST char" *pattern in
  62. Pattern to match against function names so as to filter them (by
  63. passing to fITcl_StringMatchfR), or NULL to not apply any filter.
  64. .BE
  65. .SH DESCRIPTION
  66. .PP
  67. Tcl allows a number of mathematical functions to be used in
  68. expressions, such as fBsinfR, fBcosfR, and fBhypotfR.
  69. fBTcl_CreateMathFuncfR allows applications to add additional functions
  70. to those already provided by Tcl or to replace existing functions.
  71. fINamefR is the name of the function as it will appear in expressions.
  72. If fInamefR doesn't already exist as a function then a new function
  73. is created.  If it does exist, then the existing function is replaced.
  74. fINumArgsfR and fIargTypesfR describe the arguments to the function.
  75. Each entry in the fIargTypesfR array must be
  76. .VS 8.4
  77. one of TCL_INT, TCL_DOUBLE, TCL_WIDE_INT,
  78. or TCL_EITHER to indicate whether the corresponding argument must be an
  79. integer, a double-precision floating value, a wide (64-bit) integer,
  80. or any, respectively.
  81. .VE 8.4
  82. .PP
  83. Whenever the function is invoked in an expression Tcl will invoke
  84. fIprocfR.  fIProcfR should have arguments and result that match
  85. the type fBTcl_MathProcfR:
  86. .CS
  87. typedef int Tcl_MathProc(
  88. ClientData fIclientDatafR,
  89. Tcl_Interp *fIinterpfR,
  90. Tcl_Value *fIargsfR,
  91. Tcl_Value *fIresultPtrfR);
  92. .CE
  93. .PP
  94. When fIprocfR is invoked the fIclientDatafR and fIinterpfR
  95. arguments will be the same as those passed to fBTcl_CreateMathFuncfR.
  96. fIArgsfR will point to an array of fInumArgsfR Tcl_Value structures,
  97. which describe the actual arguments to the function:
  98. .VS 8.4
  99. .CS
  100. typedef struct Tcl_Value {
  101. Tcl_ValueType fItypefR;
  102. long fIintValuefR;
  103. double fIdoubleValuefR;
  104. Tcl_WideInt fIwideValuefR;
  105. } Tcl_Value;
  106. .CE
  107. .PP
  108. The fItypefR field indicates the type of the argument and is
  109. one of TCL_INT, TCL_DOUBLE or TCL_WIDE_INT.
  110. .VE 8.4
  111. It will match the fIargTypesfR value specified for the function unless
  112. the fIargTypesfR value was TCL_EITHER. Tcl converts
  113. the argument supplied in the expression to the type requested in
  114. fIargTypesfR, if that is necessary.
  115. Depending on the value of the fItypefR field, the fIintValuefR,
  116. .VS 8.4
  117. fIdoubleValuefR or fIwideValuefR
  118. .VE 8.4
  119. field will contain the actual value of the argument.
  120. .PP
  121. fIProcfR should compute its result and store it either as an integer
  122. in fIresultPtr->intValuefR or as a floating value in
  123. fIresultPtr->doubleValuefR.
  124. It should set also fIresultPtr->typefR to one of
  125. .VS 8.4
  126. TCL_INT, TCL_DOUBLE or TCL_WIDE_INT
  127. .VE 8.4
  128. to indicate which value was set.
  129. Under normal circumstances fIprocfR should return TCL_OK.
  130. If an error occurs while executing the function, fIprocfR should
  131. return TCL_ERROR and leave an error message in the interpreter's result.
  132. .PP
  133. .VS 8.4
  134. fBTcl_GetMathFuncInfofR retrieves the values associated with
  135. function fInamefR that were passed to a preceding
  136. fBTcl_CreateMathFuncfR call.  Normally, the return code is
  137. fBTCL_OKfR but if the named function does not exist, fBTCL_ERRORfR
  138. is returned and an error message is placed in the interpreter's
  139. result.
  140. .PP
  141. If an error did not occur, the array reference placed in the variable
  142. pointed to by fIargTypesPtrfR is newly allocated, and should be
  143. released by passing it to fBTcl_FreefR.  Some functions (the
  144. standard set implemented in the core) are implemented directly at the
  145. bytecode level; attempting to retrieve values for them causes a NULL
  146. to be stored in the variable pointed to by fIprocPtrfR and the
  147. variable pointed to by fIclientDataPtrfR will not be modified.
  148. .PP
  149. fBTcl_ListMathFuncsfR returns a Tcl object containing a list of all
  150. the math functions defined in the interpreter whose name matches
  151. fIpatternfR.  In the case of an error, NULL is returned and an error
  152. message is left in the interpreter result, and otherwise the returned
  153. object will have a reference count of zero.
  154. .VE
  155. .SH KEYWORDS
  156. expression, mathematical function
  157. .SH "SEE ALSO"
  158. expr(n), info(n), Tcl_Free(3), Tcl_NewListObj(3)