MethodFinder.st
author Claus Gittinger <cg@exept.de>
Thu, 22 Mar 2007 11:28:33 +0100
changeset 1961 bf11d495311b
parent 1928 49fdf6083f86
child 1983 9d849f1f9a94
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
     1
"{ Package: 'stx:libbasic3' }"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
     2
40d9ddd1f510 initial checkin
james
parents:
diff changeset
     3
Object subclass:#MethodFinder
1106
50a16e11b73a more st/x messages
Claus Gittinger <cg@exept.de>
parents: 1104
diff changeset
     4
	instanceVariableNames:'data answers selector argMap thisData mapStage mapList
50a16e11b73a more st/x messages
Claus Gittinger <cg@exept.de>
parents: 1104
diff changeset
     5
		expressions cachedClass cachedArgNum cachedSelectorLists'
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
     6
	classVariableNames:'AddAndRemove Approved Blocks BlocksOptional Dangerous'
1106
50a16e11b73a more st/x messages
Claus Gittinger <cg@exept.de>
parents: 1104
diff changeset
     7
	poolDictionaries:''
1114
f023be3e8cc0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1109
diff changeset
     8
	category:'Interface-MethodFinder'
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
     9
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    10
1100
0502179eabd1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1092
diff changeset
    11
!MethodFinder class methodsFor:'documentation'!
0502179eabd1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1092
diff changeset
    12
0502179eabd1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1092
diff changeset
    13
documentation
0502179eabd1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1092
diff changeset
    14
"
0502179eabd1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1092
diff changeset
    15
  [author:]
0502179eabd1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1092
diff changeset
    16
    ported from Squeak and GUI enhanced by James Hayes james@exept.de
0502179eabd1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1092
diff changeset
    17
"
0502179eabd1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1092
diff changeset
    18
! !
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    19
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    20
!MethodFinder class methodsFor:'accessing'!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    21
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    22
abortAllSignal
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    23
    "return the value of the static variable 'AbortAllSignal' (automatically generated)"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    24
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    25
    ^ AbortAllSignal
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    26
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    27
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    28
abortAllSignal:something
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    29
    "set the value of the static variable 'AbortAllSignal' (automatically generated)"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    30
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    31
    AbortAllSignal := something.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    32
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    33
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    34
addAndRemove
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    35
    "return the value of the static variable 'AddAndRemove' (automatically generated)"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    36
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    37
    ^ AddAndRemove
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    38
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    39
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    40
addAndRemove:something
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    41
    "set the value of the static variable 'AddAndRemove' (automatically generated)"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    42
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    43
    AddAndRemove := something.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    44
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    45
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    46
approved
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    47
    "return the value of the static variable 'Approved' (automatically generated)"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    48
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    49
    ^ Approved
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    50
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    51
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    52
approved:something
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    53
    "set the value of the static variable 'Approved' (automatically generated)"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    54
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    55
    Approved := something.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    56
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    57
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    58
blocks
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    59
    "return the value of the static variable 'Blocks' (automatically generated)"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    60
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    61
    ^ Blocks
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    62
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    63
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    64
blocks:something
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    65
    "set the value of the static variable 'Blocks' (automatically generated)"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    66
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    67
    Blocks := something.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    68
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    69
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    70
dangerous
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    71
    "return the value of the static variable 'Dangerous' (automatically generated)"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    72
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    73
    ^ Dangerous
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    74
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    75
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    76
dangerous:something
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    77
    "set the value of the static variable 'Dangerous' (automatically generated)"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    78
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    79
    Dangerous := something.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    80
! !
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    81
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    82
!MethodFinder class methodsFor:'as yet unclassified'!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    83
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    84
methodFor: dataAndAnswers
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
    85
        "Return a Squeak expression that computes these answers.  (This method is called by the comment in the bottom pane of a MethodFinder.  Do not delete this method.)"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    86
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
    87
        | resultOC selFinder resultString |
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    88
   
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
    89
        resultOC _ (self new) load: dataAndAnswers; findMessage.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
    90
        resultString _ String streamContents: [:strm |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
    91
                resultOC do: [:exp | strm nextPut: $(; nextPutAll: exp; nextPut: $); space]].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
    92
        Smalltalk isMorphic ifTrue: [
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
    93
                selFinder _ (Display bestGuessOfCurrentWorld 
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
    94
                                submorphThat: [:mm | mm class == SystemWindow and: 
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
    95
                                                                        [mm model isKindOf: SelectorBrowser]] 
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
    96
                                ifNone: [^ resultString]) model.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
    97
                selFinder searchResult: resultOC].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
    98
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
    99
        ^ resultString
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   100
! !
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   101
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   102
!MethodFinder methodsFor:'access'!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   103
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   104
answers
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   105
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   106
        ^ answers
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   107
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   108
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   109
data
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   110
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   111
        ^ data
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   112
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   113
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   114
expressions
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   115
        ^ expressions
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   116
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   117
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   118
selectors
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   119
        "Note the inst var does not have an S on the end"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   120
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   121
        ^ selector
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   122
! !
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   123
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   124
!MethodFinder methodsFor:'arg maps'!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   125
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   126
argMap
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   127
        ^ argMap 
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   128
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   129
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   130
makeAllMaps 
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   131
        "Make a giant list of all permutations of the args.  To find the function, we will try these permutations of the input data.  receiver, args."
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   132
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   133
        | ii |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   134
        mapList _ Array new: argMap size factorial.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   135
        ii _ 1.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   136
        argMap permutationsDo: [:perm |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   137
                mapList at: ii put: perm copy.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   138
                ii _ ii + 1].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   139
        mapStage _ 1.   "about to be bumped"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   140
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   141
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   142
mapData 
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   143
        "Force the data through the map (permutation) to create the data to test."
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   144
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   145
        thisData _ data collect: [:realData |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   146
                                        argMap collect: [:ind | realData at: ind]].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   147
                
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   148
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   149
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   150
permuteArgs 
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   151
        "Run through ALL the permutations.  First one was as presented."
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   152
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   153
        data first size <= 1 ifTrue: [^ false]. "no other way"
1928
49fdf6083f86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1491
diff changeset
   154
        mapList isNil ifTrue: [self makeAllMaps].
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   155
        mapStage _ mapStage + 1.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   156
        mapStage > mapList size ifTrue: [^ false].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   157
        argMap _ mapList at: mapStage.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   158
        self mapData.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   159
        ^ true
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   160
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   161
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   162
thisData
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   163
        ^ thisData 
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   164
! !
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   165
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   166
!MethodFinder methodsFor:'find a constant'!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   167
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   168
allNumbers
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   169
        "Return true if all answers and all data are numbers."
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   170
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   171
        answers do: [:aa | aa isNumber ifFalse: [^ false]].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   172
        thisData do: [:vec |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   173
                        vec do: [:nn | nn isNumber ifFalse: [^ false]]].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   174
        ^ true
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   175
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   176
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   177
const
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   178
        | const |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   179
        "See if (^ constant) is the answer"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   180
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   181
        "quick test"
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   182
        ((const _ answers at: 1) closeTo: (answers at: 2)) ifFalse: [^ false].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   183
        3 to: answers size do: [:ii | (const closeTo: (answers at: ii)) ifFalse: [^ false]].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   184
        expressions add: '^ ', const printString.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   185
        selector add: #yourself.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   186
        ^ true
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   187
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   188
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   189
constDiv
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   190
        | const subTest got |
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   191
        "See if (data1 // C) is the answer"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   192
        self halt.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   193
        ^ false.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   194
        const _ ((thisData at: 1) at: 1) // (answers at: 1).  "May not be right!!"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   195
        got _ (subTest _ MethodFinder new copy: self addArg: const) 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   196
                                searchForOne isEmpty not.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   197
        got ifFalse: [^ false]. 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   198
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   199
        "replace data2 with const in expressions"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   200
        subTest expressions do: [:exp |
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   201
                expressions add: (exp copyReplaceAll: 'data2' with: const printString)].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   202
        selector addAll: subTest selectors.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   203
        ^ true
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   204
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   205
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   206
constLessThan
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   207
        | const subTest got minConst maxConst tt |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   208
        "See if (data1 <= C) or (data1 >= C) is the answer"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   209
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   210
        "quick test"
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   211
        ((answers at: 1) class superclass == Boolean) ifFalse: [^ false].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   212
        2 to: answers size do: [:ii | 
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   213
                ((answers at: ii) class superclass == Boolean) ifFalse: [^ false]].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   214
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   215
        minConst _ Float infinity.  maxConst _ minConst negated.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   216
        answers withIndexDo: [:aa :ii |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   217
                aa ifTrue: [tt _ (thisData at: ii) at: 1.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   218
                        minConst _ minConst min: tt.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   219
                        maxConst _ maxConst max: tt]].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   220
        const _ (thisData at: 1) at: 1.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   221
        got _ (subTest _ MethodFinder new copy: self addArg: minConst) 
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   222
                                searchForOne isEmpty not.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   223
        got ifFalse: ["try other extreme for <= >= "
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   224
                got _ (subTest _ MethodFinder new copy: self addArg: maxConst) 
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   225
                                searchForOne isEmpty not]. 
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   226
        got ifFalse: [^ false]. 
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   227
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   228
        "replace data2 with const in expressions"
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   229
        subTest expressions do: [:exp |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   230
                expressions add: (exp copyReplaceAll: 'data2' with: const printString)].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   231
        selector addAll: subTest selectors.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   232
        ^ true
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   233
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   234
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   235
constLinear
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   236
        | const subTest got denom num slope offset |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   237
        "See if (data1 * C1) + C2 is the answer.  In the form  #(C2 C1) polynomialEval: data1 "
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   238
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   239
        denom _ ((thisData at: 2) at: 1) - ((thisData at: 1) at: 1).
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   240
        denom = 0 ifTrue: [^ false].   "will divide by it"
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   241
        num _ (answers at: 2) - (answers at: 1).
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   242
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   243
    slope := (num asFloat / denom) reduce.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   244
    offset := ((answers at: 2) - (((thisData at: 2) at: 1) * slope)) reduce.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   245
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   246
        const _ Array with: offset with: slope.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   247
        got _ (subTest _ MethodFinder new copy: self addArg: const) 
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   248
                                searchForOne isEmpty not.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   249
        got ifFalse: [^ false]. 
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   250
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   251
        "replace data2 with const in expressions"
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   252
        subTest expressions do: [:exp |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   253
                expressions add: (exp copyReplaceAll: 'data2' with: const printString)].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   254
        selector addAll: subTest selectors.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   255
        ^ true
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   256
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   257
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   258
constMod
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   259
        | subTest low |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   260
        "See if mod, (data1 \\ C) is the answer"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   261
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   262
        low _ answers max.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   263
        low+1 to: low+20 do: [:const |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   264
                subTest _ MethodFinder new copy: self addArg: const.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   265
                (subTest testPerfect: #\\) ifTrue: [
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   266
                        expressions add: 'data1 \\ ', const printString.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   267
                        selector add: #\\.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   268
                        ^ true]].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   269
        ^ false
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   270
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   271
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   272
constMult
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   273
        | const subTest got |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   274
        "See if (data1 * C) is the answer"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   275
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   276
        ((thisData at: 1) at: 1) = 0 ifTrue: [^ false].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   277
        const _ ((answers at: 1) asFloat / ((thisData at: 1) at: 1)) reduce.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   278
        got _ (subTest _ MethodFinder new copy: self addArg: const) 
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   279
                                searchForOne isEmpty not.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   280
        got ifFalse: [^ false]. 
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   281
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   282
        "replace data2 with const in expressions"
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   283
        subTest expressions do: [:exp |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   284
                expressions add: (exp copyReplaceAll: 'data2' with: const printString)].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   285
        selector addAll: subTest selectors.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   286
        ^ true
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   287
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   288
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   289
constPlus
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   290
        | const subTest got |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   291
        "See if (data1 + C) is the answer"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   292
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   293
        const _ (answers at: 1) - ((thisData at: 1) at: 1).
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   294
        got _ (subTest _ MethodFinder new copy: self addArg: const) 
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   295
                                searchForOne isEmpty not.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   296
        got ifFalse: [^ false]. 
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   297
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   298
        "replace data2 with const in expressions"
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   299
        subTest expressions do: [:exp |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   300
                expressions add: (exp copyReplaceAll: 'data2' with: const printString)].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   301
        selector addAll: subTest selectors.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   302
        ^ true
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   303
! !
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   304
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   305
!MethodFinder methodsFor:'initialize'!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   306
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   307
cleanInputs: dataAndAnswerString
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   308
        "Find an remove common mistakes.  Complain when ill formed."
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   309
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   310
| fixed ddd rs places |
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   311
ddd _ dataAndAnswerString.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   312
fixed _ false.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   313
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   314
rs _ ReadStream on: ddd, ' '.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   315
places _ OrderedCollection new.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   316
[rs upToAll: '#true'.  rs atEnd] whileFalse: [places addFirst: rs position-4]. 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   317
places do: [:pos | ddd _ ddd copyReplaceFrom: pos to: pos with: ''.
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   318
        fixed _ true].  "remove #"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   319
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   320
rs _ ReadStream on: ddd.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   321
places _ OrderedCollection new.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   322
[rs upToAll: '#false'.  rs atEnd] whileFalse: [places addFirst: rs position-5]. 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   323
places do: [:pos | ddd _ ddd copyReplaceFrom: pos to: pos with: ''.
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   324
        fixed _ true].  "remove #"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   325
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   326
fixed ifTrue: [self inform: '#(true false) are Symbols, not Booleans.  
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   327
Next time use { true. false }.'].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   328
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   329
fixed _ false.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   330
rs _ ReadStream on: ddd.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   331
places _ OrderedCollection new.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   332
[rs upToAll: '#nil'.  rs atEnd] whileFalse: [places addFirst: rs position-3]. 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   333
places do: [:pos | ddd _ ddd copyReplaceFrom: pos to: pos with: ''.
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
   334
        fixed _ true].  "remove #"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   335
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   336
fixed ifTrue: [self inform: '#nil is a Symbol, not the authentic UndefinedObject.  
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   337
Next time use nil instead of #nil'].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   338
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   339
^ ddd
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   340
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   341
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   342
initialize
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   343
        "The methods we are allowed to use.  (MethodFinder new initialize) "
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   344
        Approved _ Set new.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   345
        AddAndRemove _ Set new.
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
   346
        Blocks _ Set new.
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
   347
        BlocksOptional := Set new.
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   348
        "These modify an argument: longPrintOn: printOn: storeOn: sentTo: storeOn:base: printOn:base: absPrintExactlyOn:base: absPrintOn:base: absPrintOn:base:digitCount: writeOn: writeScanOn: possibleVariablesFor:continuedFrom:"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   349
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   350
"Object"  
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   351
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   352
    "in class, instance creation" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   353
        categoryForUniclasses chooseUniqueClassName initialInstance isSystemDefined newFrom: officialClass readCarefullyFrom:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   354
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   355
        at: basicAt: basicSize bindWithTemp: in: size yourself 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   356
    "testing" 
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   357
        basicType ifNil: #'ifNil:ifNotNil:' ifNotNil: #'ifNotNil:ifNil:' 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   358
        isColor isFloat isFraction isInMemory isInteger isMorph isNil isNumber 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   359
        isPoint isPseudoContext isText isTransparent isWebBrowser 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   360
        knownName notNil pointsTo: wantsSteps 
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   361
    "comparing" 
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   362
        = == closeTo: hash hashMappedBy: identityHash identityHashMappedBy: identityHashPrintString 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   363
        ~= ~~ 
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   364
    "copying" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   365
        clone copy shallowCopy 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   366
    "dependents access" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   367
        canDiscardEdits dependents hasUnacceptedEdits 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   368
    "updating" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   369
        changed changed: okToChange update: windowIsClosing 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   370
    "printing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   371
        fullPrintString isLiteral longPrintString printString storeString stringForReadout stringRepresentation 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   372
    "class membership" 
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   373
        class isKindOf: #'isKindOf:orOf:' isMemberOf: respondsTo: respondsToArithmetic  
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   374
    "error handling" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   375
    "user interface" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   376
        defaultBackgroundColor defaultLabelForInspector fullScreenSize initialExtent modelWakeUp mouseUpBalk: newTileMorphRepresentative windowActiveOnFirstClick windowReqNewLabel: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   377
    "system primitives"  
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   378
        instVarAt: instVarNamed: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   379
    "private" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   380
    "associating" -> 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   381
    "converting" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   382
        as: asOrderedCollection asString 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   383
    "casing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   384
        caseOf: #'caseOf:otherwise:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   385
    "binding" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   386
        bindingOf: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   387
    "macpal" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   388
        contentsChanged #'ifKindOf:thenDo:' instanceVariableValues  
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   389
    "flagging" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   390
        flag: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   391
    "translation support" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   392
    "objects from disk" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   393
    "finalization" 
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   394
    "ST/X converting"
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   395
        literalArrayEncoding
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   396
        ) do: [:sel | Approved add: sel].
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   397
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   398
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   399
        #'at:add:' #'at:modify:' #'at:put:' #'basicAt:put:' "NOT instVar:at:"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   400
    "message handling" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   401
        perform: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   402
        #'perform:with:' #'perform:with:with:' #'perform:with:with:with:' #'perform:withArguments:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   403
        #'perform:withArguments:inSuperclass:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   404
        #'perform:orSendTo:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   405
        ) do: [:sel | AddAndRemove add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   406
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   407
"Boolean, True, False, UndefinedObject"  
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   408
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   409
    "logical operations" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   410
        & eqv: not xor: |
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   411
    "controlling" 
1961
bf11d495311b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1928
diff changeset
   412
        and: ifFalse: #'ifFalse:ifTrue:' ifTrue: #'ifTrue:ifFalse:' or: ifNil: ifNotNil:
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   413
    "copying" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   414
    "testing" 
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   415
        isEmptyOrNil isNilOrEmptyCollection
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   416
        ) do: [:sel | Approved add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   417
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   418
"Behavior" 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   419
        #("initialize-release"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   420
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   421
        compilerClass decompilerClass evaluatorClass format methodDict parserClass sourceCodeTemplate subclassDefinerClass
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   422
    "testing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   423
        instSize instSpec isBits isBytes isFixed isPointers isVariable isWeak isWords
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   424
    "copying"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   425
    "printing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   426
        defaultNameStemForInstances printHierarchy
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   427
    "creating class hierarchy"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   428
    "creating method dictionary"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   429
    "instance creation" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   430
        basicNew basicNew: new new:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   431
    "accessing class hierarchy" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   432
        allSubclasses #'allSubclassesWithLevelDo:startingLevel:' allSuperclasses subclasses superclass withAllSubclasses withAllSuperclasses
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   433
    "accessing method dictionary" 
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   434
        allSelectors changeRecordsAt: compiledMethodAt: #'compiledMethodAt:ifAbsent:' firstCommentAt: lookupSelector: selectors selectorsDo: selectorsWithArgs: 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   435
        "slow but useful ->" sourceCodeAt: sourceCodeAt:ifAbsent: sourceMethodAt: sourceMethodAt:ifAbsent:
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   436
    "accessing instances and variables" 
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   437
        allClassVarNames allInstVarNames allSharedPools classVarNames instVarNames instanceCount sharedPools 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   438
        "someInstance" subclassInstVarNames
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   439
    "testing class hierarchy" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   440
        inheritsFrom: kindOfSubclass
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   441
    "testing method dictionary" 
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   442
        canUnderstand: classThatUnderstands: hasMethods includesSelector: #'scopeHas:ifTrue:' 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   443
        whichClassIncludesSelector: 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   444
        whichSelectorsAccess: whichSelectorsReferTo: #'whichSelectorsReferTo:special:byte:' whichSelectorsStoreInto:
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   445
    "enumerating"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   446
    "user interface"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   447
    "private" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   448
        indexIfCompact
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   449
    "ST/X testing method dictionary" 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   450
        implements:  
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   451
        ) do: [:sel | Approved add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   452
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   453
"ClassDescription"
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   454
        #(
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   455
    "initialize-release" 
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   456
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   457
        classVersion isMeta name theNonMetaClass
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   458
    "copying" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   459
    "printing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   460
        classVariablesString instanceVariablesString sharedPoolsString
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   461
    "instance variables" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   462
        checkForInstVarsOK: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   463
    "method dictionary" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   464
    "organization" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   465
        category organization whichCategoryIncludesSelector:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   466
    "compiling" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   467
        acceptsLoggingOfCompilation wantsChangeSetLogging
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   468
    "fileIn/Out" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   469
        definition
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   470
    "private" 
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   471
    "ST/X queries" 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   472
        theMetaclass theNonMetaclass
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   473
        ) do: [:sel | Approved add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   474
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   475
"Class"
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   476
        #(
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   477
    "initialize-release" 
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   478
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   479
        classPool
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   480
    "testing"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   481
    "copying" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   482
    "class name" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   483
    "instance variables" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   484
    "class variables" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   485
        classVarAt: classVariableAssociationAt:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   486
    "pool variables" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   487
    "compiling" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   488
    "subclass creation" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   489
    "fileIn/Out" 
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   490
    "ST/X queries" 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   491
        nameSpace nameWithoutPrefix nameWithoutNameSpacePrefix
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   492
        ) do: [:sel | Approved add: sel]. 
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   493
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   494
"Metaclass"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   495
        #("initialize-release" 
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   496
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   497
        isSystemDefined soleInstance
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   498
    "copying" "instance creation" "instance variables"  
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   499
    "pool variables" "class hierarchy"  "compiling"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   500
    "fileIn/Out"  
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   501
        nonTrivial 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   502
        ) do: [:sel | Approved add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   503
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   504
"Context, BlockContext"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   505
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   506
        receiver client method receiver tempAt: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   507
    "debugger access" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   508
        mclass pc selector sender shortStack sourceCode tempNames tempsAndValues
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   509
    "controlling"  "printing" "system simulation" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   510
    "initialize-release" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   511
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   512
        hasMethodReturn home numArgs
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   513
    "evaluating" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   514
        value #'value:ifError:' #'value:value:' #'value:value:value:' #'value:value:value:value:' #'valueWithArguments:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   515
    "controlling"  "scheduling"  "instruction decoding"  "printing" "private"  "system simulation" ) do: [:sel | Approved add: sel].
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   516
        #(value: "<- Association has it as a store" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   517
        ) do: [:sel | AddAndRemove add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   518
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   519
"Message"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   520
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   521
    "inclass, instance creation" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   522
        selector: #'selector:argument:' #'selector:arguments:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   523
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   524
        argument argument: arguments sends:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   525
    "printing" "sending" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   526
        ) do: [:sel | Approved add: sel].
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   527
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   528
    "private" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   529
        #'setSelector:arguments:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   530
        ) do: [:sel | AddAndRemove add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   531
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   532
"Magnitude"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   533
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   534
    "comparing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   535
        < <= > >= #'between:and:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   536
    "testing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   537
        max: min: min:max: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   538
        ) do: [:sel | Approved add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   539
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   540
"Date, Time"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   541
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   542
    "in class, instance creation" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   543
        fromDays: fromSeconds: fromString: #'newDay:month:year:' #'newDay:year:' today
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   544
    "in class, general inquiries" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   545
        dateAndTimeNow dayOfWeek: #'daysInMonth:forYear:' daysInYear: #'firstWeekdayOfMonth:year:' indexOfMonth: leapYear: nameOfDay: nameOfMonth:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   546
    "accessing" 
1961
bf11d495311b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1928
diff changeset
   547
        day isLeapYear "leap" monthIndex monthName weekday year
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   548
    "arithmetic" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   549
        addDays: subtractDate: subtractDays:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   550
    "comparing"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   551
    "inquiries" 
1961
bf11d495311b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1928
diff changeset
   552
        dayOfMonth daysInMonth daysInYear daysLeftInMonth daysLeftInYear firstDayOfMonth previous:
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   553
    "converting" 
1961
bf11d495311b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1928
diff changeset
   554
        asSeconds asDays
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   555
    "printing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   556
        mmddyy mmddyyyy printFormat: printOn:format:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   557
    "private" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   558
        firstDayOfMonthIndex: weekdayIndex 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   559
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   560
    "in class, instance creation" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   561
        fromSeconds: now 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   562
    "in class, general inquiries" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   563
        dateAndTimeFromSeconds: dateAndTimeNow millisecondClockValue millisecondsToRun: totalSeconds
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   564
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   565
        hours minutes seconds
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   566
    "arithmetic" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   567
        addTime: subtractTime:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   568
    "comparing"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   569
    "printing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   570
        intervalString print24 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   571
    "converting"
1961
bf11d495311b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1928
diff changeset
   572
    "st/x" 
bf11d495311b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1928
diff changeset
   573
        dayOfWeek abbreviatedDayName abbreviatedMonthName 
bf11d495311b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1928
diff changeset
   574
        abbreviatedMonthNameForLanguage: dayCount dayInWeek dayInYear
bf11d495311b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1928
diff changeset
   575
        monthNameForLanguage: weekInYear daysSince: daysUntil: 
bf11d495311b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1928
diff changeset
   576
        asTimestamp asDate
bf11d495311b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1928
diff changeset
   577
        timeZoneDeltaInMinutes asTime asTimeDuration asMilliseconds
bf11d495311b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1928
diff changeset
   578
        asUtcTimestamp utcSecondsSince1901 printStringIso8601Format
bf11d495311b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1928
diff changeset
   579
        printString12HourFormat printString24HourFormat
bf11d495311b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1928
diff changeset
   580
        days utcOffset millisecondDeltaFrom: secondDeltaFrom:
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   581
        ) do: [:sel | Approved add: sel].
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   582
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   583
    "private" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   584
        hours: #'hours:minutes:seconds:' #'day:year:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   585
        ) do: [:sel | AddAndRemove add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   586
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   587
"Number"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   588
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   589
    "in class" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   590
        #'readFrom:base:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   591
    "arithmetic" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   592
        * + - / // \\ abs negated quo: reciprocal rem:
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   593
    "mathematical functions" 
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   594
        arcCos arcSin arcTan arcTan: cos exp floorLog: ln log log: raisedTo: raisedToInteger: sin sqrt squared tan
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   595
    "truncation and round off" 
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   596
        ceiling #'detentBy:atMultiplesOf:snap:' floor roundTo: roundUpTo: rounded truncateTo: truncated
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   597
    "comparing"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   598
    "testing" 
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   599
        even isDivisibleBy: isInf isInfinite isNaN isZero negative odd positive sign strictlyPositive
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   600
    "converting" 
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   601
        @ asInteger asNumber asPoint asSmallAngleDegrees degreesToRadians radiansToDegrees
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   602
    "intervals" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   603
        to: #'to:by:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   604
    "printing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   605
        printStringBase: storeStringBase: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   606
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   607
    "ST/X in class"         
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   608
        #'readFrom:base:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   609
    "ST/X intervals"        
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   610
        downTo: #'downTo:by:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   611
    "ST/X printing"         
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   612
        radixPrintStringRadix: printStringRadix: storeStringRadix:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   613
        ) do: [:sel | Approved add: sel].
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   614
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   615
"Integer"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   616
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   617
    "in class" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   618
        primesUpTo:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   619
    "testing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   620
        isPowerOfTwo
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   621
    "arithmetic" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   622
        alignedTo:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   623
    "comparing"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   624
    "truncation and round off" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   625
        atRandom normalize
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   626
    "enumerating" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   627
        timesRepeat:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   628
    "mathematical functions" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   629
        degreeCos degreeSin factorial gcd: lcm: take:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   630
    "bit manipulation" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   631
        << >> allMask: anyMask: bitAnd: bitClear: bitInvert bitInvert32 bitOr: bitShift: bitXor: lowBit noMask:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   632
    "converting" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   633
        asCharacter asColorOfDepth: asFloat asFraction asHexDigit
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   634
    "printing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   635
        asStringWithCommas hex hex8 radix:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   636
    "system primitives" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   637
        lastDigit #'replaceFrom:to:with:startingAt:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   638
    "private" "benchmarks" 
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   639
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   640
    "ST/X printing"       
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   641
        hexPrintString isPrime
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   642
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   643
        ) do: [:sel | Approved add: sel].
1106
50a16e11b73a more st/x messages
Claus Gittinger <cg@exept.de>
parents: 1104
diff changeset
   644
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   645
"SmallInteger, LargeNegativeInteger, LargePositiveInteger"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   646
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   647
    "arithmetic" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   648
    "bit manipulation" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   649
        highBit 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   650
    "testing" "comparing" "copying" "converting" "printing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   651
    "system primitives" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   652
        digitAt: digitLength 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   653
    "private" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   654
        #'fromString:radix:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   655
        ) do: [:sel | Approved add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   656
        #((#'digitAt:put:') ) do: [:sel | AddAndRemove add: sel].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   657
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   658
"Float"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   659
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   660
    "arithmetic"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   661
    "mathematical functions" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   662
        reciprocalFloorLog: reciprocalLogBase2 timesTwoPower:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   663
    "comparing" "testing"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   664
    "truncation and round off" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   665
        exponent fractionPart integerPart significand significandAsInteger
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   666
    "converting" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   667
        asApproximateFraction asIEEE32BitWord asTrueFraction
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   668
    "copying"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   669
        ) do: [:sel | Approved add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   670
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   671
"Fraction, Random"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   672
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   673
        denominator numerator reduced next nextValue
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   674
        ) do: [:sel | Approved add: sel].
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   675
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   676
        #'setNumerator:denominator:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   677
        ) do: [:sel | AddAndRemove add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   678
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   679
"Collection"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   680
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   681
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   682
        anyOne
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   683
    "testing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   684
        includes: includesAllOf: includesAnyOf: includesSubstringAnywhere: isEmpty notEmpty isSequenceable occurrencesOf:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   685
    "enumerating" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   686
        collect: #'collect:thenSelect:' count: detect: #'detect:ifNone:' detectMax: detectMin: detectSum: #'inject:into:' reject: select: #'select:thenCollect:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   687
    "converting" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   688
        asBag asCharacterSet asSet asSortedArray asSortedCollection asSortedCollection:
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
   689
        asStringWith:
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   690
    "printing"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   691
    "private" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   692
        maxSize
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   693
    "arithmetic"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   694
    "math functions" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   695
        average max median min range sum
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   696
        ) do: [:sel | Approved add: sel].
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   697
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   698
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   699
    "adding" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   700
        add: addAll: addIfNotPresent:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   701
    "removing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   702
        remove: #'remove:ifAbsent:' removeAll: removeAllFoundIn: removeAllSuchThat: #'remove:ifAbsent:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   703
        ) do: [:sel | AddAndRemove add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   704
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   705
"SequenceableCollection"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   706
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   707
    "comparing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   708
        hasEqualElements:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   709
    "accessing" allButFirst allButLast at:ifAbsent: atAll: atPin: atRandom: atWrap: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   710
        fifth first fourth last second sixth third
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   711
        identityIndexOf: #'identityIndexOf:startingAt:' #'identityIndexOf:ifAbsent:' #'identityIndexOf:startingAt:ifAbsent:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   712
        indexOf:         #'indexOf:startingAt:'         #'indexOf:ifAbsent:'     #'indexOf:startingAt:ifAbsent:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   713
        lastIndexOf:     #'lastIndexOf:startingAt:'     #'lastIndexOf:ifAbsent:' #'lastIndexOf:startingAt:ifAbsent:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   714
        #'indexOfSubCollection:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   715
        #'indexOfSubCollection:ifAbsent:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   716
        #'indexOfSubCollection:startingAt:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   717
        #'indexOfSubCollection:startingAt:ifAbsent:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   718
        #'lastIndexOfSubCollection:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   719
        #'lastIndexOfSubCollection:ifAbsent:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   720
        #'lastIndexOfSubCollection:startingAt:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   721
        #'lastIndexOfSubCollection:startingAt:ifAbsent:' 
1107
08b382d1c128 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   722
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   723
    "removing"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   724
    "copying" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   725
        , copyAfterLast: #'copyAt:put:' #'copyFrom:to:' #'copyReplaceAll:with:' #'copyReplaceFrom:to:with:' copyUpTo: copyUpToLast: copyWith: copyWithout: copyWithoutAll: #'forceTo:paddingWith:' shuffled sortBy:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   726
    "enumerating" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   727
        collectWithIndex: findFirst: findLast: pairsCollect: #'with:collect:' withIndexCollect: polynomialEval:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   728
    "converting" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   729
        asArray asDictionary asFloatArray asIntegerArray asStringWithCr asWordArray reversed
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   730
    "private" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   731
        #'copyReplaceAll:with:asTokens:' 
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   732
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   733
    "ST/X copying"        
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   734
        copyWithoutLast: copyLast:  copyFrom: copyTo:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   735
    "ST/X testing"        
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   736
        longestCommonPrefix
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   737
        ) do: [:sel | Approved add: sel].
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   738
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   739
        #( swap:with:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   740
        ) do: [:sel | AddAndRemove add: sel].
1106
50a16e11b73a more st/x messages
Claus Gittinger <cg@exept.de>
parents: 1104
diff changeset
   741
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   742
"ArrayedCollection, Bag"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   743
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   744
    "private" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   745
        defaultElement 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   746
    "sorting" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   747
        isSorted
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   748
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   749
        cumulativeCounts sortedCounts sortedElements 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   750
    "testing" "adding" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   751
        #'add:withOccurrences:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   752
    "removing" "enumerating" 
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   753
        ) do: [:sel | Approved add: sel].
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   754
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   755
        #( 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   756
        #'mergeSortFrom:to:by:' sort sort: add: #'add:withOccurrences:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   757
    "private" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   758
        setDictionary 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   759
        ) do: [:sel | AddAndRemove add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   760
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   761
"Other messages that modify the receiver"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   762
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   763
        #'atAll:put:' #'atAll:putAll:' atAllPut: #'atWrap:put:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   764
        #'replaceAll:with:' #'replaceFrom:to:with:'  removeFirst removeLast
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   765
    "ST/X filling & replacing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   766
        reverse
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   767
        ) do: [:sel | AddAndRemove add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   768
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   769
        self initialize2.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   770
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   771
"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   772
MethodFinder new initialize.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   773
MethodFinder new organizationFiltered: Set
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   774
"
1106
50a16e11b73a more st/x messages
Claus Gittinger <cg@exept.de>
parents: 1104
diff changeset
   775
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   776
    "Modified: / 13.11.2001 / 18:58:52 / cg"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   777
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   778
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   779
initialize2
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   780
        "The methods we are allowed to use.  (MethodFinder new initialize) "
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   781
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   782
"Set"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   783
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   784
    "in class" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   785
        sizeFor:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   786
    "testing" "adding" "removing" "enumerating"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   787
    "private" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   788
        array findElementOrNil: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   789
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   790
        someElement
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   791
        ) do: [:sel | Approved add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   792
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   793
"Dictionary, IdentityDictionary, IdentitySet"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   794
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   795
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   796
        associationAt: #'associationAt:ifAbsent:' #'at:ifPresent:' keyAtIdentityValue: #'keyAtIdentityValue:ifAbsent:' keyAtValue: #'keyAtValue:ifAbsent:' keys
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   797
    "testing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   798
        includesKey: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   799
        ) do: [:sel | Approved add: sel].
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   800
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   801
        removeKey: #'removeKey:ifAbsent:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   802
        ) do: [:sel | AddAndRemove add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   803
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   804
"LinkedList, Interval, MappedCollection"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   805
        #(
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   806
    "in class"  
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   807
        #'from:to:' #'from:to:by:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   808
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   809
        contents) do: [:sel | Approved add: sel].
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   810
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   811
    "adding" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   812
        addFirst: addLast:) do: [:sel | AddAndRemove add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   813
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   814
"OrderedCollection, SortedCollection"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   815
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   816
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   817
        after: before:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   818
    "copying" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   819
        copyEmpty
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   820
    "adding"  
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   821
        growSize
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   822
    "removing" "enumerating" "private" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   823
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   824
        sortBlock) do: [:sel | Approved add: sel].
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   825
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   826
    "adding" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   827
        #'add:after:' #'add:afterIndex:' #'add:before:' addAllFirst: addAllLast: addFirst: addLast:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   828
    "removing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   829
        removeAt: removeFirst removeLast
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   830
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   831
        sortBlock:) do: [:sel | AddAndRemove add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   832
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   833
"Character"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   834
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   835
    "in class, instance creation" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   836
        allCharacters digitValue: new separators
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   837
    "accessing untypeable characters" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   838
        backspace cr enter lf linefeed nbsp newPage space tab
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   839
    "constants" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   840
        alphabet characterTable
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   841
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   842
        asciiValue digitValue
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   843
    "comparing"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   844
    "testing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   845
        isAlphaNumeric isDigit isLetter isLowercase isSafeForHTTP isSeparator isSpecial isUppercase isVowel tokenish
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   846
    "copying"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   847
    "converting" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   848
        asIRCLowercase asLowercase asUppercase
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   849
        ) do: [:sel | Approved add: sel].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   850
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   851
"String"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   852
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   853
    "in class, instance creation" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   854
        crlf fromPacked:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   855
    "primitives" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   856
        #'findFirstInString:inSet:startingAt:' #'indexOfAscii:inString:startingAt:'      "internet" valueOfHtmlEntity:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   857
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   858
        byteAt: endsWithDigit #'findAnySubStr:startingAt:' findBetweenSubStrs: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   859
        #'findDelimiters:startingAt:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   860
        #'findString:startingAt:' #'findString:startingAt:caseSensitive:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   861
        findTokens: #'findTokens:includes:' #'findTokens:keep:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   862
        includesSubString: #'includesSubstring:caseSensitive:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   863
        #'indexOf:startingAt:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   864
        indexOfAnyOf: #'indexOfAnyOf:ifAbsent:' #'indexOfAnyOf:startingAt:' #'indexOfAnyOf:startingAt:ifAbsent:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   865
        lineCorrespondingToIndex: lineCount lineNumber: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   866
        #'skipAnySubStr:startingAt:' #'skipDelimiters:startingAt:' startsWithDigit
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   867
    "comparing" 
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   868
        alike: beginsWith: caseSensitiveLessOrEqual: charactersExactlyMatching: compare: crc16 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   869
        endsWith: endsWithAnyOf: sameAs: 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   870
        #'startingAt:match:startingAt:'
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   871
    "copying" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   872
        #'copyReplaceTokens:with:' #'padded:to:with:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   873
    "converting" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   874
        asByteArray asDate asDisplayText asFileName asHtml asLegalSelector asPacked asParagraph asText asTime asUnHtml asUrl asUrlRelativeTo: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   875
        #capitalized compressWithTable: contractTo: correctAgainst: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   876
        encodeForHTTP initialIntegerOrNil keywords quoted sansPeriodSuffix 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   877
        splitInteger stemAndNumericSuffix substrings surroundedBySingleQuotes 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   878
        truncateWithElipsisTo: withBlanksTrimmed withFirstCharacterDownshifted 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   879
        withNoLineLongerThan: withSeparatorsCompacted withoutLeadingDigits 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   880
        withoutTrailingBlanks
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   881
    "displaying" "printing"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   882
    "system primitives" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   883
        #'compare:with:collated:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   884
    "Celeste" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   885
        withCRs
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   886
    "internet" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   887
        decodeMimeHeader decodeQuotedPrintable replaceHtmlCharRefs unescapePercents withInternetLineEndings withSqueakLineEndings withoutQuoting
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   888
    "testing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   889
        isAllSeparators lastSpacePosition
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   890
    "paragraph support" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   891
        indentationIfBlank:
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   892
    "arithmetic" 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   893
    "ST/X copying"
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   894
        paddedTo: paddedTo:with: centerPaddedTo: centerPaddedTo:with:
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   895
        decimalPaddedTo:and:at:
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   896
        leftPaddedTo: leftPaddedTo:with:
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   897
        chopTo: contractAtBeginningTo: contractAtEndTo: contractTo:
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   898
    "ST/X comparing"
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   899
        compareWith: sameCharacters: sameEmphasisAs: sameStringAndEmphasisAs:
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   900
    "ST/X searching"
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   901
        indexOfSeparator indexOfSeparatorStartingAt:
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   902
        lastIndexOfSeparator lastIndexOfSeparatorStartingAt:
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   903
        indexOfNonSeparatorStartingAt:
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   904
    "ST/X converting" 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   905
        asUppercaseFirst 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   906
        asCollectionOfWords asCollectionOfLines 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   907
        asCollectionOfSubstringsSeparatedBy: asCollectionOfSubstringsSeparatedByAny:
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   908
    "Ansi"
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   909
        addLineDelimiters
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
   910
    ) do: [:sel | Approved add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   911
        #(#'byteAt:put:' translateToLowercase match:) do: [:sel | AddAndRemove add: sel].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   912
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   913
"Symbol"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   914
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   915
    "in class, private" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   916
        hasInterned:ifTrue:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   917
    "access" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   918
        morePossibleSelectorsFor: possibleSelectorsFor: selectorsContaining: #'thatStarts:skipping:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   919
    "accessing" "comparing" "copying" "converting" "printing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   920
    "testing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   921
        isInfix isKeyword isPvtSelector isUnary) do: [:sel | Approved add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   922
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   923
"Array"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   924
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   925
    "comparing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   926
    "converting" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   927
        evalStrings 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   928
    "printing" "private" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   929
        hasLiteralSuchThat:) do: [:sel | Approved add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   930
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   931
"Array2D"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   932
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   933
    "access" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   934
        #'at:at:' atCol: #'atCol:put:' atRow: extent #'extent:fromArray:' height width #'width:height:type:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   935
        ) do: [:sel | Approved add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   936
        #(#'at:at:add:' #'at:at:put:' #'atRow:put:' ) do: [:sel | AddAndRemove add: sel].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   937
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   938
"ByteArray"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   939
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   940
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   941
        doubleWordAt: wordAt: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   942
    "platform independent access" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   943
        #'longAt:bigEndian:' #'shortAt:bigEndian:' #'unsignedLongAt:bigEndian:' #'unsignedShortAt:bigEndian:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   944
    "converting") do: [:sel | Approved add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   945
        #(#'doubleWordAt:put:' #'wordAt:put:' #'longAt:put:bigEndian:' #'shortAt:put:bigEndian:' #'unsignedLongAt:put:bigEndian:' #'unsignedShortAt:put:bigEndian:'
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   946
        ) do: [:sel | AddAndRemove add: sel].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   947
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   948
"FloatArray"            "Dont know what happens when prims not here"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   949
        false ifTrue: [#(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   950
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   951
    "arithmetic" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   952
        *= += -= /=
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   953
    "comparing"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   954
    "primitives-plugin" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   955
        primAddArray: primAddScalar: primDivArray: primDivScalar: primMulArray: primMulScalar: primSubArray: primSubScalar:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   956
    "primitives-translated" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   957
        #'primAddArray:withArray:from:to:' #'primMulArray:withArray:from:to:' #'primSubArray:withArray:from:to:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   958
    "converting" "private" "user interface"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   959
        ) do: [:sel | Approved add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   960
        ].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   961
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   962
"IntegerArray, WordArray"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   963
"RunArray"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   964
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   965
    "in class, instance creation" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   966
        #'runs:values:' scanFrom:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   967
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   968
        runLengthAt: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   969
    "adding" "copying"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   970
    "private" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   971
        runs values
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   972
        ) do: [:sel | Approved add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   973
        #(coalesce #'addLast:times:' #'repeatLast:ifEmpty:' repeatLastIfEmpty:
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   974
                ) do: [:sel | AddAndRemove add: sel].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   975
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   976
"Stream  -- many operations change its state"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   977
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   978
    "testing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   979
        atEnd) do: [:sel | Approved add: sel].
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   980
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   981
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   982
        next: nextMatchAll: nextMatchFor: upToEnd
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   983
        #'next:put:' nextPut: nextPutAll: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   984
    "printing" print: printHtml:
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   985
        ) do: [:sel | AddAndRemove add: sel].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   986
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   987
"PositionableStream"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   988
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   989
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   990
        contentsOfEntireFile originalContents peek peekFor: "testing"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   991
    "positioning" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   992
        position 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   993
    ) do: [:sel | Approved add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   994
        #(nextDelimited: nextLine upTo: position: reset resetContents setToEnd skip: skipTo: upToAll: ) do: [:sel | AddAndRemove add: sel].
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   995
        "Because it is so difficult to test the result of an operation on a Stream 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   996
         (you have to supply another Stream in the same state), 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   997
         we don't support Streams beyond the basics.  
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
   998
         We want to find the messages that convert Streams to other things."
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
   999
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1000
"ReadWriteStream"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1001
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1002
    "file status" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1003
        closed) do: [:sel | Approved add: sel].
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1004
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1005
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1006
        next: on: ) do: [:sel | AddAndRemove add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1007
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1008
"WriteStream"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1009
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1010
    "in class, instance creation" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1011
        on:from:to: with: with:from:to:
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1012
                ) do: [:sel | Approved add: sel].
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1013
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1014
    "positioning" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1015
        resetToStart
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1016
    "character writing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1017
        crtab crtab:) do: [:sel | AddAndRemove add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1018
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1019
"LookupKey, Association, Link"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1020
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1021
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1022
        key nextLink) do: [:sel | Approved add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1023
        #(key: #'key:value:' nextLink:) do: [:sel | AddAndRemove add: sel].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1024
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1025
"Point"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1026
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1027
    "in class, instance creation" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1028
        #'r:degrees:' #'x:y:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1029
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1030
        x y 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1031
    "comparing" "arithmetic" "truncation and round off"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1032
    "polar coordinates" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1033
        degrees r theta
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1034
    "point functions" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1035
        bearingToPoint: crossProduct: dist: dotProduct: eightNeighbors #'flipBy:centerAt:' fourNeighbors grid: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1036
        #'nearestPointAlongLineFrom:to:' #'nearestPointOnLineFrom:to:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1037
        normal normalized octantOf: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1038
        #'onLineFrom:to:' #'onLineFrom:to:within:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1039
        quadrantOf: #'rotateBy:centerAt:' transposed unitVector
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1040
    "converting" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1041
        asFloatPoint asIntegerPoint corner: extent: rect:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1042
    "transforming" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1043
        adhereTo: #'rotateBy:about:' scaleBy: #'scaleFrom:to:' translateBy: "copying"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1044
    "interpolating" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1045
        #'interpolateTo:at:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1046
        ) do: [:sel | Approved add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1047
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1048
"Rectangle"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1049
        #("in class, instance creation" #'center:extent:' encompassing: #'left:right:top:bottom:' 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1050
        merging: #'origin:corner:' #'origin:extent:' 
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1051
    "accessing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1052
        area bottom bottomCenter bottomLeft bottomRight boundingBox center corner corners innerCorners 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1053
        left leftCenter origin right rightCenter top topCenter topLeft topRight
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1054
    "comparing"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1055
    "rectangle functions" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1056
        #'adjustTo:along:' amountToTranslateWithin: areasOutside: #'bordersOn:along:' encompass: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1057
        expandBy: extendBy: #'forPoint:closestSideDistLen:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1058
        insetBy: #'insetOriginBy:cornerBy:' intersect: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1059
        merge: pointNearestTo: quickMerge: #'rectanglesAt:height:' 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1060
        sideNearestTo: translatedToBeWithin: 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1061
        withBottom: withHeight: withLeft: withRight: #'withSide:setTo:' withTop: withWidth:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1062
    "testing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1063
        containsPoint: containsRect: hasPositiveExtent intersects: isTall isWide
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1064
    "truncation and round off"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1065
    "transforming" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1066
        #'align:with:' centeredBeneath: newRectFrom: squishedWithin: "copying"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1067
        ) do: [:sel | Approved add: sel].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1068
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1069
"Color"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1070
        #(
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1071
    "in class, instance creation" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1072
        colorFrom: #'colorFromPixelValue:depth:' fromRgbTriplet: gray: #'h:s:v:' #'r:g:b:' #'r:g:b:alpha:' #'r:g:b:range:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1073
    "ST/X in class, instance creation" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1074
        colorNamed:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1075
    "named colors" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1076
        black blue brown cyan darkGray gray green lightBlue lightBrown lightCyan lightGray lightGreen lightMagenta lightOrange lightRed lightYellow 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1077
        magenta orange red transparent veryDarkGray veryLightGray veryVeryDarkGray veryVeryLightGray white yellow
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1078
    "other" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1079
        colorNames indexedColors pixelScreenForDepth: quickHighLight:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1080
    "access" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1081
        alpha blue brightness green hue luminance red saturation
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1082
    "equality"
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1083
    "queries" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1084
        isBitmapFill isBlack isGray isSolidFill isTranslucent isTranslucentColor
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1085
    "transformations" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1086
        alpha: dansDarker darker lighter #'mixed:with:' muchLighter slightlyDarker slightlyLighter veryMuchLighter #'alphaMixed:with:'
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1087
    "groups of shades" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1088
        darkShades: lightShades: #'mix:shades:' wheel:
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1089
    "printing" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1090
        shortPrintString
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1091
    "other" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1092
        colorForInsets rgbTriplet
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1093
    "conversions" 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1094
        asB3DColor asColor balancedPatternForDepth: bitPatternForDepth: closestPixelValue1 closestPixelValue2 closestPixelValue4 closestPixelValue8 dominantColor 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1095
        halfTonePattern1 halfTonePattern2 indexInMap: pixelValueForDepth: #'pixelWordFor:filledWith:' pixelWordForDepth: scaledPixelValue32
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1096
    "private" 
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1097
        privateAlpha privateBlue privateGreen privateRGB privateRed 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1098
    "copying"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1099
    "ST/X access" 
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1100
        redByte greenByte blueByte alphaByte rgbValue almostSameAs:
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1101
        ) do: [:sel | Approved add: sel].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1102
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1103
"       For each selector that requires a block argument, add (selector argNum) 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1104
                to the set Blocks."
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1105
"ourClasses _ #(Object Boolean True False UndefinedObject Behavior ClassDescription Class Metaclass MethodContext BlockContext Message Magnitude Date Time Number Integer 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1106
                SmallInteger LargeNegativeInteger LargePositiveInteger Float Fraction Random Collection SequenceableCollection ArrayedCollection Bag Set 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1107
                Dictionary IdentityDictionary IdentitySet LinkedList Interval MappedCollection OrderedCollection SortedCollection Character String Symbol Array 
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1108
                Array2D ByteArray FloatArray IntegerArray WordArray RunArray Stream PositionableStream ReadWriteStream WriteStream LookupKey Association Link Point Rectangle Color).
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1109
ourClasses do: [:clsName | cls _ Smalltalk at: clsName.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1110
        (cls selectors) do: [:aSel |
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1111
                ((Approved includes: aSel) or: [AddAndRemove includes: aSel]) ifTrue: [
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1112
                        (cls formalParametersAt: aSel) withIndexDo: [:tName :ind |
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1113
                                (tName endsWith: 'Block') ifTrue: [
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1114
                                        Blocks add: (Array with: aSel with: ind)]]]]].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1115
"
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1116
        #(
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1117
            (timesRepeat: 1 ) (indexOf:ifAbsent: 2 ) (pairsCollect: 1 ) (#'mergeSortFrom:to:by:' 3 ) 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1118
            (#'ifNotNil:ifNil:' 1 ) (#'ifNotNil:ifNil:' 2 ) (ifNil: 1 ) (#'at:ifAbsent:' 2 ) 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1119
            (#'ifNil:ifNotNil:' 1 ) (#'ifNil:ifNotNil:' 2 ) (ifNotNil: 1 ) (#'at:modify:' 2 ) 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1120
            (#'identityIndexOf:ifAbsent:' 2 ) (sort: 1 ) (sortBlock: 1 ) 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1121
            (detectMax: 1 ) (repeatLastIfEmpty: 1 ) (#'allSubclassesWithLevelDo:startingLevel:' 1 ) 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1122
            (#'keyAtValue:ifAbsent:' 2 ) (in: 1 ) 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1123
            (ifTrue: 1 ) (or: 1 ) (select: 1 ) (inject:into: 2 ) (#'ifKindOf:thenDo:' 2 ) 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1124
            (#'forPoint:closestSideDistLen:' 2 ) (#'value:ifError:' 2 ) (selectorsDo: 1 ) 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1125
            (removeAllSuchThat: 1 ) (#'keyAtIdentityValue:ifAbsent:' 2 ) (detectMin: 1 ) 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1126
            (#'detect:ifNone:' 1 ) (#'ifTrue:ifFalse:' 1 ) (#'ifTrue:ifFalse:' 2 ) 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1127
            (#'detect:ifNone:' 2 ) (hasLiteralSuchThat: 1 ) (#'indexOfAnyOf:ifAbsent:' 2 ) 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1128
            (reject: 1 ) (newRectFrom: 1 ) (#'removeKey:ifAbsent:' 2 ) (#'at:ifPresent:' 2 ) 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1129
            (#'associationAt:ifAbsent:' 2 ) (withIndexCollect: 1 ) (#'repeatLast:ifEmpty:' 2 ) 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1130
            (findLast: 1 ) (#'indexOf:startingAt:ifAbsent:' 3 ) (#'remove:ifAbsent:' 2 ) 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1131
            (#'ifFalse:ifTrue:' 1 ) (#'ifFalse:ifTrue:' 2 ) (#'caseOf:otherwise:' 2 ) (count: 1 ) (collect: 1 ) (sortBy: 1 ) (and: 1 ) (asSortedCollection: 1 ) 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1132
            (#'with:collect:' 2 ) (#'sourceCodeAt:ifAbsent:' 2 ) (detect: 1 ) (#'scopeHas:ifTrue:' 2 ) (collectWithIndex: 1 ) (#'compiledMethodAt:ifAbsent:' 2 ) 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1133
            (bindWithTemp: 1 ) (detectSum: 1 ) (#'indexOfSubCollection:startingAt:ifAbsent:' 3 ) (findFirst: 1 ) (#'sourceMethodAt:ifAbsent:' 2 ) (#'collect:thenSelect:' 1 ) 
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1134
            (#'collect:thenSelect:' 2 ) (#'select:thenCollect:' 1 ) (#'select:thenCollect:' 2 ) (ifFalse: 1 ) (#'indexOfAnyOf:startingAt:ifAbsent:' 3 ) (#'indentationIfBlank:' 1 ) 
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1135
        ) do: [:anArray |
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1136
            Blocks add: anArray].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1137
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1138
        #(
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1139
            (ifFalse: 1 )
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1140
            (ifTrue: 1 )
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1141
            (#'ifFalse:ifTrue:' 1 ) (#'ifFalse:ifTrue:' 2 )
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1142
            (#'ifTrue:ifFalse:' 1 ) (#'ifTrue:ifFalse:' 2 )
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1143
        ) do: [:anArray |
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1144
            BlocksOptional add: anArray].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1145
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1146
"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1147
MethodFinder new initialize.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1148
MethodFinder new organizationFiltered: TranslucentColor class 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1149
"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1150
"Do not forget class messages for each of these classes"
1108
c3371dc1b8a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1107
diff changeset
  1151
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1152
    "Modified: / 13.11.2001 / 19:28:41 / cg"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1153
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1154
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1155
load: dataWithAnswers
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1156
        "Find a function that takes the data and gives the answers.  Odd list entries are data for it, even ones are the answers.  nil input means data and answers were supplied already."
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1157
"  (MethodFinder new) load: #( (4 3) 7  (-10 5) -5  (-3 11) 8);
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1158
                findMessage  "
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1159
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1160
dataWithAnswers ifNotNil: [
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1161
        data _ Array new: dataWithAnswers size // 2.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1162
        1 to: data size do: [:ii | data at: ii put: (dataWithAnswers at: ii*2-1)].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1163
        answers _ Array new: data size.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1164
        1 to: answers size do: [:ii | answers at: ii put: (dataWithAnswers at: ii*2)]].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1165
data do: [:list | 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1166
        (list isKindOf: SequenceableCollection) ifFalse: [
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1167
                ^ self warn: 'first and third items are not Arrays'].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1168
        ].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1169
argMap _ (1 to: data first size) asArray.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1170
data do: [:list | list size = argMap size ifFalse: [
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1171
                self warn: 'data arrays must all be the same size']].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1172
argMap size > 4 ifTrue: [self warn: 'No more than a receiver and 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1173
three arguments allowed'].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1174
        "Really only test receiver and three args." 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1175
thisData _ data copy.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1176
mapStage _ mapList _ nil.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1177
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1178
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1179
noteDangerous
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1180
        "Remember the methods with really bad side effects."
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1181
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1182
        Dangerous _ Set new.
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1183
"Object accessing, testing, copying, dependent access, macpal, flagging"
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1184
        #(addInstanceVarNamed:withValue: haltIfNil copyAddedStateFrom: veryDeepCopy veryDeepCopyWith: veryDeepFixupWith: veryDeepInner: addDependent: evaluate:wheneverChangeIn: codeStrippedOut: playSoundNamed: isThisEverCalled isThisEverCalled: logEntry logExecution logExit)
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1185
                do: [:sel | Dangerous add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1186
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1187
"Object error handling"
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1188
        #(cannotInterpret: caseError confirm: confirm:orCancel: doesNotUnderstand: error: halt halt: notify: notify:at: primitiveFailed shouldNotImplement subclassResponsibility tryToDefineVariableAccess:)
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1189
                do: [:sel | Dangerous add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1190
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1191
"Object user interface"
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1192
        #(basicInspect beep inform: inspect inspectWithLabel: notYetImplemented inspectElement )
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1193
                do: [:sel | Dangerous add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1194
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1195
"Object system primitives"
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1196
        #(become: becomeForward: instVarAt:put: instVarNamed:put: nextInstance nextObject rootStubInImageSegment: someObject tryPrimitive:withArgs:)
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1197
                do: [:sel | Dangerous add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1198
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1199
"Object private"
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1200
        #(errorImproperStore errorNonIntegerIndex errorNotIndexable errorSubscriptBounds: mustBeBoolean primitiveError: species storeAt:inTempFrame:)
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1201
                do: [:sel | Dangerous add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1202
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1203
"Object, translation support"
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1204
        #(cCode: cCode:inSmalltalk: cCoerce:to: export: inline: returnTypeC: sharedCodeNamed:inCase: var:declareC:)
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1205
                do: [:sel | Dangerous add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1206
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1207
"Object, objects from disk, finalization.  And UndefinedObject"
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1208
        #(comeFullyUpOnReload: objectForDataStream: readDataFrom:size: rehash saveOnFile storeDataOn: actAsExecutor executor finalize retryWithGC:until:   suspend)
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1209
                do: [:sel | Dangerous add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1210
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1211
"No Restrictions:   Boolean, False, True, "
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1212
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1213
"Morph"
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1214
        #(fullCopy copyRecordingIn:)
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1215
                do: [:sel | Dangerous add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1216
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1217
"Behavior"
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1218
        #(obsolete confirmRemovalOf: copyOfMethodDictionary literalScannedAs:notifying: storeLiteral:on: addSubclass: removeSubclass: superclass: 
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1219
"creating method dictionary" addSelector:withMethod: compile: compile:notifying: compileAll compileAllFrom: compress decompile: defaultSelectorForMethod: methodDictionary: recompile:from: recompileChanges removeSelector: compressedSourceCodeAt: selectorAtMethod:setClass: allInstances allSubInstances inspectAllInstances inspectSubInstances thoroughWhichSelectorsReferTo:special:byte: "enumerating" allInstancesDo: allSubInstancesDo: allSubclassesDo: allSuperclassesDo: selectSubclasses: selectSuperclasses: subclassesDo: withAllSubclassesDo:
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1220
"user interface" allCallsOn: browse browseAllAccessesTo: browseAllCallsOn: browseAllStoresInto: "too slow->" crossReference removeUninstantiatedSubclassesSilently "too slow->" unreferencedInstanceVariables
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1221
"private" becomeCompact becomeUncompact flushCache format:variable:words:pointers: format:variable:words:pointers:weak: printSubclassesOn:level: removeSelectorSimply:)
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1222
                do: [:sel | Dangerous add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1223
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1224
"Others "
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1225
        #("no tangible result" do: associationsDo:  
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1226
"private" adaptToCollection:andSend: adaptToNumber:andSend: adaptToPoint:andSend: adaptToString:andSend: instVarAt:put: asDigitsToPower:do: combinations:atATimeDo: doWithIndex: pairsDo: permutationsDo: reverseDo: reverseWith:do: with:do: withIndexDo: asDigitsAt:in:do: combinationsAt:in:after:do: errorOutOfBounds permutationsStartingAt:do: fromUser)
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1227
                do: [:sel | Dangerous add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1228
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1229
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1230
        #(    fileOutPrototype addSpareFields makeFileOutFile )
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1231
                do: [:sel | Dangerous add: sel].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1232
        #(recompile:from: recompileAllFrom: recompileChanges asPrototypeWithFields: asPrototype addInstanceVarNamed:withValue: addInstanceVariable addClassVarName: removeClassVarName: findOrAddClassVarName: tryToDefineVariableAccess: instanceVariableNames: )
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1233
                do: [:sel | Dangerous add: sel].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1234
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1235
 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1236
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1237
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1238
organizationFiltered: aClass
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1239
        "Return the organization of the class with all selectors defined in superclasses removed.  (except those in Object)"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1240
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1241
        | org str |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1242
        org _ aClass organization deepCopy.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1243
        Dangerous do: [:sel |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1244
                        org removeElement: sel].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1245
        Approved do: [:sel |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1246
                        org removeElement: sel].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1247
        AddAndRemove do: [:sel |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1248
                        org removeElement: sel].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1249
        str _ org printString copyWithout: $(.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1250
        str _ '(', (str copyWithout: $) ).
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1251
        str _ str replaceAll: $' with: $".
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1252
        ^ str
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1253
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1254
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1255
test2: anArray
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1256
        "look for bad association"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1257
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1258
        anArray do: [:sub |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1259
                sub class == Association ifTrue: [
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1260
                        (#('true' '$a' '2' 'false') includes: sub value printString) ifFalse: [
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1261
                                self error: 'bad assn'].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1262
                        (#('3' '5.6' 'x' '''abcd''') includes: sub key printString) ifFalse: [
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1263
                                self error: 'bad assn'].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1264
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1265
        "                       sub value class == Association ifTrue: [
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1266
                                        self error: 'bad assn'].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1267
                                (sub value isKindOf: Class) ifTrue: [
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1268
                                        self error: 'class in assn'].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1269
                                sub value class == Symbol ifTrue: [sub value asciiValue = 204 '$Ì' ifTrue: [
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1270
                                        self error: 'Write into char']].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1271
                                sub value == $Ì ifTrue: [
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1272
                                        self error: 'Write into char']
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1273
        "].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1274
                sub class == Array ifTrue: [
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1275
                        sub do: [:element | 
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1276
                                element class == String ifTrue: [element first asciiValue < 32 ifTrue: [
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1277
                                                self error: 'store into string in data']].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1278
                                element class == Association ifTrue: [
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1279
                                        element value class == Association ifTrue: [
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1280
                                                self error: 'bad assn']]]].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1281
                sub class == Date ifTrue: [sub year isInteger ifFalse: [
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1282
                                self error: 'stored into input date!!!!']].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1283
                sub class == Dictionary ifTrue: [
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1284
                                sub size > 0 ifTrue: [
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1285
                                        self error: 'store into dictionary']].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1286
                sub class == OrderedCollection ifTrue: [
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1287
                                sub size > 4 ifTrue: [
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1288
                                        self error: 'store into OC']].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1289
                ].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1290
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1291
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1292
test3
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1293
        "find the modification of the caracter table"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1294
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1295
        (#x at: 1) asciiValue = 120 ifFalse: [self error: 'Character table mod'].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1296
! !
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1297
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1298
!MethodFinder methodsFor:'search'!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1299
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1300
exceptions
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1301
        "Handle some very slippery selectors.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1302
        asSymbol -- want to be able to produce it, but do not want to make every string submitted into a Symbol!!" 
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1303
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1304
        | aSel |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1305
        answers first class == Symbol ifFalse: [^ self].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1306
        thisData first first class == String ifFalse: [^ self].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1307
        aSel _ #asSymbol.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1308
        (self testPerfect: aSel) ifTrue: [
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1309
                selector add: aSel.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1310
                expressions add: (String streamContents: [:strm | 
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1311
                        strm nextPutAll: 'data', argMap first printString.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1312
                        aSel keywords doWithIndex: [:key :ind |
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1313
                                strm nextPutAll: ' ',key.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1314
                                (key last == $:) | (key first isLetter not)
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1315
                                        ifTrue: [strm nextPutAll: ' data', 
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1316
                                                (argMap at: ind+1) printString]]])].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1317
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1318
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1319
findMessage
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1320
        "Control the search."
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1321
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1322
        data do: [:alist |
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1323
                (alist isKindOf: SequenceableCollection) ifFalse: [
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1324
                        ^ OrderedCollection with: 'first and third items are not Arrays']].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1325
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1326
        true "Approved isNil" ifTrue: [self initialize].      "Sets of allowed selectors"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1327
        expressions _ OrderedCollection new.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1328
        self search: true.      "multi"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1329
        expressions isEmpty ifTrue: [^ OrderedCollection with: 'no single method does that function'].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1330
        expressions class = String ifTrue: [^ OrderedCollection with: expressions].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1331
        ^ expressions
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1332
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1333
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1334
insertConstants
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1335
        "see if one of several known expressions will do it. C is the constant we discover here."
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1336
        "C  data1+C  data1*C  data1//C  (data1*C1 + C2) (data1 = C) (data1 ~= C) (data1 <= C) (data1 >= C) 
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1337
 (data1 mod C)"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1338
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1339
        thisData size >= 2 ifFalse: [^ self].   "need 2 examples"
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1340
        (thisData at: 1) size = 1 ifFalse: [^ self].    "only one arg, data1"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1341
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1342
        self const ifTrue: [^ self].
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1343
"/        self constEquiv ifTrue: [^ self].       " ==  ~= "
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1344
        self constLessThan ifTrue: [^ self].    " <=  and  >= "
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1345
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1346
        self allNumbers ifFalse: [^ self].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1347
        self constMod ifTrue: [^ self].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1348
        self constPlus ifTrue: [^ self].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1349
        self constMult ifTrue: [^ self].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1350
        self constDiv ifTrue: [^ self].
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1351
        self constLinear ifTrue: [^ self].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1352
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1353
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1354
search: multi
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1355
        "if Multi is true, collect all selectors that work."
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1356
        | old |
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1357
        selector:=OrderedCollection new.       "list of them"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1358
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1359
      "  old _ Preferences autoAccessors.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1360
        Preferences disableGently: #autoAccessors. "
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1361
        Smalltalk isSmalltalkX ifTrue:[old:=false].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1362
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1363
        self simpleSearch.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1364
        multi not & (selector isEmpty not) ifTrue:
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1365
                ["old ifTrue: [Preferences enableGently: #autoAccessors]."
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1366
                ^ selector]. 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1367
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1368
        [self permuteArgs] whileTrue:
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1369
                [self simpleSearch.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1370
               multi not & (selector isEmpty not) ifTrue:
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1371
                        ["old ifTrue: [Preferences enableGently: #autoAccessors]."
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1372
                        ^ selector]].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1373
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1374
        self insertConstants.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1375
      "  old ifTrue: [Preferences enableGently: #autoAccessors]. "
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1376
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1377
"/ (selector isEmpty not) ifTrue: [^ selector]].   " expression is the answer, not a selector"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1378
        ^ #()
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1379
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1380
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1381
searchForOne
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1382
        "Look for and return just one answer"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1383
1104
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1384
        expressions _ OrderedCollection new.
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1385
        self search: false.     "non-multi"
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1386
        ^ expressions
237db486634c copyLast: added to list
penk
parents: 1103
diff changeset
  1387
                        
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1388
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1389
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1390
simpleSearch
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1391
        "Run through first arg's class' selectors, looking for one that works."
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1392
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1393
| class supers listOfLists |
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1394
self exceptions.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1395
class:=thisData first first class.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1396
"Cache the selectors for the receiver class"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1397
(class == cachedClass and: [cachedArgNum = ((argMap size) - 1)]) 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1398
        ifTrue: [listOfLists:=cachedSelectorLists]
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1399
        ifFalse: [supers:=class withAllSuperclasses.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1400
                listOfLists:=OrderedCollection new.
1092
b6e046dfe01e checkin from browser
james
parents: 1089
diff changeset
  1401
                supers do: [:cls |    
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1402
                        listOfLists add: (cls selectorsWithArgs: (argMap size) - 1)].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1403
                cachedClass:=class.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1404
                cachedArgNum:=(argMap size) - 1.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1405
                cachedSelectorLists:=listOfLists].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1406
"/ self halt.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1407
listOfLists do: [:selectorList |
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1408
        selectorList do: [:aSel |
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1409
                (selector includes: aSel) ifFalse: [
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1410
                        ((Approved includes: aSel) or: [AddAndRemove includes: aSel]) ifTrue: [
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1411
                                (self testPerfect: aSel) ifTrue: [
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1412
                                        selector add: aSel.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1413
                                        expressions add: (String streamContents: [:strm | 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1414
                                                strm nextPutAll: 'data', argMap first printString.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1415
                                                aSel keywords doWithIndex: [:key :ind |
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1416
                                                        strm nextPutAll: ' ',key.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1417
                                                        (key last == $:) | (key first isLetter not)
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1418
                                                                ifTrue: [strm nextPutAll: ' data', 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1419
                                                                        (argMap at: ind+1) printString]]])
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1420
                                        ]]]]].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1421
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1422
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1423
testPerfect: aSelector
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1424
        "Try this selector!! Return true if it answers every example perfectly.  Take the args in the order they are.  Do not permute them.  Survive errors.  later cache arg lists."
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1425
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1426
| sz argList val rec activeSel perform argIsBlock expectedAnswer|
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1427
        "Transcript cr; show: aSelector.                debug"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1428
perform:=aSelector beginsWith: 'perform:'.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1429
sz:=argMap size.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1430
1 to: thisData size do: [:ii | "each example set of args"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1431
        argList:=(thisData at: ii) copyFrom: 2 to: sz.
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1432
        perform
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1433
                ifFalse: [activeSel:=aSelector]
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1434
                ifTrue: [activeSel:=argList first.     "what will be performed"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1435
                        ((Approved includes: activeSel) or: [AddAndRemove includes: activeSel])
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1436
                                ifFalse: [^ false].     "not approved"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1437
                        aSelector == #perform:withArguments: 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1438
                                ifTrue: [activeSel numArgs = (argList at: 2) basicSize "avoid error" 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1439
                                                        ifFalse: [^ false]]
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1440
                                ifFalse: [activeSel numArgs = (aSelector numArgs - 1) 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1441
                                                        ifFalse: [^ false]]].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1442
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1443
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1444
        1 to: sz do: [:num |   
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1445
                (Blocks includes: (Array with: activeSel with: num)) ifTrue: [
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1446
                        Smalltalk isSmalltalkX ifTrue:[
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1447
                            argIsBlock := (argList at: num) isBlock
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1448
                        ] ifFalse:[
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1449
                            argIsBlock := (argList at: num) class == BlockContext    
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1450
                        ].
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1451
                        argIsBlock ifFalse: [
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1452
                            (BlocksOptional includes: (Array with: activeSel with: num)) ifFalse: [
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1453
                                ^ false
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1454
                            ]
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1455
                        ]]].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1456
     "   (activeSel = #capitalized) ifTrue:[self halt.].  "  "  used to test  "
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1457
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1458
        rec:=(AddAndRemove includes: activeSel) 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1459
                        ifTrue: [(thisData at: ii) first class == Symbol ifTrue: [^ false].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1460
                                                "vulnerable to modification"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1461
                                (thisData at: ii) first copyTwoLevel]   "protect from damage"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1462
                        ifFalse: [[(thisData at: ii) first]ifError:[self halt.]] .
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1463
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1464
        expectedAnswer := (answers at: ii).
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1465
        val:= [ rec copy perform: aSelector withArguments: argList] 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1466
                ifError: [:aSignal|  
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1467
"/ Transcript showCR:aSignal description.
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1468
                                                        "self test3."
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1469
                                                        "self test2: (thisData at: ii)."
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1470
                                                        ^ false].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1471
        "self test3."
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1472
        "self test2: (thisData at: ii)."
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1473
        (expectedAnswer isKindOf: Number) 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1474
        ifFalse:[
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1475
                ([ (expectedAnswer = val) ] ifError:[ false]) ifFalse: [^ false]]
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1476
        ifTrue:[
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1477
                (expectedAnswer closeTo: val) ifFalse: [^ false]].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1478
        ].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1479
        ^ true
1109
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1480
d03fcfd46a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  1481
    "Modified: / 13.11.2001 / 19:08:39 / cg"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1482
!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1483
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1484
verify
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1485
        "Test a bunch of examples"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1486
        "       MethodFinder new verify    "
1928
49fdf6083f86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1491
diff changeset
  1487
Approved isNil ifTrue: [self initialize].      "Sets of allowed selectors"
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1488
"/(MethodFinder new load: #( (0) 0  (30) 0.5  (45) 0.707106  (90) 1)
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1489
"/        ) searchForOne asArray = #('data1 degreeSin') ifFalse: [self error: 'should have found it'].  "Squeak test"
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1490
(MethodFinder new load:   (Array with:(Array with:true with:[3] with:[4]) with:3 with:(Array with:false with:[0] with:[6]) with:6)
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1491
        ) searchForOne asArray = #('data1 ifTrue: data2 ifFalse: data3') ifFalse: [
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1492
                self error: 'should have found it'].
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1493
(MethodFinder new load: #(#(1) true #(2) false #(5) true #(10) false)
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1494
        ) searchForOne asArray = #('data1 odd' 'data1 isPrime') ifFalse: [self error: 'should have found it'].
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1495
                "will correct the date type of #true, and complain"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1496
Smalltalk isSmalltalkX ifTrue:[        
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1497
(MethodFinder new load: #((4 2) '2r100'   (255 16) '16rFF'    (14 8) '8r16')
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1498
        ) searchForOne asArray = 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1499
                #('data1 radixPrintStringRadix: data2' )
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1500
                          ifFalse: [self error: 'should have found it'].        
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1501
] ifFalse:[
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1502
(MethodFinder new load: #((4 2) '2r100'   (255 16) '16rFF'    (14 8) '8r16')
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1503
        ) searchForOne asArray = 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1504
                #('data1 radix: data2' 'data1 printStringBase: data2' 'data1 storeStringBase: data2')                             
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1505
                          ifFalse: [self error: 'should have found it'].        
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1506
].
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1507
"/(MethodFinder2 new load: #(#(3@4) 4 #(1@5) 5)
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1508
"/        ) searchForOne asArray = #('data1 y') ifFalse: [self error: 'should have found it'].    
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1509
Smalltalk isSmalltalkX ifTrue:[
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1510
(MethodFinder new load: #(('abcd') $a  ('TedK') $T)
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1511
        ) searchForOne asArray = #('data1 first' 'data1 removeFirst'  'data1 anyOne')   
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1512
                 ifFalse: [self error: 'should have found it']. 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1513
] ifFalse:[
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1514
(MethodFinder new load: #(('abcd') $a  ('TedK') $T)
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1515
        ) searchForOne asArray = #('data1 asCharacter' 'data1 first' 'data1 anyOne')
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1516
                 ifFalse: [self error: 'should have found it']. 
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1517
].
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1518
(((MethodFinder new load: #(('abcd' 1) $a  ('Ted ' 3) $d )
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1519
        ) searchForOne asArray) includesAll: #('data1 at: data2' 'data1 atPin: data2' 'data1 atWrap: data2'))
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1520
                ifFalse: [self error: 'should have found it'].  
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1521
(MethodFinder new load: #(((12 4 8)) 24  ((1 3 6)) 10 )
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1522
        ) searchForOne asArray=  #('data1 sum') ifFalse: [self error: 'should have found it'].  
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1523
                "note extra () needed for an Array object as an argument"
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1524
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1525
(MethodFinder new load: #((14 3) 11  (-10 5) -15  (4 -3) 7)
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1526
        ) searchForOne asArray = #('data1 - data2') ifFalse: [self error: 'should have found it'].
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1527
((MethodFinder new load: #((4) 4  (-10) 10 (-3) 3 (2) 2 (-6) 6 (612) 612)
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1528
        ) searchForOne asArray includesAll: #('data1 abs')) ifFalse: [self error: 'should have found it'].
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1529
(MethodFinder new load: #(#(4 3) true #(-7 3) false #(5 1) true #(5 5) false)
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1530
        ) searchForOne asArray = #('data1 > data2') ifFalse: [self error: 'should have found it'].      
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1531
(MethodFinder new load: #((5) 0.2   (2) 0.5)
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1532
        ) searchForOne asArray = #('data1 reciprocal') ifFalse: [self error: 'should have found it'].   
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1533
(MethodFinder new load: #((12 4 8) 2  (1 3 6) 2  (5 2 16) 8)
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1534
        ) searchForOne asArray = #()     " '(data3 / data2) ' want to be able to leave out args"  
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1535
                ifFalse: [self error: 'should have found it'].  
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1536
(MethodFinder new load: #((0.0) 0.0  (1.5) 0.997495  (0.75) 0.681639)
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1537
        ) searchForOne asArray = #('data1 sin') ifFalse: [self error: 'should have found it'].  
1491
8941fc515d83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1114
diff changeset
  1538
(MethodFinder new load: #((7 5) 2   (4 5) 4   (-9 4) 3)
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1539
        ) searchForOne asArray = #('data1 \\ data2') ifFalse: [self error: 'should have found it'].     
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1540
! !
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1541
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1542
!MethodFinder class methodsFor:'documentation'!
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1543
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1544
version
1961
bf11d495311b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1928
diff changeset
  1545
    ^ '$Header: /cvs/stx/stx/libbasic3/MethodFinder.st,v 1.13 2007-03-22 10:28:33 cg Exp $'
1089
40d9ddd1f510 initial checkin
james
parents:
diff changeset
  1546
! !