home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 018.lha / prelude / integer.st < prev    next >
Text File  |  1986-10-19  |  2KB  |  126 lines

  1. Class Integer :Number
  2. [
  3.     = aNumber
  4.         ^ <primitive 6 self aNumber>
  5.             ifTrue:  [ <primitive 16 self aNumber> ]
  6.             ifFalse: [ super = aNumber ]
  7. |
  8.     > aNumber
  9.         ^ <primitive 6 self aNumber>
  10.             ifTrue:  [ <primitive 13 self aNumber> ]
  11.             ifFalse: [ super > aNumber ]
  12. |
  13.     < aNumber
  14.         ^ <primitive 6 self aNumber>
  15.             ifTrue:  [ <primitive 12 self aNumber> ]
  16.             ifFalse: [ super < aNumber ]
  17. |
  18.     + aNumber
  19.         ^ <primitive 6 self aNumber>
  20.             ifTrue:  [ <primitive 10 self aNumber> ]
  21.             ifFalse: [ super + aNumber ]
  22. |
  23.     - aNumber
  24.         ^ <primitive 6 self aNumber>
  25.             ifTrue:  [<primitive 11 self aNumber>]
  26.             ifFalse: [ super - aNumber ]
  27. |
  28.     * aNumber
  29.         ^ <primitive 6 self aNumber>
  30.             ifTrue:  [<primitive 18 self aNumber>]
  31.             ifFalse: [ super * aNumber ]
  32. |
  33.     / aNumber
  34.         ^ self asFloat / aNumber
  35. |
  36.     // aNumber
  37.         ^ <primitive 6 self aNumber>
  38.             ifTrue:  [<primitive 19 self aNumber>]
  39.             ifFalse: [self opError]
  40. |
  41.     \\ aNumber            | i |
  42.         ^ <primitive 6 self aNumber>
  43.             ifTrue:  [i <- self * ( (self < 0)
  44.                         ifTrue:  [ -1 ] 
  45.                         ifFalse: [ 1 ] ).
  46.                   i rem: aNumber]
  47.             ifFalse:  [self opError]
  48. |
  49.     allMask: anInteger
  50.         ^ anInteger = <primitive 23 self anInteger>
  51. |
  52.     anyMask: anInteger
  53.         ^ 0 ~= <primitive 23 self anInteger>
  54. |
  55.     asCharacter
  56.         ^ <primitive 36 self>
  57. |
  58.     asFloat
  59.         ^ <primitive 39 self >
  60. |
  61.     asString
  62.         ^ <primitive 37 self>
  63. |
  64.     bitAnd: anInteger
  65.         ^ <primitive 23 self anInteger>
  66. |
  67.     bitAt: anInteger
  68.         ^ <primitive 21 self anInteger>
  69. |
  70.     bitInvert
  71.         ^ <primitive 33 self>
  72. |
  73.     bitOr: anInteger
  74.         ^ <primitive 22 self anInteger>
  75. |
  76.     bitShift: anInteger
  77.         ^ <primitive 25 self anInteger>
  78. |
  79.     bitXor: anInteger
  80.         ^ <primitive 24 self anInteger>
  81. |
  82.     even
  83.         ^ (self rem: 2) = 0
  84. |
  85.     factorial
  86.         ^ <primitive 38 self>
  87. |
  88.     gcd: anInteger
  89.         ^ <primitive 6 self anInteger>
  90.             ifTrue:  [<primitive 20 self anInteger>]
  91.             ifFalse: [self opError]
  92. |
  93.     highBit
  94.         ^ <primitive 34 self>
  95. |
  96.     lcm: anInteger
  97.         ^ <primitive 6 self anInteger>
  98.             ifTrue:  [self * anInteger quo: 
  99.                     (self gcd: anInteger)]
  100.             ifFalse: [self opError]
  101. |
  102.     noMask: anInteger
  103.         ^ 0 = (self bitAnd: anInteger)
  104. |
  105.     odd
  106.         ^ (self rem: 2) ~= 0
  107. |
  108.     quo: anInteger
  109.         ^ <primitive 6 self anInteger>
  110.             ifTrue:  [<primitive 28 self anInteger>]
  111.             ifFalse: [self opError]
  112. |
  113.     radix: aNumber
  114.         ^ <primitive 26 self aNumber>
  115. |
  116.     rem: anInteger
  117.         ^ <primitive 6 self anInteger>
  118.             ifTrue:  [<primitive 29 self anInteger>]
  119.             ifFalse: [self opError]
  120. |
  121.     timesRepeat: aBlock        | i |
  122.         i <- 0.
  123.         [i < self] whileTrue:
  124.             [aBlock value. i <- i + 1]
  125. ]
  126.