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