extensions.st
author Claus Gittinger <cg@exept.de>
Sat, 02 May 2020 21:40:13 +0200
changeset 5476 7355a4b11cb6
parent 5455 20dbad6d9935
permissions -rw-r--r--
#FEATURE by cg class: Socket class added: #newTCPclientToHost:port:domain:domainOrder:withTimeout: changed: #newTCPclientToHost:port:domain:withTimeout:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2337
755696d72648 comment/format in: #asSoundexCode
Claus Gittinger <cg@exept.de>
parents: 2303
diff changeset
     1
"{ Package: 'stx:libbasic2' }"!
1668
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
     2
4381
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
     3
!ArithmeticValue methodsFor:'converting'!
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
     4
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
     5
asQDouble
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
     6
    "return a QDouble with same value"
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
     7
4480
3149cd46d7d1 comment
Claus Gittinger <cg@exept.de>
parents: 4473
diff changeset
     8
    ^ QDouble fromFloat:self asFloat
4381
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
     9
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
    10
    "
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
    11
     123 asQDouble
4480
3149cd46d7d1 comment
Claus Gittinger <cg@exept.de>
parents: 4473
diff changeset
    12
     (Fraction basicNew setNumerator:246 denominator:2) asQDouble
3149cd46d7d1 comment
Claus Gittinger <cg@exept.de>
parents: 4473
diff changeset
    13
     123 asLongFloat asQDouble
3149cd46d7d1 comment
Claus Gittinger <cg@exept.de>
parents: 4473
diff changeset
    14
     123 asLargeFloat asQDouble
4381
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
    15
    "
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
    16
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
    17
    "Created: / 13-06-2017 / 16:48:24 / cg"
4480
3149cd46d7d1 comment
Claus Gittinger <cg@exept.de>
parents: 4473
diff changeset
    18
    "Modified (comment): / 25-07-2017 / 16:06:19 / cg"
4381
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
    19
! !
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
    20
5293
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
    21
!ArithmeticValue methodsFor:'converting'!
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
    22
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
    23
asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
    24
    "return a quadFloat with same value"
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
    25
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
    26
    "WARNING: could loose precision here, if not redefined in concrete classes which
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
    27
     have more than float precision (i.e. LargeIntegers and Fractions)"
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
    28
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
    29
    ^ self asFloat asQuadFloat "/ subclassResponsibility
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
    30
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
    31
    "Created: / 07-06-2019 / 02:28:54 / Claus Gittinger"
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
    32
! !
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
    33
4379
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    34
!ArithmeticValue methodsFor:'double dispatching'!
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    35
5325
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    36
differenceFromIEEEFloat:anIEEEFloat
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    37
    "anIEEEFloat does not know how to subtract the receiver -
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    38
     retry the operation by coercing to higher generality"
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    39
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    40
    ^ anIEEEFloat retry:#- coercing:self
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    41
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    42
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    43
! !
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    44
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    45
!ArithmeticValue methodsFor:'double dispatching'!
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    46
4379
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    47
differenceFromQDouble:aQDouble
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    48
    "aQDouble does not know how to subtract the receiver -
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    49
     retry the operation by coercing to higher generality"
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    50
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    51
    ^ aQDouble retry:#- coercing:self
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    52
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    53
    "Created: / 13-06-2017 / 08:55:38 / cg"
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    54
! !
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    55
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    56
!ArithmeticValue methodsFor:'double dispatching'!
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    57
5325
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    58
equalFromIEEEFloat:anIEEEFloat
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    59
    "anIEEEFloat does not know how to compare against by the receiver -
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    60
     retry the operation by coercing to higher generality"
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    61
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    62
    ^ anIEEEFloat retry:#= coercing:self
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    63
! !
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    64
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    65
!ArithmeticValue methodsFor:'double dispatching'!
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    66
4379
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    67
equalFromQDouble:aQDouble
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    68
    "aQDouble does not know how to compare to the receiver -
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    69
     retry the operation by coercing to higher generality"
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    70
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    71
    ^ aQDouble retry:#= coercing:self
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    72
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    73
    "Created: / 13-06-2017 / 08:55:30 / cg"
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    74
! !
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    75
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    76
!ArithmeticValue methodsFor:'double dispatching'!
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    77
5325
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    78
lessFromIEEEFloat:anIEEEFloat
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    79
    "anIEEEFloat does not know how to compare against by the receiver -
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    80
     retry the operation by coercing to higher generality"
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    81
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    82
    ^ anIEEEFloat retry:#< coercing:self
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    83
! !
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    84
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    85
!ArithmeticValue methodsFor:'double dispatching'!
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    86
4379
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    87
lessFromQDouble:aQDouble
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    88
    "aQDouble does not know how to compare to the receiver -
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    89
     Return true if aQDouble < self.
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    90
     retry the operation by coercing to higher generality"
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    91
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    92
    ^ aQDouble retry:#< coercing:self
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    93
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    94
    "Created: / 13-06-2017 / 08:55:20 / cg"
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    95
! !
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    96
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    97
!ArithmeticValue methodsFor:'double dispatching'!
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
    98
5325
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
    99
productFromIEEEFloat:anIEEEFloat
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   100
    "anIEEEFloat does not know how to multiply the receiver -
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   101
     retry the operation by coercing to higher generality"
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   102
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   103
    ^ anIEEEFloat retry:#* coercing:self
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   104
! !
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   105
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   106
!ArithmeticValue methodsFor:'double dispatching'!
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   107
4379
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   108
productFromQDouble:aQDouble
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   109
    "aQDouble does not know how to multiply the receiver -
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   110
     retry the operation by coercing to higher generality"
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   111
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   112
    ^ aQDouble retry:#* coercing:self
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   113
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   114
    "Created: / 13-06-2017 / 08:55:07 / cg"
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   115
! !
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   116
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   117
!ArithmeticValue methodsFor:'double dispatching'!
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   118
5325
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   119
quotientFromIEEEFloat:anIEEEFloat
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   120
    "anIEEEFloat does not know how to divide by the receiver -
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   121
     retry the operation by coercing to higher generality"
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   122
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   123
    ^ anIEEEFloat retry:#/ coercing:self
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   124
! !
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   125
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   126
!ArithmeticValue methodsFor:'double dispatching'!
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   127
4379
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   128
quotientFromQDouble:aQDouble
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   129
    "aQDouble does not know how to divide by the receiver -
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   130
     retry the operation by coercing to higher generality"
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   131
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   132
    ^ aQDouble retry:#/ coercing:self
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   133
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   134
    "Created: / 13-06-2017 / 08:54:55 / cg"
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   135
! !
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   136
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   137
!ArithmeticValue methodsFor:'double dispatching'!
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   138
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   139
remainderFromQDouble:aQDouble
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   140
    "aQDouble does not know how to compute the remainder with the receiver -
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   141
     retry the operation by coercing to higher generality"
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   142
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   143
    ^ aQDouble retry:#rem: coercing:self
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   144
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   145
    "Created: / 13-06-2017 / 08:54:47 / cg"
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   146
! !
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   147
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   148
!ArithmeticValue methodsFor:'double dispatching'!
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   149
5325
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   150
sumFromIEEEFloat:anIEEEFloat
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   151
    "anIEEEFloat does not know how to add the receiver -
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   152
     retry the operation by coercing to higher generality"
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   153
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   154
    ^ anIEEEFloat retry:#+ coercing:self
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   155
! !
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   156
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   157
!ArithmeticValue methodsFor:'double dispatching'!
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   158
4379
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   159
sumFromQDouble:aQDouble
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   160
    "aQDouble does not know how to add the receiver -
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   161
     retry the operation by coercing to higher generality"
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   162
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   163
    ^ aQDouble retry:#+ coercing:self
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   164
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   165
    "Created: / 13-06-2017 / 08:54:27 / cg"
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   166
! !
e547154fa694 double dispatch for QDoubles
Claus Gittinger <cg@exept.de>
parents: 4365
diff changeset
   167
4448
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   168
!Block methodsFor:'Compatibility-Dolphin'!
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   169
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   170
deferredValue
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   171
    "Dolphin compatibility method - do not use in new code.
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   172
     Dolphin's alias for futureValue"
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   173
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   174
    ^ Future new block:self
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   175
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   176
    "Modified: / 04-10-2011 / 14:56:27 / cg"
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   177
! !
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   178
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   179
!Block methodsFor:'Compatibility-Dolphin'!
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   180
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   181
deferredValueAt:priority
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   182
    "Dolphin compatibility method - do not use in new code.
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   183
     Dolphin's alias for futureValue"
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   184
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   185
    ^ Future new
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   186
	priority:priority block:self
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   187
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   188
    "Created: / 04-10-2011 / 14:55:56 / cg"
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   189
! !
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   190
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   191
!Block methodsFor:'parallel evaluation'!
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   192
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   193
futureValue
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   194
    "Fork a synchronised evaluation of myself.
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   195
     Starts the evaluation in parallel now, but synchronizes
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   196
     any access to wait until the result is computed."
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   197
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   198
    ^ Future new block:self
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   199
! !
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   200
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   201
!Block methodsFor:'parallel evaluation'!
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   202
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   203
futureValue:aValue
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   204
    "Fork a synchronised evaluation of myself.
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   205
     Starts the evaluation in parallel now, but synchronizes
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   206
     any access to wait until the result is computed."
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   207
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   208
    ^ Future new block:self value:aValue
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   209
! !
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   210
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   211
!Block methodsFor:'parallel evaluation'!
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   212
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   213
futureValue:aValue value:anotherValue
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   214
    "Fork a synchronised evaluation of myself.
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   215
     Starts the evaluation in parallel now, but synchronizes
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   216
     any access to wait until the result is computed."
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   217
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   218
    ^ Future new
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   219
	block:self
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   220
	value:aValue
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   221
	value:anotherValue
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   222
! !
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   223
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   224
!Block methodsFor:'parallel evaluation'!
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   225
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   226
futureValue:aValue value:anotherValue value:bValue
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   227
    "Fork a synchronised evaluation of myself.
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   228
     Starts the evaluation in parallel now, but synchronizes
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   229
     any access to wait until the result is computed."
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   230
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   231
    ^ Future new
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   232
	block:self
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   233
	value:aValue
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   234
	value:anotherValue
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   235
	value:bValue
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   236
! !
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   237
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   238
!Block methodsFor:'parallel evaluation'!
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   239
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   240
futureValueWithArguments:anArray
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   241
    "Fork a synchronised evaluation of myself.
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   242
     Starts the evaluation in parallel now, but synchronizes
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   243
     any access to wait until the result is computed."
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   244
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   245
    ^ Future new
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   246
	block:self
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   247
	valueWithArguments:anArray
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   248
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   249
    "Modified (format): / 04-10-2011 / 14:55:40 / cg"
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   250
! !
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   251
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   252
!Block methodsFor:'parallel evaluation'!
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   253
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   254
lazyValue
4797
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   255
    "Return a lazy value object, evaluating myself. 
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   256
     Only computes when the result is requested."
4448
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   257
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   258
    ^ Lazy new block:self
4797
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   259
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   260
    "Modified (comment): / 09-02-2019 / 15:59:29 / Claus Gittinger"
4448
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   261
! !
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   262
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   263
!Block methodsFor:'parallel evaluation'!
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   264
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   265
lazyValue:aValue
4797
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   266
    "Return a lazy value object, evaluating myself. 
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   267
     Only computes when the result is requested."
4448
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   268
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   269
    ^ Lazy new block:self value:aValue
4797
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   270
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   271
    "Modified (comment): / 09-02-2019 / 16:00:02 / Claus Gittinger"
4448
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   272
! !
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   273
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   274
!Block methodsFor:'parallel evaluation'!
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   275
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   276
lazyValue:aValue value:anotherValue
4797
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   277
    "Return a lazy value object, evaluating myself. 
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   278
     Only computes when the result is requested."
4448
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   279
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   280
    ^ Lazy new
4797
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   281
        block:self
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   282
        value:aValue
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   283
        value:anotherValue
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   284
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   285
    "Modified (comment): / 09-02-2019 / 16:00:05 / Claus Gittinger"
4448
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   286
! !
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   287
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   288
!Block methodsFor:'parallel evaluation'!
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   289
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   290
lazyValue:aValue value:anotherValue value:bValue
4797
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   291
    "Return a lazy value object, evaluating myself. 
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   292
     Only computes when the result is requested."
4448
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   293
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   294
    ^ Lazy new
4797
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   295
        block:self
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   296
        value:aValue
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   297
        value:anotherValue
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   298
        value:bValue
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   299
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   300
    "Modified (comment): / 09-02-2019 / 16:00:08 / Claus Gittinger"
4448
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   301
! !
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   302
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   303
!Block methodsFor:'parallel evaluation'!
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   304
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   305
lazyValueWithArguments:anArray
4797
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   306
    "Return a lazy value object, evaluating myself. 
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   307
     Only computes when the result is requested."
4448
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   308
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   309
    ^ Lazy new block:self valueWithArguments:anArray
4797
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   310
ea7ce61a8957 class: Block
Claus Gittinger <cg@exept.de>
parents: 4773
diff changeset
   311
    "Modified (comment): / 09-02-2019 / 16:00:12 / Claus Gittinger"
4448
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   312
! !
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   313
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   314
!Block methodsFor:'process creation'!
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   315
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   316
promise
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   317
    "create a promise on the receiver. The promise will evaluate the
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   318
     receiver and promise to return the value with the #value message.
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   319
     The evaluation will be performed as a separate process.
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   320
     Asking the promise for its value will either block the asking process
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   321
     (if the evaluation has not yet been finished) or return the value
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   322
     immediately."
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   323
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   324
    ^ Promise value:self
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   325
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   326
    "
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   327
     |p|
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   328
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   329
     p := [1000 factorial] promise.
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   330
     'do something else ...'.
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   331
     p value
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   332
    "
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   333
! !
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   334
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   335
!Block methodsFor:'process creation'!
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   336
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   337
promiseAt:prio
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   338
    "create a promise on the receiver. The promise will evaluate the
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   339
     receiver and promise to return the value with the #value message.
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   340
     The evaluation will be performed as a separate process running at prio.
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   341
     Asking the promise for its value will either block the asking process
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   342
     (if the evaluation has not yet been finished) or return the value
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   343
     immediately."
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   344
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   345
    ^ Promise value:self priority:prio
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   346
! !
f9bbcb40b337 class: Block
Stefan Vogel <sv@exept.de>
parents: 4429
diff changeset
   347
2288
316a202d1c8b category changes
Claus Gittinger <cg@exept.de>
parents: 2260
diff changeset
   348
!CharacterArray methodsFor:'matching - phonetic'!
2199
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   349
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   350
asKoelnerPhoneticCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   351
    "return a koelner phonetic code.
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   352
     The koelnerPhonetic code is for the german language what the soundex code is for english;
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   353
     it returns simular strings for similar sounding words.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   354
     There are some differences to soundex, though:
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   355
	its length is not limited to 4, but depends on the length of the original string;
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   356
	it does not start with the first character of the input.
2288
316a202d1c8b category changes
Claus Gittinger <cg@exept.de>
parents: 2260
diff changeset
   357
316a202d1c8b category changes
Claus Gittinger <cg@exept.de>
parents: 2260
diff changeset
   358
     Caveat: this phonetic code is especially suited for german words.
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   359
	     Please have a look at the other phonetic comparison operators found
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   360
	     in PhoneticStringUtilities."
2199
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   361
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   362
    ^ PhoneticStringUtilities koelnerPhoneticCodeOf:self
2199
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   363
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   364
    "
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   365
     #(
3715
59267baeb546 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 3559
diff changeset
   366
	'Müller'
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   367
	'Miller'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   368
	'Mueller'
3715
59267baeb546 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 3559
diff changeset
   369
	'Mühler'
59267baeb546 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 3559
diff changeset
   370
	'Mühlherr'
59267baeb546 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 3559
diff changeset
   371
	'Mülherr'
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   372
	'Myler'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   373
	'Millar'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   374
	'Myller'
3715
59267baeb546 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 3559
diff changeset
   375
	'Müllar'
59267baeb546 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 3559
diff changeset
   376
	'Müler'
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   377
	'Muehler'
3715
59267baeb546 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 3559
diff changeset
   378
	'Mülller'
59267baeb546 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 3559
diff changeset
   379
	'Müllerr'
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   380
	'Muehlherr'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   381
	'Muellar'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   382
	'Mueler'
3715
59267baeb546 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 3559
diff changeset
   383
	'Mülleer'
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   384
	'Mueller'
3715
59267baeb546 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 3559
diff changeset
   385
	'Nüller'
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   386
	'Nyller'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   387
	'Niler'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   388
	'Czerny'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   389
	'Tscherny'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   390
	'Czernie'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   391
	'Tschernie'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   392
	'Schernie'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   393
	'Scherny'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   394
	'Scherno'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   395
	'Czerne'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   396
	'Zerny'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   397
	'Tzernie'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   398
	'Breschnew'
2199
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   399
     ) do:[:w |
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   400
	 Transcript show:w; show:'->'; showCR:(w asKoelnerPhoneticCode)
2199
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   401
     ].
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   402
    "
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   403
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   404
    "
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   405
     'Breschnew' asKoelnerPhoneticCode -> '17863'
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   406
     'Breschnew' asKoelnerPhoneticCode -> '17863'
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   407
     'Breschneff' asKoelnerPhoneticCode -> '17863'
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   408
     'Braeschneff' asKoelnerPhoneticCode -> '17863'
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   409
     'Braessneff' asKoelnerPhoneticCode -> '17863'
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   410
     'Pressneff' asKoelnerPhoneticCode -> '17863'
3715
59267baeb546 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 3559
diff changeset
   411
     'Presznäph' asKoelnerPhoneticCode -> '17863'
2199
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   412
    "
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   413
! !
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   414
2288
316a202d1c8b category changes
Claus Gittinger <cg@exept.de>
parents: 2260
diff changeset
   415
!CharacterArray methodsFor:'matching - phonetic'!
2199
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   416
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   417
asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   418
    "return a soundex phonetic code or nil.
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   419
     Soundex returns similar codes for similar sounding words, making it a useful
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   420
     tool when searching for words where the correct spelling is unknown.
4190
031045a0f356 class: stx_libbasic2
Claus Gittinger <cg@exept.de>
parents: 4095
diff changeset
   421
     (read Knuth or search the web if you don't know what a soundex code is).
2288
316a202d1c8b category changes
Claus Gittinger <cg@exept.de>
parents: 2260
diff changeset
   422
2337
755696d72648 comment/format in: #asSoundexCode
Claus Gittinger <cg@exept.de>
parents: 2303
diff changeset
   423
     Caveat: 'similar sounding words' means: 'similar sounding in ENGLISH'
4190
031045a0f356 class: stx_libbasic2
Claus Gittinger <cg@exept.de>
parents: 4095
diff changeset
   424
             Please have a look at the other phonetic comparison operators found
031045a0f356 class: stx_libbasic2
Claus Gittinger <cg@exept.de>
parents: 4095
diff changeset
   425
             in PhoneticStringUtilities."
2199
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   426
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   427
    ^ PhoneticStringUtilities soundexCodeOf:self
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   428
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   429
    "
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   430
     'claus' asSoundexCode
2199
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   431
     'clause' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   432
     'close' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   433
     'smalltalk' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   434
     'smaltalk' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   435
     'smaltak' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   436
     'smaltok' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   437
     'smoltok' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   438
     'aa' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   439
     'by' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   440
     'bab' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   441
     'bob' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   442
     'bop' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   443
    "
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   444
! !
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   445
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   446
!CharacterArray methodsFor:'printing & storing'!
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   447
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   448
printf:args
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   449
    "Format and print the receiver with <args> formatted in C style,
2295
27e3885efddd comment/format in:6 methods
Claus Gittinger <cg@exept.de>
parents: 2288
diff changeset
   450
     as specified in the Unix C-language manual page for printf(3).
3114
1d5224486d3c class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 3094
diff changeset
   451
     Return the resulting string (i.e actually, this is more like an sprintf).
4619
7e627429f1c6 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4528
diff changeset
   452
     For smalltalk specific formats, 
7e627429f1c6 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4528
diff changeset
   453
     see documentation in PrintfScanf >> format_printf.
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   454
     For copyright information, see goodies/String-printf_scanf.chg"
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   455
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   456
    |aStream|
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   457
3538
d79ee26ed971 class: Date
Stefan Vogel <sv@exept.de>
parents: 3274
diff changeset
   458
    aStream := CharacterWriteStream on:(self species uninitializedNew:self size).
2260
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   459
    self printf:args on:aStream.
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   460
    ^ aStream contents
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   461
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   462
    "
3796
70a4a03f4028 comment
Claus Gittinger <cg@exept.de>
parents: 3720
diff changeset
   463
     ('%05x %d %f %o' printf:{ 123. 234*5. 1.234. 8r377 } )    
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   464
     Transcript showCR:('%05x %d %f %o' printf:{ 123. 234*5. 1.234. 8r377 } )
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   465
    "
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   466
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   467
    "
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   468
     Transcript showCR: 'Some examples:'!!
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   469
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   470
     Transcript show:'''%#x %#X %03o%*.*s'' printf: #(16rABCD 16rEF 5 9 5 ''ghijklmn'') = .'.
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   471
     Transcript show: ('%#x %#X %03o%*.*s' printf: #(16rABCD 16rEF 5 9 5 'ghijklmn')).
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   472
     Transcript showCR: '.'
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   473
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   474
     Transcript show: '''%- 10.4s%.2e'' printf: (Array with: ''abcdefghijkl'' with: Float pi) = .'.
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   475
     Transcript show: ('%- 10.4s%.2e' printf: (Array with: 'abcdefghijkl' with: Float pi)).
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   476
     Transcript showCR: '.'
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   477
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   478
     Transcript show: '''%8.3f'' printf: (Array with: 200 sqrt negated) = .'.
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   479
     Transcript show: ('%8.3f' printf: (Array with: 200 sqrt negated)).
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   480
     Transcript showCR: '.'
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   481
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   482
     Transcript show: '''%c'' printf: #(16r41) = .'.
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   483
     Transcript show: ('%c' printf: #(16r41)).
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   484
     Transcript showCR: '.'
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   485
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   486
     Transcript show: '''%f%2s%s%s%s'' sscanf: ''237.0 this is a test'' = '.
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   487
     Transcript showCR: ('%f%2s%s%s%s'  sscanf: '237.0 this is a test') printString.
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   488
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   489
     Transcript show: '''%d%f%s'' sscanf: ''25 54.32e-01 monday'' = '.
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   490
     Transcript showCR: ('%d%f%s' sscanf: '25 54.32e-01 monday') printString.
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   491
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   492
     Transcript show: '''%f%*f %8[A-F0-9]%c%d 0x%x%f'' sscanf: ''12.45 1048.73 AE40Z527 0x75BCD15 34'' = '.
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   493
     Transcript showCR: ('%f%*f %8[A-F0-9]%c%d 0x%x%f' sscanf: '12.45 1048.73 AE40Z527 0x75BCD15 34') printString.
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   494
    "
4528
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   495
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   496
    "Modified (comment): / 14-11-2017 / 22:58:01 / cg"
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   497
! !
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   498
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   499
!CharacterArray methodsFor:'printing & storing'!
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   500
2260
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   501
printf:args on:outStream
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   502
    "Format and print the receiver on <outStream> with <args>
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   503
     formatted in C style, as specified in the Unix C-language manual page for printf(3).
4619
7e627429f1c6 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4528
diff changeset
   504
     For smalltalk specific formats, 
7e627429f1c6 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4528
diff changeset
   505
     see documentation in PrintfScanf >> format_printf.
2260
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   506
     For copyright information, see goodies/String-printf_scanf.chg"
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   507
4418
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   508
    PrintfScanf printf:self on:outStream arguments: args
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   509
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   510
    "
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   511
     '%e' printf:{ 1234.567 ] on:Transcript
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   512
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   513
     '%10s%3d\n' printf:{ 'hello' . 12 } on:Transcript
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   514
     '%10s%3d\n' printf:{ '1234567890' . 12 } on:Transcript
2260
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   515
4418
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   516
     like C's printf, a longer datum may be formatted wider than the formatspec says:
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   517
     
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   518
     '%10s%3d\n' printf:{ '12345678901234' . 12 } on:Transcript
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   519
     
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   520
     '%10s%3d\n' printf:{ 'hello' . 12 } on:Transcript
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   521
     '%10s%03d\n' printf:{ 'hello' . 12 } on:Transcript
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   522
    "
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   523
4528
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   524
    "Modified (comment): / 14-11-2017 / 22:57:58 / cg"
2260
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   525
! !
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   526
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   527
!CharacterArray methodsFor:'printing & storing'!
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   528
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   529
printfWith:arg1
2295
27e3885efddd comment/format in:6 methods
Claus Gittinger <cg@exept.de>
parents: 2288
diff changeset
   530
    "Format and print the receiver with <arg1> formatted in C style,
27e3885efddd comment/format in:6 methods
Claus Gittinger <cg@exept.de>
parents: 2288
diff changeset
   531
     as specified in the Unix C-language manual page for printf(3).
4528
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   532
     Return the resulting string (i.e actually, this is more like an sprintf).
4619
7e627429f1c6 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4528
diff changeset
   533
     For smalltalk specific formats, 
7e627429f1c6 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4528
diff changeset
   534
     see documentation in PrintfScanf >> format_printf"
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   535
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   536
    ^ self printf:(Array with:arg1)
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   537
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   538
    "
3796
70a4a03f4028 comment
Claus Gittinger <cg@exept.de>
parents: 3720
diff changeset
   539
     ('%05x' printfWith:123)
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   540
     Transcript showCR:('%05x' printfWith:123)
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   541
    "
4528
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   542
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   543
    "Modified (comment): / 14-11-2017 / 22:58:10 / cg"
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   544
! !
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   545
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   546
!CharacterArray methodsFor:'printing & storing'!
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   547
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   548
printfWith:arg1 with:arg2
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   549
    "Format and print the receiver with <argI> formatted in C style,
2295
27e3885efddd comment/format in:6 methods
Claus Gittinger <cg@exept.de>
parents: 2288
diff changeset
   550
     as specified in the Unix C-language manual page for printf(3).
4528
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   551
     Return the resulting string (i.e actually, this is more like an sprintf).
4619
7e627429f1c6 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4528
diff changeset
   552
     For smalltalk specific formats, see documentation in PrintfScanf >> format_printf."
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   553
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   554
    ^ self printf:(Array with:arg1 with:arg2)
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   555
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   556
    "
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   557
     Transcript showCR:('%d %05x' printfWith:123 with:234)
5234
d2fc4924e6eb class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 5139
diff changeset
   558
     ('%d %05x' printfWith:123 with:234)
d2fc4924e6eb class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 5139
diff changeset
   559
     ('%d%02d' printfWith:2004 with:9)  
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   560
    "
4528
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   561
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   562
    "Modified (comment): / 14-11-2017 / 22:58:16 / cg"
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   563
! !
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   564
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   565
!CharacterArray methodsFor:'printing & storing'!
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   566
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   567
printfWith:arg1 with:arg2 with:arg3
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   568
    "Format and print the receiver with <argI> formatted in C style,
2295
27e3885efddd comment/format in:6 methods
Claus Gittinger <cg@exept.de>
parents: 2288
diff changeset
   569
     as specified in the Unix C-language manual page for printf(3).
4528
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   570
     Return the resulting string (i.e actually, this is more like an sprintf).
4619
7e627429f1c6 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4528
diff changeset
   571
     For smalltalk specific formats, see documentation in PrintfScanf >> format_printf."
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   572
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   573
    ^ self printf:(Array with:arg1 with:arg2 with:arg3)
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   574
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   575
    "
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   576
     Transcript showCR:('%d %05x %08o' printfWith:123 with:234 with:345)
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   577
    "
4528
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   578
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   579
    "Modified (comment): / 14-11-2017 / 22:58:20 / cg"
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   580
! !
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   581
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   582
!CharacterArray methodsFor:'printing & storing'!
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   583
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   584
printfWith:arg1 with:arg2 with:arg3 with:arg4
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   585
    "Format and print the receiver with <argI> formatted in C style,
2295
27e3885efddd comment/format in:6 methods
Claus Gittinger <cg@exept.de>
parents: 2288
diff changeset
   586
     as specified in the Unix C-language manual page for printf(3).
4528
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   587
     Return the resulting string (i.e actually, this is more like an sprintf).
4619
7e627429f1c6 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4528
diff changeset
   588
     For smalltalk specific formats, see documentation in PrintfScanf >> format_printf."
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   589
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   590
    ^ self printf:(Array with:arg1 with:arg2 with:arg3 with:arg4)
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   591
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   592
    "
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   593
     Transcript showCR:('%d %05x %08o %b' printfWith:123 with:234 with:345 with:123)
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   594
    "
4528
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   595
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   596
    "Modified (comment): / 14-11-2017 / 22:58:23 / cg"
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   597
! !
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   598
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   599
!CharacterArray methodsFor:'printing & storing'!
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   600
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   601
printfWith:arg1 with:arg2 with:arg3 with:arg4 with:arg5
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   602
    "Format and print the receiver with <argI> formatted in C style,
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   603
     as specified in the Unix C-language manual page for printf(3).
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   604
     Return the resulting string (i.e actually, this is more like an sprintf).
4619
7e627429f1c6 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4528
diff changeset
   605
     For smalltalk specific formats, see documentation in PrintfScanf >> format_printf."
4528
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   606
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   607
    ^ self printf:(Array with:arg1 with:arg2 with:arg3 with:arg4 with:arg5)
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   608
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   609
    "
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   610
     Transcript showCR:('%d %05x %08o %b' printfWith:123 with:234 with:345 with:123)
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   611
    "
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   612
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   613
    "Modified (comment): / 14-11-2017 / 22:58:28 / cg"
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   614
! !
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   615
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   616
!CharacterArray methodsFor:'printing & storing'!
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   617
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   618
printf_formatArgCount
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   619
    "Return the number of arguments required/produced if the receiver is interpreted
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   620
     as a printf/scanf format control string.
4528
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   621
     For smalltalk specific formats, see documentation in PrintfScanf.
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   622
     For copyright information, see goodies/String-printf_scanf.chg"
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   623
4418
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   624
    ^ PrintfScanf formatArgCountFor:self.
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   625
4418
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   626
    "Modified: / 19-06-2017 / 16:54:10 / cg"
4528
844e085a7ac1 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4480
diff changeset
   627
    "Modified (comment): / 14-11-2017 / 22:58:34 / cg"
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   628
! !
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   629
3006
1847bcaf8018 Added lost method #printf_printOn:withData:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3005
diff changeset
   630
!CharacterArray methodsFor:'private'!
1847bcaf8018 Added lost method #printf_printOn:withData:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3005
diff changeset
   631
4418
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   632
printf_printArgFrom:formatStream to:outStream withData:argStream
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   633
    <resource: #obsolete>
3006
1847bcaf8018 Added lost method #printf_printOn:withData:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3005
diff changeset
   634
    "Interpret the required number of arguments from <argStream>
4418
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   635
     according to the formatting information in <formatStream>.
3006
1847bcaf8018 Added lost method #printf_printOn:withData:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3005
diff changeset
   636
     Place the interpretation on <outStream>.
1847bcaf8018 Added lost method #printf_printOn:withData:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3005
diff changeset
   637
     The interpretation is C printf(3) style, as
1847bcaf8018 Added lost method #printf_printOn:withData:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3005
diff changeset
   638
     specified in the Unix C-language manual page for printf(3).
4418
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   639
     <formatStream> is assumed to be positioned just past
3006
1847bcaf8018 Added lost method #printf_printOn:withData:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3005
diff changeset
   640
     $%, and a complete control string is assumed available.
1847bcaf8018 Added lost method #printf_printOn:withData:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3005
diff changeset
   641
1847bcaf8018 Added lost method #printf_printOn:withData:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3005
diff changeset
   642
     Return when the conversion control string is consumed.
4418
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   643
     Leave <formatStream> pointing past the last character in the conversion control string.
3006
1847bcaf8018 Added lost method #printf_printOn:withData:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3005
diff changeset
   644
4418
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   645
     This code assumes that <formatStream> is formatted according to
3006
1847bcaf8018 Added lost method #printf_printOn:withData:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3005
diff changeset
   646
     specification, and error checking is minimal.  Unexpected
1847bcaf8018 Added lost method #printf_printOn:withData:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3005
diff changeset
   647
     results will be obtained by illegal control strings, or when
1847bcaf8018 Added lost method #printf_printOn:withData:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3005
diff changeset
   648
     argument types do not match conversion codes, but it probably
1847bcaf8018 Added lost method #printf_printOn:withData:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3005
diff changeset
   649
     won't dump core, like C does in such cases!!
1847bcaf8018 Added lost method #printf_printOn:withData:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3005
diff changeset
   650
1847bcaf8018 Added lost method #printf_printOn:withData:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3005
diff changeset
   651
     For copyright information, see goodies/String-printf_scanf.chg"
1847bcaf8018 Added lost method #printf_printOn:withData:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3005
diff changeset
   652
4418
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   653
    PrintfScanf printArgFrom:formatStream to:outStream arguments:argStream
3006
1847bcaf8018 Added lost method #printf_printOn:withData:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3005
diff changeset
   654
4418
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   655
    "Modified: / 19-06-2017 / 15:44:28 / cg"
3006
1847bcaf8018 Added lost method #printf_printOn:withData:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3005
diff changeset
   656
! !
1847bcaf8018 Added lost method #printf_printOn:withData:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3005
diff changeset
   657
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   658
!CharacterArray methodsFor:'printing & storing'!
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   659
2260
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   660
printf_printOn:outStream withData:args
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   661
    <resource: #obsolete>
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   662
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   663
    "Format and print the receiver on <outStream> with <args>
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   664
     formatted in C style, as specified in the Unix C-language manual page for printf(3).
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   665
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   666
     For copyright information, see goodies/String-printf_scanf.chg"
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   667
2260
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   668
    self obsoleteMethodWarning:'use printf:on:'.
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   669
    self printf:args on:outStream
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   670
! !
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   671
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   672
!CharacterArray methodsFor:'converting'!
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   673
4473
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   674
scanf:dataStreamOrString
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   675
    "Return a Collection of objects found in the Character Stream
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   676
     <dataStream> as interpreted according to the receiver.
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   677
     The receiver is assumed to be a conversion control string as
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   678
     specified in the Unix C-language manual page for scanf(3).
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   679
     For copyright information, see goodies/String-printf_scanf.chg"
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   680
4473
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   681
    |dataStream|
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   682
4473
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   683
    dataStream := dataStreamOrString readStream.
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   684
    ^ PrintfScanf scanf:self fromStream:dataStream
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   685
    
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   686
"/    |results format char|
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   687
"/
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   688
"/    results := OrderedCollection new.
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   689
"/    format := ReadStream on:self.
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   690
"/    [ format atEnd ] whileFalse:[
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   691
"/        char := format next.
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   692
"/        (char == Character space or:[ char == Character tab ]) ifTrue:[
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   693
"/            dataStream skipSeparators.
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   694
"/            format skipSeparators
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   695
"/        ].
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   696
"/        char == $% ifTrue:[
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   697
"/            PrintfScanf scanArgFrom:dataStream to:results format:format.
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   698
"/        ] ifFalse:[
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   699
"/            dataStream peekFor:char
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   700
"/        ]
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   701
"/    ].
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   702
"/    ^ results
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   703
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   704
    "
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   705
     '%d %x' scanf:(ReadStream on:'1234 ff00')
4473
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   706
     '%d %s' scanf:(ReadStream on:'1234 ff00')
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   707
     '%d %b' scanf:(ReadStream on:'1234 1111')
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   708
     '%d %f' scanf:(ReadStream on:'1234 1111')
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   709
     '%d %f' scanf:(ReadStream on:'1234 1111.2345')
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   710
     '%d %q' scanf:(ReadStream on:'1234 1111.2345')
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   711
    "
4473
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   712
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   713
    "Modified: / 14-07-2017 / 11:11:49 / cg"
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   714
! !
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   715
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   716
!CharacterArray methodsFor:'private'!
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   717
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   718
scanf_scanArgFrom:dataStream to:collection format:format
4418
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   719
    <resource: #obsolete>
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   720
    "Add to <collection> an object who's representation is found
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   721
     in <dataStream> interpreted according to the conversion
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   722
     control string in the Stream <format>.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   723
     <format> is assumed to be positioned just past a $%, and a complete control
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   724
     string is assumed available.
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   725
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   726
     Return when the conversion control string is consumed.  Leave
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   727
     <format> pointing past the last character in the conversion
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   728
     control string, leave <dataStream> pointing past any width
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   729
     specified in <format>, or at the first character that doesn't
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   730
     make sense for the <format>.
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   731
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   732
     For copyright information, see goodies/String-printf_scanf.chg"
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   733
4473
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   734
    PrintfScanf scanArgFrom:dataStream to:collection format:format.
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   735
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   736
    "
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   737
     '%d %x' sscanf:'1234 ff00'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   738
     '%d %x %b' sscanf:'1234 ff00 1001'
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   739
    "
2679
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   740
4473
2fbda206b293 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
   741
    "Modified: / 14-07-2017 / 11:09:35 / cg"
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   742
! !
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   743
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   744
!CharacterArray methodsFor:'converting'!
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   745
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   746
sscanf:string
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   747
    "Return a Collection of objects found in <string> as
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   748
     interpreted according to the receiver.
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   749
     The receiver is assumed to be a conversion control string as
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   750
     specified in the Unix C-language manual page for scanf(3).
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   751
     For copyright information, see goodies/String-printf_scanf.chg"
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   752
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   753
    ^ self scanf:(ReadStream on:string)
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   754
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   755
    "
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   756
     '%d %x' sscanf:'1234 ff00'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   757
     '%d %x %b' sscanf:'1234 ff00 1001'
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   758
    "
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   759
! !
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   760
4714
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   761
!CharacterArray methodsFor:'Compatibility-Squeak'!
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   762
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   763
urlDecoded
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   764
    "decode %xx form.  This is the opposite of #urlEncoded"
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   765
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   766
    ^ HTMLUtilities urlDecoded:self
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   767
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   768
    "
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   769
     'abc%61def' unescapePercents
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   770
     'abc%61def' urlDecoded
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   771
     
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   772
      (HTMLUtilities urlEncoded:'_-.*Frankfurt(Main) Hbf') unescapePercents
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   773
      (HTMLUtilities urlEncoded:'_-.*Frankfurt(Main) Hbf') urlDecoded
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   774
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   775
      (HTMLUtilities urlEncoded:'-_.*%exept ex+pecco;') unescapePercents
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   776
      (HTMLUtilities urlEncoded:'-_.*%exept+ex+pecco;') urlDecoded
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   777
    "
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   778
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   779
    "Created: / 26-08-2018 / 12:41:49 / Claus Gittinger"
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   780
! !
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   781
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   782
!CharacterArray methodsFor:'Compatibility-Squeak'!
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   783
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   784
urlEncoded
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   785
    "encode into %xx form.  This is the opposite of #urlDecoded"
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   786
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   787
    ^ HTMLUtilities urlEncoded:self
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   788
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   789
    "
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   790
     'abcäöüdef' urlEncoded urlDecoded
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   791
     'abc%def' urlEncoded urlDecoded
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   792
     
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   793
      ('_-.*Frankfurt(Main) Hbf' urlEncoded) unescapePercents
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   794
      ('_-.*Frankfurt(Main) Hbf' urlEncoded) urlDecoded
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   795
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   796
      ('-_.*%exept ex+pecco;' urlEncoded) unescapePercents
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   797
      ('-_.*%exept+ex+pecco;' urlEncoded) urlDecoded
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   798
    "
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   799
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   800
    "Created: / 26-08-2018 / 13:03:03 / Claus Gittinger"
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   801
! !
5cc3b93dfc48 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4620
diff changeset
   802
4365
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   803
!Collection methodsFor:'converting'!
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   804
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   805
asHalfFloatArray
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   806
    "return a new HalfFloatArray with the collection's elements
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   807
     (which must convert to 16bit half-floats)."
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   808
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   809
    ^ self asArrayOfType:HalfFloatArray
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   810
! !
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   811
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   812
!Collection methodsFor:'converting'!
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   813
4400
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   814
asIdentitySkipList
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   815
	"Answer a IdentitySkipList whose elements are the elements of the 
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   816
	receiver. The sort order is the default less than or equal."
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   817
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   818
	^ self as: IdentitySkipList
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   819
! !
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   820
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   821
!Collection methodsFor:'converting'!
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   822
4365
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   823
asList
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   824
    "return a new List with the receiver collection's elements"
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   825
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   826
    ^ self addAllTo:(List new:self size)
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   827
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   828
    "Created: 14.2.1997 / 16:25:23 / cg"
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   829
! !
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   830
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   831
!Collection methodsFor:'converting'!
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   832
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   833
asRunArray
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   834
    "return a new RunArray with the collection's elements"
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   835
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   836
    ^ RunArray from:self.
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   837
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   838
"/    |runs lastElement occurrences|
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   839
"/
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   840
"/    runs := RunArray new.
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   841
"/    occurrences := 0.
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   842
"/    self do:[:each |
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   843
"/        each == lastElement ifTrue:[
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   844
"/            occurrences := occurrences + 1
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   845
"/        ] ifFalse:[
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   846
"/            runs add:lastElement withOccurrences:occurrences.
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   847
"/            occurrences := 1.
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   848
"/            lastElement := each
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   849
"/        ].
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   850
"/    ].
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   851
"/    occurrences ~~ 0 ifTrue:[
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   852
"/        runs add:lastElement withOccurrences:occurrences
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   853
"/    ].
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   854
"/    ^ runs
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   855
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   856
    "
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   857
     #(1 2 3 3 3 4 4 4 4 5 6 7) asRunArray 
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   858
    "
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   859
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   860
    "Modified: / 7.4.1998 / 09:50:54 / cg"
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   861
! !
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   862
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   863
!Collection methodsFor:'converting'!
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   864
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   865
asSharedCollection
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   866
    "return a shared collection on the receiver.
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   867
     This implements synchronized (i.e. mutually excluded) access to me.
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   868
     Use this for safe access when multiple processes access me concurrently.
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   869
     Notice that this is a general (possibly suboptimal) mechanism, which should
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   870
     work with all collections. Look for specialized collections (SharedQueue), which are
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   871
     tuned for this kind of operation."
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   872
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   873
    ^ SharedCollection for:self.
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   874
! !
c166b1f7825c Move methods from Collection to libbasic2
Stefan Vogel <sv@exept.de>
parents: 4202
diff changeset
   875
4400
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   876
!Collection methodsFor:'converting'!
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   877
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   878
asSkipList
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   879
	"Answer a SkipList whose elements are the elements of the 
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   880
	receiver. The sort order is the default less than or equal."
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   881
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   882
	^ self as: SkipList
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   883
! !
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   884
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   885
!Collection methodsFor:'converting'!
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   886
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   887
asSkipList: aSortBlock 
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   888
        "Answer a SkipList whose elements are the elements of the 
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   889
        receiver. The sort order is defined by the argument, aSortBlock."
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   890
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   891
        | skipList |
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   892
        skipList := SkipList new: self size sortBlock: aSortBlock.
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   893
        skipList addAll: self.
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   894
        ^ skipList
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   895
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   896
    "Modified (comment): / 18-06-2017 / 22:40:10 / cg"
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   897
! !
Claus Gittinger <cg@exept.de>
parents: 4383
diff changeset
   898
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   899
!Float methodsFor:'private'!
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   900
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   901
absDecimalPrintOn:aStream digits:digits
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   902
    "Place a string representation of the receiver's abs value
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   903
     on <aStream> using <digits> significant digits, using decimal notation.
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   904
     This is a helper for printf."
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   905
4429
7d3e464fb430 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 4418
diff changeset
   906
    <resource: #obsolete>
7d3e464fb430 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 4418
diff changeset
   907
    PrintfScanf absDecimalPrintFloat:self on:aStream digits:digits.
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   908
4429
7d3e464fb430 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 4418
diff changeset
   909
    "Modified: / 20-06-2017 / 11:49:15 / cg"
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   910
! !
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   911
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   912
!Float methodsFor:'private'!
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   913
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   914
absPrintOn:aStream digits:digits
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   915
    "Place a string representation of the receiver's abs value on <aStream> using
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   916
     <digits> significant digits.
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   917
     This is a helper for printf."
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   918
4429
7d3e464fb430 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 4418
diff changeset
   919
    <resource: #obsolete>
4418
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   920
    PrintfScanf absPrintFloat:self on:aStream digits:digits
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   921
4429
7d3e464fb430 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 4418
diff changeset
   922
    "Modified: / 20-06-2017 / 11:49:11 / cg"
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   923
! !
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   924
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   925
!Float methodsFor:'private'!
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   926
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   927
absScientificPrintOn:aStream digits:digits
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   928
    "Place a string representation of the receiver's abs value on <aStream> using <digits> significant
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   929
     digits, using scientific notation.
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   930
     This is a helper for printf."
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   931
4429
7d3e464fb430 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 4418
diff changeset
   932
    <resource: #obsolete>
4418
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   933
    PrintfScanf absScientificPrintFloat:self on:aStream digits:digits.
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   934
4418
05f82ac9d198 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 4400
diff changeset
   935
    "Modified: / 19-06-2017 / 14:59:56 / cg"
4429
7d3e464fb430 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 4418
diff changeset
   936
    "Modified (format): / 20-06-2017 / 11:49:07 / cg"
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   937
! !
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   938
4381
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
   939
!Float methodsFor:'coercing & converting'!
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
   940
5325
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   941
asIEEEFloat
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   942
    "return an IEEE soft float with same value as receiver"
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   943
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   944
    ^ IEEEFloat fromFloat:self
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   945
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   946
    "
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   947
     123 asFloat asIEEEFloat
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   948
     0 asShortFloat asIEEEFloat
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   949
     0.0 asIEEEFloat
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   950
    "
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   951
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   952
! !
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   953
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   954
!Float methodsFor:'coercing & converting'!
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
   955
5293
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   956
asOctaFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   957
    "return an octaFloat with same value as receiver"
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   958
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   959
    ^ OctaFloat fromFloat:self
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   960
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   961
    "
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   962
     123 asFloat asOctaFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   963
     0 asFloat asOctaFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   964
     0.0 asOctaFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   965
    "
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   966
! !
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   967
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   968
!Float methodsFor:'coercing & converting'!
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   969
4381
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
   970
asQDouble
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
   971
    "return a QDouble with my value"
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
   972
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
   973
    ^ QDouble fromFloat:self
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
   974
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
   975
    "
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
   976
     1.0 asQDouble
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
   977
    "
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
   978
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
   979
    "Created: / 13-06-2017 / 16:48:57 / cg"
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
   980
! !
Claus Gittinger <cg@exept.de>
parents: 4379
diff changeset
   981
5293
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   982
!Float methodsFor:'coercing & converting'!
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   983
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   984
asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   985
    "return a quadFloat with same value as receiver"
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   986
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   987
    ^ QuadFloat fromFloat:self
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   988
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   989
    "
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   990
     123 asFloat asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   991
     0 asFloat asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   992
     0.0 asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   993
    "
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   994
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   995
    "Created: / 07-06-2019 / 02:28:26 / Claus Gittinger"
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   996
    "Modified (comment): / 10-06-2019 / 21:51:04 / Claus Gittinger"
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   997
! !
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   998
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
   999
!Fraction methodsFor:'coercing & converting'!
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1000
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1001
asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1002
    "return a QuadFloat with (approximately) my value.
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1003
     Since floats have a limited precision, you usually loose bits when doing this."
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1004
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1005
    |num den numShift denShift numBits rslt|
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1006
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1007
    (numerator class == SmallInteger and:[denominator class == SmallInteger]) ifTrue:[
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1008
        ^ (numerator asQuadFloat) / (denominator asQuadFloat)
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1009
    ].
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1010
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1011
    "Do it the hard way: reduce magnitude and undo reduction on the quotient"
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1012
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1013
    numBits := QuadFloat precision * 2.    "number of bits to preserve (conservative)"
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1014
    num := numerator abs.
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1015
    numShift := numBits - num highBit. "(num highBit - bits) negated"
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1016
    numShift < 0 ifTrue:[num := num bitShift:numShift] ifFalse:[ numShift := 0].
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1017
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1018
    den :=  denominator.
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1019
    denShift := numBits - den highBit. "(den highBit - bits) negated"
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1020
    denShift < 0 ifTrue:[den := den bitShift:denShift] ifFalse:[denShift := 0].
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1021
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1022
    rslt := (num asQuadFloat / den asQuadFloat) * (2 raisedToInteger:denShift-numShift).
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1023
    numerator negative ifTrue:[ ^ rslt negated ].
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1024
    ^ rslt.
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1025
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1026
    "
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1027
      (5/9) asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1028
      (-5/9) asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1029
      (Fraction basicNew setNumerator:500000000000 denominator:900000000000) asQuadFloat = (5/9) asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1030
      (Fraction basicNew setNumerator:500000000001 denominator:900000000000) asQuadFloat = (5/9) asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1031
      (500000000001/900000000000) asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1032
      (-500000000001/900000000000) asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1033
      (500000000001/900000000000) asQuadFloat = (5/9) asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1034
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1035
      (500000000000/9) asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1036
      (5/900000000000) asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1037
      89012345678901234567 asFloat / 123456789123456789 asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1038
      (89012345678901234567 / 123456789123456789) asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1039
      (-89012345678901234567 / 123456789123456789) asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1040
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1041
      (
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1042
       180338700661043257034670206806167960222709397862806840937993331366591676308781197477183367018067356365812757479444845320188679437752013593674158587947149815441890236037219685250845721864713487208757788709113534916165172927384095182655935222723385253851776639985379367854545495930551624041981995105743408203125
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1043
        /
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1044
       180331613628627651967947866455016278082980736719853750685591387625058011528928110602436691256100991596843001549483950600930062886280582766771424470965440873615557144641435276844465734361353086032476712374317224249252177316815544331763696909434844464464323192083930469387098582956241443753242492675781250
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1045
      ) asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1046
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1047
      180338700661043257034670206806167960222709397862806840937993331366591676308781197477183367018067356365812757479444845320188679437752013593674158587947149815441890236037219685250845721864713487208757788709113534916165172927384095182655935222723385253851776639985379367854545495930551624041981995105743408203125
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1048
         asQuadFloat /
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1049
      180331613628627651967947866455016278082980736719853750685591387625058011528928110602436691256100991596843001549483950600930062886280582766771424470965440873615557144641435276844465734361353086032476712374317224249252177316815544331763696909434844464464323192083930469387098582956241443753242492675781250
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1050
         asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1051
    "
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1052
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1053
    "Created: / 07-06-2019 / 02:32:19 / Claus Gittinger"
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1054
! !
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1055
4383
Claus Gittinger <cg@exept.de>
parents: 4381
diff changeset
  1056
!Integer methodsFor:'coercing & converting'!
Claus Gittinger <cg@exept.de>
parents: 4381
diff changeset
  1057
5354
3b95aaa8c6f8 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 5325
diff changeset
  1058
asIEEEFloat
3b95aaa8c6f8 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 5325
diff changeset
  1059
    "return an IEEEFloat with same value as the receiver"
3b95aaa8c6f8 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 5325
diff changeset
  1060
3b95aaa8c6f8 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 5325
diff changeset
  1061
    ^ IEEEFloat fromInteger:self
3b95aaa8c6f8 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 5325
diff changeset
  1062
3b95aaa8c6f8 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 5325
diff changeset
  1063
    "
3b95aaa8c6f8 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 5325
diff changeset
  1064
     1234567890 asIEEEFloat
3b95aaa8c6f8 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 5325
diff changeset
  1065
     1234567890 asIEEEFloat asInteger
3b95aaa8c6f8 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 5325
diff changeset
  1066
     12345678901234567890 asIEEEFloat
3b95aaa8c6f8 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 5325
diff changeset
  1067
     12345678901234567890 asIEEEFloat asInteger
3b95aaa8c6f8 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 5325
diff changeset
  1068
    "
3b95aaa8c6f8 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 5325
diff changeset
  1069
3b95aaa8c6f8 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 5325
diff changeset
  1070
3b95aaa8c6f8 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 5325
diff changeset
  1071
! !
3b95aaa8c6f8 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 5325
diff changeset
  1072
3b95aaa8c6f8 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 5325
diff changeset
  1073
!Integer methodsFor:'coercing & converting'!
3b95aaa8c6f8 class: PrintfScanf class
Claus Gittinger <cg@exept.de>
parents: 5325
diff changeset
  1074
5292
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1075
asOctaFloat
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1076
    "return a OctaFloat with same value as myself.
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1077
     Since octaFloats have a limited precision, you may loose bits when
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1078
     doing this."
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1079
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1080
    ^ OctaFloat fromInteger:self
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1081
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1082
    "
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1083
     1234567890 asOctaFloat
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1084
     1234567890 asOctaFloat asInteger
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1085
     12345678901234567890 asOctaFloat
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1086
     12345678901234567890 asOctaFloat asInteger
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1087
    "
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1088
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1089
    "Created: / 07-06-2019 / 02:30:38 / Claus Gittinger"
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1090
! !
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1091
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1092
!Integer methodsFor:'coercing & converting'!
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1093
4383
Claus Gittinger <cg@exept.de>
parents: 4381
diff changeset
  1094
asQDouble
Claus Gittinger <cg@exept.de>
parents: 4381
diff changeset
  1095
    "return a QDouble with same value as myself."
Claus Gittinger <cg@exept.de>
parents: 4381
diff changeset
  1096
Claus Gittinger <cg@exept.de>
parents: 4381
diff changeset
  1097
    ^ QDouble fromInteger:self
Claus Gittinger <cg@exept.de>
parents: 4381
diff changeset
  1098
Claus Gittinger <cg@exept.de>
parents: 4381
diff changeset
  1099
    "
Claus Gittinger <cg@exept.de>
parents: 4381
diff changeset
  1100
     1234567890 asQDouble
Claus Gittinger <cg@exept.de>
parents: 4381
diff changeset
  1101
     1234567890 asQDouble asInteger
Claus Gittinger <cg@exept.de>
parents: 4381
diff changeset
  1102
     12345678901234567890 asQDouble
Claus Gittinger <cg@exept.de>
parents: 4381
diff changeset
  1103
     12345678901234567890 asQDouble asInteger
Claus Gittinger <cg@exept.de>
parents: 4381
diff changeset
  1104
    "
Claus Gittinger <cg@exept.de>
parents: 4381
diff changeset
  1105
Claus Gittinger <cg@exept.de>
parents: 4381
diff changeset
  1106
    "Created: / 12-06-2017 / 18:41:07 / cg"
Claus Gittinger <cg@exept.de>
parents: 4381
diff changeset
  1107
    "Modified (comment): / 12-06-2017 / 20:55:24 / cg"
Claus Gittinger <cg@exept.de>
parents: 4381
diff changeset
  1108
! !
Claus Gittinger <cg@exept.de>
parents: 4381
diff changeset
  1109
5292
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1110
!Integer methodsFor:'coercing & converting'!
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1111
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1112
asQuadFloat
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1113
    "return a QuadFloat with same value as myself.
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1114
     Since quadFloats have a limited precision, you may loose bits when
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1115
     doing this."
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1116
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1117
    ^ QuadFloat fromInteger:self
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1118
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1119
    "
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1120
     1234567890 asQuadFloat
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1121
     1234567890 asQuadFloat asInteger
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1122
     12345678901234567890 asQuadFloat
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1123
     12345678901234567890 asQuadFloat asInteger
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1124
    "
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1125
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1126
    "Created: / 07-06-2019 / 02:30:38 / Claus Gittinger"
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1127
! !
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1128
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1129
!Integer methodsFor:'Compatibility-Squeak'!
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1130
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1131
atRandom
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1132
    "return a random number between 1 and myself"
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1133
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1134
    ^ self atRandom:Random.
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1135
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1136
    "
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1137
     100 atRandom
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1138
     1000 atRandom
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1139
    "
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1140
! !
975a4c7373cb methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5234
diff changeset
  1141
5293
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1142
!LimitedPrecisionReal methodsFor:'coercing & converting'!
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1143
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1144
asOctaFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1145
    ^ OctaFloat fromLimitedPrecisionReal:self
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1146
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1147
    "Created: / 07-06-2019 / 02:30:07 / Claus Gittinger"
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1148
! !
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1149
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1150
!LimitedPrecisionReal methodsFor:'coercing & converting'!
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1151
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1152
asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1153
    ^ QuadFloat fromLimitedPrecisionReal:self
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1154
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1155
    "Created: / 07-06-2019 / 02:30:07 / Claus Gittinger"
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1156
! !
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1157
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1158
!LongFloat methodsFor:'coercing & converting'!
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1159
5325
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1160
asIEEEFloat
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1161
    "return an IEEE soft float with same value as receiver"
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1162
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1163
    ^ IEEEFloat fromFloat:self
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1164
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1165
    "
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1166
     123 asFloat asIEEEFloat
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1167
     0 asShortFloat asIEEEFloat
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1168
     0 asLongFloat asIEEEFloat
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1169
     0.0 asIEEEFloat
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1170
    "
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1171
! !
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1172
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1173
!LongFloat methodsFor:'coercing & converting'!
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1174
5316
110397aa2b10 class: RegressionTests::QDoubleTests
Claus Gittinger <cg@exept.de>
parents: 5296
diff changeset
  1175
asQDouble
110397aa2b10 class: RegressionTests::QDoubleTests
Claus Gittinger <cg@exept.de>
parents: 5296
diff changeset
  1176
    "return a QDouble with my value"
110397aa2b10 class: RegressionTests::QDoubleTests
Claus Gittinger <cg@exept.de>
parents: 5296
diff changeset
  1177
110397aa2b10 class: RegressionTests::QDoubleTests
Claus Gittinger <cg@exept.de>
parents: 5296
diff changeset
  1178
    ^ QDouble fromLongFloat:self
110397aa2b10 class: RegressionTests::QDoubleTests
Claus Gittinger <cg@exept.de>
parents: 5296
diff changeset
  1179
110397aa2b10 class: RegressionTests::QDoubleTests
Claus Gittinger <cg@exept.de>
parents: 5296
diff changeset
  1180
    "
110397aa2b10 class: RegressionTests::QDoubleTests
Claus Gittinger <cg@exept.de>
parents: 5296
diff changeset
  1181
     1.0 asLongFloat asQDouble
110397aa2b10 class: RegressionTests::QDoubleTests
Claus Gittinger <cg@exept.de>
parents: 5296
diff changeset
  1182
    "
110397aa2b10 class: RegressionTests::QDoubleTests
Claus Gittinger <cg@exept.de>
parents: 5296
diff changeset
  1183
! !
110397aa2b10 class: RegressionTests::QDoubleTests
Claus Gittinger <cg@exept.de>
parents: 5296
diff changeset
  1184
110397aa2b10 class: RegressionTests::QDoubleTests
Claus Gittinger <cg@exept.de>
parents: 5296
diff changeset
  1185
!LongFloat methodsFor:'coercing & converting'!
110397aa2b10 class: RegressionTests::QDoubleTests
Claus Gittinger <cg@exept.de>
parents: 5296
diff changeset
  1186
5293
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1187
asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1188
    "return a QuadFloat with same value as the receiver"
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1189
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1190
    ^ QuadFloat fromLongFloat:self
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1191
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1192
    "Created: / 07-06-2019 / 02:46:30 / Claus Gittinger"
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1193
! !
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1194
5296
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1195
!MetaNumber methodsFor:'coercing & converting'!
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1196
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1197
asOctaFloat
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1198
    "return an OctaFloat with same value as the receiver.
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1199
     For anything but NaN, +Inf or -Inf, an error is raised here."
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1200
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1201
    ^ self asInstanceOf:OctaFloat fromSelector:#asOctaFloat
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1202
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1203
    "
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1204
     Infinity NaN asFloat
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1205
     Infinity NaN asOctaFloat
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1206
     
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1207
     Infinity positive asFloat
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1208
     Infinity positive asOctaFloat
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1209
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1210
     Infinity negative asFloat
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1211
     Infinity negative asOctaFloat
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1212
    "
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1213
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1214
    "Created: / 21-06-2017 / 20:42:09 / cg"
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1215
! !
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1216
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1217
!MetaNumber methodsFor:'coercing & converting'!
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1218
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1219
asQDouble
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1220
    "return a QDouble with same value as the receiver.
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1221
     For anything but NaN, +Inf or -Inf, an error is raised here."
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1222
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1223
    ^ self asInstanceOf:QDouble fromSelector:#asQDouble
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1224
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1225
    "
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1226
     Infinity NaN asFloat
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1227
     Infinity NaN asQDouble
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1228
     
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1229
     Infinity positive asFloat
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1230
     Infinity positive asQDouble
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1231
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1232
     Infinity negative asFloat
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1233
     Infinity negative asQDouble
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1234
    "
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1235
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1236
    "Created: / 21-06-2017 / 20:42:09 / cg"
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1237
! !
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1238
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1239
!MetaNumber methodsFor:'coercing & converting'!
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1240
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1241
asQuadFloat
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1242
    "return a QuadFloat with same value as the receiver.
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1243
     For anything but NaN, +Inf or -Inf, an error is raised here."
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1244
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1245
    ^ self asInstanceOf:QuadFloat fromSelector:#asQuadFloat
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1246
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1247
    "
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1248
     Infinity NaN asFloat
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1249
     Infinity NaN asQuadFloat
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1250
     
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1251
     Infinity positive asFloat
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1252
     Infinity positive asQuadFloat
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1253
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1254
     Infinity negative asFloat
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1255
     Infinity negative asQuadFloat
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1256
    "
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1257
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1258
    "Created: / 21-06-2017 / 20:42:09 / cg"
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1259
! !
825d2a1ce06a class: MetaNumber
Claus Gittinger <cg@exept.de>
parents: 5293
diff changeset
  1260
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1261
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1262
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1263
addInterest:anInterest
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1264
    "install an interest forwarder.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1265
     Here, we use the nonWeakDependencies."
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1266
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1267
    self addNonWeakDependent:anInterest
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1268
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1269
    "Created: 14.10.1996 / 22:27:34 / stefan"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1270
! !
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1271
3896
Claus Gittinger <cg@exept.de>
parents: 3856
diff changeset
  1272
!Object methodsFor:'converting'!
Claus Gittinger <cg@exept.de>
parents: 3856
diff changeset
  1273
Claus Gittinger <cg@exept.de>
parents: 3856
diff changeset
  1274
asDoubleLink
Claus Gittinger <cg@exept.de>
parents: 3856
diff changeset
  1275
    "return a valueDoubleLink for the receiver.
Claus Gittinger <cg@exept.de>
parents: 3856
diff changeset
  1276
     Used to make sure the receiver can be added to a double linked list"
Claus Gittinger <cg@exept.de>
parents: 3856
diff changeset
  1277
Claus Gittinger <cg@exept.de>
parents: 3856
diff changeset
  1278
    ^ ValueDoubleLink value:self
Claus Gittinger <cg@exept.de>
parents: 3856
diff changeset
  1279
! !
Claus Gittinger <cg@exept.de>
parents: 3856
diff changeset
  1280
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1281
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1282
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1283
expressInterestIn:aspect for:anObject sendBack:aSelector
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1284
    "arrange for aSelector to be sent to anObject whenever the receiver
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1285
     changes aspect."
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1286
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1287
    "/ for now, use an interestConverter, which is somewhat less efficient.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1288
    "/ In the future, a more intelligent DependencyCollection class is planned for
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1289
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
  1290
    self addInterest:(InterestConverter
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
  1291
			    destination:anObject
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
  1292
			    selector:aSelector
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
  1293
			    aspect:aspect)
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1294
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1295
    "
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1296
     |p b|
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1297
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1298
     b := [Transcript showCR:' -> the point changed'].
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1299
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1300
     p := Point new.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1301
     Transcript showCR:'interest in #foo:'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1302
     p expressInterestIn:#foo for:b sendBack:#value.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1303
     p x:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1304
     Transcript showCR:'now changing #bar ... (expect no notification)'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1305
     p changed:#bar.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1306
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1307
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1308
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1309
     Transcript showCR:'now changing #foo ... (expect notification)'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1310
     p changed:#foo.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1311
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1312
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1313
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1314
     Transcript showCR:'no more interest in #foo:'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1315
     p retractInterestIn:#foo for:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1316
     Transcript showCR:'now changing #foo ... (expect no notification)'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1317
     p changed:#foo.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1318
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1319
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1320
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1321
     Transcript showCR:'interest in #bar now:'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1322
     p expressInterestIn:#bar for:b sendBack:#value.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1323
     Transcript showCR:'now changing #foo ... (expect no notification)'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1324
     p changed:#foo.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1325
     Transcript showCR:'now changing #bar ... (expect notification)'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1326
     p changed:#bar.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1327
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1328
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1329
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1330
     Transcript showCR:'interest in #foo now:'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1331
     p expressInterestIn:#foo for:b sendBack:#value.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1332
     Transcript showCR:'now changing #foo ... (expect notification)'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1333
     p changed:#foo.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1334
     Transcript showCR:'now changing #bar ... (expect notification)'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1335
     p changed:#bar.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1336
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1337
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1338
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1339
     Transcript showCR:'no more interests:'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1340
     p retractInterestsFor:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1341
     Transcript showCR:'now changing #foo ... (expect no notification)'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1342
     p changed:#foo.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1343
     Transcript showCR:'now changing #bar...  (expect no notification)'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1344
     p changed:#bar.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1345
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1346
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1347
     p release.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1348
    "
1668
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1349
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1350
    "Created: 19.4.1996 / 10:26:22 / cg"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1351
    "Modified: 19.4.1996 / 12:34:08 / cg"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1352
    "Modified: 14.10.1996 / 22:28:20 / stefan"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1353
! !
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1354
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1355
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1356
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1357
interests
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1358
    "return a Collection of interests - empty if there is none.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1359
     Here, we use the nonWeakDependents for interests."
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1360
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1361
    ^ self nonWeakDependents
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1362
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1363
    "Created: / 14.10.1996 / 22:20:51 / stefan"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1364
    "Modified: / 30.1.1998 / 14:07:35 / cg"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1365
! !
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1366
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1367
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1368
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1369
interestsFor:someOne
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1370
    "return a collection of interests of someOne - empty if there is none."
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1371
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1372
    |coll deps|
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1373
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1374
    deps := self interests.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1375
    deps size == 0 ifTrue:[^ #()].
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1376
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1377
    coll := IdentitySet new.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1378
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1379
    deps do:[:dep |
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
  1380
	(dep isInterestConverter) ifTrue:[
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
  1381
	    dep destination == someOne ifTrue:[
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
  1382
		coll add:dep.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
  1383
	    ]
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
  1384
	]
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1385
    ].
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1386
    ^ coll
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1387
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1388
    "Created: / 30.1.1998 / 14:02:26 / cg"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1389
    "Modified: / 30.1.1998 / 14:08:24 / cg"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1390
! !
1668
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1391
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1392
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1393
5139
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1394
onChange:aspect evaluate:aBlock
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1395
    "arrange for aBlock to be evaluated whenever the receiver changes the given aspect."
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1396
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1397
    |na selector|
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1398
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1399
    na := aBlock argumentCount.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1400
    na == 0 ifTrue:[
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1401
        selector := #value
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1402
    ] ifFalse:[
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1403
        selector := #( #'value:' #'value:value:' #'value:value:value:') at:na
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1404
    ].
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1405
    ^ self onChange:aspect send:selector to:aBlock
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1406
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1407
    "
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1408
     |p b|
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1409
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1410
     b := [Transcript showCR:' -> the point changed X'].
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1411
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1412
     p := Point new.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1413
     Transcript showCR:'interest in #x, #y'.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1414
     p onChange:#x evaluate:b.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1415
     p onChange:#y evaluate:[Transcript showCR:' -> the point changed Y'].
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1416
     Transcript showCR:'now changing ...'.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1417
     p changed.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1418
     Transcript showCR:'now changing #bar ...'.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1419
     p changed:#bar.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1420
     Transcript showCR:'now changing #x ...'.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1421
     p x:1.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1422
     p changed:#x.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1423
     Transcript showCR:'now changing #y ...'.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1424
     p y:1.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1425
     p changed:#y.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1426
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1427
     Transcript showCR:'no more interests'.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1428
     p retractInterests.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1429
     p changed:#bar.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1430
     p changed:#y.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1431
     p changed:#x.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1432
    "
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1433
! !
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1434
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1435
!Object methodsFor:'dependents-interests'!
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1436
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1437
onChange:aspect send:aSelector to:anObject
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1438
    "arrange for aSelector to be sent to anObject whenever the receiver
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1439
     changed the given aspect.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1440
     Use retractInterestsFor: in case you are no longer interested"
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1441
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1442
    "/ for now, use an interestConverter, which is somewhat less efficient.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1443
    "/ In the future, a more intelligent DependencyCollection class is planned for
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1444
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1445
    (self interests contains:[:anInterest |
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1446
            anInterest isInterestConverter
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1447
                and:[anInterest destination == anObject
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1448
                and:[anInterest selector == aSelector
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1449
                and:[anInterest aspect == aspect]]]
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1450
            ]
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1451
    ) ifFalse:[
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1452
        self addInterest:(InterestConverter
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1453
                              destination:anObject
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1454
                              selector:aSelector
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1455
                              aspect:aspect)
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1456
    ].
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1457
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1458
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1459
    "
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1460
     |p b|
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1461
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1462
     b := [Transcript showCR:'the point changed X'].
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1463
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1464
     p := Point new.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1465
     p onChange:#x send:#value to:b.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1466
     p onChange:#y send:#value to:[Transcript showCR:'the point changed Y'].
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1467
     Transcript showCR:'now changing x'.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1468
     p x:1.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1469
     p changed:#x.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1470
     Transcript cr.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1471
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1472
     Transcript showCR:'now changing y'.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1473
     p y:2.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1474
     p changed:#y.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1475
     Transcript cr.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1476
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1477
     Delay waitForSeconds:1.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1478
     Transcript showCR:'now changing (any)'.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1479
     p changed.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1480
     Transcript cr.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1481
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1482
     Delay waitForSeconds:1.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1483
     Transcript showCR:'no more interest in x'.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1484
     p retractInterestsFor:b.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1485
     Transcript showCR:'now changing again'.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1486
     p changed:#y.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1487
     p changed:#x.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1488
     p changed.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1489
     Transcript cr.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1490
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1491
     Delay waitForSeconds:1.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1492
     Transcript showCR:'interest in x again'.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1493
     p onChange:#x send:#value to:b.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1494
     Transcript showCR:'now changing again'.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1495
     p changed:#y.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1496
     p changed:#x.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1497
     p changed.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1498
     Transcript cr.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1499
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1500
     Transcript showCR:'no more interest at all'.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1501
     p retractInterests.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1502
     p changed:#y.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1503
     p changed:#x.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1504
     p changed.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1505
     Transcript cr.
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1506
    "
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1507
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1508
    "Created: / 19-04-1996 / 10:26:38 / cg"
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1509
    "Modified: / 19-04-1996 / 12:34:26 / cg"
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1510
    "Modified: / 14-10-1996 / 22:28:27 / stefan"
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1511
    "Modified: / 30-11-2018 / 18:01:47 / Stefan Vogel"
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1512
! !
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1513
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1514
!Object methodsFor:'dependents-interests'!
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1515
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1516
onChangeEvaluate:aBlock
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1517
    "arrange for aBlock to be evaluated whenever the receiver changes."
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1518
2149
329461c02e84 allow for 0,1,2 arguments (update params) to be passed to interest blocks.
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
  1519
    |na selector|
329461c02e84 allow for 0,1,2 arguments (update params) to be passed to interest blocks.
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
  1520
3559
fa3443d808a1 Changed Object>>#onChangeEvaluate: (send #argumentCount instead of #numArgs)
Stefan Vogel <sv@exept.de>
parents: 3538
diff changeset
  1521
    na := aBlock argumentCount.
2149
329461c02e84 allow for 0,1,2 arguments (update params) to be passed to interest blocks.
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
  1522
    na == 0 ifTrue:[
3559
fa3443d808a1 Changed Object>>#onChangeEvaluate: (send #argumentCount instead of #numArgs)
Stefan Vogel <sv@exept.de>
parents: 3538
diff changeset
  1523
        selector := #value
2149
329461c02e84 allow for 0,1,2 arguments (update params) to be passed to interest blocks.
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
  1524
    ] ifFalse:[
3559
fa3443d808a1 Changed Object>>#onChangeEvaluate: (send #argumentCount instead of #numArgs)
Stefan Vogel <sv@exept.de>
parents: 3538
diff changeset
  1525
        selector := #( #'value:' #'value:value:' #'value:value:value:') at:na
2149
329461c02e84 allow for 0,1,2 arguments (update params) to be passed to interest blocks.
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
  1526
    ].
329461c02e84 allow for 0,1,2 arguments (update params) to be passed to interest blocks.
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
  1527
    ^ self onChangeSend:selector to:aBlock
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1528
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1529
    "
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1530
     |p b|
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1531
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1532
     b := [Transcript showCR:' -> the point changed'].
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1533
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1534
     p := Point new.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1535
     Transcript showCR:'interest in #foo:'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1536
     p onChangeEvaluate:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1537
     p x:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1538
     Transcript showCR:'now changing #bar ... (expect no notification)'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1539
     p changed:#bar.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1540
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1541
     p retractInterests.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1542
     p changed:#bar.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1543
    "
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1544
! !
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1545
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1546
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1547
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1548
onChangeSend:aSelector to:anObject
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1549
    "arrange for aSelector to be sent to anObject whenever the receiver
4030
fd37ac079cf0 class: GDBApplication
Claus Gittinger <cg@exept.de>
parents: 3896
diff changeset
  1550
     changes.
fd37ac079cf0 class: GDBApplication
Claus Gittinger <cg@exept.de>
parents: 3896
diff changeset
  1551
     Use retractInterestsFor: in case you are no longer interested"
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1552
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1553
    "/ for now, use an interestConverter, which is somewhat less efficient.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1554
    "/ In the future, a more intelligent DependencyCollection class is planned for
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1555
4773
9a9b8a439b6d class Object
Stefan Vogel <sv@exept.de>
parents: 4714
diff changeset
  1556
    (self interests contains:[:anInterest |
9a9b8a439b6d class Object
Stefan Vogel <sv@exept.de>
parents: 4714
diff changeset
  1557
            anInterest isInterestConverter
9a9b8a439b6d class Object
Stefan Vogel <sv@exept.de>
parents: 4714
diff changeset
  1558
                and:[anInterest destination == anObject
9a9b8a439b6d class Object
Stefan Vogel <sv@exept.de>
parents: 4714
diff changeset
  1559
                and:[anInterest selector == aSelector]]
9a9b8a439b6d class Object
Stefan Vogel <sv@exept.de>
parents: 4714
diff changeset
  1560
            ]
9a9b8a439b6d class Object
Stefan Vogel <sv@exept.de>
parents: 4714
diff changeset
  1561
    ) ifFalse:[
9a9b8a439b6d class Object
Stefan Vogel <sv@exept.de>
parents: 4714
diff changeset
  1562
        self addInterest:(InterestConverter
9a9b8a439b6d class Object
Stefan Vogel <sv@exept.de>
parents: 4714
diff changeset
  1563
                              destination:anObject
9a9b8a439b6d class Object
Stefan Vogel <sv@exept.de>
parents: 4714
diff changeset
  1564
                              selector:aSelector)
9a9b8a439b6d class Object
Stefan Vogel <sv@exept.de>
parents: 4714
diff changeset
  1565
    ].
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1566
1668
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1567
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1568
    "
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1569
     |p b|
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1570
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1571
     b := [Transcript showCR:'the point changed'].
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1572
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1573
     p := Point new.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1574
     p onChangeSend:#value to:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1575
     p x:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1576
     Transcript showCR:'now changing'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1577
     p changed.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1578
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1579
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1580
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1581
     Transcript showCR:'now changing'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1582
     p changed.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1583
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1584
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1585
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1586
     Transcript showCR:'no more interest'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1587
     p retractInterestsFor:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1588
     Transcript showCR:'now changing again'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1589
     p changed.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1590
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1591
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1592
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1593
     Transcript showCR:'interest again'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1594
     p onChangeSend:#value to:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1595
     Transcript showCR:'now changing again'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1596
     p changed.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1597
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1598
    "
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1599
4773
9a9b8a439b6d class Object
Stefan Vogel <sv@exept.de>
parents: 4714
diff changeset
  1600
    "Created: / 19-04-1996 / 10:26:38 / cg"
9a9b8a439b6d class Object
Stefan Vogel <sv@exept.de>
parents: 4714
diff changeset
  1601
    "Modified: / 19-04-1996 / 12:34:26 / cg"
9a9b8a439b6d class Object
Stefan Vogel <sv@exept.de>
parents: 4714
diff changeset
  1602
    "Modified: / 14-10-1996 / 22:28:27 / stefan"
9a9b8a439b6d class Object
Stefan Vogel <sv@exept.de>
parents: 4714
diff changeset
  1603
    "Modified: / 30-11-2018 / 18:01:47 / Stefan Vogel"
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1604
! !
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1605
2897
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1606
!Object methodsFor:'dependents-st/v event simulation'!
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1607
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1608
removeActionsForEvent:eventSymbol
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1609
    "remove ST/V-style event triggers."
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1610
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1611
    self retractInterestsIn:eventSymbol
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1612
! !
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1613
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1614
!Object methodsFor:'dependents-st/v event simulation'!
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1615
2903
80af520506e8 class: SSL::SSLTests
Claus Gittinger <cg@exept.de>
parents: 2901
diff changeset
  1616
removeActionsWithReceiver:aReceiver
80af520506e8 class: SSL::SSLTests
Claus Gittinger <cg@exept.de>
parents: 2901
diff changeset
  1617
    "remove ST/V-style event triggers."
80af520506e8 class: SSL::SSLTests
Claus Gittinger <cg@exept.de>
parents: 2901
diff changeset
  1618
80af520506e8 class: SSL::SSLTests
Claus Gittinger <cg@exept.de>
parents: 2901
diff changeset
  1619
    self retractInterestsFor:aReceiver
80af520506e8 class: SSL::SSLTests
Claus Gittinger <cg@exept.de>
parents: 2901
diff changeset
  1620
! !
80af520506e8 class: SSL::SSLTests
Claus Gittinger <cg@exept.de>
parents: 2901
diff changeset
  1621
80af520506e8 class: SSL::SSLTests
Claus Gittinger <cg@exept.de>
parents: 2901
diff changeset
  1622
!Object methodsFor:'dependents-st/v event simulation'!
80af520506e8 class: SSL::SSLTests
Claus Gittinger <cg@exept.de>
parents: 2901
diff changeset
  1623
2897
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1624
removeAllActionsWithReceiver:anObject
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1625
    "remove ST/V-style event triggers."
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1626
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1627
    self retractInterestsFor:anObject
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1628
! !
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1629
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1630
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1631
4969
9acd20c528a3 combination retract+removeDependent
Claus Gittinger <cg@exept.de>
parents: 4866
diff changeset
  1632
removeDependentAndRetractInterestsFor:someOne
9acd20c528a3 combination retract+removeDependent
Claus Gittinger <cg@exept.de>
parents: 4866
diff changeset
  1633
    "remove any dependency and interest of someOne in the receiver.
9acd20c528a3 combination retract+removeDependent
Claus Gittinger <cg@exept.de>
parents: 4866
diff changeset
  1634
     Answer the receiver"
9acd20c528a3 combination retract+removeDependent
Claus Gittinger <cg@exept.de>
parents: 4866
diff changeset
  1635
9acd20c528a3 combination retract+removeDependent
Claus Gittinger <cg@exept.de>
parents: 4866
diff changeset
  1636
    self retractInterestsFor:someOne.
9acd20c528a3 combination retract+removeDependent
Claus Gittinger <cg@exept.de>
parents: 4866
diff changeset
  1637
    self removeDependent:someOne.
9acd20c528a3 combination retract+removeDependent
Claus Gittinger <cg@exept.de>
parents: 4866
diff changeset
  1638
9acd20c528a3 combination retract+removeDependent
Claus Gittinger <cg@exept.de>
parents: 4866
diff changeset
  1639
    "Created: / 30-05-2019 / 11:11:19 / Claus Gittinger"
9acd20c528a3 combination retract+removeDependent
Claus Gittinger <cg@exept.de>
parents: 4866
diff changeset
  1640
! !
9acd20c528a3 combination retract+removeDependent
Claus Gittinger <cg@exept.de>
parents: 4866
diff changeset
  1641
9acd20c528a3 combination retract+removeDependent
Claus Gittinger <cg@exept.de>
parents: 4866
diff changeset
  1642
!Object methodsFor:'dependents-interests'!
9acd20c528a3 combination retract+removeDependent
Claus Gittinger <cg@exept.de>
parents: 4866
diff changeset
  1643
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1644
removeInterest:anInterest
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1645
    "remove an interest forwarder.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1646
     Here, we use the nonWeakDependencies."
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1647
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1648
    self removeNonWeakDependent:anInterest
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1649
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1650
    "Created: 14.10.1996 / 22:21:59 / stefan"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1651
! !
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1652
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1653
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1654
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1655
retractInterestIn:aspect for:someOne
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1656
    "remove the interest of someOne in the receiver changing aspect
4202
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1657
     (as installed with #expressInterestIn:for:sendBack:).
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1658
     Answer the retracted interests."
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1659
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1660
    "/ for now, remove the interestConverter.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1661
    "/ In the future, a more intelligent DependencyCollection class is planned for
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1662
4202
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1663
    ^ self retractInterestsForWhich:[:i | 
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1664
            (i aspect == aspect) and:[i destination == someOne]
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1665
        ]
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1666
1668
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1667
    "
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1668
     |p b|
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1669
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1670
     b := [Transcript showCR:'the point changed'].
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1671
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1672
     p := Point new.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1673
     Transcript showCR:'interest in #foo'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1674
     p expressInterestIn:#foo for:b sendBack:#value.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1675
     p x:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1676
     Transcript showCR:'now changing #bar'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1677
     p changed:#bar.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1678
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1679
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1680
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1681
     Transcript showCR:'now changing #foo'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1682
     p changed:#foo.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1683
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1684
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1685
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1686
     Transcript showCR:'no more interest in #foo'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1687
     p retractInterestIn:#foo for:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1688
     Transcript showCR:'now changing #foo'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1689
     p changed:#foo.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1690
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1691
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1692
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1693
     Transcript showCR:'interest in #bar now'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1694
     p expressInterestIn:#bar for:b sendBack:#value.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1695
     Transcript showCR:'now changing #foo'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1696
     p changed:#foo.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1697
     Transcript showCR:'now changing #bar'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1698
     p changed:#bar.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1699
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1700
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1701
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1702
     Transcript showCR:'interest in #foo now'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1703
     p expressInterestIn:#foo for:b sendBack:#value.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1704
     Transcript showCR:'now changing #foo'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1705
     p changed:#foo.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1706
     Transcript showCR:'now changing #bar'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1707
     p changed:#bar.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1708
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1709
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1710
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1711
     Transcript showCR:'no more interests'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1712
     p retractInterestsFor:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1713
     Transcript showCR:'now changing #foo'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1714
     p changed:#foo.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1715
     Transcript showCR:'now changing #bar'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1716
     p changed:#bar.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1717
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1718
    "
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1719
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1720
    "Created: / 19.4.1996 / 10:27:11 / cg"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1721
    "Modified: / 14.10.1996 / 22:21:19 / stefan"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1722
    "Modified: / 30.1.1998 / 14:05:34 / cg"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1723
! !
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1724
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1725
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1726
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1727
retractInterests
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1728
    "remove all interests in the receiver changing aspect
4202
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1729
     (as installed with #expressInterestIn:for:sendBack:).
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1730
     Answer the retraced interests."
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1731
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1732
    "/ for now, remove the interestConverter.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1733
    "/ In the future, a more intelligent DependencyCollection class is planned for
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1734
4202
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1735
    ^ self retractInterestsForWhich:[:i | true ]
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1736
! !
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1737
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1738
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1739
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1740
retractInterestsFor:someOne
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
  1741
    "remove the interest of someOne in the receiver
4202
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1742
     (as installed with #onChangeSend:to:).
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1743
     Answer the retracted interests."
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1744
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1745
    "/ for now, remove the interestConverter.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1746
    "/ In the future, a more intelligent DependencyCollection class is planned for
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1747
4202
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1748
    ^ self retractInterestsForWhich:[:i | i destination == someOne ]
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1749
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1750
    "
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1751
     |p b|
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1752
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1753
     b := [Transcript showCR:'the point changed'].
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1754
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1755
     p := Point new.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1756
     p onChangeSend:#value to:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1757
     p x:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1758
     Transcript showCR:'now changing'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1759
     p changed.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1760
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1761
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1762
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1763
     Transcript showCR:'now changing'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1764
     p changed.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1765
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1766
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1767
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1768
     Transcript showCR:'no more interest'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1769
     p retractInterestsFor:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1770
     Transcript showCR:'now changing again'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1771
     p changed.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1772
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1773
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1774
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1775
     Transcript showCR:'interest again'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1776
     p onChangeSend:#value to:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1777
     Transcript showCR:'now changing again'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1778
     p changed.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1779
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1780
    "
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1781
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1782
    "Created: / 19.4.1996 / 10:23:46 / cg"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1783
    "Modified: / 14.10.1996 / 22:21:25 / stefan"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1784
    "Modified: / 30.1.1998 / 14:04:52 / cg"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1785
! !
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1786
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1787
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1788
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1789
retractInterestsForWhich:aBlock
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1790
    "remove all interests in the receiver changing aspect
4202
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1791
     (as installed with #expressInterestIn:for:sendBack:).
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1792
     Answer the retracted interests."
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1793
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1794
    "/ for now, remove the interestConverter.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1795
    "/ In the future, a more intelligent DependencyCollection class is planned for
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1796
5139
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1797
    |deps toRemove|
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1798
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1799
    deps := self interests.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1800
    deps size ~~ 0 ifTrue:[
4202
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1801
        "/ cannot removeDependent within the loop - the interests collection rehashes
5139
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1802
        toRemove := IdentitySet new.
4202
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1803
        deps do:[:dep |
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1804
            dep isInterestConverter ifTrue:[
5139
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1805
                (aBlock value:dep) ifTrue:[toRemove add:dep].
4202
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1806
            ]
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1807
        ].
5139
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1808
        toRemove do:[:dep |
4202
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1809
            self removeInterest:dep.
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1810
        ].
5139
c05c6d9c9028 class: Object
Claus Gittinger <cg@exept.de>
parents: 5126
diff changeset
  1811
        ^ toRemove.
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1812
    ].
4202
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1813
    ^ #()
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1814
! !
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1815
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1816
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1817
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1818
retractInterestsIn:aspect
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1819
    "remove all interests in the receiver changing aspect
4202
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1820
     (as installed with #expressInterestIn:for:sendBack:).
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1821
     Answer the retracted interests."
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1822
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1823
    "/ for now, remove the interestConverter.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1824
    "/ In the future, a more intelligent DependencyCollection class is planned for
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
  1825
4202
88ea818849fa change #retractInterest* to return the retracted interests
Stefan Vogel <sv@exept.de>
parents: 4190
diff changeset
  1826
    ^ self retractInterestsForWhich:[:i | i aspect == aspect ]
1668
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1827
! !
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1828
2901
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1829
!Object methodsFor:'Compatibility-Dolphin'!
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1830
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1831
trigger:anAspect
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1832
    self changed:anAspect
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1833
! !
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1834
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1835
!Object methodsFor:'Compatibility-Dolphin'!
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1836
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1837
trigger:anAspect with:anArgument
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1838
    self changed:anAspect with:anArgument
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1839
! !
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1840
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1841
!Object methodsFor:'dependents-st/v event simulation'!
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1842
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1843
triggerEvent:aSymbol
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1844
    self changed:aSymbol
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1845
! !
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1846
1668
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1847
!Object methodsFor:'dependents-st/v event simulation'!
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1848
2897
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1849
triggerEvent:eventSymbol with:aParameter
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1850
    "perform ST/V-style event triggering."
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1851
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1852
    self changed:eventSymbol with:(Array with:aParameter).
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1853
! !
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1854
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1855
!Object methodsFor:'dependents-st/v event simulation'!
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1856
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1857
triggerEvent:eventSymbol withArguments:parameters
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1858
    "perform ST/V-style event triggering."
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1859
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1860
    self changed:eventSymbol with:parameters.
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1861
! !
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1862
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1863
!Object methodsFor:'dependents-st/v event simulation'!
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1864
1668
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1865
when:eventSymbol send:selector to:anObject
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1866
    "install an ST/V-style interest forwarder.
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1867
     Here, we use the nonWeakDependencies."
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1868
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1869
    self addInterest:(InterestConverterWithParameters
2897
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1870
                            destination:anObject
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1871
                            selector:selector
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1872
                            aspect:eventSymbol).
1668
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1873
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1874
    "
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1875
     |p b|
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1876
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1877
     b := [Transcript showCR:'the point changed'].
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1878
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1879
     p := Point new.
2897
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1880
     p when:#foo:bar: send:#value:value: to:[:a :b | Transcript show:'foo: '; show:a; show:' bar: '; showCR:b].
1668
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1881
     Transcript showCR:'now changing'.
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1882
     p triggerEvent:#foo:bar: withArguments:#('fooArg' 'barArg').
2897
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1883
     p removeActionsForEvent:#foo:bar:.
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1884
    "
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1885
! !
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1886
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1887
!Object methodsFor:'dependents-st/v event simulation'!
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1888
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1889
when:eventSymbol send:selector to:anObject with:aParameter
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1890
    "install an ST/V-style interest forwarder.
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1891
     Here, we use the nonWeakDependencies."
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1892
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1893
    self addInterest:((InterestConverterWithParameters
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1894
                            destination:anObject
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1895
                            selector:selector
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1896
                            aspect:eventSymbol) 
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1897
                        defaultParameters:(Array with:aParameter)).
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1898
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1899
    "
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1900
     |p b|
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1901
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1902
     b := [Transcript showCR:'the point changed'].
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1903
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1904
     p := Point new.
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1905
     p 
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1906
        when:#foo: 
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1907
        send:#value: 
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1908
        to:[:a | Transcript show:'foo: '; showCR:a]
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1909
        with:123.
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1910
     Transcript showCR:'now changing'.
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1911
     p triggerEvent:#foo:.
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1912
     p triggerEvent:#foo: with:987.
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1913
     p removeActionsForEvent:#foo:.
1668
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1914
    "
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1915
! !
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1916
2901
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1917
!Object methodsFor:'Compatibility-Dolphin'!
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1918
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1919
when:anAspect sendTo:anObject
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1920
    self expressInterestIn:anAspect for:anObject sendBack:anAspect
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1921
! !
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1922
5293
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1923
!ShortFloat methodsFor:'coercing & converting'!
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1924
5325
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1925
asIEEEFloat
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1926
    "return an IEEE soft float with same value as receiver"
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1927
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1928
    ^ IEEEFloat fromFloat:self
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1929
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1930
    "
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1931
     123 asFloat asIEEEFloat
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1932
     0 asShortFloat asIEEEFloat
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1933
     0 asLongFloat asIEEEFloat
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1934
     0.0 asIEEEFloat
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1935
    "
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1936
! !
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1937
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1938
!ShortFloat methodsFor:'coercing & converting'!
e976a6de6756 IEEEFloats
Claus Gittinger <cg@exept.de>
parents: 5316
diff changeset
  1939
5293
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1940
asQuadFloat
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1941
    "return a QuadFloat with same value as the receiver"
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1942
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1943
    ^ QuadFloat fromShortFloat:self
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1944
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1945
    "Created: / 07-06-2019 / 02:29:14 / Claus Gittinger"
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1946
! !
db346a540bf9 methods shuffled to their package
Claus Gittinger <cg@exept.de>
parents: 5292
diff changeset
  1947
2364
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1948
!Stream methodsFor:'stacked computing streams'!
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1949
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1950
collecting:aBlock
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1951
    "return a stacked computing stream, which reads elements from the receiver,
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1952
     applies aBlock to each read element, and provides the results as elements to its reader."
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1953
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1954
    ^ CollectingReadStream on:self collecting:aBlock
3094
4b7e65efd84f class: Stream
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
  1955
4b7e65efd84f class: Stream
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
  1956
    "
4b7e65efd84f class: Stream
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
  1957
     |s s2|
4b7e65efd84f class: Stream
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
  1958
4b7e65efd84f class: Stream
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
  1959
     s := 'hello world' readStream.
4b7e65efd84f class: Stream
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
  1960
     s2 := s collecting:[:ch | ch asUppercase].
4b7e65efd84f class: Stream
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
  1961
     s2 upToEnd.   
4b7e65efd84f class: Stream
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
  1962
    "
2364
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1963
! !
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1964
4620
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1965
!Stream methodsFor:'writing'!
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1966
5455
20dbad6d9935 class: Stream
Claus Gittinger <cg@exept.de>
parents: 5354
diff changeset
  1967
printf:formatString
4620
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1968
    "C-style printing into a stream.
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1969
     For smalltalk specific formats, 
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1970
     see documentation in PrintfScanf >> format_printf"
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1971
5455
20dbad6d9935 class: Stream
Claus Gittinger <cg@exept.de>
parents: 5354
diff changeset
  1972
    formatString printf:#() on:self.
4620
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1973
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1974
    "
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1975
     Transcript printf:'Hello World\n'
4866
c938d3377688 class: Stream
Claus Gittinger <cg@exept.de>
parents: 4797
diff changeset
  1976
     Transcript printf:'Hello World %d\n' with:123
4620
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1977
    "
4866
c938d3377688 class: Stream
Claus Gittinger <cg@exept.de>
parents: 4797
diff changeset
  1978
c938d3377688 class: Stream
Claus Gittinger <cg@exept.de>
parents: 4797
diff changeset
  1979
    "Modified (comment): / 17-03-2019 / 15:05:29 / Claus Gittinger"
4620
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1980
! !
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1981
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1982
!Stream methodsFor:'writing'!
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1983
5455
20dbad6d9935 class: Stream
Claus Gittinger <cg@exept.de>
parents: 5354
diff changeset
  1984
printf:formatString arguments:arguments
4620
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1985
    "C-style printing into a stream.
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1986
     Same as printf:withAll:, for protocol completeness.
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1987
     For smalltalk specific formats, 
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1988
     see documentation in PrintfScanf >> format_printf"
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1989
5455
20dbad6d9935 class: Stream
Claus Gittinger <cg@exept.de>
parents: 5354
diff changeset
  1990
    formatString printf:arguments on:self.
4620
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1991
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1992
    "
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1993
     Transcript printf:'%05x %d %f %o\n' withAll:{ 123. 234*5. 1.234. 8r377 }
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1994
     Transcript printf:'%03d %03d %03d\n' withAll:{ 1. 2. 3 }
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1995
    "
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1996
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1997
    "Created: / 23-02-2017 / 16:43:39 / cg"
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1998
! !
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  1999
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2000
!Stream methodsFor:'writing'!
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2001
5455
20dbad6d9935 class: Stream
Claus Gittinger <cg@exept.de>
parents: 5354
diff changeset
  2002
printf:formatString with:argument
4620
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2003
    "C-style printing into a stream.
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2004
     For smalltalk specific formats, 
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2005
     see documentation in PrintfScanf >> format_printf"
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2006
5455
20dbad6d9935 class: Stream
Claus Gittinger <cg@exept.de>
parents: 5354
diff changeset
  2007
    formatString printf:{argument} on:self.
4620
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2008
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2009
    "
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2010
     Transcript printf:'%05x\n' with:12345
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2011
    "
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2012
! !
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2013
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2014
!Stream methodsFor:'writing'!
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2015
5455
20dbad6d9935 class: Stream
Claus Gittinger <cg@exept.de>
parents: 5354
diff changeset
  2016
printf:formatString with:argument1 with:argument2
4620
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2017
    "C-style printing into a stream.
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2018
     For smalltalk specific formats, 
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2019
     see documentation in PrintfScanf >> format_printf"
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2020
5455
20dbad6d9935 class: Stream
Claus Gittinger <cg@exept.de>
parents: 5354
diff changeset
  2021
    formatString printf:{argument1 . argument2} on:self.
4620
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2022
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2023
    "
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2024
     Transcript printf:'%05x %3s\n' with:12345 with:'abc'
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2025
    "
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2026
! !
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2027
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2028
!Stream methodsFor:'writing'!
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2029
5455
20dbad6d9935 class: Stream
Claus Gittinger <cg@exept.de>
parents: 5354
diff changeset
  2030
printf:formatString with:argument1 with:argument2 with:argument3
4620
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2031
    "C-style printing into a stream.
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2032
     For smalltalk specific formats, 
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2033
     see documentation in PrintfScanf >> format_printf"
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2034
5455
20dbad6d9935 class: Stream
Claus Gittinger <cg@exept.de>
parents: 5354
diff changeset
  2035
    formatString printf:{argument1 . argument2 . argument3} on:self.
4620
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2036
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2037
    "
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2038
     Transcript printf:'%05x %3s %09s\n' with:12345 with:'abc' with:'abc'
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2039
     Transcript printf:'%05x %3s %9s\n' with:12345 with:'abc' with:'abc'
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2040
    "
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2041
! !
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2042
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2043
!Stream methodsFor:'writing'!
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2044
5455
20dbad6d9935 class: Stream
Claus Gittinger <cg@exept.de>
parents: 5354
diff changeset
  2045
printf:formatString with:argument1 with:argument2 with:argument3 with:argument4
4620
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2046
    "C-style printing into a stream.
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2047
     For smalltalk specific formats, 
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2048
     see documentation in PrintfScanf >> format_printf"
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2049
5455
20dbad6d9935 class: Stream
Claus Gittinger <cg@exept.de>
parents: 5354
diff changeset
  2050
    formatString printf:{argument1 . argument2 . argument3 . argument4} on:self.
4620
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2051
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2052
    "
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2053
     Transcript printf:'%02x %02x %02x %02x\n' with:1 with:2 with:3 with:4
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2054
     Transcript printf:'%2x %2x %2x %2x\n' with:1 with:2 with:3 with:4
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2055
     Transcript printf:'%-2x %-2x %-2x %-2x\n' with:1 with:2 with:3 with:4
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2056
    "
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2057
! !
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2058
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2059
!Stream methodsFor:'writing'!
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2060
5455
20dbad6d9935 class: Stream
Claus Gittinger <cg@exept.de>
parents: 5354
diff changeset
  2061
printf:formatString with:argument1 with:argument2 with:argument3 with:argument4 with:argument5
4620
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2062
    "C-style printing into a stream.
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2063
     For smalltalk specific formats, 
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2064
     see documentation in PrintfScanf >> format_printf"
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2065
5455
20dbad6d9935 class: Stream
Claus Gittinger <cg@exept.de>
parents: 5354
diff changeset
  2066
    formatString printf:{argument1 . argument2 . argument3 . argument4 . argument5} on:self.
4620
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2067
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2068
    "
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2069
     Transcript printf:'%02x %02x %02x %02x\n' with:1 with:2 with:3 with:4
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2070
     Transcript printf:'%2x %2x %2x %2x\n' with:1 with:2 with:3 with:4
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2071
     Transcript printf:'%-2x %-2x %-2x %-2x\n' with:1 with:2 with:3 with:4
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2072
    "
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2073
! !
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2074
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2075
!Stream methodsFor:'writing'!
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2076
5455
20dbad6d9935 class: Stream
Claus Gittinger <cg@exept.de>
parents: 5354
diff changeset
  2077
printf:formatString withAll:arguments
4620
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2078
    "C-style printing into a stream.
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2079
     For smalltalk specific formats, 
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2080
     see documentation in PrintfScanf >> format_printf"
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2081
5455
20dbad6d9935 class: Stream
Claus Gittinger <cg@exept.de>
parents: 5354
diff changeset
  2082
    formatString printf:arguments on:self.
4620
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2083
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2084
    "
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2085
     Transcript printf:'%05x %d %f %o\n' withAll:{ 123. 234*5. 1.234. 8r377 }
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2086
     Transcript printf:'%03d %03d %03d\n' withAll:{ 1. 2. 3 }
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2087
    "
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2088
! !
df4699518c1b class: Stream
Claus Gittinger <cg@exept.de>
parents: 4619
diff changeset
  2089
2364
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  2090
!Stream methodsFor:'stacked computing streams'!
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  2091
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  2092
selecting:aBlock
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  2093
    "return a stacked computing stream, which reads elements from the receiver,
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  2094
     but only provides elements for which aBlock returns true to its reader."
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  2095
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  2096
    ^ SelectingReadStream on:self selecting:aBlock
3094
4b7e65efd84f class: Stream
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
  2097
4b7e65efd84f class: Stream
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
  2098
    "
4b7e65efd84f class: Stream
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
  2099
     |s s2|
4b7e65efd84f class: Stream
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
  2100
4b7e65efd84f class: Stream
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
  2101
     s := 'hello world' readStream.
4b7e65efd84f class: Stream
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
  2102
     s2 := s selecting:[:ch | ch isVowel].
4b7e65efd84f class: Stream
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
  2103
     s2 upToEnd.
4b7e65efd84f class: Stream
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
  2104
    "
2364
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  2105
! !
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  2106
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
  2107
!stx_libbasic2 class methodsFor:'documentation'!
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
  2108
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
  2109
extensionsVersion_CVS
3715
59267baeb546 class: CharacterArray
Claus Gittinger <cg@exept.de>
parents: 3559
diff changeset
  2110
    ^ '$Header$'
3005
36ada1348967 asciiValue->codePoint
Claus Gittinger <cg@exept.de>
parents: 2903
diff changeset
  2111
! !
3006
1847bcaf8018 Added lost method #printf_printOn:withData:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3005
diff changeset
  2112