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

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1996 Sun Microsystems, Inc.
  3. '"
  4. '" See the file "license.terms" for information on usage and redistribution
  5. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  6. '" 
  7. '" RCS: @(#) $Id: package.n,v 1.6.2.3 2006/09/04 19:35:49 hobbs Exp $
  8. '" 
  9. .so man.macros
  10. .TH package n 7.5 Tcl "Tcl Built-In Commands"
  11. .BS
  12. '" Note:  do not modify the .SH NAME line immediately below!
  13. .SH NAME
  14. package - Facilities for package loading and version control
  15. .SH SYNOPSIS
  16. .nf
  17. fBpackage forget ?fIpackage package ...fR?
  18. fBpackage ifneeded fIpackage versionfR ?fIscriptfR?
  19. fBpackage namesfR
  20. fBpackage present fR?fB-exactfR? fIpackage fR?fIversionfR?
  21. fBpackage provide fIpackage fR?fIversionfR?
  22. fBpackage require fR?fB-exactfR? fIpackage fR?fIversionfR?
  23. fBpackage unknown fR?fIcommandfR?
  24. fBpackage vcompare fIversion1 version2fR
  25. fBpackage versions fIpackagefR
  26. fBpackage vsatisfies fIversion1 version2fR
  27. .fi
  28. .BE
  29. .SH DESCRIPTION
  30. .PP
  31. This command keeps a simple database of the packages available for
  32. use by the current interpreter and how to load them into the
  33. interpreter.
  34. It supports multiple versions of each package and arranges
  35. for the correct version of a package to be loaded based on what
  36. is needed by the application.
  37. This command also detects and reports version clashes.
  38. Typically, only the fBpackage requirefR and fBpackage providefR
  39. commands are invoked in normal Tcl scripts;  the other commands are used
  40. primarily by system scripts that maintain the package database.
  41. .PP
  42. The behavior of the fBpackagefR command is determined by its first argument.
  43. The following forms are permitted:
  44. .TP
  45. fBpackage forget ?fIpackage package ...fR?
  46. Removes all information about each specified package from this interpreter,
  47. including information provided by both fBpackage ifneededfR and
  48. fBpackage providefR.
  49. .TP
  50. fBpackage ifneeded fIpackage versionfR ?fIscriptfR?
  51. This command typically appears only in system configuration
  52. scripts to set up the package database.
  53. It indicates that a particular version of
  54. a particular package is available if needed, and that the package
  55. can be added to the interpreter by executing fIscriptfR.
  56. The script is saved in a database for use by subsequent
  57. fBpackage requirefR commands;  typically, fIscriptfR
  58. sets up auto-loading for the commands in the package (or calls
  59. fBloadfR and/or fBsourcefR directly), then invokes
  60. fBpackage providefR to indicate that the package is present.
  61. There may be information in the database for several different
  62. versions of a single package.
  63. If the database already contains information for fIpackagefR
  64. and fIversionfR, the new fIscriptfR replaces the existing
  65. one.
  66. If the fIscriptfR argument is omitted, the current script for
  67. version fIversionfR of package fIpackagefR is returned,
  68. or an empty string if no fBpackage ifneededfR command has
  69. been invoked for this fIpackagefR and fIversionfR.
  70. .TP
  71. fBpackage namesfR
  72. Returns a list of the names of all packages in the
  73. interpreter for which a version has been provided (via
  74. fBpackage providefR) or for which a fBpackage ifneededfR
  75. script is available.
  76. The order of elements in the list is arbitrary.
  77. .TP
  78. fBpackage present fR?fB-exactfR? fIpackage fR?fIversionfR?
  79. This command is equivalent to fBpackage requirefR except that it
  80. does not try and load the package if it is not already loaded.
  81. .TP
  82. fBpackage provide fIpackage fR?fIversionfR?
  83. This command is invoked to indicate that version fIversionfR
  84. of package fIpackagefR is now present in the interpreter.
  85. It is typically invoked once as part of an fBifneededfR script,
  86. and again by the package itself when it is finally loaded.
  87. An error occurs if a different version of fIpackagefR has been
  88. provided by a previous fBpackage providefR command.
  89. If the fIversionfR argument is omitted, then the command
  90. returns the version number that is currently provided, or an
  91. empty string if no fBpackage providefR command has been
  92. invoked for fIpackagefR in this interpreter.  
  93. .TP
  94. fBpackage require fR?fB-exactfR? fIpackage fR?fIversionfR?
  95. This command is typically invoked by Tcl code that wishes to use
  96. a particular version of a particular package.  The arguments
  97. indicate which package is wanted, and the command ensures that
  98. a suitable version of the package is loaded into the interpreter.
  99. If the command succeeds, it returns the version number that is
  100. loaded;  otherwise it generates an error.
  101. If both the fB-exactfR
  102. switch and the fIversionfR argument are specified then only the
  103. given version is acceptable.  If fB-exactfR is omitted but
  104. fIversionfR is specified, then versions later than fIversionfR
  105. are also acceptable as long as they have the same major version
  106. number as fIversionfR.
  107. If both fB-exactfR and fIversionfR are omitted then any
  108. version whatsoever is acceptable.
  109. If a version of fIpackagefR has already been provided (by invoking
  110. the fBpackage providefR command), then its version number must
  111. satisfy the criteria given by fB-exactfR and fIversionfR and
  112. the command returns immediately.
  113. Otherwise, the command searches the database of information provided by
  114. previous fBpackage ifneededfR commands to see if an acceptable
  115. version of the package is available.
  116. If so, the script for the highest acceptable version number is evaluated
  117. in the global namespace;
  118. it must do whatever is necessary to load the package,
  119. including calling fBpackage providefR for the package.
  120. If the fBpackage ifneededfR database does not contain an acceptable
  121. version of the package and a fBpackage unknownfR command has been
  122. specified for the interpreter then that command is evaluated in the
  123. global namespace;  when
  124. it completes, Tcl checks again to see if the package is now provided
  125. or if there is a fBpackage ifneededfR script for it.
  126. If all of these steps fail to provide an acceptable version of the
  127. package, then the command returns an error.
  128. .TP
  129. fBpackage unknown fR?fIcommandfR?
  130. This command supplies a ``last resort'' command to invoke during
  131. fBpackage requirefR if no suitable version of a package can be found
  132. in the fBpackage ifneededfR database.
  133. If the fIcommandfR argument is supplied, it contains the first part
  134. of a command;  when the command is invoked during a fBpackage requirefR
  135. command, Tcl appends two additional arguments giving the desired package
  136. name and version.
  137. For example, if fIcommandfR is fBfoo barfR and later the command
  138. fBpackage require test 2.4fR is invoked, then Tcl will execute
  139. the command fBfoo bar test 2.4fR to load the package.
  140. If no version number is supplied to the fBpackage requirefR command,
  141. then the version argument for the invoked command will be an empty string.
  142. If the fBpackage unknownfR command is invoked without a fIcommandfR
  143. argument, then the current fBpackage unknownfR script is returned,
  144. or an empty string if there is none.
  145. If fIcommandfR is specified as an empty string, then the current
  146. fBpackage unknownfR script is removed, if there is one.
  147. .TP
  148. fBpackage vcompare fIversion1 version2fR
  149. Compares the two version numbers given by fIversion1fR and fIversion2fR.
  150. Returns -1 if fIversion1fR is an earlier version than fIversion2fR,
  151. 0 if they are equal, and 1 if fIversion1fR is later than fBversion2fR.
  152. .TP
  153. fBpackage versions fIpackagefR
  154. Returns a list of all the version numbers of fIpackagefR
  155. for which information has been provided by fBpackage ifneededfR
  156. commands.
  157. .TP
  158. fBpackage vsatisfies fIversion1 version2fR
  159. Returns 1 if scripts written for fIversion2fR will work unchanged
  160. with fIversion1fR (i.e. fIversion1fR is equal to or greater
  161. than fIversion2fR and they both have the same major version
  162. number), 0 otherwise.
  163. .SH "VERSION NUMBERS"
  164. .PP
  165. Version numbers consist of one or more decimal numbers separated
  166. by dots, such as 2 or 1.162 or 3.1.13.1.
  167. The first number is called the major version number.
  168. Larger numbers correspond to later versions of a package, with
  169. leftmost numbers having greater significance.
  170. For example, version 2.1 is later than 1.3 and version
  171. 3.4.6 is later than 3.3.5.
  172. Missing fields are equivalent to zeroes:  version 1.3 is the
  173. same as version 1.3.0 and 1.3.0.0, so it is earlier than 1.3.1 or 1.3.0.2.
  174. A later version number is assumed to be upwards compatible with
  175. an earlier version number as long as both versions have the same
  176. major version number.
  177. For example, Tcl scripts written for version 2.3 of a package should
  178. work unchanged under versions 2.3.2, 2.4, and 2.5.1.
  179. Changes in the major version number signify incompatible changes:
  180. if code is written to use version 2.1 of a package, it is not guaranteed
  181. to work unmodified with either version 1.7.3 or version 3.1.
  182. .SH "PACKAGE INDICES"
  183. .PP
  184. The recommended way to use packages in Tcl is to invoke fBpackage requirefR
  185. and fBpackage providefR commands in scripts, and use the procedure
  186. fBpkg_mkIndexfR to create package index files.
  187. Once you've done this, packages will be loaded automatically
  188. in response to fBpackage requirefR commands.
  189. See the documentation for fBpkg_mkIndexfR for details.
  190. .SH EXAMPLES
  191. To state that a Tcl script requires the Tk and http packages, put this
  192. at the top of the script:
  193. .CS
  194. fBpackage requirefR Tk
  195. fBpackage requirefR http
  196. .CE
  197. .PP
  198. To test to see if the Snack package is available and load if it is
  199. (often useful for optional enhancements to programs where the loss of
  200. the functionality is not critical) do this:
  201. .CS
  202. if {[catch {fBpackage requirefR Snack}]} {
  203.    # Error thrown - package not found.
  204.    # Set up a dummy interface to work around the absence
  205. } else {
  206.    # We have the package, configure the app to use it
  207. }
  208. .CE
  209. .SH "SEE ALSO"
  210. msgcat(n), packagens(n), pkgMkIndex(n)
  211. .SH KEYWORDS
  212. package, version