KeyedCollection.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 22 Sep 2015 16:28:42 +0100
branchjv
changeset 18759 c1217211909c
parent 18120 e3a375d5f6a8
child 19478 1f5aa87f6170
permissions -rw-r--r--
Changed identification strings to contain jv-branch ...to make explicit that this distribution is not the official one used by eXept and therefore that eXept is not to be blamed in case of any problem.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3615
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
 COPYRIGHT (c) 1998 by eXept Software AG
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
              All Rights Reserved
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 hereby transferred.
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
"
9482
7bebdb8e4c60 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9480
diff changeset
    12
"{ Package: 'stx:libbasic' }"
8893
99996b25482e +isAbstract
Claus Gittinger <cg@exept.de>
parents: 3615
diff changeset
    13
3615
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
Collection subclass:#KeyedCollection
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
	instanceVariableNames:''
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	classVariableNames:''
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	poolDictionaries:''
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	category:'Collections-Abstract'
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!KeyedCollection class methodsFor:'documentation'!
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
copyright
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
 COPYRIGHT (c) 1998 by eXept Software AG
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
              All Rights Reserved
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
 This software is furnished under a license and may be used
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
 only in accordance with the terms of that license and with the
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
 be provided or otherwise made available to, or used by, any
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
 other person.  No title to or ownership of the software is
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
 hereby transferred.
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
!
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
documentation
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
    Abstract superclass for collections which have a key->value mapping.
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
    This abstract class provides functionality common to those collections,
17120
246d9198d84e class: KeyedCollection
Claus Gittinger <cg@exept.de>
parents: 13045
diff changeset
    42
    without knowing how the concrete class implements things. 
246d9198d84e class: KeyedCollection
Claus Gittinger <cg@exept.de>
parents: 13045
diff changeset
    43
    Thus, all methods found here depend on some basic mechanisms 
246d9198d84e class: KeyedCollection
Claus Gittinger <cg@exept.de>
parents: 13045
diff changeset
    44
    to be defined in the concrete class. 
3615
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
    These basic methods are usually defined as #subclassResponsibility here.
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
    Some methods are also redefined for better performance.
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
    Subclasses should at least implement:
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
        at:ifAbsent:        - accessing elements
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
        removeKey:ifAbsent  - removing
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
        keysAndValuesDo:    - enumerating
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
    [author:]
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
        Claus Gittinger
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
! !
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
8893
99996b25482e +isAbstract
Claus Gittinger <cg@exept.de>
parents: 3615
diff changeset
    58
!KeyedCollection class methodsFor:'queries'!
99996b25482e +isAbstract
Claus Gittinger <cg@exept.de>
parents: 3615
diff changeset
    59
99996b25482e +isAbstract
Claus Gittinger <cg@exept.de>
parents: 3615
diff changeset
    60
isAbstract
11222
7e8b37ffc6ca comment
Claus Gittinger <cg@exept.de>
parents: 10533
diff changeset
    61
    "Return if this class is an abstract class.
7e8b37ffc6ca comment
Claus Gittinger <cg@exept.de>
parents: 10533
diff changeset
    62
     True is returned for KeyedCollection here; false for subclasses.
7e8b37ffc6ca comment
Claus Gittinger <cg@exept.de>
parents: 10533
diff changeset
    63
     Abstract subclasses must redefine again."
7e8b37ffc6ca comment
Claus Gittinger <cg@exept.de>
parents: 10533
diff changeset
    64
8893
99996b25482e +isAbstract
Claus Gittinger <cg@exept.de>
parents: 3615
diff changeset
    65
    ^ self == KeyedCollection
99996b25482e +isAbstract
Claus Gittinger <cg@exept.de>
parents: 3615
diff changeset
    66
! !
99996b25482e +isAbstract
Claus Gittinger <cg@exept.de>
parents: 3615
diff changeset
    67
3615
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
!KeyedCollection methodsFor:'accessing'!
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
at:key
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    "return the value stored under akey.
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
     Raise an error if not found"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    ^ self at:key ifAbsent:[self errorKeyNotFound:key].
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    "Modified: / 19.6.1998 / 00:48:27 / cg"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
!
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
at:key ifAbsent:exceptionBlock
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    "return the value stored under akey.
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
     Return the value from evaluating exceptionBlock if not found"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
    ^ self subclassResponsibility
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
    "Created: / 19.6.1998 / 00:48:23 / cg"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
!
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
keyAtValue:value
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    "return the key under which value is stored.
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
     Raise an error if not found"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    ^ self keyAtValue:value ifAbsent:[self errorValueNotFound:value].
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
    "Modified: / 19.6.1998 / 00:48:27 / cg"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
    "Created: / 19.6.1998 / 00:49:16 / cg"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
!
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
keyAtValue:value ifAbsent:exceptionBlock
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
    "return the key under which value is stored.
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
     If not found, return the value from evaluating exceptionBlock"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
    self keysAndValuesDo:[:elKey :elValue |
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
        value == elValue ifTrue:[^ elKey]
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
    ].
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
    ^ exceptionBlock value
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
    "Modified: / 19.6.1998 / 00:48:27 / cg"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
    "Created: / 19.6.1998 / 00:50:34 / cg"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
!
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
keys
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
    "return a collection containing the keys of the receiver"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
    |keyCollection|
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
    keyCollection := OrderedCollection new.
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
    self keysDo:[:aKey |
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
        keyCollection add:aKey
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
    ].
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
    ^ keyCollection
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
    "Modified: / 19.6.1998 / 00:48:27 / cg"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
    "Created: / 19.6.1998 / 00:51:49 / cg"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
! !
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
!KeyedCollection methodsFor:'enumerating'!
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
do:aBlock
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
    "evaluate aBlock for each value"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
    self keysAndValuesDo:[:elKey :elValue | aBlock value:elValue]
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
    "Created: / 19.6.1998 / 00:56:24 / cg"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
!
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
9480
de4de5ec8b82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8893
diff changeset
   136
findFirstKey:aBlock
de4de5ec8b82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8893
diff changeset
   137
    "find and return the first key, for which evaluation of the argument, aBlock
de4de5ec8b82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8893
diff changeset
   138
     returns true; return nil if none is detected."
de4de5ec8b82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8893
diff changeset
   139
de4de5ec8b82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8893
diff changeset
   140
    self keysDo:[:key |
de4de5ec8b82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8893
diff changeset
   141
        (aBlock value:key) ifTrue:[^ key].
de4de5ec8b82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8893
diff changeset
   142
    ].
de4de5ec8b82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8893
diff changeset
   143
    ^ nil
de4de5ec8b82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8893
diff changeset
   144
de4de5ec8b82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8893
diff changeset
   145
    "Created: 8.10.1996 / 22:01:31 / cg"
de4de5ec8b82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8893
diff changeset
   146
    "Modified: 8.10.1996 / 22:02:03 / cg"
de4de5ec8b82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8893
diff changeset
   147
!
de4de5ec8b82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8893
diff changeset
   148
3615
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
keysAndValuesDo:aBlock
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
    "evaluate aBlock for each key and value"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
    ^ self subclassResponsibility
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
    "Created: / 19.6.1998 / 00:56:52 / cg"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
! !
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
!KeyedCollection methodsFor:'removing'!
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
removeKey:aKey
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
    "remove key (and the value stored under that key) from the
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
     receiver; raise an error if no such element is contained"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
    ^ self removeKey:aKey ifAbsent:[self errorKeyNotFound:aKey]
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
    "Created: / 19.6.1998 / 00:53:25 / cg"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
    "Modified: / 19.6.1998 / 00:54:02 / cg"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
!
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
removeKey:aKey ifAbsent:exceptionBlock
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
    "remove key (and the value stored under that key) from the
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
     receiver; if no such element is contained, return the value
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
     from evaluating exceptionBlock"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
    ^ self subclassResponsibility
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
    "Created: / 19.6.1998 / 00:53:58 / cg"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
! !
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
!KeyedCollection methodsFor:'testing'!
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
10533
04130c197558 changed #includesIdenticalKey:
ca
parents: 9482
diff changeset
   181
includesIdenticalKey:aKey
04130c197558 changed #includesIdenticalKey:
ca
parents: 9482
diff changeset
   182
    "return true, if the argument, aKey is a key in the receiver"
04130c197558 changed #includesIdenticalKey:
ca
parents: 9482
diff changeset
   183
04130c197558 changed #includesIdenticalKey:
ca
parents: 9482
diff changeset
   184
    self keysDo:[:elKey | aKey == elKey ifTrue:[^ true]].
04130c197558 changed #includesIdenticalKey:
ca
parents: 9482
diff changeset
   185
    ^ false
04130c197558 changed #includesIdenticalKey:
ca
parents: 9482
diff changeset
   186
04130c197558 changed #includesIdenticalKey:
ca
parents: 9482
diff changeset
   187
    "Created: / 19.6.1998 / 00:55:05 / cg"
04130c197558 changed #includesIdenticalKey:
ca
parents: 9482
diff changeset
   188
!
04130c197558 changed #includesIdenticalKey:
ca
parents: 9482
diff changeset
   189
3615
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
includesKey:aKey
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
    "return true, if the argument, aKey is a key in the receiver"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
    self keysDo:[:elKey | aKey = elKey ifTrue:[^ true]].
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
    ^ false
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
    "Created: / 19.6.1998 / 00:55:05 / cg"
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
! !
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
!KeyedCollection class methodsFor:'documentation'!
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
version
17120
246d9198d84e class: KeyedCollection
Claus Gittinger <cg@exept.de>
parents: 13045
diff changeset
   202
    ^ '$Header: /cvs/stx/stx/libbasic/KeyedCollection.st,v 1.9 2014-11-26 08:39:20 cg Exp $'
12667
4297ecfffa96 #values moved up
Claus Gittinger <cg@exept.de>
parents: 11222
diff changeset
   203
!
4297ecfffa96 #values moved up
Claus Gittinger <cg@exept.de>
parents: 11222
diff changeset
   204
4297ecfffa96 #values moved up
Claus Gittinger <cg@exept.de>
parents: 11222
diff changeset
   205
version_CVS
17120
246d9198d84e class: KeyedCollection
Claus Gittinger <cg@exept.de>
parents: 13045
diff changeset
   206
    ^ '$Header: /cvs/stx/stx/libbasic/KeyedCollection.st,v 1.9 2014-11-26 08:39:20 cg Exp $'
3615
c0f82feaf6a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
! !
17120
246d9198d84e class: KeyedCollection
Claus Gittinger <cg@exept.de>
parents: 13045
diff changeset
   208