home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Guide / c-cplusplus-interactive-guide.iso / c_ref / csource4 / 232_01 / apndx1 < prev    next >
Text File  |  1987-06-17  |  55KB  |  1,450 lines

  1. .so macros
  2. .nh
  3. .ds CF
  4. .ds CH
  5. .ps +0.2i
  6. .nr PO +0.2i
  7. .Nm Object
  8. .PP
  9. The class \fBObject\fP is a superclass of all classes in the system, and is
  10. used to provide a consistent basic functionality and default behavior.
  11. Many methods in class \fBObject\fP are overridden in subclasses.
  12. .SH
  13. Responds to
  14. .Rs ==
  15. Return true if receiver and argument are the
  16. same object, false otherwise.
  17. .Rs ~~
  18. Inverse of ==.
  19. .Rs asString
  20. Return a string representation of the receiver,
  21. by default this is the same as \fIprintString\fP, although one or the
  22. other is redefined in many subclasses.
  23. .Rs asSymbol
  24. Return a symbol representing the receiver.
  25. .Rs class
  26. Return object representing the class of the receiver.
  27. .Rs copy
  28. Return shallowCopy of receiver.
  29. Many subclasses redefine shallowCopy.
  30. .Rs deepCopy
  31. Return the receiver.  This method is redefined in many sub\%classes.
  32. .Rs do: d
  33. The argument must be a one argument block.
  34. Execute the block on every element of the receiver collection.
  35. Elements in the receiver collection are listed using \fIfirst\fP and \fInext\fP
  36. (below), so the default behavior is merely to execute the block using the
  37. receiver as argument.
  38. .Rs error:
  39. Argument must be a String.  Print argument string as error message.
  40. Return \fBnil\fP.
  41. .Rs first n
  42. Return first item in sequence, which is by default simply the receiver.
  43. See \fInext\fP, below.
  44. .Rs isKindOf:
  45. Argument must be a \fBClass\fP.  Return true if class of receiver, or any
  46. superclass thereof, is the same as argument.
  47. .Rs isMemberOf:
  48. Argument must be a \fBClass\fP.  Return true if receiver is instance of
  49. argument class.
  50. .Rs isNil
  51. Test whether receiver is object \fBnil\fP.
  52. .Rs next n
  53. Return next item in sequence, which is by default \fBnil\fP.  This message is
  54. redefined in classes which represent sequences, such as \fBArray\fP
  55. or \fBDictionary\fP.
  56. .Rs notNil
  57. Test if receiver is not object \fBnil\fP.
  58. .Rs print
  59. Display print image of receiver on the standard output.
  60. .Rs printString
  61. Return a string representation of receiver.
  62. Objects which do not redefine printString, and which therefore do not have
  63. a printable representation, return their class name as a string.
  64. .Rs respondsTo:
  65. Argument must be a symbol.  Return true if receiver will respond to
  66. the indicated message.
  67. .Rs shallowCopy
  68. Return the receiver.  This method is redefined in many sub\%classes.
  69. .Ex
  70. 7 ~~ 7.0    True
  71. 7 asSymbol    #7
  72. 7 class    Integer
  73. 7 copy    7
  74. 7 isKindOf: Number    True
  75. 7 isMemberOf: Number    False
  76. 7 isNil    False
  77. 7 respondsTo: #+    True
  78. .Nm Object UndefinedObject
  79. .PP
  80. The pseudo variable \fBnil\fP is an instance (usually the only instance) of the
  81. class \fBUndefinedObject\fP.  \fBnil\fP is used to represent undefined values,
  82. and is
  83. also typically returned in error situations.  \fBnil\fP is also used as a terminator
  84. in sequences, as for example in response to the message \fInext\fP when there are
  85. no further elements in a sequence.
  86. .SH
  87. Responds to
  88. .Rs isNil r
  89. Overrides method found in Object.  Return true.
  90. .Rs notNil r
  91. Overrides method found in Object.  Return false.
  92. .Rs printString r
  93. Return 'nil'.
  94. .Ex
  95. nil isNil    True
  96. .Nm Object Symbol
  97. .PP
  98. Instances of the class \fBSymbol\fP are created either by their literal
  99. representation, which is a pound sign followed by a string of nonspace
  100. characters (for example #aSymbol ),
  101. or by the message \fIasSymbol\fP being passed to an object.
  102. Symbols cannot be created using \fInew\fP.  Symbols are guaranteed to have
  103. unique representations; that is, two symbols representing the same
  104. characters will always test equal to each other.  Inside of literal
  105. arrays, the leading pound signs on symbols can be eliminated, for example:
  106. #(these are symbols).
  107. .SH
  108. Responds to
  109. .Rs == r
  110. Return true if the two symbols represent the same characters,
  111. false otherwise.
  112. .Rs asString r
  113. Return a String representation of the symbol without the leading pound
  114. sign.
  115. .Rs printString r
  116. Return a String representation of the symbol, including the leading pound
  117. sign.
  118. .Ex
  119. #abc == #abc    True
  120. #abc == #ABC    False
  121. #abc ~~ #ABC    True
  122. #abc printString    #abc
  123. \&'abc' asSymbol    #abc
  124. .Nm Object Boolean
  125. .PP
  126. The class \fBBoolean\fP provides protocol for manipulating true and false values.
  127. The pseudo variables \fBtrue\fP and \fBfalse\fP are instances of the subclasses of
  128. \fBBoolean\fP; \fBTrue\fP and \fBFalse\fP, respectively.
  129. The subclasses \fBTrue\fP and \fBFalse\fP, in combination with blocks, are used to
  130. implement conditional control structures.  Note, however, that the
  131. bytecodes may optimize conditional tests by generating
  132. code in-line, rather than using message passing.
  133. Note that bit-wise boolean operations are provided by class \fBInteger\fP.
  134. .SH
  135. Responds To
  136. .Rs &
  137. The argument must be a boolean.  Return the logical conjunction (and)
  138. of the two values.
  139. .Rs |
  140. The argument must be a boolean.  Return the logical disjunction (or)
  141. of the two values.
  142. .Rs and:
  143. The argument must be a block.  Return the logical conjunction (and)
  144. of the two values.  If the receiver is false the second argument is not
  145. used, otherwise the result is the value yielded in evaluating the argument
  146. block.
  147. .Rs or:
  148. The argument must be a block.  Return the logical disjunction (or)
  149. of the two values.  If the receiver is true the second argument is not
  150. used, otherwise the result is the value yielded in evaluating the argument
  151. block.
  152. .Rs eqv:
  153. The argument must be a boolean.  Return the logical equivalence (eqv)
  154. of the two values.
  155. .Rs xor:
  156. The argument must be a boolean.  Return the logical exclusive or (xor)
  157. of the two values.
  158. .Ex
  159. (1 > 3) & (2 < 4)    False
  160. (1 > 3) | (2 < 4)    True
  161. (1 > 3) and: [2 < 4]    False
  162. .Nm Object Boolean True
  163. .PP
  164. The pseudo variable \fBtrue\fP is an instance (usually the only instance) of
  165. the class \fBTrue\fP.
  166. .SH
  167. Responds To
  168. .Rs ifTrue:
  169. Return the result of evaluating the argument block.
  170. .Rs ifFalse:
  171. Return \fBnil\fP.
  172. .Rs ifTrue:ifFalse:
  173. Return the result of evaluating the first argument block.
  174. .Rs ifFalse:ifTrue:
  175. Return the result of evaluating the second argument block.
  176. .Rs not
  177. Return \fBfalse\fP.
  178. .Ex
  179. (3 < 5) not    False
  180. (3 < 5) ifTrue: [17]    17
  181. .Nm Object Boolean False
  182. .PP
  183. The pseudo variable \fBfalse\fP is an instance (usually the only instance) of
  184. the class \fBFalse\fP.
  185. .Rs ifTrue:
  186. Return \fBnil\fP.
  187. .Rs ifFalse:
  188. Return the result of evaluating the argument block.
  189. .Rs ifTrue:ifFalse:
  190. Return the result of evaluating the second argument block.
  191. .Rs ifFalse:ifTrue:
  192. Return the result of evaluating the first argument block.
  193. .Rs not
  194. Return \fBtrue\fP.
  195. .Ex
  196. (1 < 3) ifTrue: [17]    17
  197. (1 < 3) ifFalse: [17]    nil
  198. .Nm Object Magnitude
  199. .PP
  200. The class \fBMagnitude\fP provides protocol for those subclasses possessing
  201. a linear ordering.  For the sake of efficiency, most subclasses redefine
  202. some or all of the relational messages.  All methods are defined in
  203. terms of the basic messages <, = and >, which are in turn defined
  204. circularly in terms of each other.  Thus each subclass of \fBMagnitude\fP
  205. must redefine at least one of these messages.
  206. .Rs <
  207. Relational less than test.  Returns a boolean.
  208. .Rs <=
  209. Relational less than or equal test.
  210. .Rs =
  211. Relational equal test.  Note that this differs from ==, which is
  212. an object equality test.
  213. .Rs ~=
  214. Relational not equal test, opposite of =.
  215. .Rs >=
  216. Relational greater than or equal test.
  217. .Rs >
  218. Relational greater than test.
  219. .Rs between:and:
  220. Relational test for inclusion.
  221. .Rs max:
  222. Return the maximum of the receiver and argument value.
  223. .Rs min:
  224. Return the minimum of the receiver and argument value.
  225. .Ex
  226. $A max: $a    $a
  227. 4 between: 3.1 and: (17/3)    True
  228. .Nm Object Magnitude Char
  229. .PP
  230. This class defines protocol for objects with character values.
  231. Characters possess an ordering given by the underlying representation,
  232. however arithmetic is not defined for character values.
  233. Characters are written literally by preceding the character desired with
  234. a dollar sign, for example: $a \0 $B \0 $$.
  235. .SH
  236. Responds to
  237. .Rs == r
  238. Object equality test.  Two instances of the same character always test equal.
  239. .Rs asciiValue
  240. Return an \fBInteger\fP representing the ascii value o