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

通讯编程

开发平台:

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: DString.3,v 1.9 2002/02/08 02:52:54 dgp Exp $
  9. '" 
  10. .so man.macros
  11. .TH Tcl_DString 3 7.4 Tcl "Tcl Library Procedures"
  12. .BS
  13. .SH NAME
  14. Tcl_DStringInit, Tcl_DStringAppend, Tcl_DStringAppendElement, Tcl_DStringStartSublist, Tcl_DStringEndSublist, Tcl_DStringLength, Tcl_DStringValue, Tcl_DStringSetLength, Tcl_DStringTrunc, Tcl_DStringFree, Tcl_DStringResult, Tcl_DStringGetResult - manipulate dynamic strings
  15. .SH SYNOPSIS
  16. .nf
  17. fB#include <tcl.h>fR
  18. .sp
  19. fBTcl_DStringInitfR(fIdsPtrfR)
  20. .sp
  21. char *
  22. fBTcl_DStringAppendfR(fIdsPtr, string, lengthfR)
  23. .sp
  24. char *
  25. fBTcl_DStringAppendElementfR(fIdsPtr, stringfR)
  26. .sp
  27. fBTcl_DStringStartSublistfR(fIdsPtrfR)
  28. .sp
  29. fBTcl_DStringEndSublistfR(fIdsPtrfR)
  30. .sp
  31. int
  32. fBTcl_DStringLengthfR(fIdsPtrfR)
  33. .sp
  34. char *
  35. fBTcl_DStringValuefR(fIdsPtrfR)
  36. .sp
  37. fBTcl_DStringSetLengthfR(fIdsPtr, newLengthfR)
  38. .sp
  39. fBTcl_DStringTruncfR(fIdsPtr, newLengthfR)
  40. .sp
  41. fBTcl_DStringFreefR(fIdsPtrfR)
  42. .sp
  43. fBTcl_DStringResultfR(fIinterp, dsPtrfR)
  44. .sp
  45. fBTcl_DStringGetResultfR(fIinterp, dsPtrfR)
  46. .SH ARGUMENTS
  47. .AS Tcl_DString newLength
  48. .AP Tcl_DString *dsPtr in/out
  49. Pointer to structure that is used to manage a dynamic string.
  50. .AP "CONST char" *string in
  51. Pointer to characters to add to dynamic string.
  52. .AP int length in
  53. Number of characters from string to add to dynamic string.  If -1,
  54. add all characters up to null terminating character.
  55. .AP int newLength in
  56. New length for dynamic string, not including null terminating
  57. character.
  58. .AP Tcl_Interp *interp in/out
  59. Interpreter whose result is to be set from or moved to the
  60. dynamic string.
  61. .BE
  62. .SH DESCRIPTION
  63. .PP
  64. Dynamic strings provide a mechanism for building up arbitrarily long
  65. strings by gradually appending information.  If the dynamic string is
  66. short then there will be no memory allocation overhead;  as the string
  67. gets larger, additional space will be allocated as needed.
  68. .PP
  69. fBTcl_DStringInitfR initializes a dynamic string to zero length.
  70. The Tcl_DString structure must have been allocated by the caller.
  71. No assumptions are made about the current state of the structure;
  72. anything already in it is discarded.
  73. If the structure has been used previously, fBTcl_DStringFreefR should
  74. be called first to free up any memory allocated for the old
  75. string.
  76. .PP
  77. fBTcl_DStringAppendfR adds new information to a dynamic string,
  78. allocating more memory for the string if needed.
  79. If fIlengthfR is less than zero then everything in fIstringfR
  80. is appended to the dynamic string;  otherwise fIlengthfR
  81. specifies the number of bytes to append.
  82. fBTcl_DStringAppendfR returns a pointer to the characters of
  83. the new string.  The string can also be retrieved from the
  84. fIstringfR field of the Tcl_DString structure.
  85. .PP
  86. fBTcl_DStringAppendElementfR is similar to fBTcl_DStringAppendfR
  87. except that it doesn't take a fIlengthfR argument (it appends
  88. all of fIstringfR) and it converts the string to a proper list element
  89. before appending.
  90. fBTcl_DStringAppendElementfR adds a separator space before the
  91. new list element unless the new list element is the first in a
  92. list or sub-list (i.e. either the current string is empty, or it
  93. contains the single character ``{'', or the last two characters of
  94. the current string are `` {'').
  95. fBTcl_DStringAppendElementfR returns a pointer to the
  96. characters of the new string.
  97. .PP
  98. fBTcl_DStringStartSublistfR and fBTcl_DStringEndSublistfR can be
  99. used to create nested lists.
  100. To append a list element that is itself a sublist, first
  101. call fBTcl_DStringStartSublistfR, then call fBTcl_DStringAppendElementfR
  102. for each of the elements in the sublist, then call
  103. fBTcl_DStringEndSublistfR to end the sublist.
  104. fBTcl_DStringStartSublistfR appends a space character if needed,
  105. followed by an open brace;  fBTcl_DStringEndSublistfR appends
  106. a close brace.
  107. Lists can be nested to any depth.
  108. .PP
  109. fBTcl_DStringLengthfR is a macro that returns the current length
  110. of a dynamic string (not including the terminating null character).
  111. fBTcl_DStringValuefR is a  macro that returns a pointer to the
  112. current contents of a dynamic string.
  113. .PP
  114. .PP
  115. fBTcl_DStringSetLengthfR changes the length of a dynamic string.
  116. If fInewLengthfR is less than the string's current length, then
  117. the string is truncated.
  118. If fInewLengthfR is greater than the string's current length,
  119. then the string will become longer and new space will be allocated
  120. for the string if needed.
  121. However, fBTcl_DStringSetLengthfR will not initialize the new
  122. space except to provide a terminating null character;  it is up to the
  123. caller to fill in the new space.
  124. fBTcl_DStringSetLengthfR does not free up the string's storage space
  125. even if the string is truncated to zero length, so fBTcl_DStringFreefR
  126. will still need to be called.
  127. .PP
  128. fBTcl_DStringTruncfR changes the length of a dynamic string.
  129. This procedure is now deprecated.  fBTcl_DStringSetLengthfR  should
  130. be used instead.
  131. .PP
  132. fBTcl_DStringFreefR should be called when you're finished using
  133. the string.  It frees up any memory that was allocated for the string
  134. and reinitializes the string's value to an empty string.
  135. .PP
  136. fBTcl_DStringResultfR sets the result of fIinterpfR to the value of
  137. the dynamic string given by fIdsPtrfR.  It does this by moving
  138. a pointer from fIdsPtrfR to the interpreter's result.
  139. This saves the cost of allocating new memory and copying the string.
  140. fBTcl_DStringResultfR also reinitializes the dynamic string to
  141. an empty string.
  142. .PP
  143. fBTcl_DStringGetResultfR does the opposite of fBTcl_DStringResultfR.
  144. It sets the value of fIdsPtrfR to the result of fIinterpfR and
  145. it clears fIinterpfR's result.
  146. If possible it does this by moving a pointer rather than by copying
  147. the string.
  148. .SH KEYWORDS
  149. append, dynamic string, free, result