extensions.st
author Claus Gittinger <cg@exept.de>
Sun, 16 Jun 2013 10:40:06 +0200
changeset 3005 36ada1348967
parent 2903 80af520506e8
child 3006 1847bcaf8018
permissions -rw-r--r--
asciiValue->codePoint
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
2288
316a202d1c8b category changes
Claus Gittinger <cg@exept.de>
parents: 2260
diff changeset
     3
!CharacterArray methodsFor:'matching - phonetic'!
2199
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
     4
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
     5
asKoelnerPhoneticCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
     6
    "return a koelner phonetic code.
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
     7
     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
     8
     it returns simular strings for similar sounding words.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
     9
     There are some differences to soundex, though:
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    10
	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
    11
	it does not start with the first character of the input.
2288
316a202d1c8b category changes
Claus Gittinger <cg@exept.de>
parents: 2260
diff changeset
    12
316a202d1c8b category changes
Claus Gittinger <cg@exept.de>
parents: 2260
diff changeset
    13
     Caveat: this phonetic code is especially suited for german words.
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    14
	     Please have a look at the other phonetic comparison operators found
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    15
	     in PhoneticStringUtilities."
2199
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    16
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    17
    ^ PhoneticStringUtilities koelnerPhoneticCodeOf:self
2199
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    18
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    19
    "
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    20
     #(
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    21
	'Müller'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    22
	'Miller'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    23
	'Mueller'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    24
	'Mühler'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    25
	'Mühlherr'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    26
	'Mülherr'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    27
	'Myler'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    28
	'Millar'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    29
	'Myller'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    30
	'Müllar'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    31
	'Müler'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    32
	'Muehler'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    33
	'Mülller'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    34
	'Müllerr'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    35
	'Muehlherr'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    36
	'Muellar'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    37
	'Mueler'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    38
	'Mülleer'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    39
	'Mueller'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    40
	'Nüller'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    41
	'Nyller'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    42
	'Niler'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    43
	'Czerny'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    44
	'Tscherny'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    45
	'Czernie'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    46
	'Tschernie'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    47
	'Schernie'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    48
	'Scherny'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    49
	'Scherno'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    50
	'Czerne'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    51
	'Zerny'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    52
	'Tzernie'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    53
	'Breschnew'
2199
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    54
     ) do:[:w |
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    55
	 Transcript show:w; show:'->'; showCR:(w asKoelnerPhoneticCode)
2199
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    56
     ].
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    57
    "
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    58
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    59
    "
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    60
     'Breschnew' asKoelnerPhoneticCode -> '17863'
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    61
     'Breschnew' asKoelnerPhoneticCode -> '17863'
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    62
     'Breschneff' asKoelnerPhoneticCode -> '17863'
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    63
     'Braeschneff' asKoelnerPhoneticCode -> '17863'
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    64
     'Braessneff' asKoelnerPhoneticCode -> '17863'
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    65
     'Pressneff' asKoelnerPhoneticCode -> '17863'
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    66
     'Presznäph' asKoelnerPhoneticCode -> '17863'
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    67
    "
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    68
! !
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    69
2288
316a202d1c8b category changes
Claus Gittinger <cg@exept.de>
parents: 2260
diff changeset
    70
!CharacterArray methodsFor:'matching - phonetic'!
2199
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    71
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    72
asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    73
    "return a soundex phonetic code or nil.
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    74
     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
    75
     tool when searching for words where the correct spelling is unknown.
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    76
     (read Knuth or search the web if you dont know what a soundex code is).
2288
316a202d1c8b category changes
Claus Gittinger <cg@exept.de>
parents: 2260
diff changeset
    77
2337
755696d72648 comment/format in: #asSoundexCode
Claus Gittinger <cg@exept.de>
parents: 2303
diff changeset
    78
     Caveat: 'similar sounding words' means: 'similar sounding in ENGLISH'
2435
9f8b350002db VariableString -> String
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
    79
	     Please have a look at the other phonetic comparison operators found
9f8b350002db VariableString -> String
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
    80
	     in PhoneticStringUtilities."
2199
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    81
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    82
    ^ PhoneticStringUtilities soundexCodeOf:self
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    83
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    84
    "
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
    85
     'claus' asSoundexCode
2199
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    86
     'clause' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    87
     'close' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    88
     'smalltalk' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    89
     'smaltalk' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    90
     'smaltak' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    91
     'smaltok' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    92
     'smoltok' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    93
     'aa' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    94
     'by' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    95
     'bab' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    96
     'bob' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    97
     'bop' asSoundexCode
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    98
    "
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
    99
! !
a9d3b1aa9f03 phonetic stuff extraced into libbasic2
Claus Gittinger <cg@exept.de>
parents: 2150
diff changeset
   100
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   101
!CharacterArray methodsFor:'printing & storing'!
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   102
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   103
printf:args
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   104
    "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
   105
     as specified in the Unix C-language manual page for printf(3).
27e3885efddd comment/format in:6 methods
Claus Gittinger <cg@exept.de>
parents: 2288
diff changeset
   106
     Return the resulting string.
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   107
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   108
     For copyright information, see goodies/String-printf_scanf.chg"
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   109
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   110
    |aStream|
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   111
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   112
    aStream := WriteStream on:String new.
2260
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   113
    self printf:args on:aStream.
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   114
    ^ aStream contents
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   115
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   116
    "
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   117
     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
   118
    "
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   119
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   120
    "
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   121
     Transcript showCR: 'Some examples:'!!
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   122
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   123
     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
   124
     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
   125
     Transcript showCR: '.'
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   126
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   127
     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
   128
     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
   129
     Transcript showCR: '.'
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   130
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   131
     Transcript show: '''%8.3f'' printf: (Array with: 200 sqrt negated) = .'.
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   132
     Transcript show: ('%8.3f' printf: (Array with: 200 sqrt negated)).
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   133
     Transcript showCR: '.'
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   134
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   135
     Transcript show: '''%c'' printf: #(16r41) = .'.
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   136
     Transcript show: ('%c' printf: #(16r41)).
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   137
     Transcript showCR: '.'
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   138
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   139
     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
   140
     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
   141
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   142
     Transcript show: '''%d%f%s'' sscanf: ''25 54.32e-01 monday'' = '.
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   143
     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
   144
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   145
     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
   146
     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
   147
    "
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   148
! !
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   149
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   150
!CharacterArray methodsFor:'printing & storing'!
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   151
2260
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   152
printf:args on:outStream
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   153
    "Format and print the receiver on <outStream> with <args>
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   154
     formatted in C style, as specified in the Unix C-language manual page for printf(3).
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   155
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   156
     For copyright information, see goodies/String-printf_scanf.chg"
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   157
2260
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   158
    |argStream inStream char|
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   159
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   160
    argStream := ReadStream on:args.
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   161
    inStream := ReadStream on:self.
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   162
    [ inStream atEnd ] whileFalse:[
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   163
	(char := inStream next) == $% ifFalse:[
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   164
	    outStream nextPut:char
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   165
	] ifTrue:[
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   166
	    self
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   167
		printf_printArgFrom:inStream
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   168
		to:outStream
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   169
		withData:argStream
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   170
	]
2260
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   171
    ]
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   172
! !
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   173
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   174
!CharacterArray methodsFor:'printing & storing'!
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   175
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   176
printfWith:arg1
2295
27e3885efddd comment/format in:6 methods
Claus Gittinger <cg@exept.de>
parents: 2288
diff changeset
   177
    "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
   178
     as specified in the Unix C-language manual page for printf(3).
27e3885efddd comment/format in:6 methods
Claus Gittinger <cg@exept.de>
parents: 2288
diff changeset
   179
     Return the resulting string."
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   180
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   181
    ^ self printf:(Array with:arg1)
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   182
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   183
    "
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   184
     Transcript showCR:('%05x' printfWith:123)
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   185
    "
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   186
! !
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   187
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   188
!CharacterArray methodsFor:'printing & storing'!
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   189
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   190
printfWith:arg1 with:arg2
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   191
    "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
   192
     as specified in the Unix C-language manual page for printf(3).
27e3885efddd comment/format in:6 methods
Claus Gittinger <cg@exept.de>
parents: 2288
diff changeset
   193
     Return the resulting string."
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   194
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   195
    ^ self printf:(Array with:arg1 with:arg2)
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   196
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   197
    "
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   198
     Transcript showCR:('%d %05x' printfWith:123 with:234)
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   199
    "
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   200
! !
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   201
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   202
!CharacterArray methodsFor:'printing & storing'!
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   203
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   204
printfWith:arg1 with:arg2 with:arg3
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   205
    "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
   206
     as specified in the Unix C-language manual page for printf(3).
27e3885efddd comment/format in:6 methods
Claus Gittinger <cg@exept.de>
parents: 2288
diff changeset
   207
     Return the resulting string."
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   208
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   209
    ^ self printf:(Array with:arg1 with:arg2 with:arg3)
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   210
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   211
    "
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   212
     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
   213
    "
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   214
! !
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   215
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   216
!CharacterArray methodsFor:'printing & storing'!
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   217
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   218
printfWith:arg1 with:arg2 with:arg3 with:arg4
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   219
    "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
   220
     as specified in the Unix C-language manual page for printf(3).
27e3885efddd comment/format in:6 methods
Claus Gittinger <cg@exept.de>
parents: 2288
diff changeset
   221
     Return the resulting string."
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   222
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   223
    ^ self printf:(Array with:arg1 with:arg2 with:arg3 with:arg4)
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   224
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   225
    "
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   226
     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
   227
    "
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   228
! !
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   229
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   230
!CharacterArray methodsFor:'printing & storing'!
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   231
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   232
printf_formatArgCount
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   233
    "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
   234
     as a printf/scanf format control string.
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   235
     For copyright information, see goodies/String-printf_scanf.chg"
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   236
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   237
    |nonConsecutive count|
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   238
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   239
    nonConsecutive := true.
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   240
    count := 0.
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   241
    self do:[:c |
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   242
	c == $% ifTrue:[
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   243
	    nonConsecutive ifTrue:[
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   244
		count := count + 1.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   245
		nonConsecutive := false
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   246
	    ] ifFalse:[
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   247
		count := count - 1.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   248
		nonConsecutive := true
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   249
	    ]
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   250
	] ifFalse:[
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   251
	    nonConsecutive := true
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   252
	]
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   253
    ].
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   254
    ^ count
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   255
! !
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   256
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   257
!CharacterArray methodsFor:'printing & storing'!
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   258
2260
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   259
printf_printOn:outStream withData:args
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   260
    <resource: #obsolete>
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   261
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   262
    "Format and print the receiver on <outStream> with <args>
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   263
     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
   264
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   265
     For copyright information, see goodies/String-printf_scanf.chg"
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   266
2260
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   267
    self obsoleteMethodWarning:'use printf:on:'.
fd7e5634d0d0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   268
    self printf:args on:outStream
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   269
! !
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   270
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   271
!CharacterArray methodsFor:'converting'!
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   272
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   273
scanf:dataStream
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   274
    "Return a Collection of objects found in the Character Stream
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   275
     <dataStream> as interpreted according to the receiver.
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   276
     The receiver is assumed to be a conversion control string as
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   277
     specified in the Unix C-language manual page for scanf(3).
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   278
     For copyright information, see goodies/String-printf_scanf.chg"
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   279
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   280
    |results format char|
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   281
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   282
    results := OrderedCollection new.
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   283
    format := ReadStream on:self.
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   284
    [ format atEnd ] whileFalse:[
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   285
	char := format next.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   286
	(char == Character space or:[ char == Character tab ]) ifTrue:[
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   287
	    dataStream skipSeparators.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   288
	    format skipSeparators
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   289
	].
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   290
	char == $% ifTrue:[
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   291
	    self
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   292
		scanf_scanArgFrom:dataStream
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   293
		to:results
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   294
		format:format
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   295
	] ifFalse:[
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   296
	    dataStream peekFor:char
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   297
	]
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   298
    ].
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   299
    ^ results
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   300
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   301
    "
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   302
     '%d %x' scanf:(ReadStream on:'1234 ff00')
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   303
    "
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   304
! !
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   305
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   306
!CharacterArray methodsFor:'private'!
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   307
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   308
scanf_scanArgFrom:dataStream to:collection format:format
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   309
    "Add to <collection> an object who's representation is found
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   310
     in <dataStream> interpreted according to the conversion
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   311
     control string in the Stream <format>.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   312
     <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
   313
     string is assumed available.
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   314
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   315
     Return when the conversion control string is consumed.  Leave
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   316
     <format> pointing past the last character in the conversion
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   317
     control string, leave <dataStream> pointing past any width
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   318
     specified in <format>, or at the first character that doesn't
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   319
     make sense for the <format>.
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   320
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   321
     For copyright information, see goodies/String-printf_scanf.chg"
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   322
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   323
    |final width char pos data scanset exclusive return last|
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   324
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   325
    final := [:retval |
2679
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   326
            collection add:retval.
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   327
            data == dataStream ifFalse:[
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   328
                dataStream position:dataStream position + data position
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   329
            ].
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   330
            ^ self
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   331
        ].
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   332
    width := 0.
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   333
    char := format peek.
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   334
    char == $% ifTrue:[
2679
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   335
        ^ dataStream peekFor:char
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   336
    ].
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   337
    char == $* ifTrue:[
2679
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   338
        format next.
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   339
        char := format peek.
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   340
        final := [:retval |
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   341
                data == dataStream ifFalse:[
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   342
                    dataStream position:dataStream position + data position
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   343
                ].
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   344
                ^ self
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   345
            ]
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   346
    ].
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   347
    char isDigit ifTrue:[
2679
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   348
        width := Integer readFrom:format.
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   349
        char := format peek
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   350
    ].
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   351
    ('slhduoxfeg' includes:char) ifTrue:[
2679
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   352
        dataStream skipSeparators
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   353
    ].
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   354
    width = 0 ifTrue:[
2679
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   355
        data := dataStream
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   356
    ] ifFalse:[
2679
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   357
        pos := dataStream position.
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   358
        data := ReadStream on:(dataStream next:width).
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   359
        dataStream position:pos
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   360
    ].
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   361
    char == $s ifTrue:[
2679
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   362
        final value:(data upToSeparator)
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   363
    ].
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   364
    char == $c ifTrue:[
2679
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   365
        width = 0 ifTrue:[
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   366
            final value:(String with:data next)
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   367
        ] ifFalse:[
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   368
            final value:data contents
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   369
        ]
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   370
    ].
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   371
    char == $[ "What a mess!!" ifTrue:[
2679
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   372
        return := WriteStream on:(String new:8).
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   373
        scanset := IdentitySet new.
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   374
        format next.
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   375
        width = 0 ifTrue:[
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   376
            width := SmallInteger maxVal
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   377
        ].
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   378
        exclusive := format peekFor:$^.
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   379
        [
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   380
            last := char.
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   381
            char := format next.
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   382
            char == $]
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   383
        ] whileFalse:[
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   384
            char == $- ifFalse:[
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   385
                scanset add:char
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   386
            ] ifTrue:[
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   387
                last to:format next do:[:c |
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   388
                    scanset add:c
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   389
                ]
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   390
            ]
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   391
        ].
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   392
        [
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   393
            data atEnd not and:[ (scanset includes:data peek) xor:exclusive ]
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   394
        ] whileTrue:[ return nextPut:data next ].
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   395
        final value:return contents
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   396
    ].
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   397
    ('lh' includes:char) ifTrue:[
2679
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   398
        format next.
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   399
        char := format peek
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   400
    ].
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   401
    ('DUdu' includes:char) ifTrue:[
2679
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   402
        final value:(Integer readFrom:data)
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   403
    ].
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   404
    ('FEGfeg' includes:char) ifTrue:[
2679
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   405
        final value:(Float readFrom:data)
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   406
    ].
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   407
    ('b' includes:char) ifTrue:[
2679
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   408
        final value:(Integer readFrom:data radix:2)
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   409
    ].
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   410
    ('Oo' includes:char) ifTrue:[
2679
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   411
        final value:(Integer readFrom:data radix:8)
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   412
    ].
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   413
    ('Xx' includes:char) ifTrue:[
2679
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   414
        final value:(Integer readFrom:data radix:16)
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   415
    ]
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   416
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   417
    "
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   418
     '%d %x' sscanf:'1234 ff00'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   419
     '%d %x %b' sscanf:'1234 ff00 1001'
2256
10583ebc7f64 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2241
diff changeset
   420
    "
2679
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   421
cfab54d30fcc changed: #scanArgFrom:to:format:
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
   422
    "Modified: / 29-11-2011 / 11:55:39 / cg"
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   423
! !
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   424
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   425
!CharacterArray methodsFor:'converting'!
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   426
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   427
sscanf:string
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   428
    "Return a Collection of objects found in <string> as
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   429
     interpreted according to the receiver.
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   430
     The receiver is assumed to be a conversion control string as
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   431
     specified in the Unix C-language manual page for scanf(3).
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   432
     For copyright information, see goodies/String-printf_scanf.chg"
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   433
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   434
    ^ self scanf:(ReadStream on:string)
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   435
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   436
    "
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   437
     '%d %x' sscanf:'1234 ff00'
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   438
     '%d %x %b' sscanf:'1234 ff00 1001'
2241
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   439
    "
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   440
! !
81f10d4ad4bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
   441
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   442
!Float methodsFor:'private'!
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   443
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   444
absDecimalPrintOn:aStream digits:digits
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   445
    "Place a string representation of the receiver's abs value
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   446
     on <aStream> using <digits> significant digits, using decimal notation.
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   447
     This is a helper for printf."
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   448
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   449
    |exp x fuzz i|
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   450
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   451
    "x is myself normalized to (1.0, 10.0), exp is my exponent"
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   452
    exp := self abs < 1.0
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   453
		ifTrue:[ (10.0 / self abs) log floor negated ]
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   454
		ifFalse:[ self abs log floor ].
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   455
    x := self abs / (10.0 raisedTo:exp).
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   456
    fuzz := 10.0 raisedTo:1 - digits.
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   457
     "round the last digit to be printed"
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   458
    x := 0.5 * fuzz + x.
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   459
    x >= 10.0 "check if rounding has unnormalized x" ifTrue:[
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   460
	x := x / 10.0.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   461
	exp := exp + 1
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   462
    ].
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   463
    exp < 0 ifTrue:[
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   464
	1 to:1 - exp do:[:j |
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   465
	    aStream nextPut:('0.000000000000' at:j)
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   466
	]
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   467
    ].
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   468
    [ x >= fuzz ] "use fuzz to track significance" whileTrue:[
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   469
	i := x truncated.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   470
	aStream nextPut:(48 + i) asCharacter.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   471
	x := (x - i) * 10.0.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   472
	fuzz := fuzz * 10.0.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   473
	exp := exp - 1.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   474
	exp = -1 ifTrue:[
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   475
	    aStream nextPut:$.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   476
	]
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   477
    ].
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   478
    [ exp >= -1 ] whileTrue:[
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   479
	aStream nextPut:$0.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   480
	exp := exp - 1.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   481
	exp = -1 ifTrue:[
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   482
	    aStream nextPut:$.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   483
	]
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   484
    ]
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   485
! !
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   486
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   487
!Float methodsFor:'private'!
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   488
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   489
absPrintOn:aStream digits:digits
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   490
    "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
   491
     <digits> significant digits.
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   492
     This is a helper for printf."
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   493
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   494
    (self < 1.0e6 and:[ self > 1.0e-4 ]) ifTrue:[
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   495
	self absDecimalPrintOn:aStream digits:digits
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   496
    ] ifFalse:[
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   497
	self absScientificPrintOn:aStream digits:digits
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   498
    ]
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   499
! !
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   500
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   501
!Float methodsFor:'private'!
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   502
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   503
absScientificPrintOn:aStream digits:digits
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   504
    "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
   505
     digits, using scientific notation.
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   506
     This is a helper for printf."
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   507
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   508
    |exp fuzz x q i|
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   509
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   510
    "x is myself normalized to [1.0, 10.0), exp is my exponent"
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   511
    exp := self abs < 1.0
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   512
	    ifTrue:[ (10.0 / self abs) log floor negated ]
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   513
	    ifFalse:[ self abs log floor ].
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   514
    x := self abs / (10.0 raisedTo:exp).
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   515
    fuzz := 10.0 raisedTo:1 - digits.
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   516
     "round the last digit to be printed"
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   517
    x := 0.5 * fuzz + x.
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   518
    x >= 10.0 "check if rounding has unnormalized x" ifTrue:[
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   519
	x := x / 10.0.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   520
	exp := exp + 1
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   521
    ].
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   522
    q := exp.
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   523
    exp := 0.
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   524
    [ x >= fuzz ] "use fuzz to track significance" whileTrue:[
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   525
	i := x truncated.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   526
	aStream nextPut:(48 + i) asCharacter.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   527
	x := (x - i) * 10.0.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   528
	fuzz := fuzz * 10.0.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   529
	exp := exp - 1.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   530
	exp = -1 ifTrue:[
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   531
	    aStream nextPut:$.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   532
	]
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   533
    ].
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   534
    [ exp >= -1 ] whileTrue:[
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   535
	aStream nextPut:$0.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   536
	exp := exp - 1.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   537
	exp = -1 ifTrue:[
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   538
	    aStream nextPut:$.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   539
	]
2237
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   540
    ].
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   541
    aStream nextPut:$e.
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   542
    q printOn:aStream
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   543
! !
3b041af2bf04 printf / scanf added
Claus Gittinger <cg@exept.de>
parents: 2199
diff changeset
   544
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   545
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   546
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   547
addInterest:anInterest
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   548
    "install an interest forwarder.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   549
     Here, we use the nonWeakDependencies."
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   550
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   551
    self addNonWeakDependent:anInterest
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   552
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   553
    "Created: 14.10.1996 / 22:27:34 / stefan"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   554
! !
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   555
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   556
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   557
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   558
expressInterestIn:aspect for:anObject sendBack:aSelector
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   559
    "arrange for aSelector to be sent to anObject whenever the receiver
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   560
     changes aspect."
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   561
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   562
    "/ for now, use an interestConverter, which is somewhat less efficient.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   563
    "/ In the future, a more intelligent DependencyCollection class is planned for
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   564
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   565
    self addInterest:(InterestConverter
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   566
			    destination:anObject
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   567
			    selector:aSelector
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   568
			    aspect:aspect)
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   569
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   570
    "
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   571
     |p b|
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   572
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   573
     b := [Transcript showCR:' -> the point changed'].
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   574
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   575
     p := Point new.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   576
     Transcript showCR:'interest in #foo:'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   577
     p expressInterestIn:#foo for:b sendBack:#value.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   578
     p x:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   579
     Transcript showCR:'now changing #bar ... (expect no notification)'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   580
     p changed:#bar.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   581
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   582
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   583
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   584
     Transcript showCR:'now changing #foo ... (expect notification)'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   585
     p changed:#foo.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   586
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   587
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   588
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   589
     Transcript showCR:'no more interest in #foo:'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   590
     p retractInterestIn:#foo for:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   591
     Transcript showCR:'now changing #foo ... (expect no notification)'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   592
     p changed:#foo.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   593
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   594
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   595
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   596
     Transcript showCR:'interest in #bar now:'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   597
     p expressInterestIn:#bar for:b sendBack:#value.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   598
     Transcript showCR:'now changing #foo ... (expect no notification)'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   599
     p changed:#foo.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   600
     Transcript showCR:'now changing #bar ... (expect notification)'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   601
     p changed:#bar.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   602
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   603
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   604
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   605
     Transcript showCR:'interest in #foo now:'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   606
     p expressInterestIn:#foo for:b sendBack:#value.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   607
     Transcript showCR:'now changing #foo ... (expect notification)'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   608
     p changed:#foo.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   609
     Transcript showCR:'now changing #bar ... (expect notification)'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   610
     p changed:#bar.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   611
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   612
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   613
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   614
     Transcript showCR:'no more interests:'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   615
     p retractInterestsFor:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   616
     Transcript showCR:'now changing #foo ... (expect no notification)'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   617
     p changed:#foo.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   618
     Transcript showCR:'now changing #bar...  (expect no notification)'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   619
     p changed:#bar.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   620
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   621
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   622
     p release.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   623
    "
1668
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
   624
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   625
    "Created: 19.4.1996 / 10:26:22 / cg"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   626
    "Modified: 19.4.1996 / 12:34:08 / cg"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   627
    "Modified: 14.10.1996 / 22:28:20 / stefan"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   628
! !
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   629
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   630
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   631
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   632
interests
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   633
    "return a Collection of interests - empty if there is none.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   634
     Here, we use the nonWeakDependents for interests."
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   635
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   636
    ^ self nonWeakDependents
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   637
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   638
    "Created: / 14.10.1996 / 22:20:51 / stefan"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   639
    "Modified: / 30.1.1998 / 14:07:35 / cg"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   640
! !
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   641
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   642
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   643
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   644
interestsFor:someOne
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   645
    "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
   646
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   647
    |coll deps|
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   648
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   649
    deps := self interests.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   650
    deps size == 0 ifTrue:[^ #()].
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   651
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   652
    coll := IdentitySet new.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   653
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   654
    deps do:[:dep |
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   655
	(dep isInterestConverter) ifTrue:[
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   656
	    dep destination == someOne ifTrue:[
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   657
		coll add:dep.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   658
	    ]
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   659
	]
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   660
    ].
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   661
    ^ coll
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   662
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   663
    "Created: / 30.1.1998 / 14:02:26 / cg"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   664
    "Modified: / 30.1.1998 / 14:08:24 / cg"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   665
! !
1668
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
   666
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   667
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   668
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   669
onChangeEvaluate:aBlock
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   670
    "arrange for aBlock to be evaluated whenever the receiver changes."
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   671
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
   672
    |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
   673
329461c02e84 allow for 0,1,2 arguments (update params) to be passed to interest blocks.
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   674
    na := aBlock numArgs.
329461c02e84 allow for 0,1,2 arguments (update params) to be passed to interest blocks.
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   675
    na == 0 ifTrue:[
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   676
	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
   677
    ] ifFalse:[
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   678
	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
   679
    ].
329461c02e84 allow for 0,1,2 arguments (update params) to be passed to interest blocks.
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   680
    ^ self onChangeSend:selector to:aBlock
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   681
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   682
    "
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   683
     |p b|
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   684
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   685
     b := [Transcript showCR:' -> the point changed'].
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   686
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   687
     p := Point new.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   688
     Transcript showCR:'interest in #foo:'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   689
     p onChangeEvaluate:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   690
     p x:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   691
     Transcript showCR:'now changing #bar ... (expect no notification)'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   692
     p changed:#bar.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   693
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   694
     p retractInterests.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   695
     p changed:#bar.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   696
    "
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   697
! !
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   698
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   699
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   700
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   701
onChangeSend:aSelector to:anObject
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   702
    "arrange for aSelector to be sent to anObject whenever the receiver
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   703
     changes."
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   704
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   705
    "/ for now, use an interestConverter, which is somewhat less efficient.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   706
    "/ In the future, a more intelligent DependencyCollection class is planned for
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   707
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   708
    ((self interests ? #())
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   709
	contains:[:anInterest |
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   710
	    (anInterest isInterestConverter)
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   711
	    and:[ anInterest destination == anObject
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   712
	    and:[ anInterest selector == aSelector]]
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   713
	])
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   714
	    ifTrue:[^ self].
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   715
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   716
    self addInterest:(InterestConverter
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   717
			  destination:anObject
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   718
			  selector:aSelector)
1668
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
   719
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
   720
    "
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   721
     |p b|
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   722
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   723
     b := [Transcript showCR:'the point changed'].
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   724
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   725
     p := Point new.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   726
     p onChangeSend:#value to:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   727
     p x:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   728
     Transcript showCR:'now changing'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   729
     p changed.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   730
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   731
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   732
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   733
     Transcript showCR:'now changing'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   734
     p changed.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   735
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   736
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   737
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   738
     Transcript showCR:'no more interest'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   739
     p retractInterestsFor:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   740
     Transcript showCR:'now changing again'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   741
     p changed.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   742
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   743
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   744
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   745
     Transcript showCR:'interest again'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   746
     p onChangeSend:#value to:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   747
     Transcript showCR:'now changing again'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   748
     p changed.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   749
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   750
    "
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   751
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   752
    "Created: 19.4.1996 / 10:26:38 / cg"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   753
    "Modified: 19.4.1996 / 12:34:26 / cg"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   754
    "Modified: 14.10.1996 / 22:28:27 / stefan"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   755
! !
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   756
2897
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   757
!Object methodsFor:'dependents-st/v event simulation'!
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   758
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   759
removeActionsForEvent:eventSymbol
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   760
    "remove ST/V-style event triggers."
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   761
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   762
    self retractInterestsIn:eventSymbol
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   763
! !
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   764
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   765
!Object methodsFor:'dependents-st/v event simulation'!
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   766
2903
80af520506e8 class: SSL::SSLTests
Claus Gittinger <cg@exept.de>
parents: 2901
diff changeset
   767
removeActionsWithReceiver:aReceiver
80af520506e8 class: SSL::SSLTests
Claus Gittinger <cg@exept.de>
parents: 2901
diff changeset
   768
    "remove ST/V-style event triggers."
80af520506e8 class: SSL::SSLTests
Claus Gittinger <cg@exept.de>
parents: 2901
diff changeset
   769
80af520506e8 class: SSL::SSLTests
Claus Gittinger <cg@exept.de>
parents: 2901
diff changeset
   770
    self retractInterestsFor:aReceiver
80af520506e8 class: SSL::SSLTests
Claus Gittinger <cg@exept.de>
parents: 2901
diff changeset
   771
! !
80af520506e8 class: SSL::SSLTests
Claus Gittinger <cg@exept.de>
parents: 2901
diff changeset
   772
80af520506e8 class: SSL::SSLTests
Claus Gittinger <cg@exept.de>
parents: 2901
diff changeset
   773
!Object methodsFor:'dependents-st/v event simulation'!
80af520506e8 class: SSL::SSLTests
Claus Gittinger <cg@exept.de>
parents: 2901
diff changeset
   774
2897
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   775
removeAllActionsWithReceiver:anObject
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   776
    "remove ST/V-style event triggers."
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   777
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   778
    self retractInterestsFor:anObject
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   779
! !
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   780
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   781
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   782
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   783
removeInterest:anInterest
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   784
    "remove an interest forwarder.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   785
     Here, we use the nonWeakDependencies."
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   786
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   787
    self removeNonWeakDependent:anInterest
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   788
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   789
    "Created: 14.10.1996 / 22:21:59 / stefan"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   790
! !
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   791
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   792
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   793
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   794
retractInterestIn:aspect for:someOne
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   795
    "remove the interest of someOne in the receiver changing aspect
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   796
     (as installed with #expressInterestIn:for:sendBack:)."
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   797
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   798
    "/ for now, remove the interestConverter.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   799
    "/ In the future, a more intelligent DependencyCollection class is planned for
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   800
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   801
    self retractInterestsForWhich:[:i | (i aspect == aspect) and:[i destination == someOne]]
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   802
1668
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
   803
    "
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   804
     |p b|
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   805
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   806
     b := [Transcript showCR:'the point changed'].
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   807
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   808
     p := Point new.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   809
     Transcript showCR:'interest in #foo'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   810
     p expressInterestIn:#foo for:b sendBack:#value.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   811
     p x:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   812
     Transcript showCR:'now changing #bar'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   813
     p changed:#bar.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   814
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   815
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   816
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   817
     Transcript showCR:'now changing #foo'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   818
     p changed:#foo.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   819
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   820
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   821
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   822
     Transcript showCR:'no more interest in #foo'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   823
     p retractInterestIn:#foo for:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   824
     Transcript showCR:'now changing #foo'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   825
     p changed:#foo.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   826
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   827
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   828
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   829
     Transcript showCR:'interest in #bar now'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   830
     p expressInterestIn:#bar for:b sendBack:#value.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   831
     Transcript showCR:'now changing #foo'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   832
     p changed:#foo.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   833
     Transcript showCR:'now changing #bar'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   834
     p changed:#bar.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   835
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   836
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   837
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   838
     Transcript showCR:'interest in #foo now'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   839
     p expressInterestIn:#foo for:b sendBack:#value.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   840
     Transcript showCR:'now changing #foo'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   841
     p changed:#foo.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   842
     Transcript showCR:'now changing #bar'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   843
     p changed:#bar.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   844
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   845
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   846
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   847
     Transcript showCR:'no more interests'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   848
     p retractInterestsFor:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   849
     Transcript showCR:'now changing #foo'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   850
     p changed:#foo.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   851
     Transcript showCR:'now changing #bar'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   852
     p changed:#bar.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   853
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   854
    "
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   855
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   856
    "Created: / 19.4.1996 / 10:27:11 / cg"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   857
    "Modified: / 14.10.1996 / 22:21:19 / stefan"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   858
    "Modified: / 30.1.1998 / 14:05:34 / cg"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   859
! !
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   860
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   861
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   862
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   863
retractInterests
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   864
    "remove all interests in the receiver changing aspect
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   865
     (as installed with #expressInterestIn:for:sendBack:)."
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   866
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   867
    "/ for now, remove the interestConverter.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   868
    "/ In the future, a more intelligent DependencyCollection class is planned for
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   869
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   870
    self retractInterestsForWhich:[:i | true ]
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   871
! !
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   872
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   873
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   874
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   875
retractInterestsFor:someOne
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   876
    "remove the interest of someOne in the receiver
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   877
     (as installed with #onChangeSend:to:)."
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   878
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   879
    "/ for now, remove the interestConverter.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   880
    "/ In the future, a more intelligent DependencyCollection class is planned for
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   881
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   882
    self retractInterestsForWhich:[:i | i destination == someOne ]
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   883
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   884
    "
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   885
     |p b|
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   886
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   887
     b := [Transcript showCR:'the point changed'].
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   888
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   889
     p := Point new.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   890
     p onChangeSend:#value to:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   891
     p x:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   892
     Transcript showCR:'now changing'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   893
     p changed.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   894
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   895
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   896
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   897
     Transcript showCR:'now changing'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   898
     p changed.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   899
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   900
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   901
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   902
     Transcript showCR:'no more interest'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   903
     p retractInterestsFor:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   904
     Transcript showCR:'now changing again'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   905
     p changed.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   906
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   907
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   908
     Delay waitForSeconds:1.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   909
     Transcript showCR:'interest again'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   910
     p onChangeSend:#value to:b.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   911
     Transcript showCR:'now changing again'.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   912
     p changed.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   913
     Transcript cr.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   914
    "
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   915
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   916
    "Created: / 19.4.1996 / 10:23:46 / cg"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   917
    "Modified: / 14.10.1996 / 22:21:25 / stefan"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   918
    "Modified: / 30.1.1998 / 14:04:52 / cg"
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   919
! !
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   920
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   921
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   922
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   923
retractInterestsForWhich:aBlock
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   924
    "remove all interests in the receiver changing aspect
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   925
     (as installed with #expressInterestIn:for:sendBack:)."
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   926
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   927
    "/ for now, remove the interestConverter.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   928
    "/ In the future, a more intelligent DependencyCollection class is planned for
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   929
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   930
    |deps coll|
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   931
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   932
    deps := self interests.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   933
    deps size ~~ 0 ifTrue:[
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   934
	"/ cannot removeDependent within the loop - the interests collection rehashes
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   935
	coll := OrderedCollection new.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   936
	deps do:[:dep |
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   937
	    dep isInterestConverter ifTrue:[
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   938
		(aBlock value:dep) ifTrue:[coll add:dep].
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   939
	    ]
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   940
	].
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   941
	coll do:[:dep |
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   942
	    self removeInterest:dep.
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
   943
	].
1759
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   944
    ].
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   945
! !
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   946
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   947
!Object methodsFor:'dependents-interests'!
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   948
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   949
retractInterestsIn:aspect
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   950
    "remove all interests in the receiver changing aspect
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   951
     (as installed with #expressInterestIn:for:sendBack:)."
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   952
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   953
    "/ for now, remove the interestConverter.
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   954
    "/ In the future, a more intelligent DependencyCollection class is planned for
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   955
78e481899a63 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1668
diff changeset
   956
    self retractInterestsForWhich:[:i | i aspect == aspect ]
1668
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
   957
! !
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
   958
2901
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
   959
!Object methodsFor:'Compatibility-Dolphin'!
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
   960
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
   961
trigger:anAspect
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
   962
    self changed:anAspect
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
   963
! !
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
   964
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
   965
!Object methodsFor:'Compatibility-Dolphin'!
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
   966
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
   967
trigger:anAspect with:anArgument
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
   968
    self changed:anAspect with:anArgument
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
   969
! !
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
   970
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
   971
!Object methodsFor:'dependents-st/v event simulation'!
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
   972
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
   973
triggerEvent:aSymbol
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
   974
    self changed:aSymbol
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
   975
! !
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
   976
1668
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
   977
!Object methodsFor:'dependents-st/v event simulation'!
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
   978
2897
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   979
triggerEvent:eventSymbol with:aParameter
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   980
    "perform ST/V-style event triggering."
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   981
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   982
    self changed:eventSymbol with:(Array with:aParameter).
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   983
! !
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   984
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   985
!Object methodsFor:'dependents-st/v event simulation'!
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   986
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   987
triggerEvent:eventSymbol withArguments:parameters
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   988
    "perform ST/V-style event triggering."
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   989
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   990
    self changed:eventSymbol with:parameters.
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   991
! !
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   992
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   993
!Object methodsFor:'dependents-st/v event simulation'!
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
   994
1668
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
   995
when:eventSymbol send:selector to:anObject
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
   996
    "install an ST/V-style interest forwarder.
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
   997
     Here, we use the nonWeakDependencies."
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
   998
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
   999
    self addInterest:(InterestConverterWithParameters
2897
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1000
                            destination:anObject
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1001
                            selector:selector
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1002
                            aspect:eventSymbol).
1668
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1003
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1004
    "
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1005
     |p b|
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1006
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1007
     b := [Transcript showCR:'the point changed'].
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1008
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1009
     p := Point new.
2897
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1010
     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
  1011
     Transcript showCR:'now changing'.
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1012
     p triggerEvent:#foo:bar: withArguments:#('fooArg' 'barArg').
2897
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1013
     p removeActionsForEvent:#foo:bar:.
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1014
    "
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1015
! !
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1016
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1017
!Object methodsFor:'dependents-st/v event simulation'!
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1018
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1019
when:eventSymbol send:selector to:anObject with:aParameter
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1020
    "install an ST/V-style interest forwarder.
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1021
     Here, we use the nonWeakDependencies."
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1022
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1023
    self addInterest:((InterestConverterWithParameters
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1024
                            destination:anObject
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1025
                            selector:selector
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1026
                            aspect:eventSymbol) 
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1027
                        defaultParameters:(Array with:aParameter)).
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1028
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1029
    "
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1030
     |p b|
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1031
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1032
     b := [Transcript showCR:'the point changed'].
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1033
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1034
     p := Point new.
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1035
     p 
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1036
        when:#foo: 
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1037
        send:#value: 
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1038
        to:[:a | Transcript show:'foo: '; showCR:a]
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1039
        with:123.
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1040
     Transcript showCR:'now changing'.
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1041
     p triggerEvent:#foo:.
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1042
     p triggerEvent:#foo: with:987.
3060cf059978 more trigger event simulation stuff
Claus Gittinger <cg@exept.de>
parents: 2679
diff changeset
  1043
     p removeActionsForEvent:#foo:.
1668
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1044
    "
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1045
! !
96c1701345c5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1667
diff changeset
  1046
2901
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1047
!Object methodsFor:'Compatibility-Dolphin'!
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1048
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1049
when:anAspect sendTo:anObject
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1050
    self expressInterestIn:anAspect for:anObject sendBack:anAspect
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1051
! !
31bfe7c3474d move methods to extensions
Claus Gittinger <cg@exept.de>
parents: 2897
diff changeset
  1052
2364
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1053
!Stream methodsFor:'stacked computing streams'!
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1054
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1055
collecting:aBlock
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1056
    "return a stacked computing stream, which reads elements from the receiver,
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1057
     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
  1058
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1059
    ^ CollectingReadStream on:self collecting:aBlock
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1060
! !
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1061
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1062
!Stream methodsFor:'stacked computing streams'!
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1063
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1064
selecting:aBlock
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1065
    "return a stacked computing stream, which reads elements from the receiver,
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1066
     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
  1067
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1068
    ^ SelectingReadStream on:self selecting:aBlock
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1069
! !
2b7b611e565c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2337
diff changeset
  1070
2303
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
  1071
!stx_libbasic2 class methodsFor:'documentation'!
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
  1072
74c77b8cf160 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2295
diff changeset
  1073
extensionsVersion_CVS
3005
36ada1348967 asciiValue->codePoint
Claus Gittinger <cg@exept.de>
parents: 2903
diff changeset
  1074
    ^ '$Header: /cvs/stx/stx/libbasic2/extensions.st,v 1.24 2013-06-16 08:40:06 cg Exp $'
36ada1348967 asciiValue->codePoint
Claus Gittinger <cg@exept.de>
parents: 2903
diff changeset
  1075
! !